{"version":3,"sources":["webpack:///./src/ohm/components/Net.vue?76ff","webpack:///./node_modules/webcola/dist/src/powergraph.js","webpack:///./node_modules/heap/lib/heap.js","webpack:///./node_modules/color-space/hsl.js","webpack:///./node_modules/webcola/dist/src/layout3d.js","webpack:///./node_modules/webcola/dist/src/shortestpaths.js","webpack:///./node_modules/heap/index.js","webpack:///./node_modules/color-space/rgb.js","webpack:///./node_modules/cytoscape-cola/cytoscape-cola.js","webpack:///./node_modules/webcola/dist/src/d3adaptor.js","webpack:///./src/ohm/components/Net.vue?7c19","webpack:///src/ohm/components/Net.vue","webpack:///./src/ohm/components/Net.vue?1abe","webpack:///./src/ohm/components/Net.vue","webpack:///./node_modules/webcola/dist/src/d3v4adaptor.js","webpack:///./node_modules/cytoscape/dist/cytoscape.cjs.js","webpack:///./node_modules/color-name/index.js","webpack:///./node_modules/clamp/index.js","webpack:///./node_modules/cose-base/cose-base.js","webpack:///./node_modules/core-js/modules/es.set.js","webpack:///./node_modules/webcola/dist/src/layout.js","webpack:///./node_modules/klayjs/klay.js","webpack:///./node_modules/webcola/dist/src/handledisconnected.js","webpack:///./node_modules/webcola/dist/src/adaptor.js","webpack:///./node_modules/webcola/dist/src/gridrouter.js","webpack:///./node_modules/webcola/dist/src/rectangle.js","webpack:///./node_modules/cytoscape-klay/cytoscape-klay.js","webpack:///./node_modules/webcola/dist/src/linklengths.js","webpack:///./node_modules/lerp/index.js","webpack:///./node_modules/webcola/dist/src/pqueue.js","webpack:///./node_modules/webcola/dist/src/d3v3adaptor.js","webpack:///./node_modules/color-interpolate/index.js","webpack:///./node_modules/webcola/dist/src/vpsc.js","webpack:///./node_modules/webcola/dist/src/descent.js","webpack:///./node_modules/webcola/dist/src/batch.js","webpack:///./node_modules/webcola/dist/index.js","webpack:///./node_modules/webcola/dist/src/geom.js","webpack:///./node_modules/color-parse/index.js","webpack:///./node_modules/layout-base/layout-base.js","webpack:///./node_modules/lodash.debounce/index.js","webpack:///./node_modules/cytoscape-cose-bilkent/cytoscape-cose-bilkent.js","webpack:///./node_modules/webcola/dist/src/rbtree.js"],"names":["Object","defineProperty","exports","value","PowerEdge","source","target","type","this","Configuration","n","edges","linkAccessor","rootGroup","_this","modules","Array","roots","initModulesFromGroup","push","ModuleSet","i","add","Module","R","length","forEach","e","s","getSourceIndex","t","getTargetIndex","getType","outgoing","incoming","prototype","group","moduleSet","leaves","node","module","id","groups","j","child","definition","prop","hasOwnProperty","LinkSets","merge","a","b","k","inInt","intersection","outInt","children","m","update","o","forAll","ms","linktype","nls","remove","count","rootMerges","rs","merges","ctr","i_","nEdges","greedyMerge","sort","getGroupHierarchy","retargetedEdges","root","toGroups","es","allEdges","gid","getEdges","isLeaf","g","isIsland","isPredefined","edgetype","v","table","keys","other","result","intersectionCount","contains","f","mid","vs","sets","forAllModules","Number","lt","getGroups","nodes","links","la","c","powerEdges","end","Heap","defaultCmp","floor","heapify","heappop","heappush","heappushpop","heapreplace","insort","min","nlargest","nsmallest","updateItem","_siftdown","_siftup","Math","x","y","lo","hi","cmp","Error","splice","apply","concat","array","item","lastelt","returnitem","pop","_ref","_i","_len","_ref1","_results","_results1","_j","reverse","pos","indexOf","elem","slice","los","startpos","newitem","parent","parentpos","childpos","endpos","rightpos","replace","pushpop","peek","clear","empty","size","clone","heap","toArray","insert","top","front","has","copy","factory","call","rgb","name","max","channel","alias","hsl","t1","t2","t3","val","h","l","r","delta","shortestpaths_1","descent_1","rectangle_1","linklengths_1","Link3D","actualLength","sqrt","reduce","dx","Node3D","z","Layout3D","idealLinkLength","constraints","useJaccardLinkLengths","_a","dims","dim","random","linkLength","start","iterations","LinkAccessor","jaccardLinkLengths","distanceMatrix","Calculator","DistanceMatrix","D","Descent","createSquareMatrix","G","descent","threshold","project","Projection","projectFunctions","fixed","locks","run","tick","rungeKutta","getLength","setLength","pqueue_1","Neighbour","distance","Node","neighbours","QueueEntry","prev","d","u","dijkstraNeighbours","DistancesFromNode","PathFromNodeToNode","PathFromNodeToNodeWithPrevCost","prevCost","q","PriorityQueue","qu","visitedFrom","neighbour","viduid","cc","path","dest","POSITIVE_INFINITY","MAX_VALUE","reduceKey","__WEBPACK_EXTERNAL_MODULE_5__","installedModules","__webpack_require__","moduleId","getter","configurable","enumerable","get","__esModule","object","property","p","_typeof","Symbol","iterator","obj","constructor","assign","defaults","cola","window","raf","isString","isNumber","isObject","isFunction","nop","getOptVal","ele","fn","ColaLayout","options","layout","manuallyStopped","cy","eles","ready","isParent","parentNodes","filter","nonparentNodes","subtract","bb","boundingBox","x1","y1","w","width","height","undefined","x2","y2","updateNodePositions","dimensions","layoutDimensions","scratch","updatedDims","padding","nodeSpacing","positions","retPos","grabbed","updateCompoundBounds","onReady","fit","onDone","ungrabifyWhileSimulating","grabbableNodes","grabify","off","destroyHandler","grabHandler","lockHandler","one","stop","trigger","ticksPerFrame","refresh","adaptor","TICK","EventType","END","animate","infinite","kick","firstTick","inftick","ret","convergenceThreshold","resume","multitick","frame","on","drag","ungrabify","scrCola","position","nodeIsTarget","cyTarget","dragstart","dragend","px","py","locked","map","struct","randomize","round","index","alignment","vertical","verticalAlignments","offsetsX","nodeData","offset","axis","offsets","horizontal","horizontalAlignments","offsetsY","gapInequalities","inequality","leftIndex","left","rightIndex","right","gap","equality","optPadding","getPadding","parseFloat","style","pleft","pright","ptop","pbottom","lengthFnName","edgeLength","edgeSymDiffLength","edgeJaccardLength","lengthGetter","link","calcLength","stdFilter","edge","flow","defAxis","defMinSep","minSeparation","flowLayout","avoidOverlaps","avoidOverlap","handleDisconnected","unconstrIter","userConstIter","allConstIter","centerGraph","setTimeout","maxSimulationTime","bind","tgt","arguments","srcs","_key","src","nodeDimensionsIncludeLabels","impl","register","cytoscape","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","msRequestAnimationFrame","cb","d3v3","d3v4","d3adaptor","d3Context","isD3V3","D3StyleLayoutAdaptor","v3exp","version","match","render","_vm","_h","$createElement","_c","_self","staticClass","_v","staticStyle","downloadTxt","_s","task","downloadPng","_e","showNet","attrs","nativeOn","$event","viewNet","directives","rawName","expression","$$selectedVal","selected","_value","numPaths","multiple","changeNumPaths","model","callback","$$v","layoutUpdate","netReady","zoomIn","zoomOut","staticRenderFns","data","active_site","allosteric_site","netStyle","margin","props","computed","$store","state","methods","$nextTick","setElements","updateChart","blob","Blob","content","redirect","location","href","url","openNewTab","open","weight","sons","Set","elements","getInd","getSites","vec","json","$layout","zoomingEnabled","checkTask","par","zoom","zoomLevel","initNet","container","document","getElementById","selector","label","mounted","component","__extends","extendStatics","setPrototypeOf","__proto__","__","create","layout_1","_super","event","dispatch","d3layout","subject","Layout","dragOrigin","dragStart","dragEnd","d3event","alpha","stress","timer","eventType","listener","_interopDefault","ex","util","_classCallCheck","instance","Constructor","TypeError","_defineProperties","descriptor","writable","key","_createClass","protoProps","staticProps","_defineProperty","_slicedToArray","arr","_arrayWithHoles","_iterableToArrayLimit","_nonIterableRest","isArray","_arr","_n","_d","next","done","err","window$1","navigator","typeofstr","typeofobj","typeoffn","typeofhtmlele","HTMLElement","instanceStr","instanceString","string","plainObject","number","isNaN","integer","htmlElement","elementOrCollection","element","collection","_private","single","core","stylesheet","emptyString","domElement","promise","then","userAgent","memoize","keyFn","args","join","memoizedFn","self","cache","camel2dash","str","toLowerCase","dash2camel","toUpperCase","prependCamel","prefix","substring","capitalize","charAt","number$1","rgba","rgbaNoBackRefs","hsla","hslaNoBackRefs","hex3","hex6","ascending","descending","extend","hex2tuple","hex","shortHex","base","parseInt","hsl2tuple","hue2rgb","RegExp","exec","rgb2tuple","isPct","atLeastOneIsPct","allArePct","colorname2tuple","color","colors","color2tuple","transparent","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","grey","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","setMap","getMap","performance","pnow","now","Date","performanceNow","hashIterableInts","entry","seed","hash","hashInt","num","hashIntsArray","ints","hashString","charCodeAt","hashStrings","hashStringsArray","strs","warningsEnabled","warnSupported","console","warn","traceSupported","trace","MAX_INT","MAX_SAFE_INTEGER","trueify","falsify","zeroify","noop","error","msg","warnings","enabled","log","copyArray","uuid","toString","_staticEmptyObject","staticEmptyObject","_defaults","opts","filledOpts","optVal","removeFromArray","manyCopies","clearArray","otherArr","el","getPrefixedProperty","propName","setPrefixedProperty","ObjectMap","_obj","Map$1","Map","undef","ObjectSet","arrayOrObjectSet","thisArg","Set$1","Element","params","restore","_p","autoWidth","autoHeight","autoPadding","compoundBoundsClean","listeners","rstyle","styleCxts","styleKeys","removed","selectable","grabbable","pannable","active","classes","animation","current","queue","rscratch","traversalCache","backgrounding","bbCache","bbCacheShift","bodyBounds","overlayBounds","labelBounds","all","main","renderedPosition","rpos","pan","split","cls","createEmitter","bypass","css","defineSearch","bfs","dfs","fn$1","directed","visit","found","Q","connectedNodes","connectedBy","id2depth","V","_this$byGroup","byGroup","vi","viId","isNode","unshift","_loop2","shift","vId","depth","prevEdge","prevNode","same","vwEdges","connectedEdges","_i2","wId","_loop","_ret","connectedEles","elesfn","breadthFirstSearch","depthFirstSearch","dijkstraDefaults","elesfn$1","dijkstra","_dijkstraDefaults","weightFn","dist","knownDist","unmergeBy","isLoop","getDist","setDist","Infinity","distBetween","smallestEdge","uvs","edgesTo","edgesWith","intersect","smallestDistance","_weight","smalletsDist","uid","neighbors","neighborhood","vid","vDist","alt","distanceTo","pathTo","S","spawn","elesfn$2","kruskal","numNodes","forest","A","findSetIndex","setUIndex","setVIndex","setU","setV","aStarDefaults","goal","heuristic","elesfn$3","aStar","_aStarDefaults","cMin","cMinId","sid","tid","gScore","fScore","closedSetIds","openSet","openSetIds","cameFrom","cameFromEdge","addToOpenSet","popFromOpenSet","delete","isInOpenSet","steps","pathNode","pathNodeId","pathEdge","hasElementWithId","wSrc","wTgt","wid","tempScore","floydWarshallDefaults","elesfn$4","floydWarshall","_floydWarshallDefault","N","Nsq","atIndex","edgeNext","st","ts","ik","ij","kj","getArgEle","indexOfArgEle","res","from","to","fromNode","bellmanFordDefaults","elesfn$5","bellmanFord","_bellmanFordDefaults","infoMap","hasNegativeWeightCycle","negativeWeightCycles","numEdges","getInfo","set","getNodeFromTo","$","thisStart","_getInfo","pred","info","replacedEdge","checkForEdgeReplacement","node1","node2","info1","info2","srcInfo","tgtInfo","_edge","_src","_tgt","_weight2","srcDist","tgtDist","sqrt2","collapse","edgeIndex","nodeMap","remainingEdges","edgeInfo","sourceIn","targetIn","partition1","partition2","newEdges","contractUntil","metaNodeMap","sizeLimit","elesfn$6","kargerStein","numIter","ceil","pow","LN2","stopSize","edgeIndexes","minCutSize","minCutEdgeIndexes","minCutNodeMap","metaNodeMap2","copyNodesMap","_i3","iter","_i4","edgesState","edgesState2","res1","res2","cut","witnessNodePartition","_i5","partitionId","copyPosition","modelToRenderedPosition","renderedToModelPosition","array2point","begin","isFinite","mean","total","median","includeHoles","len","deg2rad","deg","PI","getAngleFromDisp","dispX","dispY","atan2","log2","signum","p1","p2","sqdist","dy","inPlaceSumNormalize","qbezierAt","p0","qbezierPtAt","lineAt","vecDist","normVec","bound","makeBoundingBox","copyBoundingBox","clearBoundingBox","updateBoundingBox","bb1","bb2","expandBoundingBoxByPoint","expandBoundingBox","assignBoundingBox","assignShiftToBoundingBox","boundingBoxesIntersect","inBoundingBox","pointInBoundingBox","pt","boundingBoxInBoundingBox","roundRectangleIntersectLine","nodeX","nodeY","straightLineIntersections","cornerRadius","getRoundRectangleRadius","halfWidth","halfHeight","topStartX","topStartY","topEndX","topEndY","finiteLinesIntersect","rightStartX","rightStartY","rightEndX","rightEndY","bottomStartX","bottomStartY","bottomEndX","bottomEndY","arcIntersections","leftStartX","leftStartY","leftEndX","leftEndY","topLeftCenterX","topLeftCenterY","intersectLineCircle","topRightCenterX","topRightCenterY","bottomRightCenterX","bottomRightCenterY","bottomLeftCenterX","bottomLeftCenterY","inLineVicinity","lx1","ly1","lx2","ly2","tolerance","inBezierVicinity","x3","y3","solveQuadratic","sqrtR","denom","root1","root2","solveCubic","discriminant","dum1","term1","r13","acos","cos","sqdistToQuadraticBezier","zeroThreshold","abs","curX","curY","distSquared","minDistanceSquared","sqdistToFiniteLine","line","lineSq","hypSq","dotProduct","adjSq","pointInsidePolygonPoints","points","up","pointInsidePolygon","basePoints","centerX","centerY","direction","angle","transformedPoints","atan","sin","expandedLineSet","expandPolygon","joinLines","lineSet","currentLineStartX","currentLineStartY","currentLineEndX","currentLineEndY","nextLineStartX","nextLineStartY","nextLineEndX","nextLineEndY","vertices","pad","currentPointX","currentPointY","nextPointX","nextPointY","offsetX","offsetY","offsetLength","normalizedOffsetX","normalizedOffsetY","intersectLineEllipse","ellipseWradius","ellipseHradius","newLength","lenProportion","checkInEllipse","radius","tMin","tMax","inRangeParams","nearIntersectionX","nearIntersectionY","farIntersectionX","farIntersectionY","midOfThree","x4","y4","infiniteLines","dx13","dx21","dx43","dy13","dy21","dy43","ua_t","ub_t","u_b","ua","ub","flptThreshold","_min","_max","polygonIntersectLine","currentX","currentY","nextX","nextY","intersections","doTransform","shortenIntersection","amount","disp","lenRatio","generateUnitNgonPointsFitToSquare","sides","rotationRadians","generateUnitNgonPoints","fitPolygonToSquare","minX","minY","maxX","maxY","sx","sy","increment","startAngle","currentAngle","getCutRectangleCornerLength","bezierPtsToQuadCoeff","getBarrelCurveConstants","heightOffset","widthOffset","ctrlPtOffsetPct","pageRankDefaults","dampingFactor","precision","elesfn$7","pageRank","_pageRankDefaults","numNodesSqd","matrix","columnSum","additionalProb","srcId","tgtId","indexOfId","_n2","_n3","previous","eigenvector","temp","_i6","_j2","_n4","diff","_i7","rank","defaults$1","elesfn$8","degreeCentralityNormalized","indegrees","outdegrees","maxIndegree","maxOutdegree","_node","_currDegree","degreeCentrality","indegree","outdegree","degrees","maxDegree","currDegree","degree","callingEles","_options","k_in","k_out","s_in","s_out","connEdges","dc","dcn","degreeCentralityNormalised","defaults$2","harmonic","elesfn$9","closenessCentralityNormalized","closenesses","maxCloseness","fw","currCloseness","node_i","closeness","closenessCentrality","_defaults2","totalDistance","ccn","closenessCentralityNormalised","defaults$3","elesfn$a","betweennessCentrality","weighted","_C","C","outgoers","openNeighborhood","P","_vid","vEle","edgeWeight","_w","_w2","_v2","betweenness","betweennessNormalized","betweennessNormalised","bc","defaults$4","expandFactor","inflateFactor","multFactor","maxIterations","attributes","setOptions","getSimilarity","addLoops","M","normalize$1","sum","col","row","_row","mmult","B","expand","_M","inflate","hasConverged","n2","roundFactor","v1","v2","clusters","cluster","isDuplicate","c1","c2","removeDuplicates","markovClustering","id2position","sim","isStillMoving","markovClustering$1","mcl","identity","absDiff","addAbsDiff","addSquaredDiff","maxAbsDiff","currentMax","getDistance","getP","getQ","init","post","distances","euclidean","squaredEuclidean","manhattan","clusteringDistance","method","nodeP","nodeQ","defaults$5","sensitivityThreshold","testMode","testCentroids","setOptions$1","centroid","mode","noNodeP","randomCentroids","ndim","centroids","classify","buildCluster","assignment","haveValuesConverged","haveMatricesConverged","seenBefore","medoids","randomMedoids","findCost","potentialNewMedoid","cost","kMeans","newCentroid","kMedoids","curCost","minCosts","updateCentroids","U","numerator","denominator","updateMembership","_U","assign$1","_c2","_c3","fuzzyCMeans","degreeOfMembership","kClustering","fcm","defaults$6","linkage","addDendrogram","dendrogramDepth","linkageAliases","setOptions$2","preferredAlias","mergeClosest","dists","mins","minKey","n1","_dist","merged","cur","key1","key2","getAllChildren","buildDendrogram","leftStr","rightStr","buildClustersFromTree","hierarchicalClustering","retClusters","hierarchicalClustering$1","hca","defaults$7","preference","damping","minIterations","setOptions$3","dmp","pref","validPrefs","some","getSimilarity$1","attr","getPreference","findExemplars","indices","assignClusters","exemplars","ei","_ei","assign$2","ii","maxI","maxSum","affinityPropagation","old","Rp","se","_i8","max2","AS","_i9","_j3","_j4","K","_i10","E","_sum","_i11","_j5","exemplarsIndices","clusterIndices","_i12","clusterIndex","affinityPropagation$1","ap","elesfn$b","STATE_PENDING","STATE_FULFILLED","STATE_REJECTED","api","executor","fulfillValue","rejectReason","onFulfilled","onRejected","proxy","fulfill","reject","deliver","curr","resolver","execute","execute_handlers","handlers","func","setImmediate","resolve","resolved","ps","resolveAll","rejectAll","vals","doneCount","isPromise","Promise$1","Promise","Animation","opts2","isCore","isEle","duration","started","playing","hooked","applying","progress","completes","frames","complete","startPosition","startStyle","getAnimationStartStyle","startPan","startZoom","anifn","hook","tAni","addToAnimationPool","play","stopped","pause","rewind","fastforward","time","wasPlaying","completed","swap","_pa","startStyleProp","running","define","animated","selfIsArrayLike","styleEnabled","clearQueue","delay","delayAnimation","properties","isEles","propertiesEmpty","getPropsList","panBy","cyPan","center","centre","centerPan","getCenterPan","fitVp","getFitViewport","vp","getZoomedViewport","zoomed","panned","ani","jumpToEnd","anis","ani_p","notify","define$1","field","bindingEvent","allowBinding","allowSetting","allowGetting","settingEvent","settingTriggersEvent","triggerFnName","immutableKeys","updateStyle","beforeGet","beforeSet","onSet","canSet","valid","change","_valid","_ele","removeData","triggerEvent","names","i_a","l_a","_i_a","_l_a","_privateFields","_keys","validKeyToDelete","define$2","eventAliasesOn","proto","addListener","listen","unlisten","unbind","removeListener","emit","pon","promiseOn","events","offArgs","onArgs","define$3","elesfn$c","elesfn$d","_classes","changed","classesSet","eleClasses","changedEle","eleHasClass","addClass","toggleClass","hasClass","className","toggle","toggleUndefd","il","changedNow","removeClass","flashClass","classNames","tokens","metaChar","comparatorOp","boolOp","meta","separator","descendant","directedEdge","undirectedEdge","variable","ops","op","newQuery","checks","Type","GROUP","COLLECTION","FILTER","DATA_COMPARE","DATA_EXIST","DATA_BOOL","META_COMPARE","STATE","ID","CLASS","UNDIRECTED_EDGE","DIRECTED_EDGE","NODE_SOURCE","NODE_TARGET","NODE_NEIGHBOR","CHILD","DESCENDANT","PARENT","ANCESTOR","COMPOUND_SPLIT","TRUE","stateSelectors","matches","visible","isChildless","isChild","isOrphan","isSimple","lookup","selToFn","stateSelectorMatches","sel","stateSelectorRegex","cleanMetaChars","$1","replaceLastQuery","examiningQuery","replacementQuery","exprs","query","regex","populate","_ref2","_ref3","_ref4","_ref5","_ref6","_ref7","_ref8","_ref9","_ref10","_ref11","_ref12","valueIsString","operator","_ref13","_ref14","_ref15","_ref16","currentSubject","edgeCount","compoundCount","lastQ","nextQuery","edgeQuery","srcTgtQ","_source","_target","nhoodQ","neighbor","parentChildQuery","compound","_child","_parent","_parent2","_child2","pcQChecks","ancChQuery","ancestor","_descendant","_ancestor","_ancestor2","_descendant2","adQChecks","modifier","topQ","topChk","topType","regexObj","consumeExpr","remaining","expr","consumed","consumeWhitespace","parse","inputText","currentQuery","exprInfo","toStringCache","clean","cleanVal","space","checkToString","check","_operator","_field","_field2","_operator2","_field3","queryToString","lhs","sub","rhs","chk","parse$1","valCmp","fieldVal","fieldStr","valStr","isFieldStr","isFieldNum","isValStr","caseInsensitive","notExpr","isIneqCmp","boolCmp","existCmp","every","stateSelector","qA","qB","incomers","ancestors","descendants","selectorFunction","text","matches$1","matching","Selector","addQuery","invalid","selfn","eq","sameText","otherSel","elesfn$e","allAre","selObj","is","thisLength","collectionLength","anySame","allAreNeighbors","nhood","allAreNeighbours","equal","equals","elesfn$g","arg1","arg2","arg3","arg4","selectorOrEles","tch","ch","cacheHit","elesfn$f","parents","unique","nonempty","commonAncestors","orphans","nonorphans","eleChildren","siblings","not","forEachCompound","includeSelf","recursiveStep","did","hasCompounds","hasCompoundNodes","addChildren","addParent","addParentAndChildren","forEachDown","forEachUp","forEachUpAndDown","removeScratch","removeRscratch","removeAttr","fn$2","elesfn$i","data$1","elesfn$h","defineDegreeFunction","includeLoops","defineDegreeBoundsFunction","degreeFn","minDegree","minIndegree","minOutdegree","totalDegree","beforePositionSet","newPos","silent","oldPos","shiftCachedBoundingBox","positionDef","validKeys","dirtyCompoundBoundsCache","silentPosition","_fn","startBatch","_pos","endBatch","silentPositions","silentShift","setting","relativePosition","ppos","_hasParent","_relativeToParent","_origin","_ele2","hasParent","relativeToParent","origin","modelPosition","point","modelPositions","renderedPoint","relativePoint","fn$3","elesfn$j","renderedBoundingBox","emitAndNotify","force","batching","includeLabels","pstyle","pfValue","bottom","takesUpSpace","includeOverlays","useCache","leftVal","units","rightVal","topVal","bottomVal","widthBiasDiffs","computeBiasValues","diffLeft","biasDiff","diffRight","biasComplementDiff","heightBiasDiffs","diffTop","diffBottom","computePaddingValues","propDiff","propBias","propBiasComplement","biasTotal","paddingObject","relativeTo","noninf","updateBounds","updateBoundsFromBox","b2","prefixedProperty","updateBoundsFromArrow","bounds","headless","halfArW","arrowWidth","arrowType","srcX","srcY","tgtX","tgtY","midX","midY","bbs","arrowBounds","updateBoundsFromLabel","prefixDash","strValue","halign","valign","labelWidth","labelHeight","labelX","labelY","marginX","marginY","isEdge","rotation","outlineWidth","borderWidth","halfBorderWidth","lh","lw","lw_2","lh_2","bbPrefix","isAutorotate","isPfValue","theta","xo","yo","rotate","px1y1","px1y2","px2y1","px2y2","boundingBoxImpl","ex1","ex2","ey1","ey2","display","displayed","manualExpansion","overlayOpacity","overlayPadding","wHalf","includeNodes","outerWidth","halfW","outerHeight","halfH","includeEdges","hpts","haystackPts","_temp","pts","bezierPts","linePts","n1pos","n2pos","_temp2","_temp3","ghost","gx","gy","bbBody","bbOverlay","bbLabels","getKey","tf","incudeNodes","getBoundingBoxPosKey","cachedBoundingBoxImpl","defBbOptsKey","usingDefOpts","currPosKey","isPosKeySame","bbCachePosKey","needRecalc","recalculateRenderedStyle","defBbOpts","safeShift","filledBbOpts","dirtyBoundingBoxCache","boundingBoxAt","storeOldPos","bbAtOldPos","getOldPos","boundingbox","renderedBoundingbox","fn$4","elesfn$k","defineDimFns","uppercaseName","autoName","labelName","outerName","uppercaseOuterName","border","od","widthHeight","ifEdge","getValue","ifEdgeRenderedPosition","getPoint","ifEdgeRenderedPositions","getPoints","controlPoints","renderer","getControlPoints","segmentPoints","getSegmentPoints","sourceEndpoint","getSourceEndpoint","targetEndpoint","getTargetEndpoint","midpoint","getEdgeMidpoint","mult","renderedName","substr","edgePoints","spec","rName","Event","recycle","returnFalse","returnTrue","isImmediatePropagationStopped","isPropagationStopped","isDefaultPrevented","preventDefault","defaultPrevented","originalEvent","namespace","timeStamp","stopPropagation","stopImmediatePropagation","eventRegex","universalNamespace","defaults$8","qualifierCompare","q1","q2","eventMatches","addEventFields","callbackContext","context","beforeEmit","afterEmit","bubble","defaultsKeys","emptyOpts","Emitter","emitting","forEachEvent","handler","qualifier","conf","confOverrides","eventList","evt","makeEventObj","forEachEventObj","eventObj","removeAllListeners","extraParams","manualCallback","numListenersBeforeEmit","emitterOptions","selector1","selector2","once","onceCollection","argSelector","arg","elesfn$l","emitter","argSel","elesfn$m","_filter","filterEles","include","toRemove","rMap","absoluteComplement","mutableElements","col1","col2","col1Smaller","map2","xor","inOther","both","retEles","toAdd","toAddEle","_index","unmergeAt","unmergedLastEle","lastEleI","lastEle","lastEleId","unmergeOne","unmerge","toRmFn","mapFn","initialValue","valFn","maxEle","minEle","fn$5","union","or","difference","relativeComplement","and","symmetricDifference","symdiff","fnFilter","filterFn","complement","abscomp","elesfn$n","zIndexSort","getDepth","zDepth","depthDiff","getEleDepth","eleDiff","zDiff","poolIndex","elesfn$o","thisSize","first","last","sortFn","sorted","sortByZIndex","srcDepth","tgtDepth","each","getLayoutDimensionOptions","elesfn$p","bbDim","layoutPositions","layoutEles","getMemoizeKey","fnMem","animations","calculateSpacing","spacing","nodesBb","spacingVector","useSpacingFactor","spacingFactor","spacingBb","getFinalPos","transform","animateNode","animateFilter","animationDuration","easing","animationEasing","fitAni","zoomPanAni","makeLayout","styleCache","cacheStyleFunction","cachePrototypeStyleFunction","selfFn","createLayout","elesfn$q","dirtyStyleCache","dirty","spawnSelf","notifyRenderer","bEles","batchStyleEles","updatedEles","changedEles","parsedStyle","includeNonDefault","overriddenStyle","getDefaultProperty","numericStyle","numericStyleUnits","renderedStyle","getRenderedStyle","updateTransitions","applyBypass","getStylePropertyValue","getRawStyle","removeStyle","removeAllBypasses","removeBypasses","show","hide","effectiveOpacity","parentOpacity","opacity","checkCompound","parentOk","defineDerivedStateFunction","specs","ok","edgeOkViaNode","eleTakesUpSpace","eleInteractive","parentInteractive","interactive","noninteractive","eleVisible","edgeVisibleViaNode","hidden","isBundledBezier","renderedCss","removeBypass","removeCss","elesfn$r","defineSwitchFunction","_handler","addlEvents","able","ableField","overrideAble","changedColl","defineSwitchSet","overrideField","autolock","autoungrabify","autounselectify","deselect","unselect","inactive","elesfn$s","defineDagExtremity","disqualified","noIncomingEdges","noOutgoingEdges","defineDagOneHop","oEles","defineDagAllHops","sEles","sElesIds","newNext","nid","defineSourceFunction","sources","defineEdgesWithFunction","otherNodes","edgeData","thisToOther","otherToThis","edgeConnectsThisAndOther","thisIsSrc","thisIsTgt","defineParallelEdgesFunction","codirected","edge1","edge1_p","src1","srcid1","tgtid1","srcEdges1","edge2","edge2data","tgtid2","srcid2","oppdirected","clearTraversalCache","successors","predecessors","otherNode","closedNeighborhood","neighbourhood","closedNeighbourhood","openNeighbourhood","targets","parallelEdges","codirectedEdges","components","visited","unvisited","visitInComponent","cmpt","componentsOf","idFactory","generate","tryThisId","Collection","createdElements","elesIds","_data","_l","element$1","elesfn$t","$id","_data2","move","checkSwitch","trueFnName","falseFnName","obj_k","jsons","elesArr","addToPool","cy_p","removeFromElements","_data3","fields","fieldsLength","badSourceOrTarget","_data4","parentId","specifiedParent","selfAsParent","toUpdateStyle","restored","inside","removeFromPool","elesToRemove","elesToRemoveIds","addConnectedEdges","alreadyAdded","removeEdgeRef","removeParallelRef","pllEdge","alteredParents","removeChildRef","pid","ids","_ele3","pllEdges","elesStillInside","_ele4","removedElements","_ele5","modifyPool","srcExists","tgtExists","batch","_data5","parentExists","pidToAssign","updated","_data6","corefn","_jsons","elesByGroup","_jsons2","grs","elesArray","jl","_json","generateCubicBezier","mX1","mY1","mX2","mY2","NEWTON_ITERATIONS","NEWTON_MIN_SLOPE","SUBDIVISION_PRECISION","SUBDIVISION_MAX_ITERATIONS","kSplineTableSize","kSampleStepSize","float32ArraySupported","Float32Array","mSampleValues","aA1","aA2","calcBezier","aT","getSlope","newtonRaphsonIterate","aX","aGuessT","currentSlope","calcSampleValues","binarySubdivide","aA","aB","currentT","getTForX","intervalStart","currentSample","lastSample","guessForT","initialSlope","_precomputed","precompute","generateSpringRK4","springAccelerationForState","tension","friction","springEvaluateStateWithDerivative","initialState","dt","derivative","dv","springIntegrateState","dxdt","dvdt","springRK4Factory","have_duration","last_state","initState","time_lapsed","DT","percentComplete","cubicBezier","bezier","percent","easings","linear","spring","getEasedValue","easingFn","roundValue","ease","startProp","endProp","propSpec","easedArr","si","step","pEasing","startTime","easingImpl","easingVals","easingProp","startPos","endPos","endPan","animatingPan","endZoom","animatingZoom","minZoom","maxZoom","_name","easedVal","overrideBypass","startAnimation","stepAll","aniEles","doneEles","stepOne","ranAnis","callbacks","_callbacks","ranEleAni","handledThisEle","ranCoreAni","corefn$1","stopAnimationLoop","animationsRunning","startAnimationLoop","beforeRender","willDraw","beforeRenderPriorities","headlessStep","emitterOptions$1","argSelector$1","elesfn$u","corefn$2","png","jpg","bg","jpeg","corefn$3","extension","corefn$4","eventName","eventEles","batchNotifications","notificationsEnabled","destroyed","notifications","bool","noNotifications","batchCount","batchData","rendererDefaults","hideEdgesOnViewport","textureOnViewport","motionBlur","motionBlurOpacity","pixelRatio","desktopTapThreshold","touchTapThreshold","wheelSensitivity","debug","showFps","corefn$5","renderTo","pxRatio","forceRender","resize","invalidateSize","initRenderer","RendererProto","rOpts","destroyRenderer","domEle","_cyreg","childNodes","removeChild","onRender","offRender","invalidateDimensions","corefn$6","styfn","FALSE","newStyle","contextStyles","propDiffs","cleanElements","ie","cxtMeta","getContextMeta","cxtStyle","getContextStyle","app","applyContextStyle","diffProps","hintsDiff","updateStyleHints","getPropertiesDiff","oldCxtKey","newCxtKey","dualCxtKey","cachedVal","addedProp","cxt","oldHasCxt","newHasCxt","cxtHasDiffed","cxtHasMappedProps","mappedProperties","laterCxtOverrides","laterCxt","hasLaterCxt","cxtKey","prevKey","styleCxtKey","contextSelectorMatches","diffPropNames","cxtStyles","hasCxt","retDiffProps","types","diffPropName","cxtProp","eleProp","deleteBypassed","mapped","mapping","fnValue","prevFnValue","retDiffProp","applyParsedProperty","bypassed","propNames","propertyGroupNames","propGrKeys","propertyGroupKeys","propHash","seedKey","getPropertiesHash","oldStyleKey","styleKey","overriddenStyles","grKey","updateGrKey","updateGrKeyWStr","strVal","cleanNum","parsedProp","propInfo","_grKey","groupKey","normalizedNumberVal","hashOverride","numberVal","enums","haveNormNum","haveUnitedNum","haveNum","_grKey2","grHash","labelDimsKey","labelDimensions","labelKey","labelStyleKey","commonLabel","sourceLabelKey","sourceLabelStyleKey","targetLabelKey","targetLabelStyleKey","_p$styleKeys","nodeBody","nodeBorder","backgroundImage","pie","nodeKey","hasPie","clearStyleHints","flatProp","propIsBypass","origProp","origPropIsBypass","flatPropMapping","getVal","checkTriggers","fromVal","toVal","deleteBypass","printMappingErr","mapData","fieldWidth","fieldMax","fieldMin","r1","valueMin","r2","valueMax","g1","g2","b1","a1","a2","clr","calcValue","_fields","_fieldVal","fnRetVal","keepBypasses","anyPrev","styProp","diffProp","prevProp","fromProp","toProp","initVal","initDt","transitioning","checkTrigger","fromValue","toValue","getTrigger","onTrigger","triggerCheck","checkZOrderTrigger","triggersZOrder","checkBoundsTrigger","triggersBounds","triggersBoundsOfParallelBeziers","styfn$1","isBypass","_parsedProp","specifiedProps","_name2","_parsedProp2","_prop","isColor","isMulti","mutiple","oldValue","propertyNames","styfn$2","containerCss","getComputedStyle","getPropertyValue","styfn$3","isRenderedVal","subproperty","pointsTo","styleProp","getRenderedValue","getValueStringWithUnits","isArrayValue","haveUnits","aniProps","aniProp","propsObj","chVal","getNonDefaultPropertiesHash","styfn$4","resetToDefault","appendFromJson","defaultLength","styfn$5","selAndBlockStr","blockRem","propAndValStr","removeSelAndBlockFromRemaining","removePropAndValFromRem","nothingLeftToParse","selAndBlock","selectorStr","blockStr","invalidBlock","_nothingLeftToParse","propAndVal","propStr","appendFromString","styfn$6","hex3$1","hex6$1","mapArg","urlRegexes","implicitUnits","percentages","zeroOneNumber","unitless","zeroOneNumbers","nOneOneNumber","nonNegativeInt","nodeSize","numbers","positiveNumber","strictMin","bidirectionalSize","bidirectionalSizes","sizeMaybePercent","allowPercent","axisDirection","paddingRelativeTo","bgWH","bgPos","bgRelativeTo","bgRepeat","bgFit","bgCrossOrigin","bgClip","fill","lineStyle","lineCap","borderStyle","curveStyle","fontFamily","fontStyle","fontWeight","textDecoration","textTransform","textWrap","textOverflowWrap","textBackgroundShape","nodeShape","compoundIncludeLabels","arrowShape","arrowFill","visibility","zCompoundDepth","zIndexCompare","justification","layoutData","mapLayoutData","mapScratch","regexes","singleRegexMatchValue","urls","propList","textRotation","polygonPointList","evenMultiple","edgeDistances","edgeEndpoint","singleEnum","validate","valArr","unitsArr","gradientDirection","zeroNonZero","val1","val2","any","mainLabel","sourceLabel","targetLabel","behavior","overlay","transition","nodeSizeHashOverride","edgeLine","pieBackgroundN","edgeArrow","arrowPrefixes","propGroups","propertyGroups","propGroupNames","propGroupKeys","aliases","pointsToProp","aliasProp","getDefaultProperties","defaultProperties","rawProps","parsedProps","addDefaultStylesheet","styfn$7","propIsFlat","parseImplWarn","flatKey","bypassKey","valueKey","argHash","propCache","parseImpl","passedValue","trim","_mapped","pfValArr","hasEnum","checkEnums","en","unitsRegex","strictMax","getEmSizeInPixels","propsStr","propsSplit","tuple","enumProp","Style","coreStyle","styfn$8","mapVal","cssRule","currentSelectorIsCore","append","appendToStyle","fromJson","fromString","corefn$7","setStyle","generateStyle","defaultSelectionType","corefn$8","selectionType","selType","panningEnabled","userPanningEnabled","userZoomingEnabled","boxSelectionEnabled","arg0","viewportState","bbe","zoomRange","currentPan","currentZoom","bail","level","pan1","zoom1","zoom2","pan2","viewport","zoomDefd","panDefd","zoomFailed","panFailed","cancelOnFailedZoom","reset","sizeCache","clientWidth","clientHeight","extent","rb","renderedExtent","autolockNodes","autoungrabifyNodes","fn$6","Core","reg","destroy","readies","head","defVal","def","altVal","loadExtData","extData","anyIsPromise","rendererOptions","setElesAndLayout","onload","ondone","oldEles","layoutOpts","thens","initStyle","initEles","corefn$9","isReady","isHeadless","mount","unmount","getFreshRef","idInJson","updateEles","gr","toMod","_toMod$_i","parentsToRemove","flat","defaults$9","circle","grid","maximal","setInfo","BreadthFirstLayout","graph","maximalAdjustments","rootsArray","comp","compRoots","depths","foundByBfs","addToDepth","changeDepth","newDepth","pNode","orphanNodes","assignDepthsAt","assignDepths","adjustMaximally","shifted","eInfo","maxDepth","incmr","iInfo","enqueue","dequeue","didShift","minDistance","nbb","cachedWeightedPercent","getWeightedPercent","eleDepth","samples","bf","nDepth","apct","bpct","orphanDepth","biggestDepthSize","maxDepthSize","getPosition","_getInfo2","depthSize","distanceX","distanceY","radiusStepSize","epos","defaults$a","sweep","clockwise","CircleLayout","counterclockwise","dTheta","dcos","dsin","rMin","getPos","rx","ry","DEBUG","defaults$b","equidistant","minNodeSpacing","concentric","levelWidth","ConcentricLayout","nodeValues","maxNodeSize","levels","currentLevel","minDist","firstLvlHasMulti","maxR","rStep","rDeltaMax","_r","_level","rDelta","_level2","_level3","_dTheta","_r2","_val","defaults$c","animationThreshold","componentSpacing","nodeRepulsion","nodeOverlap","idealEdgeLength","edgeElasticity","nestingFactor","gravity","initialTemp","coolingFactor","minTemp","CoseLayout","layoutInfo","createLayoutInfo","printLayoutInfo","randomizePositions","refreshPositions","mainLoop","step$1","temperature","getScaledPos","getScaleInBoundsFn","loopRet","separateComponents","thread","isCompound","layoutNodes","idToIndex","graphSet","indexToGraph","layoutEdges","edgeSize","id2cmptId","tempNode","isLocked","cmptId","positionX","positionY","padLeft","padRight","padTop","padBottom","tempGraph","p_id","node_id","node_ix","tempEdge","sourceId","targetId","idealLength","elasticity","sourceIx","targetIx","sourceGraph","targetGraph","lca","findLCA","lcaGraph","findLCA_aux","graphIx","nodeId","nodeIx","childGraphIx","coseBB","lnode","pctX","pctY","_step","calculateNodeForces","calculateEdgeForces","calculateGravityForces","propagateForces","updatePositions","randomDistance","cmptId1","cmptId2","directionX","directionY","maxRandDist","overlap","nodesOverlap","forceX","forceY","point1","findClippingPoint","point2","distanceSqr","dX","dY","overlapX","overlapY","X","Y","H","W","dirSlope","nodeSlope","lx","ly","distThreshold","fx","fy","nodeIndex","offX","offY","childNode","tempForce","limitForce","updateAncestryBoundaries","flag","cid","totalA","usedW","rowH","maxRowW","defaults$d","avoidOverlapPadding","condense","rows","cols","GridLayout","cells","splits","small","large","oRows","oCols","columns","sm","lg","_sm","_lg","cellWidth","cellHeight","cellUsed","used","use","moveToNextCell","id2manPos","rcPos","defaults$e","NullLayout","defaults$f","PresetLayout","posIsFn","defaults$g","RandomLayout","NullRenderer","noop$1","BRp","arrowShapes","bbCollide","translation","edgeWidth","xRotated","yRotated","xScaled","yScaled","xTranslated","yTranslated","transformPoints","retPts","pointsToArr","standardGap","defineArrowShape","defn","collide","roughCollide","draw","arrowShapeImpl","controlPoint","ptsTrans","ctrlPt","ctrlPtTrans","pointsTee","triPts","teePts","baseCrossLinePts","crossLinePts","shiftFactor","y0","getArrowWidth","BRp$1","clientX","clientY","findContainerClientCoords","offsetLeft","offsetTop","scale","containerBB","rect","getBoundingClientRect","styleValue","paddingHor","paddingVer","borderHor","unscaledW","unscaledH","interactiveElementsOnly","isTouch","findNearestElements","nearEdge","nearNode","getCachedZSortedEles","near","edgeThreshold","nodeThreshold","labelThreshold","minSqDist","addEle","sqDist","checkNode","hw","hh","shape","nodeShapes","getNodeShape","checkPoint","checkEdge","styleWidth","widthSq","width2","edgeType","allpts","arSize","arrows","arrowStartX","arrowStartY","srcArrowAngle","arrowEndX","arrowEndY","tgtArrowAngle","midsrcArrowAngle","midtgtArrowAngle","ar","preprop","pre","checkLabel","th","eventsEnabled","box","x1c","x2c","y1c","y2c","boxBb","nodeBb","startX","startY","endX","endY","allInside","BRp$2","isHaystack","isBezier","isMultibezier","isSegments","isSelf","segpts","bX","bY","i2","i1","i3","bp0x","bp0y","bp1x","bp1y","cpts","ctrlpts","ic","midDispX","midDispY","getArrowHeight","arrowWidthCache","BRp$3","getPts","findHaystackPoints","haystack","srcPos","tgtPos","srcW","tgtW","srcH","tgtH","halfRadius","storeEdgeProjections","calculateArrowAngles","recalculateEdgeLabelProjections","calculateLabelAngles","findSegmentsPoints","pairInfo","posPts","intersectionPts","vectorNormInverse","segmentWs","segmentDs","segmentsN","w1","w2","midptPts","adjustedMidpt","findLoopPoints","edgeIsUnbundled","dirCounts","ctrlptDists","ctrlptDist","loopDir","loopSwp","stepSize","loopDist","loopAngle","outAngle","inAngle","String","findCompoundLoopPoints","loopW","loopaPos","loopbPos","loopPos","minCompoundStretch","compoundStretchA","compoundStretchB","findStraightEdgePoints","findBezierPoints","edgeIsSwapped","ctrlptWs","bezierN","ctrlptWeight","multi","normctrlptDist","manctrlptDist","sign","distanceFromMidpoint","findTaxiPoints","VERTICAL","HORIZONTAL","LEFTWARD","RIGHTWARD","DOWNWARD","UPWARD","AUTO","dIncludesNodeBody","taxiDir","rawTaxiDir","taxiTurn","taxiTurnPfVal","minD","turnIsPercent","dw","dh","pdx","pdy","subDWH","dxy","dwh","isExplicitDir","isVert","pl","sgnL","forcedDir","getIsTooClose","isTooCloseSrc","isTooCloseTgt","isTooClose","lShapeInsideSrc","lShapeInsideTgt","_lShapeInsideSrc","_lShapeInsideTgt","_y","_x","_x2","_x3","_y2","_y3","_y4","_x4","_x5","_x6","_y5","_y6","tryToCorrectInvalidPoints","srcShape","tgtShape","badStart","badAStart","badEnd","badAEnd","minCpADistFactor","arrowW","arrowShapeWidth","minCpADist","startACpDist","closeStartACp","endACpDist","closeEndACp","overlapping","cpD","cpL","cpM","cpProj","srcCtrlPtIntn","intersectLine","_cpD","_cpL","_cpM","_radius","_cpProj","tgtCtrlPtIntn","findEndpoints","storeAllpts","mt","checkForInvalidEdgeWarning","loggedErr","findEdgeControlPoints","hashTable","pairId","pairIds","haystackEdges","edgeIsBezier","srcIndex","tgtIndex","tableEntry","hasUnbundled","hasBezier","swappedpairInfo","firstEdge","_curveStyle","_edgeIsUnbundled","calculatedIntersection","srcOutside","srcIntn","tgtOutside","tgtIntn","vector","vectorNorm","passedPairInfo","BRp$4","npos","p1_i","p2_i","tgtArShape","srcArShape","et","taxi","lines","segments","hasEndpts","overrideEndpts","srcManEndpt","srcManEndptVal","tgtManEndpt","tgtManEndptVal","cpStart","cpEnd","srcArrowFromPt","tgtArrowFromPt","manualEndptToPx","trs","va","ha","labelIntersect","refPt","intSqdist","labIntSqdist","arrowEnd","edgeEnd","srs","_lw","_lh","_lx","_ly","_va","_ha","_labelIntersect","_refPt","_intSqdist","_labIntSqdist","arrowStart","edgeStart","badLine","BRp$5","pushBezierPts","qbezierAt$1","p3","bpts","bezierProjPcts","lpts","recalculateEdgeProjections","BRp$6","textX","textY","nodeWidth","nodeHeight","nodePos","textHalign","textValign","applyLabelDimensions","lineAngleFromDelta","lineAngle","bezierAngle","t0","lp0","lp1","setRs","midAngle","createControlPointInfo","startDist","nProjs","addSegment","cp","prevSegment","segment","prevCp","calculateEndProjection","isSrc","cps","totalDist","_cp","_seg","lastSeg","seg","tSegment","segDt","di","d0","pD","_t","applyPrefixedLabelDimensions","getLabelText","labelDims","calculateLabelDimensions","lineHeight","numLines","normPerLineHeight","labelLineHeight","pfd","wrapStyle","zwsp","maxW","overflow","overflowAny","wrappedLines","wordsRegex","wordSeparator","lineDims","lineW","processedLine","words","subline","word","testLine","testDims","testW","_maxW","ellipsized","ellipsis","incLastCh","widthWithNextCh","getLabelJustification","cacheKey","labelDimCache","existingVal","sizeMult","fStyle","family","div","labelCalcDiv","createElement","body","appendChild","ds","fontSize","zIndex","pointerEvents","whiteSpace","textContent","calculateLabelAngle","rot","rotStr","labelAutoAngle","labelAngle","sourceLabelAngle","targetLabelAngle","BRp$7","TOO_SMALL_CUT_RECT","warnedCutRect","makePolygon","BRp$8","elesToUpdate","dirtyStyleCaches","binder","updateEleCalcs","fns","onUpdateEleCalcsFns","flushRenderedStyleQueue","eleCalcs","recalculateNodeLabelProjection","nodeW","nodeH","BRp$9","cachedZSortedEles","nondrag","grabTargets","inDragLayer","forceRecalc","updateCachedGrabbedEles","BRp$a","BRp$b","crossOrigin","onLoad","imageCache","image","addEventListener","Image","dataUriPrefix","isDataUri","BRp$c","useCapture","tgtIsDom","supportsPassiveEvents","supportsPassive","capture","passive","bindings","nodeIsDraggable","isSelected","triggerEvents","isMultSelKeyDown","shiftKey","metaKey","ctrlKey","allowPanningPassthrough","down","downs","allowPassthrough","setGrabbed","setFreed","setInDragLayer","setOutDragLayer","setGrabTarget","isGrabTarget","removeGrabTarget","addToDragList","list","addToList","listHasEle","addDescendantsToDrag","innerNodes","addNodesToDrag","updateAncestorsInDragLayer","addNodeToDrag","freeDraggedElements","grabbedEles","blurActiveDomElement","activeElement","blur","haveMutationsApi","MutationObserver","removeObserver","mutns","mutn","rNodes","removedNodes","rNode","parentNode","observe","childList","registerBinding","onResize","styleObserver","invalidateCoords","invalidateContainerClientCoordsCache","inBoxSelection","selection","eventInContainer","containerPageCoords","touches","atLeastOnePosInside","tParent","containerIsTarget","hoverData","which","gpos","projectIntoViewport","select","nears","draggedElements","dragData","possibleDragElements","mdownPos","mdownGPos","checkForTaphold","tapholdCancelled","clearTimeout","tapholdTimeout","tapholdDuration","cxtStarted","cxtEvt","activate","downTime","getTime","cxtDragged","nodeIsGrabbable","makeEvent","triggerGrab","selectedNodes","redrawHint","bgActivePosistion","redraw","draggingEles","dragging","selecting","findNearestElement","isOverThresholdDrag","dx2","dy2","dist2","desktopTapThreshold2","multSelKeyDown","updateDragDelta","dragDelta","goIntoBoxMode","cxtOver","deltaP","justStartedPan","mdPos","dragged","unactivate","didDrag","justStartedDrag","toTrigger","totalShift","dEle","cxtTap","getAllInBox","eleWouldBeSelected","downWasGrabbed","f1x1","f1y1","f2x1","f2y1","distance1","distance1Sq","center1","modelCenter1","containerWidth","containerHeight","twoFingersStartInside","wheelHandler","scrollingPage","wheelZooming","wheelTimeout","deltaY","wheelDeltaY","wheelDelta","needsWheelFix","deltaMode","scrollingPageTimeout","touchstartHandler","touchmoveHandler","touchcancelHandler","touchendHandler","distanceSq","touchData","earlier","touchDragEles","cxtDistThreshold","cxtDistThresholdSq","near1","near2","starts","draggedEles","singleTouchMoved","singleTouchStartTime","pinching","sPos","touch0","startGPosition","startGPos","touchTapThreshold2","f1x2","f1y2","f2x2","f2y2","distance2Sq","factorSq","distThresholdSq","factorThreshold","factorThresholdSq","lastThreeTouch","de_p","_start","distance2","factor","df1x","df1y","df2x","df2y","tx","ty","ctrx","ctry","swipePanning","ctxTapend","ctxTap","startWasGrabbed","rdist2","TouchEvent","pointers","makeTouch","identifier","pointerId","pageX","pageY","radiusX","radiusY","screenX","screenY","makePointer","touch","addPointer","removePointer","updatePointer","addTouchesToEvent","pointerIsMouse","pointerType","BRp$d","nodeShapeImpl","diam","cornerLength","generateCutTrianglePts","cl","xBegin","xEnd","yBegin","yEnd","topLeft","topRight","bottomRight","bottomLeft","cPts","cutTrianglePts","bPts","generateBarrelBezierPts","approximateBarrelCurvePts","m0","m1","m2","curveConstants","hOffset","wOffset","ctrlPtXOffset","isTop","isBottom","barrelCurvePts","getCurveT","curvePts","x0","xMin","xMax","yMin","yMax","coeff","validRoots","curveRegions","corner","cornerPts","bezY","topIntersections","generateEllipse","generatePolygon","generateRoundRectangle","generateCutRectangle","generateBarrel","generateBottomRoundrectangle","star5Points","outerPoints","innerPoints","innerRadius","BRp$e","redrawTotalTime","redrawCount","averageRedrawTime","lastRedrawTime","lastDrawTime","requestedFrame","renderOptions","priority","cbs","beforeRenderCallbacks","startRenderLoop","renderLoopStarted","renderFn","requestTime","skipFrame","endTime","BaseRenderer","BR","BRp$f","clientFunctions","stylesheetId","stylesheetAlreadyExists","innerHTML","insertBefore","computedStyle","triggerMode","initialPan","redraws","hideLabelsOnViewport","motionBlurEnabled","forcedPixelRatio","motionBlurTransparency","motionBlurPxRatio","mbPxRBlurry","minMbLowQualFrames","fullQualityMb","clearedForMotionBlur","eleTxrDeq","lyrTxrDeq","lyrTxrSkip","registerNodeShapes","registerArrowShapes","registerCalculationListeners","invalidateCachedZSortedEles","matchCanvasSize","load","binding","removeEventListener","disconnect","fullFpsTime","defs","setupDequeueing","dequeueingSetup","queueRedraw","deqRedrawThreshold","frameStartTime","avgRenderTime","renderTime","deqd","getPixelRatio","frameDuration","timeAvailable","deqFastCost","deqCost","deqAvgCost","deqNoDrawCost","thisDeqd","deq","onDeqd","shouldRedraw","ElementTextureCacheLookup","doesEleInvalidateKey","idsByKey","keyForId","cachesByLvl","lvls","getIdsFor","currKey","deleteIdForKey","addIdForKey","newKey","keyHasChangedFor","lvl","caches","getCachesAt","getCache","updateKeyMappingFor","hasCache","setCache","deleteCache","deleteKeyMappingFor","entireKeyInvalidated","invalidateKey","getNumberOfIdsForKey","minTxrH","txrStepH","minLvl","maxLvl","eleTxrSpacing","defTxrWidth","maxTxrW","maxTxrH","minUtility","maxFullness","maxFullnessChecks","maxDeqSize","getTxrReasons","downscale","highQuality","initDefaults","drawElement","getBoundingBox","getRotationPoint","getRotationOffset","isVisible","allowEdgeTxrCaching","allowParentTxrCaching","ElementTextureCache","initOptions","onDequeues","ETCp","reasons","getTextureQueue","txrH","eleImgCaches","getRetiredTextureQueue","rtxtrQs","retired","rtxtrQ","getElementQueue","eleCacheQueue","reqs","getElementKeyToQueue","k2q","eleKeyToCacheQueue","getElement","reason","eleScaledH","eleScaledW","scaledLabelShown","eleTextBiggerThanMin","eleCache","invalidated","texture","invalidatedWidth","txrQ","txr","addNewTxr","recycleTexture","addTexture","usedWidth","higherCache","scalableFrom","otherCache","deqing","highQualityReq","downscaleReq","oneUpCache","drawImage","canvas","setTransform","clearRect","queueElement","lowerCache","_l2","translate","eleCaches","checkTextureFullness","invalidateElements","invalidateElement","isInvalid","getForCachedKey","noOtherElesUseCache","invalidate","_cache","checkTextureUtility","removeFromQueue","retireTexture","fullnessChecks","minW","makeOffscreenCanvas","getContext","existingReq","req","dequeued","cacheExists","onDequeue","offDequeue","defNumLayers","minLvl$1","maxLvl$1","maxZoom$1","deqRedrawThreshold$1","refineEleDebounceTime","deqCost$1","deqAvgCost$1","deqNoDrawCost$1","deqFastCost$1","maxDeqSize$1","invalidThreshold","maxLayerArea","useHighQualityEleTxrReqs","LayeredTextureCache","layersByLevel","firstGet","lastInvalidationTime","skipping","eleTxrDeqs","scheduleElementRefinement","refineElementTextures","qSort","layersQueue","LTCp","layerIdPool","MAX_INT$1","makeLayer","layer","elesQueue","getLayers","validateLayersElesOrdering","tmpLayers","layersByLvl","layers","lvlComplete","levelIsComplete","checkTempLevels","canUseAsTmpLvl","checkLvls","dir","getBb","after","area","maxElesPerLayer","allowLazyQueueing","imgLayerCaches","existingLayer","queueLayer","drawEleInLayer","getEleLevelForLayerLevel","setImgSmoothing","drawCachedElement","numElesInLayers","invalidateLayer","updateElementsInLayers","haveLayers","replacement","rLyr","replaces","enqueueElementRefinement","elesQ","hasId","eleDeqs","applyLayerReplacement","requestRedraw","layersInLevel","replaced","CRp","polygon","lineTo","triangleBackcurve","firstPt","quadraticCurveTo","triangleTee","trianglePoints","teePoints","beginPath","firstTeePt","moveTo","closePath","arc","CRp$1","shiftToOriginWithBb","showLabel","showOverlay","showOpacity","drawNode","drawEdge","drawNodeOverlay","drawEdgeOverlay","eleTxrCache","getRotation","getOpacity","smooth","oldGlobalAlpha","rotPt","getImgSmoothing","globalAlpha","getZeroRotation","getLabelRotation","getTextAngle","getSourceLabelRotation","getTargetLabelRotation","getTextOpacity","requestHighQuality","_r$data","lblTxrCache","slbTxrCache","tlbTxrCache","drawCachedElementPortion","drawElementOverlay","drawElements","drawCachedElements","drawCachedNodes","drawLayeredElements","lyrTxrCache","CRp$2","drawLabel","shouldDrawOverlay","shouldDrawOpacity","drawLine","strokeOpacity","lineWidth","eleStrokeStyle","drawEdgePath","drawOverlay","drawArrows","arrowOpacity","drawArrowheads","drawText","drawElementText","lineJoin","ghostOpacity","effectiveGhostOpacity","usePaths","overlayWidth","overlayColor","colorStrokeStyle","canvasCxt","pathCacheHit","lineDashPattern","lineDashOffset","pathCacheKey","keyMatches","pathCache","Path2D","setLineDash","stroke","drawArrowhead","arrowClearFill","edgeOpacity","gco","globalCompositeOperation","colorFillStyle","drawArrowShape","canvasContext","shapeImpl","arrowPathCache","cachedPath","matchEdgeWidth","CRp$3","img","ix","iy","iw","ih","nodeOpacity","styleObj","getIndexedStyle","repeat","paddingX2","nodeTW","nodeTH","clip","shouldClip","imgOpacity","imgW","cachedW","imgH","cachedH","offsetWidth","offsetHeight","posXUnits","posXPfVal","offXUnits","offXPfVal","posYUnits","posYPfVal","offYUnits","offYPfVal","gAlpha","save","safeDrawImage","pattern","createPattern","fillStyle","CRp$4","roundRect","ctx","computedSize","minSize","useEleOpacity","textAlign","textBaseline","_label","srcLabel","tgtLabel","applyRotation","getFontCache","fontCaches","setupTextStyle","labelStyle","labelSize","labelFamily","labelWeight","outlineOpacity","outlineColor","font","pdash","textAngle","orgTextX","orgTextY","textW","textH","backgroundOpacity","borderOpacity","textBorderWidth","backgroundPadding","bgX","bgY","bgW","bgH","textFill","textBackgroundColor","styleShape","fillRect","textStroke","strokeStyle","textLineWidth","textBorderColor","textBorderStyle","strokeRect","whiteWidth","halfTextW","strokeText","fillText","CRp$5","eleOpacity","bgImgProp","urlDefined","numImages","defd","bgImgCrossOrigin","getCachedImage","backgroundTimestamp","darkness","bgOpacity","borderColor","setupShapeColor","bgOpy","eleFillStyle","setupBorderColor","bdrOpy","shapePts","nodePathCache","drawShape","drawImages","prevBging","totalCompleted","drawInscribedImage","drawPie","redrawShape","pieOpacity","darken","darkenOpacity","drawBorder","effGhostOpacity","cyStyle","pieSize","lastPercent","angleStart","angleDelta","angleEnd","CRp$6","motionBlurDelay","contexts","backingStore","backingStorePixelRatio","webkitBackingStorePixelRatio","mozBackingStorePixelRatio","msBackingStorePixelRatio","oBackingStorePixelRatio","devicePixelRatio","paintCache","paintCaches","needToCreateCache","createGradientStyleFor","shapeStyleName","gradientStyle","d1","d2","createRadialGradient","_end","createLinearGradient","_width","_height","hasPositions","addColorStop","gradientFillStyle","backgroundFill","backgroundColor","gradientStrokeStyle","lineFill","lineColor","mbPxRatio","bufferCanvases","MOTIONBLUR_BUFFER_NODE","MOTIONBLUR_BUFFER_DRAG","canvasWidth","canvasHeight","canvasContainer","CANVAS_LAYERS","canvases","BUFFER_COUNT","textureMult","TEXTURE_BUFFER","forcedContext","forcedZoom","forcedPan","drawAllLayers","forcedPxRatio","drawOnlyNodeLayer","needDraw","canvasNeedsRedraw","textureDraw","inNodeDragGesture","motionBlurFadeEffect","prevPxRatio","motionBlurTimeout","mbFrames","clearingMotionBlur","textureDrawLastFrame","NODE","SELECT_BOX","effectiveZoom","effectivePan","prevVp","prevViewport","viewportIsDiff","mbclear","setContextTransform","ePan","eZoom","bufferContexts","textureCache","mpan","DRAG","outsideBgColor","outsideBgOpacity","vpManip","hideEdges","needMbClear","useBuffer","drawDebugPoints","timeToRender","fps","maxFps","cxtNode","txtNode","cxtDrag","txtDrag","drawMotionBlur","txt","needClear","pxr","motionBlurCleared","CRp$7","arcTo","barrelCurveConstants","sin0","cos0","ellipseStepSize","drawEllipsePath","ellipse","xPos","yPos","rw","rh","CRp$8","b64ToBlob","b64","mimeType","bytes","atob","buff","ArrayBuffer","buffUint8","Uint8Array","b64UriToB64","b64uri","output","getB64Uri","toDataURL","quality","toBlob","createBuffer","buffer","bufferCanvasImage","ctrRect","full","specdMaxDims","maxWidth","maxHeight","maxScaleW","maxScaleH","buffCanvas","buffCxt","zsortedEles","CRp$9","drawPolygonPath","drawRoundRectanglePath","drawCutRectanglePath","drawBottomRoundRectanglePath","drawBarrelPath","CR","CanvasRenderer","CRp$a","tapHlOffAttr","tapHlOffStyle","containerStyle","styleMap","setAttribute","topCanvas","pathsEnabled","emptyBb","getBoxCenter","getCenterOffset","backgroundTimestampHasChanged","oldBackgroundTimestamp","getStyleKey","getLabelKey","getSourceLabelKey","getTargetLabelKey","drawSourceLabel","drawTargetLabel","getElementBox","getLabelBox","getSourceLabelBox","getTargetLabelBox","isLabelVisibleAtScale","getElementRotationPoint","addTextMargin","getRsPt","getLabelRotationPoint","getSourceLabelRotationPoint","getTargetLabelRotationPoint","getElementRotationOffset","getSourceLabelRotationOffset","getTargetLabelRotationOffset","getLabelRotationOffset","onUpdateEleCalcs","refineInLayers","pathsImpld","path2dEnabled","imageSmoothingEnabled","webkitImageSmoothingEnabled","mozImageSmoothingEnabled","msImageSmoothingEnabled","OffscreenCanvas","incExts","extensions","setExtension","registrant","ext","overrideErr","layoutProto","optLayoutFns","fnName","regStop","getCy","emitterOpts","getExtension","bProto","RegistrantRenderer","rProto","Renderer","pName","pVal","existsInR","_pName","setModule","moduleType","moduleName","getModule","Stylesheet","sheetfn","clamp","__WEBPACK_EXTERNAL_MODULE_0__","FDLayoutConstants","CoSEConstants","DEFAULT_USE_MULTI_LEVEL_SCALING","DEFAULT_RADIAL_SEPARATION","DEFAULT_EDGE_LENGTH","DEFAULT_COMPONENT_SEPERATION","TILE","TILING_PADDING_VERTICAL","TILING_PADDING_HORIZONTAL","TREE_REDUCTION_ON_INCREMENTAL","FDLayoutEdge","CoSEEdge","vEdge","LGraph","CoSEGraph","graphMgr","vGraph","LGraphManager","CoSEGraphManager","FDLayoutNode","IMath","CoSENode","gm","loc","vNode","graphManager","getLayout","displacementX","springForceX","repulsionForceX","gravitationForceX","noOfChildren","displacementY","springForceY","repulsionForceY","gravitationForceY","maxNodeDisplacement","getNodes","moveBy","propogateDisplacementToChildren","totalDisplacement","getChild","setPred1","pred1","getPred1","getPred2","pred2","setNext","getNext","setProcessed","processed","isProcessed","FDLayout","LayoutConstants","Point","PointD","Integer","IGeometry","Transform","CoSELayout","toBeTiled","newGraphManager","newGraph","newNode","newEdge","initParameters","isSubLayout","useSmartIdealEdgeLengthCalculation","DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION","springConstant","DEFAULT_SPRING_STRENGTH","repulsionConstant","DEFAULT_REPULSION_STRENGTH","gravityConstant","DEFAULT_GRAVITY_STRENGTH","compoundGravityConstant","DEFAULT_COMPOUND_GRAVITY_STRENGTH","gravityRangeFactor","DEFAULT_GRAVITY_RANGE_FACTOR","compoundGravityRangeFactor","DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR","prunedNodesAll","growTreeIterations","afterGrowthIterations","isTreeGrowing","isGrowthFinished","coolingCycle","maxCoolingCycle","CONVERGENCE_CHECK_PERIOD","finalTemperature","coolingAdjuster","createBendsAsNeeded","DEFAULT_CREATE_BENDS_AS_NEEDED","createBendpoints","resetAllEdges","classicLayout","nodesWithGravity","calculateNodesToApplyGravitationTo","setAllNodesToApplyGravitation","calcNoOfChildrenForAllNodes","calcLowestCommonAncestors","calcInclusionTreeDepths","getRoot","calcEstimatedSize","calcIdealEdgeLengths","incremental","reduceTrees","resetAllNodesToApplyGravitation","allNodes","getAllNodes","getFlatForest","positionNodesRadially","positionNodesRandomly","initSpringEmbedder","runSpringEmbedder","totalIterations","isConverged","layoutQuality","initialCoolingFactor","animationPeriod","initialAnimationPeriod","updateGrid","growTree","DEFAULT_COOLING_FACTOR_INCREMENTAL","gridUpdateAllowed","forceToNodeSurroundingUpdate","calcSpringForces","calcRepulsionForces","calcGravitationalForces","moveNodes","getPositionsData","pData","getCenterX","getCenterY","layoutEnded","ANIMATE","nodeList","graphs","getGraphs","updateConnected","isConnected","getAllEdges","getSource","getTarget","getBendpoints","createDummyNodesForBendpoints","edgeList","getEdgeListToNode","multiEdge","currentStartingPoint","numberOfColumns","tree","centerNode","findCenterOfTree","radialLayout","WORLD_CENTER_X","WORLD_CENTER_Y","startingPoint","radialSep","maxDiagonalInTree","branchRadialLayout","calculateBounds","setDeviceOrgX","getMinX","setDeviceOrgY","getMinY","setWorldOrgX","setWorldOrgY","getMaxX","getMaxY","inverseTransformPoint","parentOfNode","endAngle","radialSeparation","halfInterval","nodeAngle","teta","TWO_PI","x_","y_","setCenter","neighborEdges","childCount","startIndex","branchCount","incEdgesCount","getEdgesBetween","stepAngle","currentNeighbor","getOtherEnd","childStartAngle","childEndAngle","maxDiagonal","MIN_VALUE","diagonal","getDiagonal","calcRepulsionRange","groupZeroDegreeMembers","tempMemberGroups","memberGroups","idToDummyNode","zeroDegree","getParent","getNodeDegreeWithChildren","getToBeTiled","dummyCompoundId","dummyCompound","paddingLeft","paddingRight","paddingBottom","paddingTop","dummyParentGraph","getGraphManager","parentGraph","clearCompounds","childGraphMap","idToNode","performDFSOnCompounds","compoundOrder","resetAllNodes","tileCompoundMembers","clearZeroDegreeMembers","tiledZeroDegreePack","compoundNode","tileNodes","repopulateCompounds","lCompoundNode","horizontalMargin","verticalMargin","adjustLocations","tiledMemberPack","repopulateZeroDegreeMembers","tiledPack","childGraph","theChild","getNodeDegree","fillCompexOrderByDFS","organization","compoundHorizontalMargin","compoundVerticalMargin","horizontalPadding","verticalPadding","minWidth","rowWidth","rowHeight","lNode","insertNodeToRow","canAddHorizontal","getShortestRowIndex","shiftToLastRow","rowIndex","minCompoundSize","secondDimension","extraHeight","getLongestRowIndex","extraWidth","sri","add_to_row_ratio","add_new_row_ratio","hDiff","longest","prevTotal","finalTotal","tilingPreLayout","tilingPostLayout","containsLeaf","prunedNodesInStepTemp","isInterGraph","getOwner","prunedNodesInStep","lengthOfPrunedNodesInStep","findPlaceforPrunedNode","gridForPrunedNode","nodeToConnect","prunedNode","startGridX","finishGridX","finishX","startGridY","finishGridY","finishY","upNodeCount","downNodeCount","rightNodeCount","leftNodeCount","controlRegions","minCount","minIndex","getHeight","getWidth","coseBase","layoutBase","collectionStrong","powergraph","geom_1","handledisconnected_1","isGroup","_canvasSize","_linkDistance","_defaultNodeSize","_linkLengthCalculator","_linkType","_avoidOverlaps","_handleDisconnected","_running","_nodes","_groups","_rootGroup","_links","_constraints","_distanceMatrix","_descent","_directedLinkConstraints","_threshold","_visibilityGraph","_groupCompactness","setLinkLength","_alpha","_lastStress","s1","gi","powerGraphGroups","getMinSeparation","defaultNodeSize","groupCompactness","linkDistance","linkType","getLinkLength","getLinkType","symmetricDiffLinkLengths","initialUnconstrainedIterations","initialUserConstraintIterations","initialAllConstraintsIterations","gridSnapIterations","keepRunning","ao","addAttraction","strength","idealDistance","curConstraints","generateDirectedEdgeConstraints","initialLayout","separateOverlappingComponents","snapStrength","snapGridSize","numGridSnapNodes","scaleSnapByMaxH","G0","gg","x_1","y_1","separateGraphs","applyPacking","setXCentre","setYCentre","prepareEdgeRouting","nodeMargin","TangentVisibilityGraph","routeEdge","ah","lineData","vg2","port1","port2","addPoint","addEdgeIfVisible","sourceInd","targetInd","spCalc","shortestPath","route","makeEdgeBetween","innerBounds","sourceIntersection","rayIntersection","makeEdgeTo","linkId","storeOffset","stopNode","_dragGroupOffsetX","_dragGroupOffsetY","cx","mouseOver","mouseOut","klayregister","klaycallback","$wnd","kI","iI","pb","Ab","Tt","Jt","Jq","Vq","Vs","yl","Yl","Cu","tJ","NJ","PJ","PS","sS","yS","MS","RS","TS","lR","HR","IR","KR","WR","AT","FT","HT","JT","LT","NT","sU","uV","xV","EV","HW","UX","XX","ZX","_X","wY","zY","SY","VY","qZ","tZ","wZ","AZ","d$","g$","j$","w$","z$","C$","F$","I$","L$","N$","R$","X$","_$","k0","s0","w0","A0","C0","E0","V0","Z0","_0","_1","e1","k1","u1","R1","X1","Z1","f2","h2","k2","A2","H2","H4","z4","B4","D4","U4","l3","u3","C3","I3","$5","d7","V7","q8","smb","Wbb","rcb","Mcb","Vdb","hkb","Kpb","Spb","aqb","iqb","pqb","isb","mvb","zwb","yfb","sP","XW","Wt","lI","GP","J8","G8","m8","k8","CQ","zQ","CV","AV","q0","S0","J0","y9","w9","Bab","zab","Qab","Hab","cbb","abb","sbb","rbb","Ycb","Xcb","Wfb","Mfb","ft","uP","GU","tU","ZW","sc","$c","sf","Qg","qh","Vj","Nk","km","dm","En","Hn","Yp","bq","tq","wq","ku","uu","Gu","Uu","WJ","rP","$V","tW","yW","fY","hY","lY","nY","CY","JY","SZ","Z$","b_","d_","f_","E3","q4","F4","$8","a9","l9","C9","k9","wlb","nxb","wcb","tdb","ydb","Ddb","lkb","klb","llb","inb","wnb","Snb","Ynb","aob","fob","Bob","Gob","Mob","Tob","opb","Ipb","rqb","zqb","Nqb","mrb","Trb","Xrb","Fsb","ju","ytb","Lub","u5","vg","sX","bfb","qfb","rfb","qW","yu","Mu","$u","rv","jv","Fu","Rh","tkb","ntb","Ymb","b5","a5","GO","IO","$O","mI","aJ","IZ","KZ","Dq","nW","ni","Hmb","ji","li","mi","dd","pj","Wn","$n","qT","fU","cV","pV","l7","k7","A7","n7","t8","jJ","ZN","UN","AP","DP","q7","alb","rlb","nkb","qkb","tlb","Vlb","Wab","Ybb","jV","vtb","vqb","wqb","xqb","yqb","Mqb","Uvb","it","ht","bmb","zb","yb","Tq","Sq","dr","cr","er","Gt","Ft","Bu","Au","fR","eR","VR","UR","jS","dS","Gi","Uk","Zk","ycb","stb","nsb","osb","nvb","Ccb","Bcb","Jcb","pkb","Xlb","gt","Vd","Md","uh","Bk","Hj","Jk","dk","Lm","Em","nq","vm","Ro","ir","Op","nb","emb","Zr","Rs","Ts","zu","$J","_J","EQ","Tu","y5","H5","WP","XP","a7","f6","qV","Fc","M9","P9","YY","sK","qK","cZ","Vwb","iwb","vT","uT","zV","o0","Ckb","xkb","Ixb","Dxb","ikb","okb","slb","Kb","$v","_b","FI","OI","_I","cI","aI","Vvb","mS","nS","oS","pS","S7","T7","U7","xc","H3","Klb","hlb","gv","iv","lv","rkb","ulb","Ulb","Wlb","Imb","_2","Ws","Ytb","Xtb","$tb","Vtb","Wtb","Ot","Nt","Mt","tv","Skb","zm","aP","bP","cP","dP","eP","Ou","Tab","ndb","jgb","Nlb","Olb","Plb","Qlb","Rlb","Slb","awb","$ob","_ob","bpb","apb","dpb","cpb","Cmb","Bmb","oxb","Ylb","Frb","Nrb","csb","Rqb","zmb","Amb","Ikb","Gkb","Jkb","Hkb","Lk","sb","Sb","vW","rJ","w4","t4","VH","RH","Dlb","qe","Gr","I9","F9","Um","kP","I0","hP","Et","ut","wt","bS","cS","i7","g7","h7","j7","z7","y7","hxb","oqb","Akb","Drb","jrb","ttb","Ttb","Utb","elb","test","Jlb","ilb","qlb","wtb","otb","Wwb","jwb","nc","Wv","Bf","Ch","Ac","Ie","tm","Pf","Fk","Bn","Sn","Mc","Hh","yp","bp","Oq","Yq","fs","_u","Mo","Fp","HI","RJ","jK","Qm","Qmb","fv","tu","su","ru","tK","oK","pK","uK","rK","nK","RI","TI","SI","wK","FK","OK","ZK","fL","pM","AM","NM","VM","uN","EN","NN","EO","lP","OS","VS","wW","BW","FW","fT","DX","MY","PY","YZ","f0","J1","Y3","h4","$7","y8","q9","MR","Zsb","Bnb","Zmb","hrb","ab","Brb","kb","Crb","lb","Erb","Irb","Jrb","dT","$S","bT","eT","_S","MM","IM","JM","Yf","jtb","gtb","$mb","xk","Ap","lr","kr","Dt","um","Vb","Pp","mp","hsb","gsb","Rpb","Qpb","nqb","mqb","hc","gc","nJ","VN","wab","lbb","Hbb","Mbb","xQ","wJ","CJ","mcb","gab","Qbb","Fcb","ggb","Agb","Igb","Rgb","ahb","phb","Ihb","Nhb","Yib","ejb","Rjb","dkb","fxb","Yjb","D6","BI","rY","zU","Llb","Tlb","cub","vob","Wvb","Yob","Zob","Gwb","Psb","qob","dcb","$bb","Rdb","Ndb","aub","Xb","Vm","SV","Q4","II","gw","re","$i","Nb","aq","nl","Ll","mb","B3","glb","h3","Mlb","vmb","xmb","ymb","Hxb","T2","Z2","U2","V2","Tvb","vU","ptb","he","_4","Jh","qxb","Nxb","Kxb","Mxb","HO","DJ","yzb","Sh","Vh","pmb","Jmb","cmb","vlb","xlb","Ys","Cs","xI","RN","xv","UF","syb","Cp","cX","Q2","$2","vl","U8","P8","ckb","bkb","zxb","uxb","vxb","Bxb","Wub","wub","Kh","Im","p7","BU","kkb","gmb","jlb","Al","Pl","Dl","Wl","q6","Zs","pvb","vb","Ntb","fub","Cg","xg","o4","n4","Oh","Nh","Jb","Gh","Fh","Eh","Il","Gl","Hl","xp","wp","qs","os","ws","uJ","vJ","Teb","m4","l4","u4","Uc","Kwb","Pwb","pR","qR","lpb","ipb","x7","CI","gl","i9","W9","xJ","kmb","mc","Swb","Xvb","Twb","Yvb","$T","Dd","aw","Vv","Qob","htb","y$","S$","T$","utb","eb","Vjb","Bkb","Mwb","Xc","lp","Rb","ypb","Hb","Gb","Mb","Ib","cw","ew","Hi","Mk","An","no","Wxb","Do","Mh","Vyb","HU","Am","tp","If","ks","Qr","MZ","pW","xvb","_Ab","uI","DI","zI","UI","VI","uub","Hub","Gub","rn","J","Iq","Yb","o5","yU","EU","cxb","Fv","czb","dzb","LM","EM","GM","FM","UH","lsb","WAb","FQ","arb","dsb","Xub","xub","wwb","v5","B5","tV","Nl","om","St","Uwb","cwb","rk","qk","txb","$H","sxb","yc","zc","pwb","Cnb","bw","pub","Iub","oab","Jub","ug","mg","BP","vP","EP","Kg","_f","Lg","tI","yg","kJ","Ue","Xv","Yv","vI","EI","U$","V$","h6","Smb","Bj","Lh","zr","Web","WX","TX","jX","message","Wkb","wmb","jkb","mmb","QX","Mn","Xn","Uq","U6","sI","Dh","CP","FP","r6","k6","Oc","Rc","_T","XT","YT","Y9","W7","msb","Anb","Enb","wb","zkb","Wjb","xt","ssb","rsb","m5","sN","rN","Zi","skb","vpb","e8","d8","PQ","WQ","X_","rwb","swb","Fwb","Bwb","IU","gxb","ob","tr","WS","XV","job","qub","Vf","Umb","YI","$I","ZI","np","jmb","imb","qmb","xb","Xjb","Ev","YU","ZU","SN","wS","QI","g8","Fmb","Dmb","yab","VQ","v_","_ab","qbb","Zbb","stackTraceLimit","xS","Bo","Jl","Eo","ml","XQ","QQ","Ocb","Dvb","Bl","ul","El","nmb","lastIndexOf","cvb","atb","lub","z3","Ed","FS","KS","qr","qwb","vnb","dwb","n5","t5","wc","dxb","Lq","dl","nj","iab","mab","Cxb","ib","RQ","SQ","TQ","UQ","iS","gS","Pt","ec","Qt","Pkb","Mkb","YW","NX","zv","ad","ol","Tl","vv","wv","BJ","FJ","AJ","uU","Fxb","mpb","kpb","Us","wxb","Axb","Yub","xtb","Lsb","Er","vkb","wkb","Glb","Flb","PF","Txb","j8","z_","aS","ZR","_R","$R","Wmb","Xmb","Mtb","Ysb","$sb","_sb","bub","Vsb","Usb","zpb","Kt","Wsb","usb","omb","xxb","Jxb","Qo","ud","T","Ae","gb","ki","Ob","oj","Pb","Hv","flb","tb","Ml","I","Uab","LY","Sob","Dnb","$f","wg","ksb","Zq","Yi","GI","GQ","NR","sY","o7","$ub","db","Cv","exb","Tk","dq","Rm","Uh","Sxb","Zxb","Ct","oI","Rwb","bwb","Po","$b","hu","gu","iu","Nkb","$kb","Kkb","Av","sv","Pm","Pmb","Omb","Om","Jd","Be","Vg","d6","Gfb","Dfb","Afb","umb","fromCharCode","hX","_H","Uyb","$s","PH","Tmb","Ktb","tl","Ul","pr","Tb","zT","Ep","Fi","jr","xpb","Exb","Zfb","U0","Zjb","Sub","ufb","efb","OQ","JQ","zp","Bv","jy","uyb","Ih","ss","Ty","psb","We","krb","ewb","Qkb","yJ","Z3","X3","iD","V3","W3","a8","Z7","WD","X7","Y7","s9","p9","hE","o9","n9","Vmb","Ltb","h5","d5","g5","c5","t6","E5","vO","Jtb","hR","qsb","ovb","Pu","Qu","Zv","irb","lrb","fb","eub","$9","Nzb","hW","Dg","rab","Zlb","Yxb","$W","wpb","Lc","Ic","Hc","Jc","Kc","zAb","yQ","eM","EL","v9","N_","B_","M_","N6","M6","PR","Krb","Mrb","NP","mP","Rz","jP","gP","gL","eL","Fz","cL","bL","dL","WM","UM","Jz","TM","SM","RM","FO","DO","Pz","BO","AO","CO","ZZ","XZ","VB","VZ","WZ","UZ","A8","x8","_D","w8","v8","u8","QH","SH","YH","XI","zfb","Rn","nZ","sfb","Xf","Oeb","neb","keb","VO","zW","OO","QO","Y2","vub","Lrb","a6","e6","ZM","j6","PX","rX","eW","dW","Zdb","Qxb","Lxb","Gbb","Fbb","pzb","Ebb","ozb","fgb","dgb","egb","hgb","fF","xab","vab","rE","uab","tab","Ibb","BE","Nbb","Lbb","CE","Jbb","Kbb","ncb","lcb","JE","jcb","kcb","Ohb","Mhb","pF","Khb","Lhb","Hpb","Itb","Vc","tX","lX","ykb","Rr","Ur","pk","wk","$xb","Ptb","entries","xf","rnb","EJ","Wb","Ub","ac","Dm","Cm","jI","rr","W6","Fnb","Li","Ki","rt","qt","CU","Gxb","ko","MX","MI","qz","Fzb","GK","EK","Cz","DK","AK","BK","CK","PK","NK","Dz","MK","KK","JK","LK","ON","MN","Mz","KN","LN","JN","IN","FN","DN","Lz","BN","CN","AN","zN","Nc","Bw","iT","cT","yA","wN","Kz","qN","$M","pN","xK","Bz","c8","b8","Cc","_3","$3","u9","t9","Jhb","Hhb","oF","Fhb","Ghb","Ehb","Jgb","Hgb","jF","Fgb","Egb","Ggb","fjb","djb","rF","cjb","ajb","bjb","Sjb","Qjb","sF","Njb","Pjb","Ojb","ekb","uF","_jb","akb","dub","sk","tsb","ql","Ql","Epb","Oo","Cpb","Xbb","fW","Mnb","Fpb","e5","Rob","avb","gwb","hwb","S2","Ieb","heb","ZH","Nv","Ii","Dpb","Rl","Yn","Zn","Wf","At","yt","Bt","zt","sl","qzb","yxb","hnb","ee","Esb","Kub","IV","qJ","sJ","CL","je","Ld","BM","zM","Hz","yM","xM","uM","vM","wM","OM","KM","Iz","HM","kK","iK","Az","cK","fK","gK","hK","dK","eK","$K","YK","Ez","WK","UK","XK","SK","VK","TK","YM","XM","iL","hL","C8","B8","EX","CX","pB","AX","zX","xX","BX","yX","wX","i4","g4","jD","e4","b4","f4","d4","c4","a4","Vl","Gpb","G3","Peb","Ahb","QT","$U","Uzb","Vzb","Te","pq","Zb","_ub","Ukb","Tc","fI","Zf","RT","PT","rmb","Jwb","DH","Cwb","Dwb","Ewb","bxb","Sm","mo","Su","dR","oR","_Y","oT","lT","mT","jT","kT","nT","IK","HK","RK","QK","QN","PN","HN","GN","pcb","ocb","Qhb","Phb","Ao","yY","Rib","Vhb","uib","UY","Hd","sp","DU","itb","hub","kt","It","bW","OX","qd","bgb","VP","Ru","Co","Dv","azb","bzb","kbb","zE","jbb","gbb","hbb","fbb","ibb","Sgb","Pgb","kF","Lgb","Kgb","Ngb","Mgb","Ogb","Zib","Xib","qF","Wib","Sib","Tib","Uib","Vib","zK","yK","yN","xN","DM","CM","E9","U_","r_","TT","ST","VT","UT","X8","AU","Kl","igb","uob","zbb","yv","pd","MH","__gwt$exception","wT","W4","C6","B$","Cib","Ujb","Tjb","gkb","fkb","mK","lK","aL","_K","QM","PM","k4","j4","K1","I1","GC","G1","B1","E1","C1","D1","A1","F1","H1","qM","oM","Gz","gM","fM","iM","nM","mM","lM","jM","kM","hM","Bgb","zgb","iF","ygb","xgb","wgb","ugb","tgb","vgb","bhb","_gb","lF","Ygb","Xgb","$gb","Wgb","Zgb","Vgb","bK","aK","ixb","Xsb","dmb","He","Kd","uv","__elementTypeId$","Rub","qnb","onb","Acb","Ar","j9","ywb","yH","RR","$yb","Xs","Z5","W5","U5","S5","Fe","rp","Gzb","kc","Okb","fJ","GV","Fd","bab","dab","eab","eyb","Ph","WH","Nyb","ukb","HQ","O_","C_","J_","IQ","G_","LX","IX","GX","HX","FX","JX","KX","DAb","Rv","Ov","Pv","Qv","M1","L1","pbb","obb","Ugb","Tgb","_ib","$ib","zvb","tvb","Lv","bBb","$F","HF","EF","$y","__elementTypeCategory$","Ht","Lt","oJ","jzb","KQ","rc","rub","R2","tub","bt","Tf","nm","Xl","ev","kv","K2","J2","Z9","sr","bvb","gW","gT","hT","Bhb","zhb","nF","shb","whb","thb","xhb","uhb","yhb","vhb","rhb","sM","rM","tzb","kW","kdb","pnb","TH","ezb","Jv","rl","ybb","O5","V5","X5","Bbb","M4","vc","bI","dn","Rt","Xxb","YQ","nI","Tzb","NV","rI","aR","BV","pI","Dgb","Cgb","dhb","chb","Ilb","Hlb","mw","Yyb","szb","de","Nn","qI","WV","VV","CZ","DZ","Km","Is","XH","Gs","Js","nr","BY","Xeb","mfb","Rbb","yI","Bs","Os","As","Nu","vcb","r5","p5","qcb","qhb","ohb","mF","fhb","hhb","ihb","jhb","khb","lhb","nhb","ehb","ghb","mhb","uvb","wvb","Fo","Udb","hib","ZT","fib","jb","hJ","WI","J9","P2","Reb","Dhb","Chb","F","Es","J6","Q6","zo","Tsb","R6","uL","kR","odb","OR","eI","K5","I5","kab","jab","Xe","wV","n6","o6","p6","i5","f5","pU","xU","Ufb","mX","Xob","epb","Zvb","hv","xR","vR","wR","Apb","Hq","Dc","eS","$Ab","Y5","Gv","Mv","LI","yP","zJ","lJ","T6","Elb","Fb","g9","h9","d9","e9","V9","vS","B6","w6","RP","OP","PP","QP","Seb","_E","meb","jeb","ieb","peb","oeb","Heb","Geb","leb","qeb","Eeb","Feb","b3","a3","vsb","Bpb","Or","Nr","Mr","_vb","gJ","sn","Mp","Svb","fpb","wO","uO","xO","tO","Rmb","Ge","Z","Iv","OH","b6","pT","JA","M5","L5","Ds","vQ","L6","nX","Bib","u0","o$","FU","l$","t$","_Z","Gc","fc","tN","vK","Dkb","td","js","pp","mr","Gq","Cb","Bh","ck","Kv","D8","p_","I_","E8","j_","h_","F8","k_","M8","N8","O8","deb","UV","hpb","v0","gcb","gX","fdb","Uf","NH","Qb","SW","zib","EZ","mib","Kk","Sl","Ti","$4","DR","aU","aV","Q0","iX","R5","Z4","yvb","svb","FAb","aBb","Pxb","AQ","jQ","UP","BQ","ZP","E6","c6","i6","pJ","oc","L2","X2","aeb","M2","W2","PW","sL","Rhb","m7","H9","oP","DL","uW","qP","mC","N5","b7","H8","hdb","qgb","uAb","Qgb","uS","vN","c7","zO","Zeb","RAb","SAb","IF","yR","gpb","k3","TL","oX","oW","cM","Jib","LL","tib","Ve","aW","Vr","jf","pgb","Oz","rO","qO","sO","iO","hO","jO","mO","lO","kO","pO","oO","nO","fO","eO","gO","cO","bO","dO","_N","$N","aO","iP","gI","SR","TR","Veb","cfb","$db","Np","mf","qb","Yeb","L","Vfb","A5","S8","q5","vbb","$6","fX","Xhb","Q$","ifb","gfb","rAb","ofb","$eb","jfb","nfb","QR","dfb","oU","Xdb","_db","wU","Ye","Zkb","vt","kS","fS","D2","a$","b$","RV","MV","bib","P0","Iib","O6","_8","Id","tn","kgb","UAb","xT","Oxb","bk","Yj","GZ","JL","HZ","f$","g6","qp","Qh","nab","QZ","EY","ow","sW","K6","I6","bV","uX","ffb","Eab","Fab","Gab","Cd","cU","eU","Keb","s6","LW","Jeb","Uv","Tv","Sv","r$","bbb","Eib","P1","dB","gAb","Q1","Cfb","jpb","npb","A6","Mdb","Kdb","A_","Ldb","R_","Q_","Idb","D_","F_","H_","E_","Jdb","q_","ceb","vvb","zcb","Ekb","ayb","byb","Ol","JS","kA","Ec","DW","F6","sgb","un","qX","$vb","jyb","h1","qib","rib","at","_F","P5","Gmb","AW","Blb","ZV","L7","Yc","m6","hmb","JW","WT","HY","FY","K7","TN","hQ","iQ","HS","kX","Mjb","ujb","RX","G6","P6","c9","Ydb","Lib","Vbb","Kib","hjb","x6","S6","Pr","J4","B9","oib","ogb","Z8","Y8","Lfb","$_","a0","Hfb","Jfb","Kfb","Ifb","dI","Rxb","clb","blb","dyb","qS","f1","tL","Vab","Eq","Bb","MP","ge","f9","beb","_eb","_tb","Ls","Ks","k5","j5","jt","IY","e3","P7","Tr","Ns","Lr","qjb","qvb","kw","hyb","rvb","TP","fQ","bQ","kfb","hfb","lfb","Ze","ZO","SO","TO","AL","UO","WO","s3","r3","u2","sT","nU","z6","HV","FZ","vjb","wQ","G5","Mib","KH","xAb","fwb","ZQ","NQ","sV","_Q","bR","l6","_6","Efb","TAb","wI","K0","pib","M0","L0","cdb","l5","lmb","KV","fe","_","$Z","gib","lL","O7","afb","bd","M7","l8","Bfb","Ffb","g0","L_","o_","c0","m_","T_","S_","P_","s_","W_","Z_","V_","Y_","t_","l_","u_","w_","K_","n_","b0","y6","O","SP","lc","f3","ryb","tyb","jW","w3","adb","pX","mdb","Ofb","HP","Czb","postMessage","_P","Jzb","Kzb","lgb","LQ","e0","T5","valueOf","I7","Gd","Tm","mU","X9","nE","673","3","5","6","eV","Scb","Ucb","Vcb","Rcb","Wcb","Tcb","Pcb","Qcb","Xyb","zs","i$","ES","CS","DS","R8","dQ","cQ","j0","rS","R7","Abb","DQ","$z","Dzb","Ezb","D5","cn","tt","ER","sib","$Q","L3","Ejb","K3","hU","Fq","MW","n3","Nm","m3","B7","zR","ecb","RY","D7","Icb","wbb","xbb","Odb","Pdb","I8","edb","O9","GAb","hZ","mZ","kZ","lZ","m$","SL","Ueb","Fs","e2","nib","q3","wfb","Sr","Hs","MO","jL","hI","Sc","Qc","Pc","z2","qab","R4","f7","vfb","cab","RZ","HL","IL","N0","O0","jdb","agb","tj","R9","HAb","IAb","JAb","rT","oZ","Zhb","veb","seb","reb","yeb","xeb","Deb","Ceb","web","teb","ueb","Aeb","zeb","Beb","Leb","Meb","Neb","fcb","CT","Cbb","H6","QD","UD","W1","i0","dM","OZ","oV","tfb","G7","J7","C7","Aab","wib","dlb","H$","jU","X4","Zj","$P","bM","Lzb","Azb","GR","IS","N4","GY","p8","PZ","CW","EW","N1","O1","P4","O4","feb","gdb","dAb","c3","IP","$klay","_cb","lU","GW","UL","iAb","KO","d3","tw","vY","Hcb","K4","pL","Ztb","getOwnPropertyNames","bcb","O2","Q3","TW","X0","nAb","oAb","pAb","qAb","nP","S9","T9","U9","lS","kU","T8","E2","g3","F2","N7","L4","j1","Qib","Yhb","Q8","xfb","F7","Q7","H7","E7","uQ","sQ","dU","hS","nA","Yzb","V1","aib","j2","iJ","fmb","_bb","JO","Y0","Rfb","aQ","Mzb","Nab","XY","KW","pP","f8","tcb","ucb","E$","fZ","lastIndex","NO","kL","JP","aM","cR","rV","QW","jib","WW","VW","kib","yib","h0","Pfb","cW","scb","Lab","n$","_9","s2","Qeb","s$","PV","NW","OV","QV","Obb","Gcb","Thb","Uhb","OW","xjb","G2","AI","fzb","gzb","hzb","Qdb","FR","bdb","ddb","Gib","idb","jjb","Ms","fP","Fib","rL","gQ","KL","WL","RW","Q5","gZ","Whb","jZ","iZ","Mab","tP","Ubb","yZ","zZ","MQ","rjb","Bjb","Fjb","eib","LV","yjb","JV","T1","xib","z0","gR","P$","GL","Iab","wjb","Kjb","Jab","vZ","BB","mAb","Wc","o1","yO","mgb","UW","eZ","_L","mB","38","39","42","8","T4","tc","uc","tQ","rQ","rz","xL","oQ","ML","Hjb","yL","Cjb","kQ","mL","qL","wL","BL","FL","$L","gjb","mjb","njb","Ijb","Djb","ijb","nQ","Dib","mQ","vL","zL","NL","OL","PL","QL","RL","VL","ljb","zjb","ojb","kjb","Ajb","sjb","tjb","Gjb","Jjb","Ljb","lQ","qQ","oL","YL","pQ","AR","tT","XL","$hb","XO","YO","LO","_O","lib","pc","jR","iR","Bc","ccb","x9","vib","KP","eQ","eN","mN","oN","fN","aN","nN","lN","jN","cN","bN","kN","iN","hN","_fb","PO","u$","Xt","qU","C2","RO","R0","v$","OY","NZ","YP","Pib","Hzb","Izb","pZ","Kab","Shb","Sbb","Tbb","$jb","_hb","qc","fab","p$","iib","$Y","Qfb","pjb","tAb","dib","cd","LP","dN","gN","q$","createObject","Tfb","acb","Sfb","S4","Pbb","geb","JZ","LZ","sZ","rU","Oab","bU","Nfb","bZ","K$","N2","G9","iU","U1","Xfb","hab","c$","Pab","wE","NAb","sH","672","LF","aZ","jc","Hib","cib","Nib","Oib","Aib","ZL","nL","cAb","vzb","uzb","lab","hb","tE","674","sE","Pzb","Qzb","Rzb","Uxb","46","Vxb","54","_xb","181","cyb","29","fyb","56","gyb","23","145","185","iyb","kyb","lyb","myb","nyb","oyb","pyb","qyb","11","vyb","68","136","17","wyb","108","35","xyb","yyb","96","zyb","144","Ayb","Byb","57","Cyb","Dyb","22","19","Eyb","18","Fyb","20","Gyb","63","Hyb","Iyb","137","Jyb","21","Kyb","Lyb","207","Myb","159","Oyb","Pyb","Qyb","87","Ryb","Syb","Tyb","64","Wyb","188","52","Zyb","205","_yb","izb","kzb","lzb","79","mzb","nzb","rzb","wzb","xzb","zzb","Bzb","286","121","34","51","71","Ozb","Szb","Wzb","Xzb","Zzb","$zb","_zb","aAb","bAb","13","eAb","31","fAb","47","hAb","jAb","kAb","lAb","346","sAb","250","vAb","wAb","227","yAb","AAb","BAb","106","CAb","EAb","KAb","LAb","MAb","625","OAb","PAb","QAb","VAb","XAb","YAb","ZAb","50","cBb","dBb","138","164","__gwt$backingJsError","callee","caller","fnStack","WF","stack","119","231","24","345","2","256","Zc","jw","244","246","245","177","Eb","Db","Lb","178","90","126","88","83","206","214","104","69","97","10","58","44","179","131","27","103","59","107","122","133","166","41","100","28","149","32","150","139","62","283","67","225","171","65","73","25","198","78","160","235","48","zA","201","222","347","251","187","114","147","12","55","627","129","224","626","161","168","165","33","9","132","7","16","267","268","221","lC","37","109","116","91","195","82","93","175","125","142","284","128","CD","675","BD","204","158","226","89","61","180","193","239","173","272","eE","192","671","102","197","156","242","111","141","81","248","247","279","200","194","249","118","80","NaN","75","60","92","117","223","77","123","218","115","124","113","110","140","174","85","219","153","134","172","349","184","15","76","130","146","45","210","163","86","66","176","74","154","183","191","gwtOnLoad","packingOptions","PADDING","GOLDEN_SECTION","FLOAT_EPSILON","MAX_INERATIONS","node_size","desired_ratio","init_x","init_y","svg_width","svg_height","real_width","real_height","min_width","global_bottom","calculate_bb","calculate_single_bb","min_x","min_y","max_x","max_y","put_nodes_to_right_positions","curr_best_f","curr_best","get_entire_width","iterationCounter","f_x1","f_x2","df","max_width","put_rect","get_real_ratio","space_left","marks","ways","explore_node","is_new","adjacent","LayoutAdaptor","vpsc_1","NodeWrapper","leaf","Vert","LongestCommonSubsequence","findMatch","ti","reversed","getSequence","GridRouter","originalnodes","accessor","groupPadding","getBounds","getChildren","getGridLines","ports","backToFront","frontToBackGroups","Rectangle","colMids","midPoints","rowMids","rowx","rowX","coly","colY","hlines","vlines","verts","lineIntersections","isHoriz","avg","ls","mids","findLineage","lineage","findAncestorPathBetween","aa","ba","commonAncestor","lineages","siblingObstacles","lineageLookup","obstacles","getSegmentSets","routes","vsegments","edgeid","sdx","vsegmentsets","segmentset","nudgeSegs","leftOf","Variable","cs","lind","rind","Constraint","solver","Solver","solve","nudgeSegments","openCount","routeEdges","nudgeGap","routePaths","order","orderEdges","makeSegments","unreverseEdges","angleBetween2Lines","line1","line2","angle1","angle2","isLeft","getOrder","pairs","edgeOrder","vj","lcs","copyPoint","isStraight","obstacleLookup","passableEdges","shortestPathCalculator","bendPenalty","pathPoints","getRoutePath","cornerradius","arrowwidth","arrowheight","routepath","arrowpath","arrowtip","arrowcorner1","arrowcorner2","rbtree_1","computeGroupBounds","NEGATIVE_INFINITY","ux","vx","uy","vy","lineIntersection","dx12","dx34","dy12","dy34","dx31","dy31","numa","numb","al","targetIntersection","makeRBTree","isOpen","compareEvents","RBTree","xRect","getCentre","getOpen","getClose","getSize","makeRect","close","findNeighbours","findXNeighbours","yRect","findYNeighbours","generateGroupConstraints","minSep","isContained","gn","ln","childConstraints","ccs","minVar","desiredPosition","maxVar","generateConstraints","cOut","cIn","gapAdjustment","vars","assert","scanline","makeConstraint","sep","visitNeighbours","forward","mkcon","findIter","uovervX","generateXConstraints","generateYConstraints","generateXGroupConstraints","generateYGroupConstraints","removeOverlaps","IndexedVariable","variables","createConstraints","stiffness","createSeparation","makeFeasible","nextPos","createAlignment","xConstraints","yConstraints","isSep","setupVariablesAndBounds","desired","getDesired","fixedWeight","xProject","xmin","xmax","yProject","ymin","ymax","updateNodeBounds","updateGroupBounds","starting","setStartingPositions","setDesiredPositions","__WEBPACK_EXTERNAL_MODULE_4__","klay","klayNSLookup","mapToKlayNS","klayOpts","nsKey","klayOverrides","interactiveReferencePoint","kp","makeNode","_cyEle","makeEdge","makeGraph","klayNodes","klayEdges","klayEleLookup","_k","_k2","parentK","_k3","klayOptions","success","_error","addUnnecessaryBendpoints","aspectRatio","borderSpacing","compactComponents","crossingMinimization","cycleBreaking","edgeRouting","edgeSpacingFactor","feedbackEdges","fixedAlignment","inLayerSpacingFactor","layoutHierarchy","linearSegmentsDeflectionDampening","mergeEdges","mergeHierarchyCrossingEdges","nodeLayering","nodePlacement","randomizationSeed","routeSelfLoopInside","separateConnectedComponents","thoroughness","unionCount","getNeighbours","addNeighbours","computeLinkLengths","stronglyConnectedComponents","ui","numVertices","strongConnect","lowlink","onStack","out","edges_1","v_1","nodes_1","lerp","PairingHeap","subheaps","needComma","subheap","isHeap","lessThan","heap2","removeMin","mergePairs","firstPair","decreaseKey","newValue","setHeapNode","newHeap","pairingNode","heapNode","interpolate","palette","values","mix","idx","lIdx","rIdx","lColor","rColor","PositionStats","AB","AD","addVariable","ai","bi","wi","getPosn","unsatisfiable","slack","dfdv","block","posn","ff","Block","updateWeightedPosition","compute_lm","postAction","_dfdv","lm","populateSplitBlock","traverse","acc","findMinLM","findMinLMBetween","findPath","endFound","isActiveDirectedPathBetween","createSplitBlock","startVar","splitBetween","vr","bs","constraint","mergeAcross","Blocks","blockInd","swapBlock","updateBlockPositions","LAGRANGIAN_TOLERANCE","mostViolated","minSlack","deletePoint","ZERO_UPPERBOUND","satisfy","lastcost","removeOverlapInOneDimension","spans","lowerBound","upperBound","desiredCenter","leftMost","rightMost","leftMostSize","rightMostSize","vLower","vUpper","newCenters","Locks","isEmpty","PseudoRandom","ia","xtmp","offsetDir","getNextBetween","computeDerivatives","Huu","maxH","maxDisplaces","sd2","rd","gs","hs","xiu","dotProd","rightMultiply","computeStepSize","reduceStress","takeDescentStep","computeStress","stepAndProject","mApply","matrixApply","computeNextPosition","beta","converged","nMinus1","zeroDistance","range","gridrouter_1","gridify","pgLayout","groupMargin","gridrouter","powerGraph","routerNode","gridRouterNodes","powerGraphGridLayout","grouppadding","__export","LineSegment","PolyPoint","above","below","ConvexHull","minmin","minmax","maxmin","maxmax","bot","clockwiseRadialSweep","tangent_PointPolyC","Vclosed","rtan","Rtangent_PointPolyC","ltan","Ltangent_PointPolyC","upA","dnC","dnA","tangent_PolyPolyC","cmp1","cmp2","ix1","ix2","LRtangent_PolyPolyC","RLtangent_PolyPolyC","LLtangent_PolyPolyC","RRtangent_PolyPolyC","BiTangent","BiTangents","TVGPoint","VisibilityVertex","polyid","polyvertid","VisibilityEdge","Pi","Pj","tangents","intersectsPolys","poly","intersects","int","v3","v1v2w2","v2w1w2","v2w2w3","w1w2v2","w2v1v2","w2v2v3","ll","isPointInsidePoly","isAnyPInQ","polysOverlap","baseHues","cstr","parts","isShort","isRGB","hue","saturation","lightness","brightness","QUALITY","DEFAULT_INCREMENTAL","DEFAULT_ANIMATION_ON_LAYOUT","DEFAULT_ANIMATION_DURING_LAYOUT","DEFAULT_ANIMATION_PERIOD","DEFAULT_UNIFORM_LEAF_NODE_SIZES","DEFAULT_GRAPH_MARGIN","NODE_DIMENSIONS_INCLUDE_LABELS","SIMPLE_NODE_SIZE","SIMPLE_NODE_HALF_SIZE","EMPTY_COMPOUND_NODE_SIZE","MIN_EDGE_LENGTH","WORLD_BOUNDARY","INITIAL_WORLD_BOUNDARY","LGraphObject","LEdge","isOverlapingSourceAndTarget","vGraphObject","bendpoints","getLca","getSourceInLca","sourceInLca","getTargetInLca","targetInLca","getOtherEndInGraph","otherEnd","updateLength","clipPointCoordinates","getIntersection","getRect","lengthX","lengthY","updateLengthSimple","RectangleD","RandomSeed","LNode","estimatedSize","inclusionTreeDepth","owner","setWidth","setHeight","getCenter","getLocation","getHalfTheDiagonal","setRect","upperLeft","dimension","setLocation","getNeighborsList","withChildren","withNeighborsList","getNoOfChildren","getEstimatedSize","scatter","randomCenterX","randomCenterY","nextDouble","getLeft","getTop","getRight","getBottom","labelPos","getInclusionTreeDepth","trans","leftTop","vLeftTop","getX","getY","setX","setY","getDifference","DimensionD","getCopy","LinkedList","obj2","obj1","sourceNode","targetNode","edgesToBeRemoved","sourceIndex","targetIndex","updateLeftTop","nodeTop","nodeLeft","recursive","nodeRight","nodeBottom","boundingRect","currentNode","childrenOfNode","neighborEdge","childrenOfNeighbor","noOfVisitedInThisGraph","visitedNode","addRoot","ngraph","nnode","setRootGraph","rootGraph","lObj","nodesToBeRemoved","allNodesToApplyGravitation","getAllNodesToApplyGravitation","isOneAncestorOfOther","firstNode","secondNode","ownerGraph","sourceAncestorGraph","targetAncestorGraph","calcLowestCommonAncestor","firstOwnerGraph","secondOwnerGraph","includesInvalidEdge","MAX_ITERATIONS","DEFAULT_USE_SMART_REPULSION_RANGE_CALCULATION","COOLING_ADAPTATION_FACTOR","ADAPTATION_LOWER_NODE_LIMIT","ADAPTATION_UPPER_NODE_LIMIT","MAX_NODE_DISPLACEMENT_INCREMENTAL","MAX_NODE_DISPLACEMENT","MIN_REPULSION_DIST","PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR","GRID_CALCULATION_CHECK_PERIOD","calcSeparationAmount","rectA","rectB","overlapAmount","separationBuffer","directions","decideDirectionsForOverlappingNodes","slope","moveByY","moveByX","getIntersection2","p1x","p1y","p2x","p2y","topLeftAx","topLeftAy","topRightAx","bottomLeftAx","bottomLeftAy","bottomRightAx","halfWidthA","getWidthHalf","halfHeightA","getHeightHalf","topLeftBx","topLeftBy","topRightBx","bottomLeftBx","bottomLeftBy","bottomRightBx","halfWidthB","halfHeightB","clipPointAFound","clipPointBFound","slopeA","slopeB","slopePrime","cardinalDirectionA","cardinalDirectionB","tempPointAx","tempPointAy","tempPointBx","tempPointBy","getCardinalDirection","angleOfVector","Cx","Cy","Nx","Ny","C_angle","ONE_AND_HALF_PI","HALF_PI","doIntersect","p4","det","lambda","gamma","THREE_PI","defineProperties","nodeFrom","tail","_remove","UniqueIDGeneretor","lastID","createID","isPrimitive","uniqueID","getString","_toConsumableArray","arr2","isRemoteUse","animationOnLayout","animationDuringLayout","uniformLeafNodeSizes","edgeToDummyNodes","isLayoutFinished","RANDOM_SEED","checkLayoutSuccess","runLayout","isLayoutSuccessfull","doPostLayout","update2","createBendpointsFromDummyNodes","newLeftTop","flatForest","isForest","isFlat","toBeVisited","unProcessedNodes","dummyNodes","dummyNode","Dimension","dummyEdge","lEdge","ebp","sliderValue","defaultValue","minDiv","maxMul","minValue","maxValue","remainingDegrees","foundCenter","tempList","tempList2","otherDegree","newDegree","setGraphManager","lworldOrgX","lworldOrgY","ldeviceOrgX","ldeviceOrgY","lworldExtX","lworldExtY","ldeviceExtX","ldeviceExtY","getWorldOrgX","wox","getWorldOrgY","woy","getWorldExtX","setWorldExtX","wex","getWorldExtY","setWorldExtY","wey","getDeviceOrgX","dox","getDeviceOrgY","doy","getDeviceExtX","setDeviceExtX","dex","getDeviceExtY","setDeviceExtY","dey","transformX","xDevice","worldExtX","transformY","yDevice","worldExtY","inverseTransformX","xWorld","deviceExtX","inverseTransformY","yWorld","deviceExtY","inPoint","outPoint","displacementThresholdPerNode","oldTotalDisplacement","notAnimatedIterations","useFRGridVariant","lcaDepth","sizeOfSourceInLca","sizeOfTargetInLca","totalDisplacementThreshold","repulsionRange","lEdges","calcSpringForce","nodeA","nodeB","processedNodeSet","lNodes","calculateRepulsionForceOfANode","calcRepulsionForce","calcGravitationalForce","springForce","distanceSquared","repulsionForce","clipPoints","childrenConstant","ownerCenterX","ownerCenterY","absDistanceX","absDistanceY","oscilating","calcGrid","sizeX","sizeY","addNodeToGrid","setGridCoordinates","surrounding","_startX","_finishX","_startY","_finishY","HashMap","put","theId","keySet","HashSet","addAllTo","addAll","Quicksort","compareFunction","_defaultCompareFunction","_quicksort","_partition","_get","_swap","get_object_at","set_object_at","_set","NeedlemanWunsch","sequence1","sequence2","match_score","mismatch_penalty","gap_penalty","iMax","jMax","tracebackGrid","alignments","score","computeGrids","diag","maxOf","arrayAllMaxIndexes","includes","inProcessAlignments","seq1","seq2","indexes","getAllIndexes","FUNC_ERROR_TEXT","NAN","symbolTag","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","freeGlobal","global","freeSelf","Function","objectProto","objectToString","nativeMax","nativeMin","debounce","wait","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","invokeFunc","leadingEdge","timerExpired","remainingWait","timeSinceLastCall","timeSinceLastInvoke","shouldInvoke","trailingEdge","cancel","flush","debounced","isInvoking","toNumber","isObjectLike","isSymbol","isBinary","tile","tilingPaddingVertical","tilingPaddingHorizontal","gravityRangeCompound","gravityCompound","gravityRange","initialEnergyOnIncremental","_CoSELayout","getUserOptions","frameId","idToLNode","processChildrenList","getTopMostNodes","getPositions","iterateAnimated","isDone","afterReposition","cancelAnimationFrame","animationData","nodesMap","theNode","theNewGraph","children_of_children","TreeBase","_root","_comparator","_cursor","_ancestors","get_child","find","_bound","reverse_cmp","Iterator","reach","_tree","_minNode","_maxNode","set_child","comparator","gp","ggp","is_red","dir2","single_rotate","double_rotate","sibling","gpc"],"mappings":"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ACT,SAASC,KACT,SAASC,KACT,SAASC,KACT,SAASC,KACT,SAASC,KACT,SAASC,KACT,SAASC,KACT,SAASC,KACT,SAASC,KACT,SAASvX,KACT,SAASwX,KACT,SAASC,KACT,SAASC,KACT,SAASC,KACT,SAASC,KACT,SAASC,KACT,SAASC,KACT,SAAS58G,KACT,SAAS68G,KACT,SAASC,KACT,SAASC,KACT,SAASC,KACT,SAASC,KACT,SAASC,KACT,SAASC,KACT,SAASC,KACT,SAASC,KACT,SAASC,KACT,SAASC,KACT,SAASC,KACT,SAASC,KACT,SAASC,KACT,SAASC,KACT,SAASC,KACT,SAASC,KACT,SAASC,KACT,SAASC,KACT,SAASC,KACT,SAASC,KACT,SAASC,KACT,SAASC,KACT,SAASvsD,KACT,SAAS5K,KACT,SAASo3D,KACT,SAASC,KACT,SAASC,KACT,SAASC,KACT,SAASC,MACT,SAASC,MACT,SAASC,MACT,SAASC,MACT,SAASC,MACT,SAASC,MACT,SAASC,MACT,SAASC,MACT,SAASC,MACT,SAASC,MACT,SAASC,MACT,SAASC,MACT,SAASC,MACT,SAASC,MACT,SAASC,MACT,SAASC,MACT,SAASC,MACT,SAASC,MACT,SAASnpC,MACT,SAASopC,MACT,SAASC,MACT,SAASC,MACT,SAASC,MACT,SAASC,MACT,SAAS3G,MACT,SAAS4G,MACT,SAASC,MACT,SAASC,MACT,SAASC,MACT,SAASr1E,MACT,SAASs1E,MACT,SAASC,MACT,SAASj6F,MACT,SAASk6F,MACT,SAASC,MACT,SAASC,MACT,SAASC,MACT,SAASjoH,MACT,SAASkoH,MACT,SAASC,MACT,SAASC,MACT,SAAS5oH,MACT,SAASquB,MACT,SAAS5yD,MACT,SAASotJ,MACT,SAASC,MACT,SAASC,MACT,SAASC,MACT,SAASC,MACT,SAASC,MACT,SAASC,MACT,SAASnvD,MACT,SAASovD,MACT,SAASC,MACT,SAASC,MACT,SAASC,MACT,SAASC,MACT,SAASC,MACT,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","file":"js/chunk-1ae4063c.f672c1df.js","sourcesContent":["export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Net.vue?vue&type=style&index=0&id=6ade1d41&lang=scss&scoped=true&\"","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar PowerEdge = (function () {\r\n function PowerEdge(source, target, type) {\r\n this.source = source;\r\n this.target = target;\r\n this.type = type;\r\n }\r\n return PowerEdge;\r\n}());\r\nexports.PowerEdge = PowerEdge;\r\nvar Configuration = (function () {\r\n function Configuration(n, edges, linkAccessor, rootGroup) {\r\n var _this = this;\r\n this.linkAccessor = linkAccessor;\r\n this.modules = new Array(n);\r\n this.roots = [];\r\n if (rootGroup) {\r\n this.initModulesFromGroup(rootGroup);\r\n }\r\n else {\r\n this.roots.push(new ModuleSet());\r\n for (var i = 0; i < n; ++i)\r\n this.roots[0].add(this.modules[i] = new Module(i));\r\n }\r\n this.R = edges.length;\r\n edges.forEach(function (e) {\r\n var s = _this.modules[linkAccessor.getSourceIndex(e)], t = _this.modules[linkAccessor.getTargetIndex(e)], type = linkAccessor.getType(e);\r\n s.outgoing.add(type, t);\r\n t.incoming.add(type, s);\r\n });\r\n }\r\n Configuration.prototype.initModulesFromGroup = function (group) {\r\n var moduleSet = new ModuleSet();\r\n this.roots.push(moduleSet);\r\n for (var i = 0; i < group.leaves.length; ++i) {\r\n var node = group.leaves[i];\r\n var module = new Module(node.id);\r\n this.modules[node.id] = module;\r\n moduleSet.add(module);\r\n }\r\n if (group.groups) {\r\n for (var j = 0; j < group.groups.length; ++j) {\r\n var child = group.groups[j];\r\n var definition = {};\r\n for (var prop in child)\r\n if (prop !== \"leaves\" && prop !== \"groups\" && child.hasOwnProperty(prop))\r\n definition[prop] = child[prop];\r\n moduleSet.add(new Module(-1 - j, new LinkSets(), new LinkSets(), this.initModulesFromGroup(child), definition));\r\n }\r\n }\r\n return moduleSet;\r\n };\r\n Configuration.prototype.merge = function (a, b, k) {\r\n if (k === void 0) { k = 0; }\r\n var inInt = a.incoming.intersection(b.incoming), outInt = a.outgoing.intersection(b.outgoing);\r\n var children = new ModuleSet();\r\n children.add(a);\r\n children.add(b);\r\n var m = new Module(this.modules.length, outInt, inInt, children);\r\n this.modules.push(m);\r\n var update = function (s, i, o) {\r\n s.forAll(function (ms, linktype) {\r\n ms.forAll(function (n) {\r\n var nls = n[i];\r\n nls.add(linktype, m);\r\n nls.remove(linktype, a);\r\n nls.remove(linktype, b);\r\n a[o].remove(linktype, n);\r\n b[o].remove(linktype, n);\r\n });\r\n });\r\n };\r\n update(outInt, \"incoming\", \"outgoing\");\r\n update(inInt, \"outgoing\", \"incoming\");\r\n this.R -= inInt.count() + outInt.count();\r\n this.roots[k].remove(a);\r\n this.roots[k].remove(b);\r\n this.roots[k].add(m);\r\n return m;\r\n };\r\n Configuration.prototype.rootMerges = function (k) {\r\n if (k === void 0) { k = 0; }\r\n var rs = this.roots[k].modules();\r\n var n = rs.length;\r\n var merges = new Array(n * (n - 1));\r\n var ctr = 0;\r\n for (var i = 0, i_ = n - 1; i < i_; ++i) {\r\n for (var j = i + 1; j < n; ++j) {\r\n var a = rs[i], b = rs[j];\r\n merges[ctr] = { id: ctr, nEdges: this.nEdges(a, b), a: a, b: b };\r\n ctr++;\r\n }\r\n }\r\n return merges;\r\n };\r\n Configuration.prototype.greedyMerge = function () {\r\n for (var i = 0; i < this.roots.length; ++i) {\r\n if (this.roots[i].modules().length < 2)\r\n continue;\r\n var ms = this.rootMerges(i).sort(function (a, b) { return a.nEdges == b.nEdges ? a.id - b.id : a.nEdges - b.nEdges; });\r\n var m = ms[0];\r\n if (m.nEdges >= this.R)\r\n continue;\r\n this.merge(m.a, m.b, i);\r\n return true;\r\n }\r\n };\r\n Configuration.prototype.nEdges = function (a, b) {\r\n var inInt = a.incoming.intersection(b.incoming), outInt = a.outgoing.intersection(b.outgoing);\r\n return this.R - inInt.count() - outInt.count();\r\n };\r\n Configuration.prototype.getGroupHierarchy = function (retargetedEdges) {\r\n var _this = this;\r\n var groups = [];\r\n var root = {};\r\n toGroups(this.roots[0], root, groups);\r\n var es = this.allEdges();\r\n es.forEach(function (e) {\r\n var a = _this.modules[e.source];\r\n var b = _this.modules[e.target];\r\n retargetedEdges.push(new PowerEdge(typeof a.gid === \"undefined\" ? e.source : groups[a.gid], typeof b.gid === \"undefined\" ? e.target : groups[b.gid], e.type));\r\n });\r\n return groups;\r\n };\r\n Configuration.prototype.allEdges = function () {\r\n var es = [];\r\n Configuration.getEdges(this.roots[0], es);\r\n return es;\r\n };\r\n Configuration.getEdges = function (modules, es) {\r\n modules.forAll(function (m) {\r\n m.getEdges(es);\r\n Configuration.getEdges(m.children, es);\r\n });\r\n };\r\n return Configuration;\r\n}());\r\nexports.Configuration = Configuration;\r\nfunction toGroups(modules, group, groups) {\r\n modules.forAll(function (m) {\r\n if (m.isLeaf()) {\r\n if (!group.leaves)\r\n group.leaves = [];\r\n group.leaves.push(m.id);\r\n }\r\n else {\r\n var g = group;\r\n m.gid = groups.length;\r\n if (!m.isIsland() || m.isPredefined()) {\r\n g = { id: m.gid };\r\n if (m.isPredefined())\r\n for (var prop in m.definition)\r\n g[prop] = m.definition[prop];\r\n if (!group.groups)\r\n group.groups = [];\r\n group.groups.push(m.gid);\r\n groups.push(g);\r\n }\r\n toGroups(m.children, g, groups);\r\n }\r\n });\r\n}\r\nvar Module = (function () {\r\n function Module(id, outgoing, incoming, children, definition) {\r\n if (outgoing === void 0) { outgoing = new LinkSets(); }\r\n if (incoming === void 0) { incoming = new LinkSets(); }\r\n if (children === void 0) { children = new ModuleSet(); }\r\n this.id = id;\r\n this.outgoing = outgoing;\r\n this.incoming = incoming;\r\n this.children = children;\r\n this.definition = definition;\r\n }\r\n Module.prototype.getEdges = function (es) {\r\n var _this = this;\r\n this.outgoing.forAll(function (ms, edgetype) {\r\n ms.forAll(function (target) {\r\n es.push(new PowerEdge(_this.id, target.id, edgetype));\r\n });\r\n });\r\n };\r\n Module.prototype.isLeaf = function () {\r\n return this.children.count() === 0;\r\n };\r\n Module.prototype.isIsland = function () {\r\n return this.outgoing.count() === 0 && this.incoming.count() === 0;\r\n };\r\n Module.prototype.isPredefined = function () {\r\n return typeof this.definition !== \"undefined\";\r\n };\r\n return Module;\r\n}());\r\nexports.Module = Module;\r\nfunction intersection(m, n) {\r\n var i = {};\r\n for (var v in m)\r\n if (v in n)\r\n i[v] = m[v];\r\n return i;\r\n}\r\nvar ModuleSet = (function () {\r\n function ModuleSet() {\r\n this.table = {};\r\n }\r\n ModuleSet.prototype.count = function () {\r\n return Object.keys(this.table).length;\r\n };\r\n ModuleSet.prototype.intersection = function (other) {\r\n var result = new ModuleSet();\r\n result.table = intersection(this.table, other.table);\r\n return result;\r\n };\r\n ModuleSet.prototype.intersectionCount = function (other) {\r\n return this.intersection(other).count();\r\n };\r\n ModuleSet.prototype.contains = function (id) {\r\n return id in this.table;\r\n };\r\n ModuleSet.prototype.add = function (m) {\r\n this.table[m.id] = m;\r\n };\r\n ModuleSet.prototype.remove = function (m) {\r\n delete this.table[m.id];\r\n };\r\n ModuleSet.prototype.forAll = function (f) {\r\n for (var mid in this.table) {\r\n f(this.table[mid]);\r\n }\r\n };\r\n ModuleSet.prototype.modules = function () {\r\n var vs = [];\r\n this.forAll(function (m) {\r\n if (!m.isPredefined())\r\n vs.push(m);\r\n });\r\n return vs;\r\n };\r\n return ModuleSet;\r\n}());\r\nexports.ModuleSet = ModuleSet;\r\nvar LinkSets = (function () {\r\n function LinkSets() {\r\n this.sets = {};\r\n this.n = 0;\r\n }\r\n LinkSets.prototype.count = function () {\r\n return this.n;\r\n };\r\n LinkSets.prototype.contains = function (id) {\r\n var result = false;\r\n this.forAllModules(function (m) {\r\n if (!result && m.id == id) {\r\n result = true;\r\n }\r\n });\r\n return result;\r\n };\r\n LinkSets.prototype.add = function (linktype, m) {\r\n var s = linktype in this.sets ? this.sets[linktype] : this.sets[linktype] = new ModuleSet();\r\n s.add(m);\r\n ++this.n;\r\n };\r\n LinkSets.prototype.remove = function (linktype, m) {\r\n var ms = this.sets[linktype];\r\n ms.remove(m);\r\n if (ms.count() === 0) {\r\n delete this.sets[linktype];\r\n }\r\n --this.n;\r\n };\r\n LinkSets.prototype.forAll = function (f) {\r\n for (var linktype in this.sets) {\r\n f(this.sets[linktype], Number(linktype));\r\n }\r\n };\r\n LinkSets.prototype.forAllModules = function (f) {\r\n this.forAll(function (ms, lt) { return ms.forAll(f); });\r\n };\r\n LinkSets.prototype.intersection = function (other) {\r\n var result = new LinkSets();\r\n this.forAll(function (ms, lt) {\r\n if (lt in other.sets) {\r\n var i = ms.intersection(other.sets[lt]), n = i.count();\r\n if (n > 0) {\r\n result.sets[lt] = i;\r\n result.n += n;\r\n }\r\n }\r\n });\r\n return result;\r\n };\r\n return LinkSets;\r\n}());\r\nexports.LinkSets = LinkSets;\r\nfunction intersectionCount(m, n) {\r\n return Object.keys(intersection(m, n)).length;\r\n}\r\nfunction getGroups(nodes, links, la, rootGroup) {\r\n var n = nodes.length, c = new Configuration(n, links, la, rootGroup);\r\n while (c.greedyMerge())\r\n ;\r\n var powerEdges = [];\r\n var g = c.getGroupHierarchy(powerEdges);\r\n powerEdges.forEach(function (e) {\r\n var f = function (end) {\r\n var g = e[end];\r\n if (typeof g == \"number\")\r\n e[end] = nodes[g];\r\n };\r\n f(\"source\");\r\n f(\"target\");\r\n });\r\n return { groups: g, powerEdges: powerEdges };\r\n}\r\nexports.getGroups = getGroups;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG93ZXJncmFwaC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL1dlYkNvbGEvc3JjL3Bvd2VyZ3JhcGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFPSTtJQUNJLG1CQUNXLE1BQVcsRUFDWCxNQUFXLEVBQ1gsSUFBWTtRQUZaLFdBQU0sR0FBTixNQUFNLENBQUs7UUFDWCxXQUFNLEdBQU4sTUFBTSxDQUFLO1FBQ1gsU0FBSSxHQUFKLElBQUksQ0FBUTtJQUFJLENBQUM7SUFDaEMsZ0JBQUM7QUFBRCxDQUFDLEFBTEQsSUFLQztBQUxZLDhCQUFTO0FBT3RCO0lBU0ksdUJBQVksQ0FBUyxFQUFFLEtBQWEsRUFBVSxZQUFvQyxFQUFFLFNBQWlCO1FBQXJHLGlCQWtCQztRQWxCNkMsaUJBQVksR0FBWixZQUFZLENBQXdCO1FBQzlFLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDaEIsSUFBSSxTQUFTLEVBQUU7WUFDWCxJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDeEM7YUFBTTtZQUNILElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksU0FBUyxFQUFFLENBQUMsQ0FBQztZQUNqQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDdEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzFEO1FBQ0QsSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQ3RCLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBQSxDQUFDO1lBQ1gsSUFBSSxD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","// Generated by CoffeeScript 1.8.0\n(function() {\n var Heap, defaultCmp, floor, heapify, heappop, heappush, heappushpop, heapreplace, insort, min, nlargest, nsmallest, updateItem, _siftdown, _siftup;\n\n floor = Math.floor, min = Math.min;\n\n\n /*\n Default comparison function to be used\n */\n\n defaultCmp = function(x, y) {\n if (x < y) {\n return -1;\n }\n if (x > y) {\n return 1;\n }\n return 0;\n };\n\n\n /*\n Insert item x in list a, and keep it sorted assuming a is sorted.\n \n If x is already in a, insert it to the right of the rightmost x.\n \n Optional args lo (default 0) and hi (default a.length) bound the slice\n of a to be searched.\n */\n\n insort = function(a, x, lo, hi, cmp) {\n var mid;\n if (lo == null) {\n lo = 0;\n }\n if (cmp == null) {\n cmp = defaultCmp;\n }\n if (lo < 0) {\n throw new Error('lo must be non-negative');\n }\n if (hi == null) {\n hi = a.length;\n }\n while (lo < hi) {\n mid = floor((lo + hi) / 2);\n if (cmp(x, a[mid]) < 0) {\n hi = mid;\n } else {\n lo = mid + 1;\n }\n }\n return ([].splice.apply(a, [lo, lo - lo].concat(x)), x);\n };\n\n\n /*\n Push item onto heap, maintaining the heap invariant.\n */\n\n heappush = function(array, item, cmp) {\n if (cmp == null) {\n cmp = defaultCmp;\n }\n array.push(item);\n return _siftdown(array, 0, array.length - 1, cmp);\n };\n\n\n /*\n Pop the smallest item off the heap, maintaining the heap invariant.\n */\n\n heappop = function(array, cmp) {\n var lastelt, returnitem;\n if (cmp == null) {\n cmp = defaultCmp;\n }\n lastelt = array.pop();\n if (array.length) {\n returnitem = array[0];\n array[0] = lastelt;\n _siftup(array, 0, cmp);\n } else {\n returnitem = lastelt;\n }\n return returnitem;\n };\n\n\n /*\n Pop and return the current smallest value, and add the new item.\n \n This is more efficient than heappop() followed by heappush(), and can be\n more appropriate when using a fixed size heap. Note that the value\n returned may be larger than item! That constrains reasonable use of\n this routine unless written as part of a conditional replacement:\n if item > array[0]\n item = heapreplace(array, item)\n */\n\n heapreplace = function(array, item, cmp) {\n var returnitem;\n if (cmp == null) {\n cmp = defaultCmp;\n }\n returnitem = array[0];\n array[0] = item;\n _siftup(array, 0, cmp);\n return returnitem;\n };\n\n\n /*\n Fast version of a heappush followed by a heappop.\n */\n\n heappushpop = function(array, item, cmp) {\n var _ref;\n if (cmp == null) {\n cmp = defaultCmp;\n }\n if (array.length && cmp(array[0], item) < 0) {\n _ref = [array[0], item], item = _ref[0], array[0] = _ref[1];\n _siftup(array, 0, cmp);\n }\n return item;\n };\n\n\n /*\n Transform list into a heap, in-place, in O(array.length) time.\n */\n\n heapify = function(array, cmp) {\n var i, _i, _j, _len, _ref, _ref1, _results, _results1;\n if (cmp == null) {\n cmp = defaultCmp;\n }\n _ref1 = (function() {\n _results1 = [];\n for (var _j = 0, _ref = floor(array.length / 2); 0 <= _ref ? _j < _ref : _j > _ref; 0 <= _ref ? _j++ : _j--){ _results1.push(_j); }\n return _results1;\n }).apply(this).reverse();\n _results = [];\n for (_i = 0, _len = _ref1.length; _i < _len; _i++) {\n i = _ref1[_i];\n _results.push(_siftup(array, i, cmp));\n }\n return _results;\n };\n\n\n /*\n Update the position of the given item in the heap.\n This function should be called every time the item is being modified.\n */\n\n updateItem = function(array, item, cmp) {\n var pos;\n if (cmp == null) {\n cmp = defaultCmp;\n }\n pos = array.indexOf(item);\n if (pos === -1) {\n return;\n }\n _siftdown(array, 0, pos, cmp);\n return _siftup(array, pos, cmp);\n };\n\n\n /*\n Find the n largest elements in a dataset.\n */\n\n nlargest = function(array, n, cmp) {\n var elem, result, _i, _len, _ref;\n if (cmp == null) {\n cmp = defaultCmp;\n }\n result = array.slice(0, n);\n if (!result.length) {\n return result;\n }\n heapify(result, cmp);\n _ref = array.slice(n);\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n elem = _ref[_i];\n heappushpop(result, elem, cmp);\n }\n return result.sort(cmp).reverse();\n };\n\n\n /*\n Find the n smallest elements in a dataset.\n */\n\n nsmallest = function(array, n, cmp) {\n var elem, i, los, result, _i, _j, _len, _ref, _ref1, _results;\n if (cmp == null) {\n cmp = defaultCmp;\n }\n if (n * 10 <= array.length) {\n result = array.slice(0, n).sort(cmp);\n if (!result.length) {\n return result;\n }\n los = result[result.length - 1];\n _ref = array.slice(n);\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n elem = _ref[_i];\n if (cmp(elem, los) < 0) {\n insort(result, elem, 0, null, cmp);\n result.pop();\n los = result[result.length - 1];\n }\n }\n return result;\n }\n heapify(array, cmp);\n _results = [];\n for (i = _j = 0, _ref1 = min(n, array.length); 0 <= _ref1 ? _j < _ref1 : _j > _ref1; i = 0 <= _ref1 ? ++_j : --_j) {\n _results.push(heappop(array, cmp));\n }\n return _results;\n };\n\n _siftdown = function(array, startpos, pos, cmp) {\n var newitem, parent, parentpos;\n if (cmp == null) {\n cmp = defaultCmp;\n }\n newitem = array[pos];\n while (pos > startpos) {\n parentpos = (pos - 1) >> 1;\n parent = array[parentpos];\n if (cmp(newitem, parent) < 0) {\n array[pos] = parent;\n pos = parentpos;\n continue;\n }\n break;\n }\n return array[pos] = newitem;\n };\n\n _siftup = function(array, pos, cmp) {\n var childpos, endpos, newitem, rightpos, startpos;\n if (cmp == null) {\n cmp = defaultCmp;\n }\n endpos = array.length;\n startpos = pos;\n newitem = array[pos];\n childpos = 2 * pos + 1;\n while (childpos < endpos) {\n rightpos = childpos + 1;\n if (rightpos < endpos && !(cmp(array[childpos], array[rightpos]) < 0)) {\n childpos = rightpos;\n }\n array[pos] = array[childpos];\n pos = childpos;\n childpos = 2 * pos + 1;\n }\n array[pos] = newitem;\n return _siftdown(array, startpos, pos, cmp);\n };\n\n Heap = (function() {\n Heap.push = heappush;\n\n Heap.pop = heappop;\n\n Heap.replace = heapreplace;\n\n Heap.pushpop = heappushpop;\n\n Heap.heapify = heapify;\n\n Heap.updateItem = updateItem;\n\n Heap.nlargest = nlargest;\n\n Heap.nsmallest = nsmallest;\n\n function Heap(cmp) {\n this.cmp = cmp != null ? cmp : defaultCmp;\n this.nodes = [];\n }\n\n Heap.prototype.push = function(x) {\n return heappush(this.nodes, x, this.cmp);\n };\n\n Heap.prototype.pop = function() {\n return heappop(this.nodes, this.cmp);\n };\n\n Heap.prototype.peek = function() {\n return this.nodes[0];\n };\n\n Heap.prototype.contains = function(x) {\n return this.nodes.indexOf(x) !== -1;\n };\n\n Heap.prototype.replace = function(x) {\n return heapreplace(this.nodes, x, this.cmp);\n };\n\n Heap.prototype.pushpop = function(x) {\n return heappushpop(this.nodes, x, this.cmp);\n };\n\n Heap.prototype.heapify = function() {\n return heapify(this.nodes, this.cmp);\n };\n\n Heap.prototype.updateItem = function(x) {\n return updateItem(this.nodes, x, this.cmp);\n };\n\n Heap.prototype.clear = function() {\n return this.nodes = [];\n };\n\n Heap.prototype.empty = function() {\n return this.nodes.length === 0;\n };\n\n Heap.prototype.size = function() {\n return this.nodes.length;\n };\n\n Heap.prototype.clone = function() {\n var heap;\n heap = new Heap();\n heap.nodes = this.nodes.slice(0);\n return heap;\n };\n\n Heap.prototype.toArray = function() {\n return this.nodes.slice(0);\n };\n\n Heap.prototype.insert = Heap.prototype.push;\n\n Heap.prototype.top = Heap.prototype.peek;\n\n Heap.prototype.front = Heap.prototype.peek;\n\n Heap.prototype.has = Heap.prototype.contains;\n\n Heap.prototype.copy = Heap.prototype.clone;\n\n return Heap;\n\n })();\n\n (function(root, factory) {\n if (typeof define === 'function' && define.amd) {\n return define([], factory);\n } else if (typeof exports === 'object') {\n return module.exports = factory();\n } else {\n return root.Heap = factory();\n }\n })(this, function() {\n return Heap;\n });\n\n}).call(this);\n","/**\n * @module color-space/hsl\n */\n'use strict'\n\nvar rgb = require('./rgb');\n\nmodule.exports = {\n\tname: 'hsl',\n\tmin: [0,0,0],\n\tmax: [360,100,100],\n\tchannel: ['hue', 'saturation', 'lightness'],\n\talias: ['HSL'],\n\n\trgb: function(hsl) {\n\t\tvar h = hsl[0] / 360,\n\t\t\t\ts = hsl[1] / 100,\n\t\t\t\tl = hsl[2] / 100,\n\t\t\t\tt1, t2, t3, rgb, val;\n\n\t\tif (s === 0) {\n\t\t\tval = l * 255;\n\t\t\treturn [val, val, val];\n\t\t}\n\n\t\tif (l < 0.5) {\n\t\t\tt2 = l * (1 + s);\n\t\t}\n\t\telse {\n\t\t\tt2 = l + s - l * s;\n\t\t}\n\t\tt1 = 2 * l - t2;\n\n\t\trgb = [0, 0, 0];\n\t\tfor (var i = 0; i < 3; i++) {\n\t\t\tt3 = h + 1 / 3 * - (i - 1);\n\t\t\tif (t3 < 0) {\n\t\t\t\tt3++;\n\t\t\t}\n\t\t\telse if (t3 > 1) {\n\t\t\t\tt3--;\n\t\t\t}\n\n\t\t\tif (6 * t3 < 1) {\n\t\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t\t}\n\t\t\telse if (2 * t3 < 1) {\n\t\t\t\tval = t2;\n\t\t\t}\n\t\t\telse if (3 * t3 < 2) {\n\t\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tval = t1;\n\t\t\t}\n\n\t\t\trgb[i] = val * 255;\n\t\t}\n\n\t\treturn rgb;\n\t}\n};\n\n\n//extend rgb\nrgb.hsl = function(rgb) {\n\tvar r = rgb[0]/255,\n\t\t\tg = rgb[1]/255,\n\t\t\tb = rgb[2]/255,\n\t\t\tmin = Math.min(r, g, b),\n\t\t\tmax = Math.max(r, g, b),\n\t\t\tdelta = max - min,\n\t\t\th, s, l;\n\n\tif (max === min) {\n\t\th = 0;\n\t}\n\telse if (r === max) {\n\t\th = (g - b) / delta;\n\t}\n\telse if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t}\n\telse if (b === max) {\n\t\th = 4 + (r - g)/ delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tl = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t}\n\telse if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t}\n\telse {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar shortestpaths_1 = require(\"./shortestpaths\");\r\nvar descent_1 = require(\"./descent\");\r\nvar rectangle_1 = require(\"./rectangle\");\r\nvar linklengths_1 = require(\"./linklengths\");\r\nvar Link3D = (function () {\r\n function Link3D(source, target) {\r\n this.source = source;\r\n this.target = target;\r\n }\r\n Link3D.prototype.actualLength = function (x) {\r\n var _this = this;\r\n return Math.sqrt(x.reduce(function (c, v) {\r\n var dx = v[_this.target] - v[_this.source];\r\n return c + dx * dx;\r\n }, 0));\r\n };\r\n return Link3D;\r\n}());\r\nexports.Link3D = Link3D;\r\nvar Node3D = (function () {\r\n function Node3D(x, y, z) {\r\n if (x === void 0) { x = 0; }\r\n if (y === void 0) { y = 0; }\r\n if (z === void 0) { z = 0; }\r\n this.x = x;\r\n this.y = y;\r\n this.z = z;\r\n }\r\n return Node3D;\r\n}());\r\nexports.Node3D = Node3D;\r\nvar Layout3D = (function () {\r\n function Layout3D(nodes, links, idealLinkLength) {\r\n var _this = this;\r\n if (idealLinkLength === void 0) { idealLinkLength = 1; }\r\n this.nodes = nodes;\r\n this.links = links;\r\n this.idealLinkLength = idealLinkLength;\r\n this.constraints = null;\r\n this.useJaccardLinkLengths = true;\r\n this.result = new Array(Layout3D.k);\r\n for (var i = 0; i < Layout3D.k; ++i) {\r\n this.result[i] = new Array(nodes.length);\r\n }\r\n nodes.forEach(function (v, i) {\r\n for (var _i = 0, _a = Layout3D.dims; _i < _a.length; _i++) {\r\n var dim = _a[_i];\r\n if (typeof v[dim] == 'undefined')\r\n v[dim] = Math.random();\r\n }\r\n _this.result[0][i] = v.x;\r\n _this.result[1][i] = v.y;\r\n _this.result[2][i] = v.z;\r\n });\r\n }\r\n ;\r\n Layout3D.prototype.linkLength = function (l) {\r\n return l.actualLength(this.result);\r\n };\r\n Layout3D.prototype.start = function (iterations) {\r\n var _this = this;\r\n if (iterations === void 0) { iterations = 100; }\r\n var n = this.nodes.length;\r\n var linkAccessor = new LinkAccessor();\r\n if (this.useJaccardLinkLengths)\r\n linklengths_1.jaccardLinkLengths(this.links, linkAccessor, 1.5);\r\n this.links.forEach(function (e) { return e.length *= _this.idealLinkLength; });\r\n var distanceMatrix = (new shortestpaths_1.Calculator(n, this.links, function (e) { return e.source; }, function (e) { return e.target; }, function (e) { return e.length; })).DistanceMatrix();\r\n var D = descent_1.Descent.createSquareMatrix(n, function (i, j) { return distanceMatrix[i][j]; });\r\n var G = descent_1.Descent.createSquareMatrix(n, function () { return 2; });\r\n this.links.forEach(function (_a) {\r\n var source = _a.source, target = _a.target;\r\n return G[source][target] = G[target][source] = 1;\r\n });\r\n this.descent = new descent_1.Descent(this.result, D);\r\n this.descent.threshold = 1e-3;\r\n this.descent.G = G;\r\n if (this.constraints)\r\n this.descent.project = new rectangle_1.Projection(this.nodes, null, null, this.constraints).projectFunctions();\r\n for (var i = 0; i < this.nodes.length; i++) {\r\n var v = this.nodes[i];\r\n if (v.fixed) {\r\n this.descent.locks.add(i, [v.x, v.y, v.z]);\r\n }\r\n }\r\n this.descent.run(iterations);\r\n return this;\r\n };\r\n Layout3D.prototype.tick = function () {\r\n this.descent.locks.clear();\r\n for (var i = 0; i < this.nodes.length; i++) {\r\n var v = this.nodes[i];\r\n if (v.fixed) {\r\n this.descent.locks.add(i, [v.x, v.y, v.z]);\r\n }\r\n }\r\n return this.descent.rungeKutta();\r\n };\r\n Layout3D.dims = ['x', 'y', 'z'];\r\n Layout3D.k = Layout3D.dims.length;\r\n return Layout3D;\r\n}());\r\nexports.Layout3D = Layout3D;\r\nvar LinkAccessor = (function () {\r\n function LinkAccessor() {\r\n }\r\n LinkAccessor.prototype.getSourceIndex = function (e) { return e.source; };\r\n LinkAccessor.prototype.getTargetIndex = function (e) { return e.target; };\r\n LinkAccessor.prototype.getLength = function (e) { return e.length; };\r\n LinkAccessor.prototype.setLength = function (e, l) { e.length = l; };\r\n return LinkAccessor;\r\n}());\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0M2QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9XZWJDb2xhL3NyYy9sYXlvdXQzZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLGlEQUEwQztBQUMxQyxxQ0FBaUM7QUFDakMseUNBQTREO0FBRTVELDZDQUFvRTtBQUVwRTtJQUVRLGdCQUFtQixNQUFjLEVBQVMsTUFBYztRQUFyQyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQVMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtJQUFJLENBQUM7SUFDN0QsNkJBQVksR0FBWixVQUFhLENBQWE7UUFBMUIsaUJBTUM7UUFMRyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQ1osQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFDLENBQVMsRUFBRSxDQUFXO1lBQzVCLElBQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxLQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUMzQyxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2YsQ0FBQztJQUNMLGFBQUM7QUFBRCxDQUFDLEFBVkwsSUFVSztBQVZRLHdCQUFNO0FBV2Y7SUFTSSxnQkFDVyxDQUFhLEVBQ2IsQ0FBYSxFQUNiLENBQWE7UUFGYixrQkFBQSxFQUFBLEtBQWE7UUFDYixrQkFBQSxFQUFBLEtBQWE7UUFDYixrQkFBQSxFQUFBLEtBQWE7UUFGYixNQUFDLEdBQUQsQ0FBQyxDQUFZO1FBQ2IsTUFBQyxHQUFELENBQUMsQ0FBWTtRQUNiLE1BQUMsR0FBRCxDQUFDLENBQVk7SUFBSSxDQUFDO0lBQ2pDLGFBQUM7QUFBRCxDQUFDLEFBYkQsSUFhQztBQWJZLHdCQUFNO0FBY25CO0lBTUksa0JBQW1CLEtBQWUsRUFBUyxLQUFlLEVBQVMsZUFBMkI7UUFBOUYsaUJBYUM7UUFia0UsZ0NBQUEsRUFBQSxtQkFB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","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar pqueue_1 = require(\"./pqueue\");\r\nvar Neighbour = (function () {\r\n function Neighbour(id, distance) {\r\n this.id = id;\r\n this.distance = distance;\r\n }\r\n return Neighbour;\r\n}());\r\nvar Node = (function () {\r\n function Node(id) {\r\n this.id = id;\r\n this.neighbours = [];\r\n }\r\n return Node;\r\n}());\r\nvar QueueEntry = (function () {\r\n function QueueEntry(node, prev, d) {\r\n this.node = node;\r\n this.prev = prev;\r\n this.d = d;\r\n }\r\n return QueueEntry;\r\n}());\r\nvar Calculator = (function () {\r\n function Calculator(n, es, getSourceIndex, getTargetIndex, getLength) {\r\n this.n = n;\r\n this.es = es;\r\n this.neighbours = new Array(this.n);\r\n var i = this.n;\r\n while (i--)\r\n this.neighbours[i] = new Node(i);\r\n i = this.es.length;\r\n while (i--) {\r\n var e = this.es[i];\r\n var u = getSourceIndex(e), v = getTargetIndex(e);\r\n var d = getLength(e);\r\n this.neighbours[u].neighbours.push(new Neighbour(v, d));\r\n this.neighbours[v].neighbours.push(new Neighbour(u, d));\r\n }\r\n }\r\n Calculator.prototype.DistanceMatrix = function () {\r\n var D = new Array(this.n);\r\n for (var i = 0; i < this.n; ++i) {\r\n D[i] = this.dijkstraNeighbours(i);\r\n }\r\n return D;\r\n };\r\n Calculator.prototype.DistancesFromNode = function (start) {\r\n return this.dijkstraNeighbours(start);\r\n };\r\n Calculator.prototype.PathFromNodeToNode = function (start, end) {\r\n return this.dijkstraNeighbours(start, end);\r\n };\r\n Calculator.prototype.PathFromNodeToNodeWithPrevCost = function (start, end, prevCost) {\r\n var q = new pqueue_1.PriorityQueue(function (a, b) { return a.d <= b.d; }), u = this.neighbours[start], qu = new QueueEntry(u, null, 0), visitedFrom = {};\r\n q.push(qu);\r\n while (!q.empty()) {\r\n qu = q.pop();\r\n u = qu.node;\r\n if (u.id === end) {\r\n break;\r\n }\r\n var i = u.neighbours.length;\r\n while (i--) {\r\n var neighbour = u.neighbours[i], v = this.neighbours[neighbour.id];\r\n if (qu.prev && v.id === qu.prev.node.id)\r\n continue;\r\n var viduid = v.id + ',' + u.id;\r\n if (viduid in visitedFrom && visitedFrom[viduid] <= qu.d)\r\n continue;\r\n var cc = qu.prev ? prevCost(qu.prev.node.id, u.id, v.id) : 0, t = qu.d + neighbour.distance + cc;\r\n visitedFrom[viduid] = t;\r\n q.push(new QueueEntry(v, qu, t));\r\n }\r\n }\r\n var path = [];\r\n while (qu.prev) {\r\n qu = qu.prev;\r\n path.push(qu.node.id);\r\n }\r\n return path;\r\n };\r\n Calculator.prototype.dijkstraNeighbours = function (start, dest) {\r\n if (dest === void 0) { dest = -1; }\r\n var q = new pqueue_1.PriorityQueue(function (a, b) { return a.d <= b.d; }), i = this.neighbours.length, d = new Array(i);\r\n while (i--) {\r\n var node = this.neighbours[i];\r\n node.d = i === start ? 0 : Number.POSITIVE_INFINITY;\r\n node.q = q.push(node);\r\n }\r\n while (!q.empty()) {\r\n var u = q.pop();\r\n d[u.id] = u.d;\r\n if (u.id === dest) {\r\n var path = [];\r\n var v = u;\r\n while (typeof v.prev !== 'undefined') {\r\n path.push(v.prev.id);\r\n v = v.prev;\r\n }\r\n return path;\r\n }\r\n i = u.neighbours.length;\r\n while (i--) {\r\n var neighbour = u.neighbours[i];\r\n var v = this.neighbours[neighbour.id];\r\n var t = u.d + neighbour.distance;\r\n if (u.d !== Number.MAX_VALUE && v.d > t) {\r\n v.d = t;\r\n v.prev = u;\r\n q.reduceKey(v.q, v, function (e, q) { return e.q = q; });\r\n }\r\n }\r\n }\r\n return d;\r\n };\r\n return Calculator;\r\n}());\r\nexports.Calculator = Calculator;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hvcnRlc3RwYXRocy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL1dlYkNvbGEvc3JjL3Nob3J0ZXN0cGF0aHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxtQ0FBbUQ7QUFFbkQ7SUFDSSxtQkFBbUIsRUFBVSxFQUFTLFFBQWdCO1FBQW5DLE9BQUUsR0FBRixFQUFFLENBQVE7UUFBUyxhQUFRLEdBQVIsUUFBUSxDQUFRO0lBQUksQ0FBQztJQUMvRCxnQkFBQztBQUFELENBQUMsQUFGRCxJQUVDO0FBRUQ7SUFDSSxjQUFtQixFQUFVO1FBQVYsT0FBRSxHQUFGLEVBQUUsQ0FBUTtRQUN6QixJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBS0wsV0FBQztBQUFELENBQUMsQUFSRCxJQVFDO0FBRUQ7SUFDSSxvQkFBbUIsSUFBVSxFQUFTLElBQWdCLEVBQVMsQ0FBUztRQUFyRCxTQUFJLEdBQUosSUFBSSxDQUFNO1FBQVMsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUFTLE1BQUMsR0FBRCxDQUFDLENBQVE7SUFBRyxDQUFDO0lBQ2hGLGlCQUFDO0FBQUQsQ0FBQyxBQUZELElBRUM7QUFTRDtJQUdJLG9CQUFtQixDQUFTLEVBQVMsRUFBVSxFQUFFLGNBQW1DLEVBQUUsY0FBbUMsRUFBRSxTQUE4QjtRQUF0SSxNQUFDLEdBQUQsQ0FBQyxDQUFRO1FBQVMsT0FBRSxHQUFGLEVBQUUsQ0FBUTtRQUMzQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTdELENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFD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","module.exports = require('./lib/heap');\n","/**\n * RGB space.\n *\n * @module color-space/rgb\n */\n'use strict'\n\nmodule.exports = {\n\tname: 'rgb',\n\tmin: [0,0,0],\n\tmax: [255,255,255],\n\tchannel: ['red', 'green', 'blue'],\n\talias: ['RGB']\n};\n","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"webcola\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"webcola\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"cytoscapeCola\"] = factory(require(\"webcola\"));\n\telse\n\t\troot[\"cytoscapeCola\"] = factory(root[\"webcola\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_5__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// identity function for calling harmony imports with the correct context\n/******/ \t__webpack_require__.i = function(value) { return value; };\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 3);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar assign = __webpack_require__(1);\nvar defaults = __webpack_require__(2);\nvar cola = __webpack_require__(5) || (typeof window !== 'undefined' ? window.cola : null);\nvar raf = __webpack_require__(4);\nvar isString = function isString(o) {\n return (typeof o === 'undefined' ? 'undefined' : _typeof(o)) === _typeof('');\n};\nvar isNumber = function isNumber(o) {\n return (typeof o === 'undefined' ? 'undefined' : _typeof(o)) === _typeof(0);\n};\nvar isObject = function isObject(o) {\n return o != null && (typeof o === 'undefined' ? 'undefined' : _typeof(o)) === _typeof({});\n};\nvar isFunction = function isFunction(o) {\n return o != null && (typeof o === 'undefined' ? 'undefined' : _typeof(o)) === _typeof(function () {});\n};\nvar nop = function nop() {};\n\nvar getOptVal = function getOptVal(val, ele) {\n if (isFunction(val)) {\n var fn = val;\n return fn.apply(ele, [ele]);\n } else {\n return val;\n }\n};\n\n// constructor\n// options : object containing layout options\nfunction ColaLayout(options) {\n this.options = assign({}, defaults, options);\n}\n\n// runs the layout\nColaLayout.prototype.run = function () {\n var layout = this;\n var options = this.options;\n\n layout.manuallyStopped = false;\n\n var cy = options.cy; // cy is automatically populated for us in the constructor\n var eles = options.eles;\n var nodes = eles.nodes();\n var edges = eles.edges();\n var ready = false;\n\n var isParent = function isParent(ele) {\n return ele.isParent();\n };\n\n var parentNodes = nodes.filter(isParent);\n\n var nonparentNodes = nodes.subtract(parentNodes);\n\n var bb = options.boundingBox || { x1: 0, y1: 0, w: cy.width(), h: cy.height() };\n if (bb.x2 === undefined) {\n bb.x2 = bb.x1 + bb.w;\n }\n if (bb.w === undefined) {\n bb.w = bb.x2 - bb.x1;\n }\n if (bb.y2 === undefined) {\n bb.y2 = bb.y1 + bb.h;\n }\n if (bb.h === undefined) {\n bb.h = bb.y2 - bb.y1;\n }\n\n var updateNodePositions = function updateNodePositions() {\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n var dimensions = node.layoutDimensions(options);\n var scratch = node.scratch('cola');\n\n // update node dims\n if (!scratch.updatedDims) {\n var padding = getOptVal(options.nodeSpacing, node);\n\n scratch.width = dimensions.w + 2 * padding;\n scratch.height = dimensions.h + 2 * padding;\n }\n }\n\n nodes.positions(function (node) {\n var scratch = node.scratch().cola;\n var retPos = void 0;\n\n if (!node.grabbed() && nonparentNodes.contains(node)) {\n retPos = {\n x: bb.x1 + scratch.x,\n y: bb.y1 + scratch.y\n };\n\n if (!isNumber(retPos.x) || !isNumber(retPos.y)) {\n retPos = undefined;\n }\n }\n\n return retPos;\n });\n\n nodes.updateCompoundBounds(); // because the way this layout sets positions is buggy for some reason; ref #878\n\n if (!ready) {\n onReady();\n ready = true;\n }\n\n if (options.fit) {\n cy.fit(options.padding);\n }\n };\n\n var onDone = function onDone() {\n if (options.ungrabifyWhileSimulating) {\n grabbableNodes.grabify();\n }\n\n cy.off('destroy', destroyHandler);\n\n nodes.off('grab free position', grabHandler);\n nodes.off('lock unlock', lockHandler);\n\n // trigger layoutstop when the layout stops (e.g. finishes)\n layout.one('layoutstop', options.stop);\n layout.trigger({ type: 'layoutstop', layout: layout });\n };\n\n var onReady = function onReady() {\n // trigger layoutready when each node has had its position set at least once\n layout.one('layoutready', options.ready);\n layout.trigger({ type: 'layoutready', layout: layout });\n };\n\n var ticksPerFrame = options.refresh;\n\n if (options.refresh < 0) {\n ticksPerFrame = 1;\n } else {\n ticksPerFrame = Math.max(1, ticksPerFrame); // at least 1\n }\n\n var adaptor = layout.adaptor = cola.adaptor({\n trigger: function trigger(e) {\n // on sim event\n var TICK = cola.EventType ? cola.EventType.tick : null;\n var END = cola.EventType ? cola.EventType.end : null;\n\n switch (e.type) {\n case 'tick':\n case TICK:\n if (options.animate) {\n updateNodePositions();\n }\n break;\n\n case 'end':\n case END:\n updateNodePositions();\n if (!options.infinite) {\n onDone();\n }\n break;\n }\n },\n\n kick: function kick() {\n // kick off the simulation\n //let skip = 0;\n\n var firstTick = true;\n\n var inftick = function inftick() {\n if (layout.manuallyStopped) {\n onDone();\n\n return true;\n }\n\n var ret = adaptor.tick();\n\n if (!options.infinite && !firstTick) {\n adaptor.convergenceThreshold(options.convergenceThreshold);\n }\n\n firstTick = false;\n\n if (ret && options.infinite) {\n // resume layout if done\n adaptor.resume(); // resume => new kick\n }\n\n return ret; // allow regular finish b/c of new kick\n };\n\n var multitick = function multitick() {\n // multiple ticks in a row\n var ret = void 0;\n\n for (var i = 0; i < ticksPerFrame && !ret; i++) {\n ret = ret || inftick(); // pick up true ret vals => sim done\n }\n\n return ret;\n };\n\n if (options.animate) {\n var frame = function frame() {\n if (multitick()) {\n return;\n }\n\n raf(frame);\n };\n\n raf(frame);\n } else {\n while (!inftick()) {\n // keep going...\n }\n }\n },\n\n on: nop, // dummy; not needed\n\n drag: nop // not needed for our case\n });\n layout.adaptor = adaptor;\n\n // if set no grabbing during layout\n var grabbableNodes = nodes.filter(':grabbable');\n if (options.ungrabifyWhileSimulating) {\n grabbableNodes.ungrabify();\n }\n\n var destroyHandler = void 0;\n cy.one('destroy', destroyHandler = function destroyHandler() {\n layout.stop();\n });\n\n // handle node dragging\n var grabHandler = void 0;\n nodes.on('grab free position', grabHandler = function grabHandler(e) {\n var node = this;\n var scrCola = node.scratch().cola;\n var pos = node.position();\n var nodeIsTarget = e.cyTarget === node || e.target === node;\n\n if (!nodeIsTarget) {\n return;\n }\n\n switch (e.type) {\n case 'grab':\n adaptor.dragstart(scrCola);\n break;\n case 'free':\n adaptor.dragend(scrCola);\n break;\n case 'position':\n // only update when different (i.e. manual .position() call or drag) so we don't loop needlessly\n if (scrCola.px !== pos.x - bb.x1 || scrCola.py !== pos.y - bb.y1) {\n scrCola.px = pos.x - bb.x1;\n scrCola.py = pos.y - bb.y1;\n }\n break;\n }\n });\n\n var lockHandler = void 0;\n nodes.on('lock unlock', lockHandler = function lockHandler() {\n var node = this;\n var scrCola = node.scratch().cola;\n\n scrCola.fixed = node.locked();\n\n if (node.locked()) {\n adaptor.dragstart(scrCola);\n } else {\n adaptor.dragend(scrCola);\n }\n });\n\n // add nodes to cola\n adaptor.nodes(nonparentNodes.map(function (node, i) {\n var padding = getOptVal(options.nodeSpacing, node);\n var pos = node.position();\n var dimensions = node.layoutDimensions(options);\n\n var struct = node.scratch().cola = {\n x: options.randomize && !node.locked() || pos.x === undefined ? Math.round(Math.random() * bb.w) : pos.x,\n y: options.randomize && !node.locked() || pos.y === undefined ? Math.round(Math.random() * bb.h) : pos.y,\n width: dimensions.w + 2 * padding,\n height: dimensions.h + 2 * padding,\n index: i,\n fixed: node.locked()\n };\n\n return struct;\n }));\n\n // the constraints to be added on nodes\n var constraints = [];\n\n if (options.alignment) {\n // then set alignment constraints\n\n if (options.alignment.vertical) {\n var verticalAlignments = options.alignment.vertical;\n verticalAlignments.forEach(function (alignment) {\n var offsetsX = [];\n alignment.forEach(function (nodeData) {\n var node = nodeData.node;\n var scrCola = node.scratch().cola;\n var index = scrCola.index;\n offsetsX.push({\n node: index,\n offset: nodeData.offset ? nodeData.offset : 0\n });\n });\n constraints.push({\n type: 'alignment',\n axis: 'x',\n offsets: offsetsX\n });\n });\n }\n\n if (options.alignment.horizontal) {\n var horizontalAlignments = options.alignment.horizontal;\n horizontalAlignments.forEach(function (alignment) {\n var offsetsY = [];\n alignment.forEach(function (nodeData) {\n var node = nodeData.node;\n var scrCola = node.scratch().cola;\n var index = scrCola.index;\n offsetsY.push({\n node: index,\n offset: nodeData.offset ? nodeData.offset : 0\n });\n });\n constraints.push({\n type: 'alignment',\n axis: 'y',\n offsets: offsetsY\n });\n });\n }\n }\n\n // if gapInequalities variable is set add each inequality constraint to list of constraints\n if (options.gapInequalities) {\n options.gapInequalities.forEach(function (inequality) {\n\n // for the constraints to be passed to cola layout adaptor use indices of nodes,\n // not the nodes themselves\n var leftIndex = inequality.left.scratch().cola.index;\n var rightIndex = inequality.right.scratch().cola.index;\n\n constraints.push({\n axis: inequality.axis,\n left: leftIndex,\n right: rightIndex,\n gap: inequality.gap,\n equality: inequality.equality\n });\n });\n }\n\n // add constraints if any\n if (constraints.length > 0) {\n adaptor.constraints(constraints);\n }\n\n // add compound nodes to cola\n adaptor.groups(parentNodes.map(function (node, i) {\n // add basic group incl leaf nodes\n var optPadding = getOptVal(options.nodeSpacing, node);\n var getPadding = function getPadding(d) {\n return parseFloat(node.style('padding-' + d));\n };\n\n var pleft = getPadding('left') + optPadding;\n var pright = getPadding('right') + optPadding;\n var ptop = getPadding('top') + optPadding;\n var pbottom = getPadding('bottom') + optPadding;\n\n node.scratch().cola = {\n index: i,\n\n padding: Math.max(pleft, pright, ptop, pbottom),\n\n // leaves should only contain direct descendants (children),\n // not the leaves of nested compound nodes or any nodes that are compounds themselves\n leaves: node.children().intersection(nonparentNodes).map(function (child) {\n return child[0].scratch().cola.index;\n }),\n\n fixed: node.locked()\n };\n\n return node;\n }).map(function (node) {\n // add subgroups\n node.scratch().cola.groups = node.children().intersection(parentNodes).map(function (child) {\n return child.scratch().cola.index;\n });\n\n return node.scratch().cola;\n }));\n\n // get the edge length setting mechanism\n var length = void 0;\n var lengthFnName = void 0;\n if (options.edgeLength != null) {\n length = options.edgeLength;\n lengthFnName = 'linkDistance';\n } else if (options.edgeSymDiffLength != null) {\n length = options.edgeSymDiffLength;\n lengthFnName = 'symmetricDiffLinkLengths';\n } else if (options.edgeJaccardLength != null) {\n length = options.edgeJaccardLength;\n lengthFnName = 'jaccardLinkLengths';\n } else {\n length = 100;\n lengthFnName = 'linkDistance';\n }\n\n var lengthGetter = function lengthGetter(link) {\n return link.calcLength;\n };\n\n // add the edges to cola\n adaptor.links(edges.stdFilter(function (edge) {\n return nonparentNodes.contains(edge.source()) && nonparentNodes.contains(edge.target());\n }).map(function (edge) {\n var c = edge.scratch().cola = {\n source: edge.source()[0].scratch().cola.index,\n target: edge.target()[0].scratch().cola.index\n };\n\n if (length != null) {\n c.calcLength = getOptVal(length, edge);\n }\n\n return c;\n }));\n\n adaptor.size([bb.w, bb.h]);\n\n if (length != null) {\n adaptor[lengthFnName](lengthGetter);\n }\n\n // set the flow of cola\n if (options.flow) {\n var flow = void 0;\n var defAxis = 'y';\n var defMinSep = 50;\n\n if (isString(options.flow)) {\n flow = {\n axis: options.flow,\n minSeparation: defMinSep\n };\n } else if (isNumber(options.flow)) {\n flow = {\n axis: defAxis,\n minSeparation: options.flow\n };\n } else if (isObject(options.flow)) {\n flow = options.flow;\n\n flow.axis = flow.axis || defAxis;\n flow.minSeparation = flow.minSeparation != null ? flow.minSeparation : defMinSep;\n } else {\n // e.g. options.flow: true\n flow = {\n axis: defAxis,\n minSeparation: defMinSep\n };\n }\n\n adaptor.flowLayout(flow.axis, flow.minSeparation);\n }\n\n layout.trigger({ type: 'layoutstart', layout: layout });\n\n adaptor.avoidOverlaps(options.avoidOverlap).handleDisconnected(options.handleDisconnected).start(options.unconstrIter, options.userConstIter, options.allConstIter, undefined, // gridSnapIterations = 0\n undefined, // keepRunning = true\n options.centerGraph);\n\n if (!options.infinite) {\n setTimeout(function () {\n if (!layout.manuallyStopped) {\n adaptor.stop();\n }\n }, options.maxSimulationTime);\n }\n\n return this; // chaining\n};\n\n// called on continuous layouts to stop them before they finish\nColaLayout.prototype.stop = function () {\n if (this.adaptor) {\n this.manuallyStopped = true;\n this.adaptor.stop();\n }\n\n return this; // chaining\n};\n\nmodule.exports = ColaLayout;\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n// Simple, internal Object.assign() polyfill for options objects etc.\n\nmodule.exports = Object.assign != null ? Object.assign.bind(Object) : function (tgt) {\n for (var _len = arguments.length, srcs = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n srcs[_key - 1] = arguments[_key];\n }\n\n srcs.filter(function (src) {\n return src != null;\n }).forEach(function (src) {\n Object.keys(src).forEach(function (k) {\n return tgt[k] = src[k];\n });\n });\n\n return tgt;\n};\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n// default layout options\nvar defaults = {\n animate: true, // whether to show the layout as it's running\n refresh: 1, // number of ticks per frame; higher is faster but more jerky\n maxSimulationTime: 4000, // max length in ms to run the layout\n ungrabifyWhileSimulating: false, // so you can't drag nodes during layout\n fit: true, // on every layout reposition of nodes, fit the viewport\n padding: 30, // padding around the simulation\n boundingBox: undefined, // constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h }\n nodeDimensionsIncludeLabels: false, // whether labels should be included in determining the space used by a node\n\n // layout event callbacks\n ready: function ready() {}, // on layoutready\n stop: function stop() {}, // on layoutstop\n\n // positioning options\n randomize: false, // use random node positions at beginning of layout\n avoidOverlap: true, // if true, prevents overlap of node bounding boxes\n handleDisconnected: true, // if true, avoids disconnected components from overlapping\n convergenceThreshold: 0.01, // when the alpha value (system energy) falls below this value, the layout stops\n nodeSpacing: function nodeSpacing(node) {\n return 10;\n }, // extra spacing around nodes\n flow: undefined, // use DAG/tree flow layout if specified, e.g. { axis: 'y', minSeparation: 30 }\n alignment: undefined, // relative alignment constraints on nodes, e.g. function( node ){ return { x: 0, y: 1 } }\n gapInequalities: undefined, // list of inequality constraints for the gap between the nodes, e.g. [{\"axis\":\"y\", \"left\":node1, \"right\":node2, \"gap\":25}]\n centerGraph: true, // adjusts the node positions initially to center the graph (pass false if you want to start the layout from the current position)\n\n\n // different methods of specifying edge length\n // each can be a constant numerical value or a function like `function( edge ){ return 2; }`\n edgeLength: undefined, // sets edge length directly in simulation\n edgeSymDiffLength: undefined, // symmetric diff edge length in simulation\n edgeJaccardLength: undefined, // jaccard edge length in simulation\n\n // iterations of cola algorithm; uses default values on undefined\n unconstrIter: undefined, // unconstrained initial layout iterations\n userConstIter: undefined, // initial layout iterations with user-specified constraints\n allConstIter: undefined, // initial layout iterations with all constraints including non-overlap\n\n // infinite layout options\n infinite: false // overrides all other options for a forces-all-the-time mode\n};\n\nmodule.exports = defaults;\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar impl = __webpack_require__(0);\n\n// registers the extension on a cytoscape lib ref\nvar register = function register(cytoscape) {\n if (!cytoscape) {\n return;\n } // can't register if cytoscape unspecified\n\n cytoscape('layout', 'cola', impl); // register with cytoscape.js\n};\n\nif (typeof cytoscape !== 'undefined') {\n // expose to global cytoscape (i.e. window.cytoscape)\n register(cytoscape);\n}\n\nmodule.exports = register;\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar raf = void 0;\n\nif ((typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) !== ( true ? \"undefined\" : _typeof(undefined))) {\n raf = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.msRequestAnimationFrame || function (fn) {\n return setTimeout(fn, 16);\n };\n} else {\n // if not available, all you get is immediate calls\n raf = function raf(cb) {\n cb();\n };\n}\n\nmodule.exports = raf;\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_5__;\n\n/***/ })\n/******/ ]);\n});","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar d3v3 = require(\"./d3v3adaptor\");\r\nvar d3v4 = require(\"./d3v4adaptor\");\r\n;\r\nfunction d3adaptor(d3Context) {\r\n if (!d3Context || isD3V3(d3Context)) {\r\n return new d3v3.D3StyleLayoutAdaptor();\r\n }\r\n return new d3v4.D3StyleLayoutAdaptor(d3Context);\r\n}\r\nexports.d3adaptor = d3adaptor;\r\nfunction isD3V3(d3Context) {\r\n var v3exp = /^3\\./;\r\n return d3Context.version && d3Context.version.match(v3exp) !== null;\r\n}\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZDNhZGFwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vV2ViQ29sYS9zcmMvZDNhZGFwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsb0NBQXFDO0FBQ3JDLG9DQUFxQztBQUdVLENBQUM7QUE0QmhELFNBQWdCLFNBQVMsQ0FBQyxTQUF3QztJQUM5RCxJQUFJLENBQUMsU0FBUyxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRTtRQUNqQyxPQUFPLElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7S0FDMUM7SUFDRCxPQUFPLElBQUksSUFBSSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ3BELENBQUM7QUFMRCw4QkFLQztBQUVELFNBQVMsTUFBTSxDQUFDLFNBQXVDO0lBQ25ELElBQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQztJQUNyQixPQUFhLFNBQVUsQ0FBQyxPQUFPLElBQVUsU0FBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxDQUFDO0FBQ3RGLENBQUMifQ==","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{style:(_vm.netStyle)},[_c('div',{staticClass:\"box-head\"},[_vm._v(\"Critical Residues\")]),_c('div',{staticClass:\"box-tool\"},[_c('span',[_c('a',{staticStyle:{\"cursor\":\"pointer\"},on:{\"click\":_vm.downloadTxt}},[_vm._v(_vm._s(_vm.task.id)+\"-net.txt\")]),_vm._v(\" \"),(_vm.netReady)?_c('a',{staticStyle:{\"cursor\":\"pointer\"},on:{\"click\":_vm.downloadPng}},[_vm._v(_vm._s(_vm.task.id)+\"-net.png\")]):_vm._e()])]),(!_vm.showNet)?_c('div',[_c('el-button',{attrs:{\"type\":\"text\"},nativeOn:{\"click\":function($event){return _vm.viewNet.apply(null, arguments)}}},[_vm._v(\"View Network\")])],1):_vm._e(),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.netReady),expression:\"netReady\"}]},[_vm._v(\"   \"),_c('span',[_vm._v(\"Show \"),_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.numPaths),expression:\"numPaths\"}],on:{\"change\":[function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.numPaths=$event.target.multiple ? $$selectedVal : $$selectedVal[0]},_vm.changeNumPaths]}},[_c('option',{attrs:{\"value\":\"3\"}},[_vm._v(\"3\")]),_c('option',{attrs:{\"value\":\"5\"}},[_vm._v(\"5\")]),_c('option',{attrs:{\"value\":\"7\"}},[_vm._v(\"7\")]),_c('option',{attrs:{\"value\":\"10\"}},[_vm._v(\"10\")]),_c('option',{attrs:{\"value\":\"20\"}},[_vm._v(\"20\")]),_c('option',{attrs:{\"value\":\"30\"}},[_vm._v(\"30\")]),_c('option',{attrs:{\"value\":\"40\"}},[_vm._v(\"40\")]),_c('option',{attrs:{\"value\":\"50\"}},[_vm._v(\"50\")]),_c('option',{attrs:{\"value\":\"60\"}},[_vm._v(\"60\")]),_c('option',{attrs:{\"value\":\"70\"}},[_vm._v(\"70\")]),_c('option',{attrs:{\"value\":\"80\"}},[_vm._v(\"80\")]),_c('option',{attrs:{\"value\":\"90\"}},[_vm._v(\"90\")]),_c('option',{attrs:{\"value\":\"100\"}},[_vm._v(\"100\")]),_c('option',{attrs:{\"value\":\"all\"}},[_vm._v(\"all\")])]),_vm._v(\" pathways \")]),_vm._v(\"   Auto-update layout \"),_c('el-switch',{attrs:{\"active-color\":\"#13ce66\"},model:{value:(_vm.layoutUpdate),callback:function ($$v) {_vm.layoutUpdate=$$v},expression:\"layoutUpdate\"}})],1),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showNet),expression:\"showNet\"},{name:\"loading\",rawName:\"v-loading\",value:(_vm.showNet&&!_vm.netReady),expression:\"showNet&&!netReady\"}],attrs:{\"id\":\"net\"}}),(_vm.netReady)?_c('div',{staticClass:\"button-plus\",on:{\"click\":_vm.zoomIn}},[_c('i',{staticClass:\"el-icon-plus\"})]):_vm._e(),(_vm.netReady)?_c('div',{staticClass:\"button-minus\",on:{\"click\":_vm.zoomOut}},[_c('i',{staticClass:\"el-icon-minus\"})]):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Net.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Net.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Net.vue?vue&type=template&id=6ade1d41&scoped=true&\"\nimport script from \"./Net.vue?vue&type=script&lang=js&\"\nexport * from \"./Net.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Net.vue?vue&type=style&index=0&id=6ade1d41&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6ade1d41\",\n null\n \n)\n\nexport default component.exports","\"use strict\";\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar layout_1 = require(\"./layout\");\r\nvar D3StyleLayoutAdaptor = (function (_super) {\r\n __extends(D3StyleLayoutAdaptor, _super);\r\n function D3StyleLayoutAdaptor(d3Context) {\r\n var _this = _super.call(this) || this;\r\n _this.d3Context = d3Context;\r\n _this.event = d3Context.dispatch(layout_1.EventType[layout_1.EventType.start], layout_1.EventType[layout_1.EventType.tick], layout_1.EventType[layout_1.EventType.end]);\r\n var d3layout = _this;\r\n var drag;\r\n _this.drag = function () {\r\n if (!drag) {\r\n var drag = d3Context.drag()\r\n .subject(layout_1.Layout.dragOrigin)\r\n .on(\"start.d3adaptor\", layout_1.Layout.dragStart)\r\n .on(\"drag.d3adaptor\", function (d) {\r\n layout_1.Layout.drag(d, d3Context.event);\r\n d3layout.resume();\r\n })\r\n .on(\"end.d3adaptor\", layout_1.Layout.dragEnd);\r\n }\r\n if (!arguments.length)\r\n return drag;\r\n arguments[0].call(drag);\r\n };\r\n return _this;\r\n }\r\n D3StyleLayoutAdaptor.prototype.trigger = function (e) {\r\n var d3event = { type: layout_1.EventType[e.type], alpha: e.alpha, stress: e.stress };\r\n this.event.call(d3event.type, d3event);\r\n };\r\n D3StyleLayoutAdaptor.prototype.kick = function () {\r\n var _this = this;\r\n var t = this.d3Context.timer(function () { return _super.prototype.tick.call(_this) && t.stop(); });\r\n };\r\n D3StyleLayoutAdaptor.prototype.on = function (eventType, listener) {\r\n if (typeof eventType === 'string') {\r\n this.event.on(eventType, listener);\r\n }\r\n else {\r\n this.event.on(layout_1.EventType[eventType], listener);\r\n }\r\n return this;\r\n };\r\n return D3StyleLayoutAdaptor;\r\n}(layout_1.Layout));\r\nexports.D3StyleLayoutAdaptor = D3StyleLayoutAdaptor;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZDN2NGFkYXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9XZWJDb2xhL3NyYy9kM3Y0YWRhcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFHQSxtQ0FBaUQ7QUFVakQ7SUFBMEMsd0NBQU07SUFpQjVDLDhCQUFvQixTQUFvQjtRQUF4QyxZQUNJLGlCQUFPLFNBeUJWO1FBMUJtQixlQUFTLEdBQVQsU0FBUyxDQUFXO1FBRXBDLEtBQUksQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxrQkFBUyxDQUFDLGtCQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsa0JBQVMsQ0FBQyxrQkFBUyxDQUFDLElBQUksQ0FBQyxFQUFFLGtCQUFTLENBQUMsa0JBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBR2pILElBQUksUUFBUSxHQUFHLEtBQUksQ0FBQztRQUNwQixJQUFJLElBQUksQ0FBQztRQUNULEtBQUksQ0FBQyxJQUFJLEdBQUc7WUFDUixJQUFJLENBQUMsSUFBSSxFQUFFO2dCQUNQLElBQUksSUFBSSxHQUFHLFNBQVMsQ0FBQyxJQUFJLEVBQUU7cUJBQ3RCLE9BQU8sQ0FBQyxlQUFNLENBQUMsVUFBVSxDQUFDO3FCQUMxQixFQUFFLENBQUMsaUJBQWlCLEVBQUUsZUFBTSxDQUFDLFNBQVMsQ0FBQztxQkFDdkMsRUFBRSxDQUFDLGdCQUFnQixFQUFFLFVBQUEsQ0FBQztvQkFDbkIsZUFBTSxDQUFDLElBQUksQ0FBTSxDQUFDLEVBQUUsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUNyQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ3RCLENBQUMsQ0FBQztxQkFDRCxFQUFFLENBQUMsZUFBZSxFQUFFLGVBQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUM1QztZQUVELElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTTtnQkFBRSxPQUFPLElBQUksQ0FBQztZQUtuQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVCLENBQUMsQ0FBQTs7SUFDTCxDQUFDO0lBekNELHNDQUFPLEdBQVAsVUFBUSxDQUFRO1FBQ1osSUFBSSxPQUFPLEdBQUcsRUFBRSxJQUFJLEVBQUUsa0JBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUc1RSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFPLE9BQU8sQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFHRCxtQ0FBSSxHQUFKO1FBQUEsaUJBRUM7UUFERyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxjQUFNLE9BQUEsaUJBQU0sSUFBSSxZQUFFLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUF4QixDQUF3QixDQUFDLENBQUM7SUFDakUsQ0FBQztJQWtDRCxpQ0FBRSxHQUFGLFVBQUcsU0FBNkIsRUFBRSxRQUFvQjtRQUNsRCxJQUFJLE9BQU8sU0FBUyxLQUFLLFFBQVEsRUFBRTtZQUMvQixJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7U0FDdEM7YUFBTTtZQUNILElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLGtCQUFTLENBQUMsU0FBUyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7U0FDakQ7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBQ0wsMkJBQUM7QUFBRCxDQUFDLEFBdERELENBQTBDLGVBQU0sR0FzRC9DO0FBdERZLG9EQUFvQiJ9","/**\n * Copyright (c) 2016-2019, The Cytoscape Consortium.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy of\n * this software and associated documentation files (the “Software”), to deal in\n * the Software without restriction, including without limitation the rights to\n * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\n * of the Software, and to permit persons to whom the Software is furnished to do\n * so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\n'use strict';\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar util = _interopDefault(require('lodash.debounce'));\nvar Heap = _interopDefault(require('heap'));\n\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}\n\nvar window$1 = typeof window === 'undefined' ? null : window; // eslint-disable-line no-undef\n\nvar navigator = window$1 ? window$1.navigator : null;\nvar document$1 = window$1 ? window$1.document : null;\n\nvar typeofstr = _typeof('');\n\nvar typeofobj = _typeof({});\n\nvar typeoffn = _typeof(function () {});\n\nvar typeofhtmlele = typeof HTMLElement === \"undefined\" ? \"undefined\" : _typeof(HTMLElement);\n\nvar instanceStr = function instanceStr(obj) {\n return obj && obj.instanceString && fn(obj.instanceString) ? obj.instanceString() : null;\n};\n\nvar string = function string(obj) {\n return obj != null && _typeof(obj) == typeofstr;\n};\nvar fn = function fn(obj) {\n return obj != null && _typeof(obj) === typeoffn;\n};\nvar array = function array(obj) {\n return Array.isArray ? Array.isArray(obj) : obj != null && obj instanceof Array;\n};\nvar plainObject = function plainObject(obj) {\n return obj != null && _typeof(obj) === typeofobj && !array(obj) && obj.constructor === Object;\n};\nvar object = function object(obj) {\n return obj != null && _typeof(obj) === typeofobj;\n};\nvar number = function number(obj) {\n return obj != null && _typeof(obj) === _typeof(1) && !isNaN(obj);\n};\nvar integer = function integer(obj) {\n return number(obj) && Math.floor(obj) === obj;\n};\nvar htmlElement = function htmlElement(obj) {\n if ('undefined' === typeofhtmlele) {\n return undefined;\n } else {\n return null != obj && obj instanceof HTMLElement;\n }\n};\nvar elementOrCollection = function elementOrCollection(obj) {\n return element(obj) || collection(obj);\n};\nvar element = function element(obj) {\n return instanceStr(obj) === 'collection' && obj._private.single;\n};\nvar collection = function collection(obj) {\n return instanceStr(obj) === 'collection' && !obj._private.single;\n};\nvar core = function core(obj) {\n return instanceStr(obj) === 'core';\n};\nvar stylesheet = function stylesheet(obj) {\n return instanceStr(obj) === 'stylesheet';\n};\nvar event = function event(obj) {\n return instanceStr(obj) === 'event';\n};\nvar emptyString = function emptyString(obj) {\n if (obj === undefined || obj === null) {\n // null is empty\n return true;\n } else if (obj === '' || obj.match(/^\\s+$/)) {\n return true; // empty string is empty\n }\n\n return false; // otherwise, we don't know what we've got\n};\nvar domElement = function domElement(obj) {\n if (typeof HTMLElement === 'undefined') {\n return false; // we're not in a browser so it doesn't matter\n } else {\n return obj instanceof HTMLElement;\n }\n};\nvar boundingBox = function boundingBox(obj) {\n return plainObject(obj) && number(obj.x1) && number(obj.x2) && number(obj.y1) && number(obj.y2);\n};\nvar promise = function promise(obj) {\n return object(obj) && fn(obj.then);\n};\nvar ms = function ms() {\n return navigator && navigator.userAgent.match(/msie|trident|edge/i);\n}; // probably a better way to detect this...\n\nvar memoize = function memoize(fn, keyFn) {\n if (!keyFn) {\n keyFn = function keyFn() {\n if (arguments.length === 1) {\n return arguments[0];\n } else if (arguments.length === 0) {\n return 'undefined';\n }\n\n var args = [];\n\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n\n return args.join('$');\n };\n }\n\n var memoizedFn = function memoizedFn() {\n var self = this;\n var args = arguments;\n var ret;\n var k = keyFn.apply(self, args);\n var cache = memoizedFn.cache;\n\n if (!(ret = cache[k])) {\n ret = cache[k] = fn.apply(self, args);\n }\n\n return ret;\n };\n\n memoizedFn.cache = {};\n return memoizedFn;\n};\n\nvar camel2dash = memoize(function (str) {\n return str.replace(/([A-Z])/g, function (v) {\n return '-' + v.toLowerCase();\n });\n});\nvar dash2camel = memoize(function (str) {\n return str.replace(/(-\\w)/g, function (v) {\n return v[1].toUpperCase();\n });\n});\nvar prependCamel = memoize(function (prefix, str) {\n return prefix + str[0].toUpperCase() + str.substring(1);\n}, function (prefix, str) {\n return prefix + '$' + str;\n});\nvar capitalize = function capitalize(str) {\n if (emptyString(str)) {\n return str;\n }\n\n return str.charAt(0).toUpperCase() + str.substring(1);\n};\n\nvar number$1 = '(?:[-+]?(?:(?:\\\\d+|\\\\d*\\\\.\\\\d+)(?:[Ee][+-]?\\\\d+)?))';\nvar rgba = 'rgb[a]?\\\\((' + number$1 + '[%]?)\\\\s*,\\\\s*(' + number$1 + '[%]?)\\\\s*,\\\\s*(' + number$1 + '[%]?)(?:\\\\s*,\\\\s*(' + number$1 + '))?\\\\)';\nvar rgbaNoBackRefs = 'rgb[a]?\\\\((?:' + number$1 + '[%]?)\\\\s*,\\\\s*(?:' + number$1 + '[%]?)\\\\s*,\\\\s*(?:' + number$1 + '[%]?)(?:\\\\s*,\\\\s*(?:' + number$1 + '))?\\\\)';\nvar hsla = 'hsl[a]?\\\\((' + number$1 + ')\\\\s*,\\\\s*(' + number$1 + '[%])\\\\s*,\\\\s*(' + number$1 + '[%])(?:\\\\s*,\\\\s*(' + number$1 + '))?\\\\)';\nvar hslaNoBackRefs = 'hsl[a]?\\\\((?:' + number$1 + ')\\\\s*,\\\\s*(?:' + number$1 + '[%])\\\\s*,\\\\s*(?:' + number$1 + '[%])(?:\\\\s*,\\\\s*(?:' + number$1 + '))?\\\\)';\nvar hex3 = '\\\\#[0-9a-fA-F]{3}';\nvar hex6 = '\\\\#[0-9a-fA-F]{6}';\n\nvar ascending = function ascending(a, b) {\n if (a < b) {\n return -1;\n } else if (a > b) {\n return 1;\n } else {\n return 0;\n }\n};\nvar descending = function descending(a, b) {\n return -1 * ascending(a, b);\n};\n\nvar extend = Object.assign != null ? Object.assign.bind(Object) : function (tgt) {\n var args = arguments;\n\n for (var i = 1; i < args.length; i++) {\n var obj = args[i];\n\n if (obj == null) {\n continue;\n }\n\n var keys = Object.keys(obj);\n\n for (var j = 0; j < keys.length; j++) {\n var k = keys[j];\n tgt[k] = obj[k];\n }\n }\n\n return tgt;\n};\n\nvar hex2tuple = function hex2tuple(hex) {\n if (!(hex.length === 4 || hex.length === 7) || hex[0] !== '#') {\n return;\n }\n\n var shortHex = hex.length === 4;\n var r, g, b;\n var base = 16;\n\n if (shortHex) {\n r = parseInt(hex[1] + hex[1], base);\n g = parseInt(hex[2] + hex[2], base);\n b = parseInt(hex[3] + hex[3], base);\n } else {\n r = parseInt(hex[1] + hex[2], base);\n g = parseInt(hex[3] + hex[4], base);\n b = parseInt(hex[5] + hex[6], base);\n }\n\n return [r, g, b];\n}; // get [r, g, b, a] from hsl(0, 0, 0) or hsla(0, 0, 0, 0)\n\nvar hsl2tuple = function hsl2tuple(hsl) {\n var ret;\n var h, s, l, a, r, g, b;\n\n function hue2rgb(p, q, t) {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n }\n\n var m = new RegExp('^' + hsla + '$').exec(hsl);\n\n if (m) {\n // get hue\n h = parseInt(m[1]);\n\n if (h < 0) {\n h = (360 - -1 * h % 360) % 360;\n } else if (h > 360) {\n h = h % 360;\n }\n\n h /= 360; // normalise on [0, 1]\n\n s = parseFloat(m[2]);\n\n if (s < 0 || s > 100) {\n return;\n } // saturation is [0, 100]\n\n\n s = s / 100; // normalise on [0, 1]\n\n l = parseFloat(m[3]);\n\n if (l < 0 || l > 100) {\n return;\n } // lightness is [0, 100]\n\n\n l = l / 100; // normalise on [0, 1]\n\n a = m[4];\n\n if (a !== undefined) {\n a = parseFloat(a);\n\n if (a < 0 || a > 1) {\n return;\n } // alpha is [0, 1]\n\n } // now, convert to rgb\n // code from http://mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript\n\n\n if (s === 0) {\n r = g = b = Math.round(l * 255); // achromatic\n } else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = Math.round(255 * hue2rgb(p, q, h + 1 / 3));\n g = Math.round(255 * hue2rgb(p, q, h));\n b = Math.round(255 * hue2rgb(p, q, h - 1 / 3));\n }\n\n ret = [r, g, b, a];\n }\n\n return ret;\n}; // get [r, g, b, a] from rgb(0, 0, 0) or rgba(0, 0, 0, 0)\n\nvar rgb2tuple = function rgb2tuple(rgb) {\n var ret;\n var m = new RegExp('^' + rgba + '$').exec(rgb);\n\n if (m) {\n ret = [];\n var isPct = [];\n\n for (var i = 1; i <= 3; i++) {\n var channel = m[i];\n\n if (channel[channel.length - 1] === '%') {\n isPct[i] = true;\n }\n\n channel = parseFloat(channel);\n\n if (isPct[i]) {\n channel = channel / 100 * 255; // normalise to [0, 255]\n }\n\n if (channel < 0 || channel > 255) {\n return;\n } // invalid channel value\n\n\n ret.push(Math.floor(channel));\n }\n\n var atLeastOneIsPct = isPct[1] || isPct[2] || isPct[3];\n var allArePct = isPct[1] && isPct[2] && isPct[3];\n\n if (atLeastOneIsPct && !allArePct) {\n return;\n } // must all be percent values if one is\n\n\n var alpha = m[4];\n\n if (alpha !== undefined) {\n alpha = parseFloat(alpha);\n\n if (alpha < 0 || alpha > 1) {\n return;\n } // invalid alpha value\n\n\n ret.push(alpha);\n }\n }\n\n return ret;\n};\nvar colorname2tuple = function colorname2tuple(color) {\n return colors[color.toLowerCase()];\n};\nvar color2tuple = function color2tuple(color) {\n return (array(color) ? color : null) || colorname2tuple(color) || hex2tuple(color) || rgb2tuple(color) || hsl2tuple(color);\n};\nvar colors = {\n // special colour names\n transparent: [0, 0, 0, 0],\n // NB alpha === 0\n // regular colours\n aliceblue: [240, 248, 255],\n antiquewhite: [250, 235, 215],\n aqua: [0, 255, 255],\n aquamarine: [127, 255, 212],\n azure: [240, 255, 255],\n beige: [245, 245, 220],\n bisque: [255, 228, 196],\n black: [0, 0, 0],\n blanchedalmond: [255, 235, 205],\n blue: [0, 0, 255],\n blueviolet: [138, 43, 226],\n brown: [165, 42, 42],\n burlywood: [222, 184, 135],\n cadetblue: [95, 158, 160],\n chartreuse: [127, 255, 0],\n chocolate: [210, 105, 30],\n coral: [255, 127, 80],\n cornflowerblue: [100, 149, 237],\n cornsilk: [255, 248, 220],\n crimson: [220, 20, 60],\n cyan: [0, 255, 255],\n darkblue: [0, 0, 139],\n darkcyan: [0, 139, 139],\n darkgoldenrod: [184, 134, 11],\n darkgray: [169, 169, 169],\n darkgreen: [0, 100, 0],\n darkgrey: [169, 169, 169],\n darkkhaki: [189, 183, 107],\n darkmagenta: [139, 0, 139],\n darkolivegreen: [85, 107, 47],\n darkorange: [255, 140, 0],\n darkorchid: [153, 50, 204],\n darkred: [139, 0, 0],\n darksalmon: [233, 150, 122],\n darkseagreen: [143, 188, 143],\n darkslateblue: [72, 61, 139],\n darkslategray: [47, 79, 79],\n darkslategrey: [47, 79, 79],\n darkturquoise: [0, 206, 209],\n darkviolet: [148, 0, 211],\n deeppink: [255, 20, 147],\n deepskyblue: [0, 191, 255],\n dimgray: [105, 105, 105],\n dimgrey: [105, 105, 105],\n dodgerblue: [30, 144, 255],\n firebrick: [178, 34, 34],\n floralwhite: [255, 250, 240],\n forestgreen: [34, 139, 34],\n fuchsia: [255, 0, 255],\n gainsboro: [220, 220, 220],\n ghostwhite: [248, 248, 255],\n gold: [255, 215, 0],\n goldenrod: [218, 165, 32],\n gray: [128, 128, 128],\n grey: [128, 128, 128],\n green: [0, 128, 0],\n greenyellow: [173, 255, 47],\n honeydew: [240, 255, 240],\n hotpink: [255, 105, 180],\n indianred: [205, 92, 92],\n indigo: [75, 0, 130],\n ivory: [255, 255, 240],\n khaki: [240, 230, 140],\n lavender: [230, 230, 250],\n lavenderblush: [255, 240, 245],\n lawngreen: [124, 252, 0],\n lemonchiffon: [255, 250, 205],\n lightblue: [173, 216, 230],\n lightcoral: [240, 128, 128],\n lightcyan: [224, 255, 255],\n lightgoldenrodyellow: [250, 250, 210],\n lightgray: [211, 211, 211],\n lightgreen: [144, 238, 144],\n lightgrey: [211, 211, 211],\n lightpink: [255, 182, 193],\n lightsalmon: [255, 160, 122],\n lightseagreen: [32, 178, 170],\n lightskyblue: [135, 206, 250],\n lightslategray: [119, 136, 153],\n lightslategrey: [119, 136, 153],\n lightsteelblue: [176, 196, 222],\n lightyellow: [255, 255, 224],\n lime: [0, 255, 0],\n limegreen: [50, 205, 50],\n linen: [250, 240, 230],\n magenta: [255, 0, 255],\n maroon: [128, 0, 0],\n mediumaquamarine: [102, 205, 170],\n mediumblue: [0, 0, 205],\n mediumorchid: [186, 85, 211],\n mediumpurple: [147, 112, 219],\n mediumseagreen: [60, 179, 113],\n mediumslateblue: [123, 104, 238],\n mediumspringgreen: [0, 250, 154],\n mediumturquoise: [72, 209, 204],\n mediumvioletred: [199, 21, 133],\n midnightblue: [25, 25, 112],\n mintcream: [245, 255, 250],\n mistyrose: [255, 228, 225],\n moccasin: [255, 228, 181],\n navajowhite: [255, 222, 173],\n navy: [0, 0, 128],\n oldlace: [253, 245, 230],\n olive: [128, 128, 0],\n olivedrab: [107, 142, 35],\n orange: [255, 165, 0],\n orangered: [255, 69, 0],\n orchid: [218, 112, 214],\n palegoldenrod: [238, 232, 170],\n palegreen: [152, 251, 152],\n paleturquoise: [175, 238, 238],\n palevioletred: [219, 112, 147],\n papayawhip: [255, 239, 213],\n peachpuff: [255, 218, 185],\n peru: [205, 133, 63],\n pink: [255, 192, 203],\n plum: [221, 160, 221],\n powderblue: [176, 224, 230],\n purple: [128, 0, 128],\n red: [255, 0, 0],\n rosybrown: [188, 143, 143],\n royalblue: [65, 105, 225],\n saddlebrown: [139, 69, 19],\n salmon: [250, 128, 114],\n sandybrown: [244, 164, 96],\n seagreen: [46, 139, 87],\n seashell: [255, 245, 238],\n sienna: [160, 82, 45],\n silver: [192, 192, 192],\n skyblue: [135, 206, 235],\n slateblue: [106, 90, 205],\n slategray: [112, 128, 144],\n slategrey: [112, 128, 144],\n snow: [255, 250, 250],\n springgreen: [0, 255, 127],\n steelblue: [70, 130, 180],\n tan: [210, 180, 140],\n teal: [0, 128, 128],\n thistle: [216, 191, 216],\n tomato: [255, 99, 71],\n turquoise: [64, 224, 208],\n violet: [238, 130, 238],\n wheat: [245, 222, 179],\n white: [255, 255, 255],\n whitesmoke: [245, 245, 245],\n yellow: [255, 255, 0],\n yellowgreen: [154, 205, 50]\n};\n\nvar setMap = function setMap(options) {\n var obj = options.map;\n var keys = options.keys;\n var l = keys.length;\n\n for (var i = 0; i < l; i++) {\n var key = keys[i];\n\n if (plainObject(key)) {\n throw Error('Tried to set map with object key');\n }\n\n if (i < keys.length - 1) {\n // extend the map if necessary\n if (obj[key] == null) {\n obj[key] = {};\n }\n\n obj = obj[key];\n } else {\n // set the value\n obj[key] = options.value;\n }\n }\n}; // gets the value in a map even if it's not built in places\n\nvar getMap = function getMap(options) {\n var obj = options.map;\n var keys = options.keys;\n var l = keys.length;\n\n for (var i = 0; i < l; i++) {\n var key = keys[i];\n\n if (plainObject(key)) {\n throw Error('Tried to get map with object key');\n }\n\n obj = obj[key];\n\n if (obj == null) {\n return obj;\n }\n }\n\n return obj;\n}; // deletes the entry in the map\n\nvar performance = window$1 ? window$1.performance : null;\nvar pnow = performance && performance.now ? function () {\n return performance.now();\n} : function () {\n return Date.now();\n};\n\nvar raf = function () {\n if (window$1) {\n if (window$1.requestAnimationFrame) {\n return function (fn) {\n window$1.requestAnimationFrame(fn);\n };\n } else if (window$1.mozRequestAnimationFrame) {\n return function (fn) {\n window$1.mozRequestAnimationFrame(fn);\n };\n } else if (window$1.webkitRequestAnimationFrame) {\n return function (fn) {\n window$1.webkitRequestAnimationFrame(fn);\n };\n } else if (window$1.msRequestAnimationFrame) {\n return function (fn) {\n window$1.msRequestAnimationFrame(fn);\n };\n }\n }\n\n return function (fn) {\n if (fn) {\n setTimeout(function () {\n fn(pnow());\n }, 1000 / 60);\n }\n };\n}();\n\nvar requestAnimationFrame = function requestAnimationFrame(fn) {\n return raf(fn);\n};\nvar performanceNow = pnow;\n\nvar hashIterableInts = function hashIterableInts(iterator) {\n var seed = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 5381;\n // djb2/string-hash\n var hash = seed;\n var entry;\n\n for (;;) {\n entry = iterator.next();\n\n if (entry.done) {\n break;\n }\n\n hash = hash * 33 ^ entry.value;\n }\n\n return hash >>> 0;\n};\nvar hashInt = function hashInt(num) {\n var seed = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 5381;\n // djb2/string-hash\n return (seed * 33 ^ num) >>> 0;\n};\nvar hashIntsArray = function hashIntsArray(ints, seed) {\n var entry = {\n value: 0,\n done: false\n };\n var i = 0;\n var length = ints.length;\n var iterator = {\n next: function next() {\n if (i < length) {\n entry.value = ints[i++];\n } else {\n entry.done = true;\n }\n\n return entry;\n }\n };\n return hashIterableInts(iterator, seed);\n};\nvar hashString = function hashString(str, seed) {\n var entry = {\n value: 0,\n done: false\n };\n var i = 0;\n var length = str.length;\n var iterator = {\n next: function next() {\n if (i < length) {\n entry.value = str.charCodeAt(i++);\n } else {\n entry.done = true;\n }\n\n return entry;\n }\n };\n return hashIterableInts(iterator, seed);\n};\nvar hashStrings = function hashStrings() {\n return hashStringsArray(arguments);\n};\nvar hashStringsArray = function hashStringsArray(strs) {\n var hash;\n\n for (var i = 0; i < strs.length; i++) {\n var str = strs[i];\n\n if (i === 0) {\n hash = hashString(str);\n } else {\n hash = hashString(str, hash);\n }\n }\n\n return hash;\n};\n\n/*global console */\nvar warningsEnabled = true;\nvar warnSupported = console.warn != null; // eslint-disable-line no-console\n\nvar traceSupported = console.trace != null; // eslint-disable-line no-console\n\nvar MAX_INT = Number.MAX_SAFE_INTEGER || 9007199254740991;\nvar trueify = function trueify() {\n return true;\n};\nvar falsify = function falsify() {\n return false;\n};\nvar zeroify = function zeroify() {\n return 0;\n};\nvar noop = function noop() {};\nvar error = function error(msg) {\n throw new Error(msg);\n};\nvar warnings = function warnings(enabled) {\n if (enabled !== undefined) {\n warningsEnabled = !!enabled;\n } else {\n return warningsEnabled;\n }\n};\nvar warn = function warn(msg) {\n /* eslint-disable no-console */\n if (!warnings()) {\n return;\n }\n\n if (warnSupported) {\n console.warn(msg);\n } else {\n console.log(msg);\n\n if (traceSupported) {\n console.trace();\n }\n }\n};\n/* eslint-enable */\n\nvar clone = function clone(obj) {\n return extend({}, obj);\n}; // gets a shallow copy of the argument\n\nvar copy = function copy(obj) {\n if (obj == null) {\n return obj;\n }\n\n if (array(obj)) {\n return obj.slice();\n } else if (plainObject(obj)) {\n return clone(obj);\n } else {\n return obj;\n }\n};\nvar copyArray = function copyArray(arr) {\n return arr.slice();\n};\nvar uuid = function uuid(a, b\n/* placeholders */\n) {\n for ( // loop :)\n b = a = ''; // b - result , a - numeric letiable\n a++ < 36; //\n b += a * 51 & 52 // if \"a\" is not 9 or 14 or 19 or 24\n ? // return a random number or 4\n (a ^ 15 // if \"a\" is not 15\n ? // genetate a random number from 0 to 15\n 8 ^ Math.random() * (a ^ 20 ? 16 : 4) // unless \"a\" is 20, in which case a random number from 8 to 11\n : 4 // otherwise 4\n ).toString(16) : '-' // in other cases (if \"a\" is 9,14,19,24) insert \"-\"\n ) {\n }\n\n return b;\n};\nvar _staticEmptyObject = {};\nvar staticEmptyObject = function staticEmptyObject() {\n return _staticEmptyObject;\n};\nvar defaults = function defaults(_defaults) {\n var keys = Object.keys(_defaults);\n return function (opts) {\n var filledOpts = {};\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var optVal = opts == null ? undefined : opts[key];\n filledOpts[key] = optVal === undefined ? _defaults[key] : optVal;\n }\n\n return filledOpts;\n };\n};\nvar removeFromArray = function removeFromArray(arr, ele, manyCopies) {\n for (var i = arr.length; i >= 0; i--) {\n if (arr[i] === ele) {\n arr.splice(i, 1);\n\n if (!manyCopies) {\n break;\n }\n }\n }\n};\nvar clearArray = function clearArray(arr) {\n arr.splice(0, arr.length);\n};\nvar push = function push(arr, otherArr) {\n for (var i = 0; i < otherArr.length; i++) {\n var el = otherArr[i];\n arr.push(el);\n }\n};\nvar getPrefixedProperty = function getPrefixedProperty(obj, propName, prefix) {\n if (prefix) {\n propName = prependCamel(prefix, propName); // e.g. (labelWidth, source) => sourceLabelWidth\n }\n\n return obj[propName];\n};\nvar setPrefixedProperty = function setPrefixedProperty(obj, propName, prefix, value) {\n if (prefix) {\n propName = prependCamel(prefix, propName); // e.g. (labelWidth, source) => sourceLabelWidth\n }\n\n obj[propName] = value;\n};\n\n/* global Map */\nvar ObjectMap =\n/*#__PURE__*/\nfunction () {\n function ObjectMap() {\n _classCallCheck(this, ObjectMap);\n\n this._obj = {};\n }\n\n _createClass(ObjectMap, [{\n key: \"set\",\n value: function set(key, val) {\n this._obj[key] = val;\n return this;\n }\n }, {\n key: \"delete\",\n value: function _delete(key) {\n this._obj[key] = undefined;\n return this;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this._obj = {};\n }\n }, {\n key: \"has\",\n value: function has(key) {\n return this._obj[key] !== undefined;\n }\n }, {\n key: \"get\",\n value: function get(key) {\n return this._obj[key];\n }\n }]);\n\n return ObjectMap;\n}();\n\nvar Map$1 = typeof Map !== 'undefined' ? Map : ObjectMap;\n\n/* global Set */\nvar undef = \"undefined\";\n\nvar ObjectSet =\n/*#__PURE__*/\nfunction () {\n function ObjectSet(arrayOrObjectSet) {\n _classCallCheck(this, ObjectSet);\n\n this._obj = Object.create(null);\n this.size = 0;\n\n if (arrayOrObjectSet != null) {\n var arr;\n\n if (arrayOrObjectSet.instanceString != null && arrayOrObjectSet.instanceString() === this.instanceString()) {\n arr = arrayOrObjectSet.toArray();\n } else {\n arr = arrayOrObjectSet;\n }\n\n for (var i = 0; i < arr.length; i++) {\n this.add(arr[i]);\n }\n }\n }\n\n _createClass(ObjectSet, [{\n key: \"instanceString\",\n value: function instanceString() {\n return 'set';\n }\n }, {\n key: \"add\",\n value: function add(val) {\n var o = this._obj;\n\n if (o[val] !== 1) {\n o[val] = 1;\n this.size++;\n }\n }\n }, {\n key: \"delete\",\n value: function _delete(val) {\n var o = this._obj;\n\n if (o[val] === 1) {\n o[val] = 0;\n this.size--;\n }\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this._obj = Object.create(null);\n }\n }, {\n key: \"has\",\n value: function has(val) {\n return this._obj[val] === 1;\n }\n }, {\n key: \"toArray\",\n value: function toArray() {\n var _this = this;\n\n return Object.keys(this._obj).filter(function (key) {\n return _this.has(key);\n });\n }\n }, {\n key: \"forEach\",\n value: function forEach(callback, thisArg) {\n return this.toArray().forEach(callback, thisArg);\n }\n }]);\n\n return ObjectSet;\n}();\n\nvar Set$1 = (typeof Set === \"undefined\" ? \"undefined\" : _typeof(Set)) !== undef ? Set : ObjectSet;\n\nvar Element = function Element(cy, params, restore) {\n restore = restore === undefined || restore ? true : false;\n\n if (cy === undefined || params === undefined || !core(cy)) {\n error('An element must have a core reference and parameters set');\n return;\n }\n\n var group = params.group; // try to automatically infer the group if unspecified\n\n if (group == null) {\n if (params.data && params.data.source != null && params.data.target != null) {\n group = 'edges';\n } else {\n group = 'nodes';\n }\n } // validate group\n\n\n if (group !== 'nodes' && group !== 'edges') {\n error('An element must be of type `nodes` or `edges`; you specified `' + group + '`');\n return;\n } // make the element array-like, just like a collection\n\n\n this.length = 1;\n this[0] = this; // NOTE: when something is added here, add also to ele.json()\n\n var _p = this._private = {\n cy: cy,\n single: true,\n // indicates this is an element\n data: params.data || {},\n // data object\n position: params.position || {\n x: 0,\n y: 0\n },\n // (x, y) position pair\n autoWidth: undefined,\n // width and height of nodes calculated by the renderer when set to special 'auto' value\n autoHeight: undefined,\n autoPadding: undefined,\n compoundBoundsClean: false,\n // whether the compound dimensions need to be recalculated the next time dimensions are read\n listeners: [],\n // array of bound listeners\n group: group,\n // string; 'nodes' or 'edges'\n style: {},\n // properties as set by the style\n rstyle: {},\n // properties for style sent from the renderer to the core\n styleCxts: [],\n // applied style contexts from the styler\n styleKeys: {},\n // per-group keys of style property values\n removed: true,\n // whether it's inside the vis; true if removed (set true here since we call restore)\n selected: params.selected ? true : false,\n // whether it's selected\n selectable: params.selectable === undefined ? true : params.selectable ? true : false,\n // whether it's selectable\n locked: params.locked ? true : false,\n // whether the element is locked (cannot be moved)\n grabbed: false,\n // whether the element is grabbed by the mouse; renderer sets this privately\n grabbable: params.grabbable === undefined ? true : params.grabbable ? true : false,\n // whether the element can be grabbed\n pannable: params.pannable === undefined ? group === 'edges' ? true : false : params.pannable ? true : false,\n // whether the element has passthrough panning enabled\n active: false,\n // whether the element is active from user interaction\n classes: new Set$1(),\n // map ( className => true )\n animation: {\n // object for currently-running animations\n current: [],\n queue: []\n },\n rscratch: {},\n // object in which the renderer can store information\n scratch: params.scratch || {},\n // scratch objects\n edges: [],\n // array of connected edges\n children: [],\n // array of children\n parent: null,\n // parent ref\n traversalCache: {},\n // cache of output of traversal functions\n backgrounding: false,\n // whether background images are loading\n bbCache: null,\n // cache of the current bounding box\n bbCacheShift: {\n x: 0,\n y: 0\n },\n // shift applied to cached bb to be applied on next get\n bodyBounds: null,\n // bounds cache of element body, w/o overlay\n overlayBounds: null,\n // bounds cache of element body, including overlay\n labelBounds: {\n // bounds cache of labels\n all: null,\n source: null,\n target: null,\n main: null\n }\n };\n\n if (_p.position.x == null) {\n _p.position.x = 0;\n }\n\n if (_p.position.y == null) {\n _p.position.y = 0;\n } // renderedPosition overrides if specified\n\n\n if (params.renderedPosition) {\n var rpos = params.renderedPosition;\n var pan = cy.pan();\n var zoom = cy.zoom();\n _p.position = {\n x: (rpos.x - pan.x) / zoom,\n y: (rpos.y - pan.y) / zoom\n };\n }\n\n var classes = [];\n\n if (array(params.classes)) {\n classes = params.classes;\n } else if (string(params.classes)) {\n classes = params.classes.split(/\\s+/);\n }\n\n for (var i = 0, l = classes.length; i < l; i++) {\n var cls = classes[i];\n\n if (!cls || cls === '') {\n continue;\n }\n\n _p.classes.add(cls);\n }\n\n this.createEmitter();\n var bypass = params.style || params.css;\n\n if (bypass) {\n warn('Setting a `style` bypass at element creation is deprecated');\n this.style(bypass);\n }\n\n if (restore === undefined || restore) {\n this.restore();\n }\n};\n\nvar defineSearch = function defineSearch(params) {\n params = {\n bfs: params.bfs || !params.dfs,\n dfs: params.dfs || !params.bfs\n }; // from pseudocode on wikipedia\n\n return function searchFn(roots, fn$1, directed) {\n var options;\n\n if (plainObject(roots) && !elementOrCollection(roots)) {\n options = roots;\n roots = options.roots || options.root;\n fn$1 = options.visit;\n directed = options.directed;\n }\n\n directed = arguments.length === 2 && !fn(fn$1) ? fn$1 : directed;\n fn$1 = fn(fn$1) ? fn$1 : function () {};\n var cy = this._private.cy;\n var v = roots = string(roots) ? this.filter(roots) : roots;\n var Q = [];\n var connectedNodes = [];\n var connectedBy = {};\n var id2depth = {};\n var V = {};\n var j = 0;\n var found;\n\n var _this$byGroup = this.byGroup(),\n nodes = _this$byGroup.nodes,\n edges = _this$byGroup.edges; // enqueue v\n\n\n for (var i = 0; i < v.length; i++) {\n var vi = v[i];\n var viId = vi.id();\n\n if (vi.isNode()) {\n Q.unshift(vi);\n\n if (params.bfs) {\n V[viId] = true;\n connectedNodes.push(vi);\n }\n\n id2depth[viId] = 0;\n }\n }\n\n var _loop2 = function _loop2() {\n var v = params.bfs ? Q.shift() : Q.pop();\n var vId = v.id();\n\n if (params.dfs) {\n if (V[vId]) {\n return \"continue\";\n }\n\n V[vId] = true;\n connectedNodes.push(v);\n }\n\n var depth = id2depth[vId];\n var prevEdge = connectedBy[vId];\n var src = prevEdge != null ? prevEdge.source() : null;\n var tgt = prevEdge != null ? prevEdge.target() : null;\n var prevNode = prevEdge == null ? undefined : v.same(src) ? tgt[0] : src[0];\n var ret = void 0;\n ret = fn$1(v, prevEdge, prevNode, j++, depth);\n\n if (ret === true) {\n found = v;\n return \"break\";\n }\n\n if (ret === false) {\n return \"break\";\n }\n\n var vwEdges = v.connectedEdges().filter(function (e) {\n return (!directed || e.source().same(v)) && edges.has(e);\n });\n\n for (var _i2 = 0; _i2 < vwEdges.length; _i2++) {\n var e = vwEdges[_i2];\n var w = e.connectedNodes().filter(function (n) {\n return !n.same(v) && nodes.has(n);\n });\n var wId = w.id();\n\n if (w.length !== 0 && !V[wId]) {\n w = w[0];\n Q.push(w);\n\n if (params.bfs) {\n V[wId] = true;\n connectedNodes.push(w);\n }\n\n connectedBy[wId] = e;\n id2depth[wId] = id2depth[vId] + 1;\n }\n }\n };\n\n _loop: while (Q.length !== 0) {\n var _ret = _loop2();\n\n switch (_ret) {\n case \"continue\":\n continue;\n\n case \"break\":\n break _loop;\n }\n }\n\n var connectedEles = cy.collection();\n\n for (var _i = 0; _i < connectedNodes.length; _i++) {\n var node = connectedNodes[_i];\n var edge = connectedBy[node.id()];\n\n if (edge != null) {\n connectedEles.merge(edge);\n }\n\n connectedEles.merge(node);\n }\n\n return {\n path: cy.collection(connectedEles),\n found: cy.collection(found)\n };\n };\n}; // search, spanning trees, etc\n\n\nvar elesfn = {\n breadthFirstSearch: defineSearch({\n bfs: true\n }),\n depthFirstSearch: defineSearch({\n dfs: true\n })\n}; // nice, short mathemathical alias\n\nelesfn.bfs = elesfn.breadthFirstSearch;\nelesfn.dfs = elesfn.depthFirstSearch;\n\nvar dijkstraDefaults = defaults({\n root: null,\n weight: function weight(edge) {\n return 1;\n },\n directed: false\n});\nvar elesfn$1 = {\n dijkstra: function dijkstra(options) {\n if (!plainObject(options)) {\n var args = arguments;\n options = {\n root: args[0],\n weight: args[1],\n directed: args[2]\n };\n }\n\n var _dijkstraDefaults = dijkstraDefaults(options),\n root = _dijkstraDefaults.root,\n weight = _dijkstraDefaults.weight,\n directed = _dijkstraDefaults.directed;\n\n var eles = this;\n var weightFn = weight;\n var source = string(root) ? this.filter(root)[0] : root[0];\n var dist = {};\n var prev = {};\n var knownDist = {};\n\n var _this$byGroup = this.byGroup(),\n nodes = _this$byGroup.nodes,\n edges = _this$byGroup.edges;\n\n edges.unmergeBy(function (ele) {\n return ele.isLoop();\n });\n\n var getDist = function getDist(node) {\n return dist[node.id()];\n };\n\n var setDist = function setDist(node, d) {\n dist[node.id()] = d;\n Q.updateItem(node);\n };\n\n var Q = new Heap(function (a, b) {\n return getDist(a) - getDist(b);\n });\n\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n dist[node.id()] = node.same(source) ? 0 : Infinity;\n Q.push(node);\n }\n\n var distBetween = function distBetween(u, v) {\n var uvs = (directed ? u.edgesTo(v) : u.edgesWith(v)).intersect(edges);\n var smallestDistance = Infinity;\n var smallestEdge;\n\n for (var _i = 0; _i < uvs.length; _i++) {\n var edge = uvs[_i];\n\n var _weight = weightFn(edge);\n\n if (_weight < smallestDistance || !smallestEdge) {\n smallestDistance = _weight;\n smallestEdge = edge;\n }\n }\n\n return {\n edge: smallestEdge,\n dist: smallestDistance\n };\n };\n\n while (Q.size() > 0) {\n var u = Q.pop();\n var smalletsDist = getDist(u);\n var uid = u.id();\n knownDist[uid] = smalletsDist;\n\n if (smalletsDist === Infinity) {\n continue;\n }\n\n var neighbors = u.neighborhood().intersect(nodes);\n\n for (var _i2 = 0; _i2 < neighbors.length; _i2++) {\n var v = neighbors[_i2];\n var vid = v.id();\n var vDist = distBetween(u, v);\n var alt = smalletsDist + vDist.dist;\n\n if (alt < getDist(v)) {\n setDist(v, alt);\n prev[vid] = {\n node: u,\n edge: vDist.edge\n };\n }\n } // for\n\n } // while\n\n\n return {\n distanceTo: function distanceTo(node) {\n var target = string(node) ? nodes.filter(node)[0] : node[0];\n return knownDist[target.id()];\n },\n pathTo: function pathTo(node) {\n var target = string(node) ? nodes.filter(node)[0] : node[0];\n var S = [];\n var u = target;\n var uid = u.id();\n\n if (target.length > 0) {\n S.unshift(target);\n\n while (prev[uid]) {\n var p = prev[uid];\n S.unshift(p.edge);\n S.unshift(p.node);\n u = p.node;\n uid = u.id();\n }\n }\n\n return eles.spawn(S);\n }\n };\n }\n};\n\nvar elesfn$2 = {\n // kruskal's algorithm (finds min spanning tree, assuming undirected graph)\n // implemented from pseudocode from wikipedia\n kruskal: function kruskal(weightFn) {\n weightFn = weightFn || function (edge) {\n return 1;\n };\n\n var _this$byGroup = this.byGroup(),\n nodes = _this$byGroup.nodes,\n edges = _this$byGroup.edges;\n\n var numNodes = nodes.length;\n var forest = new Array(numNodes);\n var A = nodes; // assumes byGroup() creates new collections that can be safely mutated\n\n var findSetIndex = function findSetIndex(ele) {\n for (var i = 0; i < forest.length; i++) {\n var eles = forest[i];\n\n if (eles.has(ele)) {\n return i;\n }\n }\n }; // start with one forest per node\n\n\n for (var i = 0; i < numNodes; i++) {\n forest[i] = this.spawn(nodes[i]);\n }\n\n var S = edges.sort(function (a, b) {\n return weightFn(a) - weightFn(b);\n });\n\n for (var _i = 0; _i < S.length; _i++) {\n var edge = S[_i];\n var u = edge.source()[0];\n var v = edge.target()[0];\n var setUIndex = findSetIndex(u);\n var setVIndex = findSetIndex(v);\n var setU = forest[setUIndex];\n var setV = forest[setVIndex];\n\n if (setUIndex !== setVIndex) {\n A.merge(edge); // combine forests for u and v\n\n setU.merge(setV);\n forest.splice(setVIndex, 1);\n }\n }\n\n return A;\n }\n};\n\nvar aStarDefaults = defaults({\n root: null,\n goal: null,\n weight: function weight(edge) {\n return 1;\n },\n heuristic: function heuristic(edge) {\n return 0;\n },\n directed: false\n});\nvar elesfn$3 = {\n // Implemented from pseudocode from wikipedia\n aStar: function aStar(options) {\n var cy = this.cy();\n\n var _aStarDefaults = aStarDefaults(options),\n root = _aStarDefaults.root,\n goal = _aStarDefaults.goal,\n heuristic = _aStarDefaults.heuristic,\n directed = _aStarDefaults.directed,\n weight = _aStarDefaults.weight;\n\n root = cy.collection(root)[0];\n goal = cy.collection(goal)[0];\n var sid = root.id();\n var tid = goal.id();\n var gScore = {};\n var fScore = {};\n var closedSetIds = {};\n var openSet = new Heap(function (a, b) {\n return fScore[a.id()] - fScore[b.id()];\n });\n var openSetIds = new Set$1();\n var cameFrom = {};\n var cameFromEdge = {};\n\n var addToOpenSet = function addToOpenSet(ele, id) {\n openSet.push(ele);\n openSetIds.add(id);\n };\n\n var cMin, cMinId;\n\n var popFromOpenSet = function popFromOpenSet() {\n cMin = openSet.pop();\n cMinId = cMin.id();\n openSetIds.delete(cMinId);\n };\n\n var isInOpenSet = function isInOpenSet(id) {\n return openSetIds.has(id);\n };\n\n addToOpenSet(root, sid);\n gScore[sid] = 0;\n fScore[sid] = heuristic(root); // Counter\n\n var steps = 0; // Main loop\n\n while (openSet.size() > 0) {\n popFromOpenSet();\n steps++; // If we've found our goal, then we are done\n\n if (cMinId === tid) {\n var path = [];\n var pathNode = goal;\n var pathNodeId = tid;\n var pathEdge = cameFromEdge[pathNodeId];\n\n for (;;) {\n path.unshift(pathNode);\n\n if (pathEdge != null) {\n path.unshift(pathEdge);\n }\n\n pathNode = cameFrom[pathNodeId];\n\n if (pathNode == null) {\n break;\n }\n\n pathNodeId = pathNode.id();\n pathEdge = cameFromEdge[pathNodeId];\n }\n\n return {\n found: true,\n distance: gScore[cMinId],\n path: this.spawn(path),\n steps: steps\n };\n } // Add cMin to processed nodes\n\n\n closedSetIds[cMinId] = true; // Update scores for neighbors of cMin\n // Take into account if graph is directed or not\n\n var vwEdges = cMin._private.edges;\n\n for (var i = 0; i < vwEdges.length; i++) {\n var e = vwEdges[i]; // edge must be in set of calling eles\n\n if (!this.hasElementWithId(e.id())) {\n continue;\n } // cMin must be the source of edge if directed\n\n\n if (directed && e.data('source') !== cMinId) {\n continue;\n }\n\n var wSrc = e.source();\n var wTgt = e.target();\n var w = wSrc.id() !== cMinId ? wSrc : wTgt;\n var wid = w.id(); // node must be in set of calling eles\n\n if (!this.hasElementWithId(wid)) {\n continue;\n } // if node is in closedSet, ignore it\n\n\n if (closedSetIds[wid]) {\n continue;\n } // New tentative score for node w\n\n\n var tempScore = gScore[cMinId] + weight(e); // Update gScore for node w if:\n // w not present in openSet\n // OR\n // tentative gScore is less than previous value\n // w not in openSet\n\n if (!isInOpenSet(wid)) {\n gScore[wid] = tempScore;\n fScore[wid] = tempScore + heuristic(w);\n addToOpenSet(w, wid);\n cameFrom[wid] = cMin;\n cameFromEdge[wid] = e;\n continue;\n } // w already in openSet, but with greater gScore\n\n\n if (tempScore < gScore[wid]) {\n gScore[wid] = tempScore;\n fScore[wid] = tempScore + heuristic(w);\n cameFrom[wid] = cMin;\n }\n } // End of neighbors update\n\n } // End of main loop\n // If we've reached here, then we've not reached our goal\n\n\n return {\n found: false,\n distance: undefined,\n path: undefined,\n steps: steps\n };\n }\n}; // elesfn\n\nvar floydWarshallDefaults = defaults({\n weight: function weight(edge) {\n return 1;\n },\n directed: false\n});\nvar elesfn$4 = {\n // Implemented from pseudocode from wikipedia\n floydWarshall: function floydWarshall(options) {\n var cy = this.cy();\n\n var _floydWarshallDefault = floydWarshallDefaults(options),\n weight = _floydWarshallDefault.weight,\n directed = _floydWarshallDefault.directed;\n\n var weightFn = weight;\n\n var _this$byGroup = this.byGroup(),\n nodes = _this$byGroup.nodes,\n edges = _this$byGroup.edges;\n\n var N = nodes.length;\n var Nsq = N * N;\n\n var indexOf = function indexOf(node) {\n return nodes.indexOf(node);\n };\n\n var atIndex = function atIndex(i) {\n return nodes[i];\n }; // Initialize distance matrix\n\n\n var dist = new Array(Nsq);\n\n for (var n = 0; n < Nsq; n++) {\n var j = n % N;\n var i = (n - j) / N;\n\n if (i === j) {\n dist[n] = 0;\n } else {\n dist[n] = Infinity;\n }\n } // Initialize matrix used for path reconstruction\n // Initialize distance matrix\n\n\n var next = new Array(Nsq);\n var edgeNext = new Array(Nsq); // Process edges\n\n for (var _i = 0; _i < edges.length; _i++) {\n var edge = edges[_i];\n var src = edge.source()[0];\n var tgt = edge.target()[0];\n\n if (src === tgt) {\n continue;\n } // exclude loops\n\n\n var s = indexOf(src);\n var t = indexOf(tgt);\n var st = s * N + t; // source to target index\n\n var _weight = weightFn(edge); // Check if already process another edge between same 2 nodes\n\n\n if (dist[st] > _weight) {\n dist[st] = _weight;\n next[st] = t;\n edgeNext[st] = edge;\n } // If undirected graph, process 'reversed' edge\n\n\n if (!directed) {\n var ts = t * N + s; // target to source index\n\n if (!directed && dist[ts] > _weight) {\n dist[ts] = _weight;\n next[ts] = s;\n edgeNext[ts] = edge;\n }\n }\n } // Main loop\n\n\n for (var k = 0; k < N; k++) {\n for (var _i2 = 0; _i2 < N; _i2++) {\n var ik = _i2 * N + k;\n\n for (var _j = 0; _j < N; _j++) {\n var ij = _i2 * N + _j;\n var kj = k * N + _j;\n\n if (dist[ik] + dist[kj] < dist[ij]) {\n dist[ij] = dist[ik] + dist[kj];\n next[ij] = next[ik];\n }\n }\n }\n }\n\n var getArgEle = function getArgEle(ele) {\n return (string(ele) ? cy.filter(ele) : ele)[0];\n };\n\n var indexOfArgEle = function indexOfArgEle(ele) {\n return indexOf(getArgEle(ele));\n };\n\n var res = {\n distance: function distance(from, to) {\n var i = indexOfArgEle(from);\n var j = indexOfArgEle(to);\n return dist[i * N + j];\n },\n path: function path(from, to) {\n var i = indexOfArgEle(from);\n var j = indexOfArgEle(to);\n var fromNode = atIndex(i);\n\n if (i === j) {\n return fromNode.collection();\n }\n\n if (next[i * N + j] == null) {\n return cy.collection();\n }\n\n var path = cy.collection();\n var prev = i;\n var edge;\n path.merge(fromNode);\n\n while (i !== j) {\n prev = i;\n i = next[i * N + j];\n edge = edgeNext[prev * N + i];\n path.merge(edge);\n path.merge(atIndex(i));\n }\n\n return path;\n }\n };\n return res;\n } // floydWarshall\n\n}; // elesfn\n\nvar bellmanFordDefaults = defaults({\n weight: function weight(edge) {\n return 1;\n },\n directed: false,\n root: null\n});\nvar elesfn$5 = {\n // Implemented from pseudocode from wikipedia\n bellmanFord: function bellmanFord(options) {\n var _this = this;\n\n var _bellmanFordDefaults = bellmanFordDefaults(options),\n weight = _bellmanFordDefaults.weight,\n directed = _bellmanFordDefaults.directed,\n root = _bellmanFordDefaults.root;\n\n var weightFn = weight;\n var eles = this;\n var cy = this.cy();\n\n var _this$byGroup = this.byGroup(),\n edges = _this$byGroup.edges,\n nodes = _this$byGroup.nodes;\n\n var numNodes = nodes.length;\n var infoMap = new Map$1();\n var hasNegativeWeightCycle = false;\n var negativeWeightCycles = [];\n root = cy.collection(root)[0]; // in case selector passed\n\n edges.unmergeBy(function (edge) {\n return edge.isLoop();\n });\n var numEdges = edges.length;\n\n var getInfo = function getInfo(node) {\n var obj = infoMap.get(node.id());\n\n if (!obj) {\n obj = {};\n infoMap.set(node.id(), obj);\n }\n\n return obj;\n };\n\n var getNodeFromTo = function getNodeFromTo(to) {\n return (string(to) ? cy.$(to) : to)[0];\n };\n\n var distanceTo = function distanceTo(to) {\n return getInfo(getNodeFromTo(to)).dist;\n };\n\n var pathTo = function pathTo(to) {\n var thisStart = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : root;\n var end = getNodeFromTo(to);\n var path = [];\n var node = end;\n\n for (;;) {\n if (node == null) {\n return _this.spawn();\n }\n\n var _getInfo = getInfo(node),\n edge = _getInfo.edge,\n pred = _getInfo.pred;\n\n path.unshift(node[0]);\n\n if (node.same(thisStart) && path.length > 0) {\n break;\n }\n\n if (edge != null) {\n path.unshift(edge);\n }\n\n node = pred;\n }\n\n return eles.spawn(path);\n }; // Initializations { dist, pred, edge }\n\n\n for (var i = 0; i < numNodes; i++) {\n var node = nodes[i];\n var info = getInfo(node);\n\n if (node.same(root)) {\n info.dist = 0;\n } else {\n info.dist = Infinity;\n }\n\n info.pred = null;\n info.edge = null;\n } // Edges relaxation\n\n\n var replacedEdge = false;\n\n var checkForEdgeReplacement = function checkForEdgeReplacement(node1, node2, edge, info1, info2, weight) {\n var dist = info1.dist + weight;\n\n if (dist < info2.dist && !edge.same(info1.edge)) {\n info2.dist = dist;\n info2.pred = node1;\n info2.edge = edge;\n replacedEdge = true;\n }\n };\n\n for (var _i = 1; _i < numNodes; _i++) {\n replacedEdge = false;\n\n for (var e = 0; e < numEdges; e++) {\n var edge = edges[e];\n var src = edge.source();\n var tgt = edge.target();\n\n var _weight = weightFn(edge);\n\n var srcInfo = getInfo(src);\n var tgtInfo = getInfo(tgt);\n checkForEdgeReplacement(src, tgt, edge, srcInfo, tgtInfo, _weight); // If undirected graph, we need to take into account the 'reverse' edge\n\n if (!directed) {\n checkForEdgeReplacement(tgt, src, edge, tgtInfo, srcInfo, _weight);\n }\n }\n\n if (!replacedEdge) {\n break;\n }\n }\n\n if (replacedEdge) {\n // Check for negative weight cycles\n for (var _e = 0; _e < numEdges; _e++) {\n var _edge = edges[_e];\n\n var _src = _edge.source();\n\n var _tgt = _edge.target();\n\n var _weight2 = weightFn(_edge);\n\n var srcDist = getInfo(_src).dist;\n var tgtDist = getInfo(_tgt).dist;\n\n if (srcDist + _weight2 < tgtDist || !directed && tgtDist + _weight2 < srcDist) {\n warn('Graph contains a negative weight cycle for Bellman-Ford');\n hasNegativeWeightCycle = true;\n break;\n }\n }\n }\n\n return {\n distanceTo: distanceTo,\n pathTo: pathTo,\n hasNegativeWeightCycle: hasNegativeWeightCycle,\n negativeWeightCycles: negativeWeightCycles\n };\n } // bellmanFord\n\n}; // elesfn\n\nvar sqrt2 = Math.sqrt(2); // Function which colapses 2 (meta) nodes into one\n// Updates the remaining edge lists\n// Receives as a paramater the edge which causes the collapse\n\nvar collapse = function collapse(edgeIndex, nodeMap, remainingEdges) {\n if (remainingEdges.length === 0) {\n error(\"Karger-Stein must be run on a connected (sub)graph\");\n }\n\n var edgeInfo = remainingEdges[edgeIndex];\n var sourceIn = edgeInfo[1];\n var targetIn = edgeInfo[2];\n var partition1 = nodeMap[sourceIn];\n var partition2 = nodeMap[targetIn];\n var newEdges = remainingEdges; // re-use array\n // Delete all edges between partition1 and partition2\n\n for (var i = newEdges.length - 1; i >= 0; i--) {\n var edge = newEdges[i];\n var src = edge[1];\n var tgt = edge[2];\n\n if (nodeMap[src] === partition1 && nodeMap[tgt] === partition2 || nodeMap[src] === partition2 && nodeMap[tgt] === partition1) {\n newEdges.splice(i, 1);\n }\n } // All edges pointing to partition2 should now point to partition1\n\n\n for (var _i = 0; _i < newEdges.length; _i++) {\n var _edge = newEdges[_i];\n\n if (_edge[1] === partition2) {\n // Check source\n newEdges[_i] = _edge.slice(); // copy\n\n newEdges[_i][1] = partition1;\n } else if (_edge[2] === partition2) {\n // Check target\n newEdges[_i] = _edge.slice(); // copy\n\n newEdges[_i][2] = partition1;\n }\n } // Move all nodes from partition2 to partition1\n\n\n for (var _i2 = 0; _i2 < nodeMap.length; _i2++) {\n if (nodeMap[_i2] === partition2) {\n nodeMap[_i2] = partition1;\n }\n }\n\n return newEdges;\n}; // Contracts a graph until we reach a certain number of meta nodes\n\n\nvar contractUntil = function contractUntil(metaNodeMap, remainingEdges, size, sizeLimit) {\n while (size > sizeLimit) {\n // Choose an edge randomly\n var edgeIndex = Math.floor(Math.random() * remainingEdges.length); // Collapse graph based on edge\n\n remainingEdges = collapse(edgeIndex, metaNodeMap, remainingEdges);\n size--;\n }\n\n return remainingEdges;\n};\n\nvar elesfn$6 = {\n // Computes the minimum cut of an undirected graph\n // Returns the correct answer with high probability\n kargerStein: function kargerStein() {\n var _this$byGroup = this.byGroup(),\n nodes = _this$byGroup.nodes,\n edges = _this$byGroup.edges;\n\n edges.unmergeBy(function (edge) {\n return edge.isLoop();\n });\n var numNodes = nodes.length;\n var numEdges = edges.length;\n var numIter = Math.ceil(Math.pow(Math.log(numNodes) / Math.LN2, 2));\n var stopSize = Math.floor(numNodes / sqrt2);\n\n if (numNodes < 2) {\n error('At least 2 nodes are required for Karger-Stein algorithm');\n return undefined;\n } // Now store edge destination as indexes\n // Format for each edge (edge index, source node index, target node index)\n\n\n var edgeIndexes = [];\n\n for (var i = 0; i < numEdges; i++) {\n var e = edges[i];\n edgeIndexes.push([i, nodes.indexOf(e.source()), nodes.indexOf(e.target())]);\n } // We will store the best cut found here\n\n\n var minCutSize = Infinity;\n var minCutEdgeIndexes = [];\n var minCutNodeMap = new Array(numNodes); // Initial meta node partition\n\n var metaNodeMap = new Array(numNodes);\n var metaNodeMap2 = new Array(numNodes);\n\n var copyNodesMap = function copyNodesMap(from, to) {\n for (var _i3 = 0; _i3 < numNodes; _i3++) {\n to[_i3] = from[_i3];\n }\n }; // Main loop\n\n\n for (var iter = 0; iter <= numIter; iter++) {\n // Reset meta node partition\n for (var _i4 = 0; _i4 < numNodes; _i4++) {\n metaNodeMap[_i4] = _i4;\n } // Contract until stop point (stopSize nodes)\n\n\n var edgesState = contractUntil(metaNodeMap, edgeIndexes.slice(), numNodes, stopSize);\n var edgesState2 = edgesState.slice(); // copy\n // Create a copy of the colapsed nodes state\n\n copyNodesMap(metaNodeMap, metaNodeMap2); // Run 2 iterations starting in the stop state\n\n var res1 = contractUntil(metaNodeMap, edgesState, stopSize, 2);\n var res2 = contractUntil(metaNodeMap2, edgesState2, stopSize, 2); // Is any of the 2 results the best cut so far?\n\n if (res1.length <= res2.length && res1.length < minCutSize) {\n minCutSize = res1.length;\n minCutEdgeIndexes = res1;\n copyNodesMap(metaNodeMap, minCutNodeMap);\n } else if (res2.length <= res1.length && res2.length < minCutSize) {\n minCutSize = res2.length;\n minCutEdgeIndexes = res2;\n copyNodesMap(metaNodeMap2, minCutNodeMap);\n }\n } // end of main loop\n // Construct result\n\n\n var cut = this.spawn(minCutEdgeIndexes.map(function (e) {\n return edges[e[0]];\n }));\n var partition1 = this.spawn();\n var partition2 = this.spawn(); // traverse metaNodeMap for best cut\n\n var witnessNodePartition = minCutNodeMap[0];\n\n for (var _i5 = 0; _i5 < minCutNodeMap.length; _i5++) {\n var partitionId = minCutNodeMap[_i5];\n var node = nodes[_i5];\n\n if (partitionId === witnessNodePartition) {\n partition1.merge(node);\n } else {\n partition2.merge(node);\n }\n }\n\n var ret = {\n cut: cut,\n partition1: partition1,\n partition2: partition2\n };\n return ret;\n }\n}; // elesfn\n\nvar arePositionsSame = function arePositionsSame(p1, p2) {\n return p1.x === p2.x && p1.y === p2.y;\n};\nvar copyPosition = function copyPosition(p) {\n return {\n x: p.x,\n y: p.y\n };\n};\nvar modelToRenderedPosition = function modelToRenderedPosition(p, zoom, pan) {\n return {\n x: p.x * zoom + pan.x,\n y: p.y * zoom + pan.y\n };\n};\nvar renderedToModelPosition = function renderedToModelPosition(p, zoom, pan) {\n return {\n x: (p.x - pan.x) / zoom,\n y: (p.y - pan.y) / zoom\n };\n};\nvar array2point = function array2point(arr) {\n return {\n x: arr[0],\n y: arr[1]\n };\n};\nvar min = function min(arr) {\n var begin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var end = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : arr.length;\n var min = Infinity;\n\n for (var i = begin; i < end; i++) {\n var val = arr[i];\n\n if (isFinite(val)) {\n min = Math.min(val, min);\n }\n }\n\n return min;\n};\nvar max = function max(arr) {\n var begin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var end = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : arr.length;\n var max = -Infinity;\n\n for (var i = begin; i < end; i++) {\n var val = arr[i];\n\n if (isFinite(val)) {\n max = Math.max(val, max);\n }\n }\n\n return max;\n};\nvar mean = function mean(arr) {\n var begin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var end = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : arr.length;\n var total = 0;\n var n = 0;\n\n for (var i = begin; i < end; i++) {\n var val = arr[i];\n\n if (isFinite(val)) {\n total += val;\n n++;\n }\n }\n\n return total / n;\n};\nvar median = function median(arr) {\n var begin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var end = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : arr.length;\n var copy = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n var sort = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n var includeHoles = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : true;\n\n if (copy) {\n arr = arr.slice(begin, end);\n } else {\n if (end < arr.length) {\n arr.splice(end, arr.length - end);\n }\n\n if (begin > 0) {\n arr.splice(0, begin);\n }\n } // all non finite (e.g. Infinity, NaN) elements must be -Infinity so they go to the start\n\n\n var off = 0; // offset from non-finite values\n\n for (var i = arr.length - 1; i >= 0; i--) {\n var v = arr[i];\n\n if (includeHoles) {\n if (!isFinite(v)) {\n arr[i] = -Infinity;\n off++;\n }\n } else {\n // just remove it if we don't want to consider holes\n arr.splice(i, 1);\n }\n }\n\n if (sort) {\n arr.sort(function (a, b) {\n return a - b;\n }); // requires copy = true if you don't want to change the orig\n }\n\n var len = arr.length;\n var mid = Math.floor(len / 2);\n\n if (len % 2 !== 0) {\n return arr[mid + 1 + off];\n } else {\n return (arr[mid - 1 + off] + arr[mid + off]) / 2;\n }\n};\nvar deg2rad = function deg2rad(deg) {\n return Math.PI * deg / 180;\n};\nvar getAngleFromDisp = function getAngleFromDisp(dispX, dispY) {\n return Math.atan2(dispY, dispX) - Math.PI / 2;\n};\nvar log2 = Math.log2 || function (n) {\n return Math.log(n) / Math.log(2);\n};\nvar signum = function signum(x) {\n if (x > 0) {\n return 1;\n } else if (x < 0) {\n return -1;\n } else {\n return 0;\n }\n};\nvar dist = function dist(p1, p2) {\n return Math.sqrt(sqdist(p1, p2));\n};\nvar sqdist = function sqdist(p1, p2) {\n var dx = p2.x - p1.x;\n var dy = p2.y - p1.y;\n return dx * dx + dy * dy;\n};\nvar inPlaceSumNormalize = function inPlaceSumNormalize(v) {\n var length = v.length; // First, get sum of all elements\n\n var total = 0;\n\n for (var i = 0; i < length; i++) {\n total += v[i];\n } // Now, divide each by the sum of all elements\n\n\n for (var _i = 0; _i < length; _i++) {\n v[_i] = v[_i] / total;\n }\n\n return v;\n};\nvar normalize = function normalize(v) {\n return inPlaceSumNormalize(v.slice());\n}; // from http://en.wikipedia.org/wiki/Bézier_curve#Quadratic_curves\n\nvar qbezierAt = function qbezierAt(p0, p1, p2, t) {\n return (1 - t) * (1 - t) * p0 + 2 * (1 - t) * t * p1 + t * t * p2;\n};\nvar qbezierPtAt = function qbezierPtAt(p0, p1, p2, t) {\n return {\n x: qbezierAt(p0.x, p1.x, p2.x, t),\n y: qbezierAt(p0.y, p1.y, p2.y, t)\n };\n};\nvar lineAt = function lineAt(p0, p1, t, d) {\n var vec = {\n x: p1.x - p0.x,\n y: p1.y - p0.y\n };\n var vecDist = dist(p0, p1);\n var normVec = {\n x: vec.x / vecDist,\n y: vec.y / vecDist\n };\n t = t == null ? 0 : t;\n d = d != null ? d : t * vecDist;\n return {\n x: p0.x + normVec.x * d,\n y: p0.y + normVec.y * d\n };\n};\nvar lineAtDist = function lineAtDist(p0, p1, d) {\n return lineAt(p0, p1, undefined, d);\n}; // get angle at A via cosine law\n\nvar triangleAngle = function triangleAngle(A, B, C) {\n var a = dist(B, C);\n var b = dist(A, C);\n var c = dist(A, B);\n return Math.acos((a * a + b * b - c * c) / (2 * a * b));\n};\nvar bound = function bound(min, val, max) {\n return Math.max(min, Math.min(max, val));\n}; // makes a full bb (x1, y1, x2, y2, w, h) from implicit params\n\nvar makeBoundingBox = function makeBoundingBox(bb) {\n if (bb == null) {\n return {\n x1: Infinity,\n y1: Infinity,\n x2: -Infinity,\n y2: -Infinity,\n w: 0,\n h: 0\n };\n } else if (bb.x1 != null && bb.y1 != null) {\n if (bb.x2 != null && bb.y2 != null && bb.x2 >= bb.x1 && bb.y2 >= bb.y1) {\n return {\n x1: bb.x1,\n y1: bb.y1,\n x2: bb.x2,\n y2: bb.y2,\n w: bb.x2 - bb.x1,\n h: bb.y2 - bb.y1\n };\n } else if (bb.w != null && bb.h != null && bb.w >= 0 && bb.h >= 0) {\n return {\n x1: bb.x1,\n y1: bb.y1,\n x2: bb.x1 + bb.w,\n y2: bb.y1 + bb.h,\n w: bb.w,\n h: bb.h\n };\n }\n }\n};\nvar copyBoundingBox = function copyBoundingBox(bb) {\n return {\n x1: bb.x1,\n x2: bb.x2,\n w: bb.w,\n y1: bb.y1,\n y2: bb.y2,\n h: bb.h\n };\n};\nvar clearBoundingBox = function clearBoundingBox(bb) {\n bb.x1 = Infinity;\n bb.y1 = Infinity;\n bb.x2 = -Infinity;\n bb.y2 = -Infinity;\n bb.w = 0;\n bb.h = 0;\n};\nvar shiftBoundingBox = function shiftBoundingBox(bb, dx, dy) {\n return {\n x1: bb.x1 + dx,\n x2: bb.x2 + dx,\n y1: bb.y1 + dy,\n y2: bb.y2 + dy,\n w: bb.w,\n h: bb.h\n };\n};\nvar updateBoundingBox = function updateBoundingBox(bb1, bb2) {\n // update bb1 with bb2 bounds\n bb1.x1 = Math.min(bb1.x1, bb2.x1);\n bb1.x2 = Math.max(bb1.x2, bb2.x2);\n bb1.w = bb1.x2 - bb1.x1;\n bb1.y1 = Math.min(bb1.y1, bb2.y1);\n bb1.y2 = Math.max(bb1.y2, bb2.y2);\n bb1.h = bb1.y2 - bb1.y1;\n};\nvar expandBoundingBoxByPoint = function expandBoundingBoxByPoint(bb, x, y) {\n bb.x1 = Math.min(bb.x1, x);\n bb.x2 = Math.max(bb.x2, x);\n bb.w = bb.x2 - bb.x1;\n bb.y1 = Math.min(bb.y1, y);\n bb.y2 = Math.max(bb.y2, y);\n bb.h = bb.y2 - bb.y1;\n};\nvar expandBoundingBox = function expandBoundingBox(bb) {\n var padding = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n bb.x1 -= padding;\n bb.x2 += padding;\n bb.y1 -= padding;\n bb.y2 += padding;\n bb.w = bb.x2 - bb.x1;\n bb.h = bb.y2 - bb.y1;\n return bb;\n};\n\nvar expandToInt = function expandToInt(x) {\n return x > 0 ? Math.ceil(x) : Math.floor(x);\n};\n\nvar expandBoundingBoxToInts = function expandBoundingBoxToInts(bb) {\n var padding = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n bb.x1 = expandToInt(bb.x1 - padding);\n bb.y1 = expandToInt(bb.y1 - padding);\n bb.x2 = expandToInt(bb.x2 + padding);\n bb.y2 = expandToInt(bb.y2 + padding);\n bb.w = bb.x2 - bb.x1;\n bb.h = bb.y2 - bb.y1;\n}; // assign the values of bb2 into bb1\n\nvar assignBoundingBox = function assignBoundingBox(bb1, bb2) {\n bb1.x1 = bb2.x1;\n bb1.y1 = bb2.y1;\n bb1.x2 = bb2.x2;\n bb1.y2 = bb2.y2;\n bb1.w = bb1.x2 - bb1.x1;\n bb1.h = bb1.y2 - bb1.y1;\n};\nvar assignShiftToBoundingBox = function assignShiftToBoundingBox(bb, delta) {\n bb.x1 += delta.x;\n bb.x2 += delta.x;\n bb.y1 += delta.y;\n bb.y2 += delta.y;\n};\nvar boundingBoxesIntersect = function boundingBoxesIntersect(bb1, bb2) {\n // case: one bb to right of other\n if (bb1.x1 > bb2.x2) {\n return false;\n }\n\n if (bb2.x1 > bb1.x2) {\n return false;\n } // case: one bb to left of other\n\n\n if (bb1.x2 < bb2.x1) {\n return false;\n }\n\n if (bb2.x2 < bb1.x1) {\n return false;\n } // case: one bb above other\n\n\n if (bb1.y2 < bb2.y1) {\n return false;\n }\n\n if (bb2.y2 < bb1.y1) {\n return false;\n } // case: one bb below other\n\n\n if (bb1.y1 > bb2.y2) {\n return false;\n }\n\n if (bb2.y1 > bb1.y2) {\n return false;\n } // otherwise, must have some overlap\n\n\n return true;\n};\nvar inBoundingBox = function inBoundingBox(bb, x, y) {\n return bb.x1 <= x && x <= bb.x2 && bb.y1 <= y && y <= bb.y2;\n};\nvar pointInBoundingBox = function pointInBoundingBox(bb, pt) {\n return inBoundingBox(bb, pt.x, pt.y);\n};\nvar boundingBoxInBoundingBox = function boundingBoxInBoundingBox(bb1, bb2) {\n return inBoundingBox(bb1, bb2.x1, bb2.y1) && inBoundingBox(bb1, bb2.x2, bb2.y2);\n};\nvar roundRectangleIntersectLine = function roundRectangleIntersectLine(x, y, nodeX, nodeY, width, height, padding) {\n var cornerRadius = getRoundRectangleRadius(width, height);\n var halfWidth = width / 2;\n var halfHeight = height / 2; // Check intersections with straight line segments\n\n var straightLineIntersections; // Top segment, left to right\n\n {\n var topStartX = nodeX - halfWidth + cornerRadius - padding;\n var topStartY = nodeY - halfHeight - padding;\n var topEndX = nodeX + halfWidth - cornerRadius + padding;\n var topEndY = topStartY;\n straightLineIntersections = finiteLinesIntersect(x, y, nodeX, nodeY, topStartX, topStartY, topEndX, topEndY, false);\n\n if (straightLineIntersections.length > 0) {\n return straightLineIntersections;\n }\n } // Right segment, top to bottom\n\n {\n var rightStartX = nodeX + halfWidth + padding;\n var rightStartY = nodeY - halfHeight + cornerRadius - padding;\n var rightEndX = rightStartX;\n var rightEndY = nodeY + halfHeight - cornerRadius + padding;\n straightLineIntersections = finiteLinesIntersect(x, y, nodeX, nodeY, rightStartX, rightStartY, rightEndX, rightEndY, false);\n\n if (straightLineIntersections.length > 0) {\n return straightLineIntersections;\n }\n } // Bottom segment, left to right\n\n {\n var bottomStartX = nodeX - halfWidth + cornerRadius - padding;\n var bottomStartY = nodeY + halfHeight + padding;\n var bottomEndX = nodeX + halfWidth - cornerRadius + padding;\n var bottomEndY = bottomStartY;\n straightLineIntersections = finiteLinesIntersect(x, y, nodeX, nodeY, bottomStartX, bottomStartY, bottomEndX, bottomEndY, false);\n\n if (straightLineIntersections.length > 0) {\n return straightLineIntersections;\n }\n } // Left segment, top to bottom\n\n {\n var leftStartX = nodeX - halfWidth - padding;\n var leftStartY = nodeY - halfHeight + cornerRadius - padding;\n var leftEndX = leftStartX;\n var leftEndY = nodeY + halfHeight - cornerRadius + padding;\n straightLineIntersections = finiteLinesIntersect(x, y, nodeX, nodeY, leftStartX, leftStartY, leftEndX, leftEndY, false);\n\n if (straightLineIntersections.length > 0) {\n return straightLineIntersections;\n }\n } // Check intersections with arc segments\n\n var arcIntersections; // Top Left\n\n {\n var topLeftCenterX = nodeX - halfWidth + cornerRadius;\n var topLeftCenterY = nodeY - halfHeight + cornerRadius;\n arcIntersections = intersectLineCircle(x, y, nodeX, nodeY, topLeftCenterX, topLeftCenterY, cornerRadius + padding); // Ensure the intersection is on the desired quarter of the circle\n\n if (arcIntersections.length > 0 && arcIntersections[0] <= topLeftCenterX && arcIntersections[1] <= topLeftCenterY) {\n return [arcIntersections[0], arcIntersections[1]];\n }\n } // Top Right\n\n {\n var topRightCenterX = nodeX + halfWidth - cornerRadius;\n var topRightCenterY = nodeY - halfHeight + cornerRadius;\n arcIntersections = intersectLineCircle(x, y, nodeX, nodeY, topRightCenterX, topRightCenterY, cornerRadius + padding); // Ensure the intersection is on the desired quarter of the circle\n\n if (arcIntersections.length > 0 && arcIntersections[0] >= topRightCenterX && arcIntersections[1] <= topRightCenterY) {\n return [arcIntersections[0], arcIntersections[1]];\n }\n } // Bottom Right\n\n {\n var bottomRightCenterX = nodeX + halfWidth - cornerRadius;\n var bottomRightCenterY = nodeY + halfHeight - cornerRadius;\n arcIntersections = intersectLineCircle(x, y, nodeX, nodeY, bottomRightCenterX, bottomRightCenterY, cornerRadius + padding); // Ensure the intersection is on the desired quarter of the circle\n\n if (arcIntersections.length > 0 && arcIntersections[0] >= bottomRightCenterX && arcIntersections[1] >= bottomRightCenterY) {\n return [arcIntersections[0], arcIntersections[1]];\n }\n } // Bottom Left\n\n {\n var bottomLeftCenterX = nodeX - halfWidth + cornerRadius;\n var bottomLeftCenterY = nodeY + halfHeight - cornerRadius;\n arcIntersections = intersectLineCircle(x, y, nodeX, nodeY, bottomLeftCenterX, bottomLeftCenterY, cornerRadius + padding); // Ensure the intersection is on the desired quarter of the circle\n\n if (arcIntersections.length > 0 && arcIntersections[0] <= bottomLeftCenterX && arcIntersections[1] >= bottomLeftCenterY) {\n return [arcIntersections[0], arcIntersections[1]];\n }\n }\n return []; // if nothing\n};\nvar inLineVicinity = function inLineVicinity(x, y, lx1, ly1, lx2, ly2, tolerance) {\n var t = tolerance;\n var x1 = Math.min(lx1, lx2);\n var x2 = Math.max(lx1, lx2);\n var y1 = Math.min(ly1, ly2);\n var y2 = Math.max(ly1, ly2);\n return x1 - t <= x && x <= x2 + t && y1 - t <= y && y <= y2 + t;\n};\nvar inBezierVicinity = function inBezierVicinity(x, y, x1, y1, x2, y2, x3, y3, tolerance) {\n var bb = {\n x1: Math.min(x1, x3, x2) - tolerance,\n x2: Math.max(x1, x3, x2) + tolerance,\n y1: Math.min(y1, y3, y2) - tolerance,\n y2: Math.max(y1, y3, y2) + tolerance\n }; // if outside the rough bounding box for the bezier, then it can't be a hit\n\n if (x < bb.x1 || x > bb.x2 || y < bb.y1 || y > bb.y2) {\n // console.log('bezier out of rough bb')\n return false;\n } else {\n // console.log('do more expensive check');\n return true;\n }\n};\nvar solveQuadratic = function solveQuadratic(a, b, c, val) {\n c -= val;\n var r = b * b - 4 * a * c;\n\n if (r < 0) {\n return [];\n }\n\n var sqrtR = Math.sqrt(r);\n var denom = 2 * a;\n var root1 = (-b + sqrtR) / denom;\n var root2 = (-b - sqrtR) / denom;\n return [root1, root2];\n};\nvar solveCubic = function solveCubic(a, b, c, d, result) {\n // Solves a cubic function, returns root in form [r1, i1, r2, i2, r3, i3], where\n // r is the real component, i is the imaginary component\n // An implementation of the Cardano method from the year 1545\n // http://en.wikipedia.org/wiki/Cubic_function#The_nature_of_the_roots\n b /= a;\n c /= a;\n d /= a;\n var discriminant, q, r, dum1, s, t, term1, r13;\n q = (3.0 * c - b * b) / 9.0;\n r = -(27.0 * d) + b * (9.0 * c - 2.0 * (b * b));\n r /= 54.0;\n discriminant = q * q * q + r * r;\n result[1] = 0;\n term1 = b / 3.0;\n\n if (discriminant > 0) {\n s = r + Math.sqrt(discriminant);\n s = s < 0 ? -Math.pow(-s, 1.0 / 3.0) : Math.pow(s, 1.0 / 3.0);\n t = r - Math.sqrt(discriminant);\n t = t < 0 ? -Math.pow(-t, 1.0 / 3.0) : Math.pow(t, 1.0 / 3.0);\n result[0] = -term1 + s + t;\n term1 += (s + t) / 2.0;\n result[4] = result[2] = -term1;\n term1 = Math.sqrt(3.0) * (-t + s) / 2;\n result[3] = term1;\n result[5] = -term1;\n return;\n }\n\n result[5] = result[3] = 0;\n\n if (discriminant === 0) {\n r13 = r < 0 ? -Math.pow(-r, 1.0 / 3.0) : Math.pow(r, 1.0 / 3.0);\n result[0] = -term1 + 2.0 * r13;\n result[4] = result[2] = -(r13 + term1);\n return;\n }\n\n q = -q;\n dum1 = q * q * q;\n dum1 = Math.acos(r / Math.sqrt(dum1));\n r13 = 2.0 * Math.sqrt(q);\n result[0] = -term1 + r13 * Math.cos(dum1 / 3.0);\n result[2] = -term1 + r13 * Math.cos((dum1 + 2.0 * Math.PI) / 3.0);\n result[4] = -term1 + r13 * Math.cos((dum1 + 4.0 * Math.PI) / 3.0);\n return;\n};\nvar sqdistToQuadraticBezier = function sqdistToQuadraticBezier(x, y, x1, y1, x2, y2, x3, y3) {\n // Find minimum distance by using the minimum of the distance\n // function between the given point and the curve\n // This gives the coefficients of the resulting cubic equation\n // whose roots tell us where a possible minimum is\n // (Coefficients are divided by 4)\n var a = 1.0 * x1 * x1 - 4 * x1 * x2 + 2 * x1 * x3 + 4 * x2 * x2 - 4 * x2 * x3 + x3 * x3 + y1 * y1 - 4 * y1 * y2 + 2 * y1 * y3 + 4 * y2 * y2 - 4 * y2 * y3 + y3 * y3;\n var b = 1.0 * 9 * x1 * x2 - 3 * x1 * x1 - 3 * x1 * x3 - 6 * x2 * x2 + 3 * x2 * x3 + 9 * y1 * y2 - 3 * y1 * y1 - 3 * y1 * y3 - 6 * y2 * y2 + 3 * y2 * y3;\n var c = 1.0 * 3 * x1 * x1 - 6 * x1 * x2 + x1 * x3 - x1 * x + 2 * x2 * x2 + 2 * x2 * x - x3 * x + 3 * y1 * y1 - 6 * y1 * y2 + y1 * y3 - y1 * y + 2 * y2 * y2 + 2 * y2 * y - y3 * y;\n var d = 1.0 * x1 * x2 - x1 * x1 + x1 * x - x2 * x + y1 * y2 - y1 * y1 + y1 * y - y2 * y; // debug(\"coefficients: \" + a / a + \", \" + b / a + \", \" + c / a + \", \" + d / a);\n\n var roots = []; // Use the cubic solving algorithm\n\n solveCubic(a, b, c, d, roots);\n var zeroThreshold = 0.0000001;\n var params = [];\n\n for (var index = 0; index < 6; index += 2) {\n if (Math.abs(roots[index + 1]) < zeroThreshold && roots[index] >= 0 && roots[index] <= 1.0) {\n params.push(roots[index]);\n }\n }\n\n params.push(1.0);\n params.push(0.0);\n var minDistanceSquared = -1;\n var curX, curY, distSquared;\n\n for (var i = 0; i < params.length; i++) {\n curX = Math.pow(1.0 - params[i], 2.0) * x1 + 2.0 * (1 - params[i]) * params[i] * x2 + params[i] * params[i] * x3;\n curY = Math.pow(1 - params[i], 2.0) * y1 + 2 * (1.0 - params[i]) * params[i] * y2 + params[i] * params[i] * y3;\n distSquared = Math.pow(curX - x, 2) + Math.pow(curY - y, 2); // debug('distance for param ' + params[i] + \": \" + Math.sqrt(distSquared));\n\n if (minDistanceSquared >= 0) {\n if (distSquared < minDistanceSquared) {\n minDistanceSquared = distSquared;\n }\n } else {\n minDistanceSquared = distSquared;\n }\n }\n\n return minDistanceSquared;\n};\nvar sqdistToFiniteLine = function sqdistToFiniteLine(x, y, x1, y1, x2, y2) {\n var offset = [x - x1, y - y1];\n var line = [x2 - x1, y2 - y1];\n var lineSq = line[0] * line[0] + line[1] * line[1];\n var hypSq = offset[0] * offset[0] + offset[1] * offset[1];\n var dotProduct = offset[0] * line[0] + offset[1] * line[1];\n var adjSq = dotProduct * dotProduct / lineSq;\n\n if (dotProduct < 0) {\n return hypSq;\n }\n\n if (adjSq > lineSq) {\n return (x - x2) * (x - x2) + (y - y2) * (y - y2);\n }\n\n return hypSq - adjSq;\n};\nvar pointInsidePolygonPoints = function pointInsidePolygonPoints(x, y, points) {\n var x1, y1, x2, y2;\n var y3; // Intersect with vertical line through (x, y)\n\n var up = 0; // let down = 0;\n\n for (var i = 0; i < points.length / 2; i++) {\n x1 = points[i * 2];\n y1 = points[i * 2 + 1];\n\n if (i + 1 < points.length / 2) {\n x2 = points[(i + 1) * 2];\n y2 = points[(i + 1) * 2 + 1];\n } else {\n x2 = points[(i + 1 - points.length / 2) * 2];\n y2 = points[(i + 1 - points.length / 2) * 2 + 1];\n }\n\n if (x1 == x && x2 == x) ; else if (x1 >= x && x >= x2 || x1 <= x && x <= x2) {\n y3 = (x - x1) / (x2 - x1) * (y2 - y1) + y1;\n\n if (y3 > y) {\n up++;\n } // if( y3 < y ){\n // down++;\n // }\n\n } else {\n continue;\n }\n }\n\n if (up % 2 === 0) {\n return false;\n } else {\n return true;\n }\n};\nvar pointInsidePolygon = function pointInsidePolygon(x, y, basePoints, centerX, centerY, width, height, direction, padding) {\n var transformedPoints = new Array(basePoints.length); // Gives negative angle\n\n var angle;\n\n if (direction[0] != null) {\n angle = Math.atan(direction[1] / direction[0]);\n\n if (direction[0] < 0) {\n angle = angle + Math.PI / 2;\n } else {\n angle = -angle - Math.PI / 2;\n }\n } else {\n angle = direction;\n }\n\n var cos = Math.cos(-angle);\n var sin = Math.sin(-angle); // console.log(\"base: \" + basePoints);\n\n for (var i = 0; i < transformedPoints.length / 2; i++) {\n transformedPoints[i * 2] = width / 2 * (basePoints[i * 2] * cos - basePoints[i * 2 + 1] * sin);\n transformedPoints[i * 2 + 1] = height / 2 * (basePoints[i * 2 + 1] * cos + basePoints[i * 2] * sin);\n transformedPoints[i * 2] += centerX;\n transformedPoints[i * 2 + 1] += centerY;\n }\n\n var points;\n\n if (padding > 0) {\n var expandedLineSet = expandPolygon(transformedPoints, -padding);\n points = joinLines(expandedLineSet);\n } else {\n points = transformedPoints;\n }\n\n return pointInsidePolygonPoints(x, y, points);\n};\nvar joinLines = function joinLines(lineSet) {\n var vertices = new Array(lineSet.length / 2);\n var currentLineStartX, currentLineStartY, currentLineEndX, currentLineEndY;\n var nextLineStartX, nextLineStartY, nextLineEndX, nextLineEndY;\n\n for (var i = 0; i < lineSet.length / 4; i++) {\n currentLineStartX = lineSet[i * 4];\n currentLineStartY = lineSet[i * 4 + 1];\n currentLineEndX = lineSet[i * 4 + 2];\n currentLineEndY = lineSet[i * 4 + 3];\n\n if (i < lineSet.length / 4 - 1) {\n nextLineStartX = lineSet[(i + 1) * 4];\n nextLineStartY = lineSet[(i + 1) * 4 + 1];\n nextLineEndX = lineSet[(i + 1) * 4 + 2];\n nextLineEndY = lineSet[(i + 1) * 4 + 3];\n } else {\n nextLineStartX = lineSet[0];\n nextLineStartY = lineSet[1];\n nextLineEndX = lineSet[2];\n nextLineEndY = lineSet[3];\n }\n\n var intersection = finiteLinesIntersect(currentLineStartX, currentLineStartY, currentLineEndX, currentLineEndY, nextLineStartX, nextLineStartY, nextLineEndX, nextLineEndY, true);\n vertices[i * 2] = intersection[0];\n vertices[i * 2 + 1] = intersection[1];\n }\n\n return vertices;\n};\nvar expandPolygon = function expandPolygon(points, pad) {\n var expandedLineSet = new Array(points.length * 2);\n var currentPointX, currentPointY, nextPointX, nextPointY;\n\n for (var i = 0; i < points.length / 2; i++) {\n currentPointX = points[i * 2];\n currentPointY = points[i * 2 + 1];\n\n if (i < points.length / 2 - 1) {\n nextPointX = points[(i + 1) * 2];\n nextPointY = points[(i + 1) * 2 + 1];\n } else {\n nextPointX = points[0];\n nextPointY = points[1];\n } // Current line: [currentPointX, currentPointY] to [nextPointX, nextPointY]\n // Assume CCW polygon winding\n\n\n var offsetX = nextPointY - currentPointY;\n var offsetY = -(nextPointX - currentPointX); // Normalize\n\n var offsetLength = Math.sqrt(offsetX * offsetX + offsetY * offsetY);\n var normalizedOffsetX = offsetX / offsetLength;\n var normalizedOffsetY = offsetY / offsetLength;\n expandedLineSet[i * 4] = currentPointX + normalizedOffsetX * pad;\n expandedLineSet[i * 4 + 1] = currentPointY + normalizedOffsetY * pad;\n expandedLineSet[i * 4 + 2] = nextPointX + normalizedOffsetX * pad;\n expandedLineSet[i * 4 + 3] = nextPointY + normalizedOffsetY * pad;\n }\n\n return expandedLineSet;\n};\nvar intersectLineEllipse = function intersectLineEllipse(x, y, centerX, centerY, ellipseWradius, ellipseHradius) {\n var dispX = centerX - x;\n var dispY = centerY - y;\n dispX /= ellipseWradius;\n dispY /= ellipseHradius;\n var len = Math.sqrt(dispX * dispX + dispY * dispY);\n var newLength = len - 1;\n\n if (newLength < 0) {\n return [];\n }\n\n var lenProportion = newLength / len;\n return [(centerX - x) * lenProportion + x, (centerY - y) * lenProportion + y];\n};\nvar checkInEllipse = function checkInEllipse(x, y, width, height, centerX, centerY, padding) {\n x -= centerX;\n y -= centerY;\n x /= width / 2 + padding;\n y /= height / 2 + padding;\n return x * x + y * y <= 1;\n}; // Returns intersections of increasing distance from line's start point\n\nvar intersectLineCircle = function intersectLineCircle(x1, y1, x2, y2, centerX, centerY, radius) {\n // Calculate d, direction vector of line\n var d = [x2 - x1, y2 - y1]; // Direction vector of line\n\n var f = [x1 - centerX, y1 - centerY];\n var a = d[0] * d[0] + d[1] * d[1];\n var b = 2 * (f[0] * d[0] + f[1] * d[1]);\n var c = f[0] * f[0] + f[1] * f[1] - radius * radius;\n var discriminant = b * b - 4 * a * c;\n\n if (discriminant < 0) {\n return [];\n }\n\n var t1 = (-b + Math.sqrt(discriminant)) / (2 * a);\n var t2 = (-b - Math.sqrt(discriminant)) / (2 * a);\n var tMin = Math.min(t1, t2);\n var tMax = Math.max(t1, t2);\n var inRangeParams = [];\n\n if (tMin >= 0 && tMin <= 1) {\n inRangeParams.push(tMin);\n }\n\n if (tMax >= 0 && tMax <= 1) {\n inRangeParams.push(tMax);\n }\n\n if (inRangeParams.length === 0) {\n return [];\n }\n\n var nearIntersectionX = inRangeParams[0] * d[0] + x1;\n var nearIntersectionY = inRangeParams[0] * d[1] + y1;\n\n if (inRangeParams.length > 1) {\n if (inRangeParams[0] == inRangeParams[1]) {\n return [nearIntersectionX, nearIntersectionY];\n } else {\n var farIntersectionX = inRangeParams[1] * d[0] + x1;\n var farIntersectionY = inRangeParams[1] * d[1] + y1;\n return [nearIntersectionX, nearIntersectionY, farIntersectionX, farIntersectionY];\n }\n } else {\n return [nearIntersectionX, nearIntersectionY];\n }\n};\nvar findCircleNearPoint = function findCircleNearPoint(centerX, centerY, radius, farX, farY) {\n var displacementX = farX - centerX;\n var displacementY = farY - centerY;\n var distance = Math.sqrt(displacementX * displacementX + displacementY * displacementY);\n var unitDisplacementX = displacementX / distance;\n var unitDisplacementY = displacementY / distance;\n return [centerX + unitDisplacementX * radius, centerY + unitDisplacementY * radius];\n};\nvar findMaxSqDistanceToOrigin = function findMaxSqDistanceToOrigin(points) {\n var maxSqDistance = 0.000001;\n var sqDistance;\n\n for (var i = 0; i < points.length / 2; i++) {\n sqDistance = points[i * 2] * points[i * 2] + points[i * 2 + 1] * points[i * 2 + 1];\n\n if (sqDistance > maxSqDistance) {\n maxSqDistance = sqDistance;\n }\n }\n\n return maxSqDistance;\n};\nvar midOfThree = function midOfThree(a, b, c) {\n if (b <= a && a <= c || c <= a && a <= b) {\n return a;\n } else if (a <= b && b <= c || c <= b && b <= a) {\n return b;\n } else {\n return c;\n }\n}; // (x1,y1)=>(x2,y2) intersect with (x3,y3)=>(x4,y4)\n\nvar finiteLinesIntersect = function finiteLinesIntersect(x1, y1, x2, y2, x3, y3, x4, y4, infiniteLines) {\n var dx13 = x1 - x3;\n var dx21 = x2 - x1;\n var dx43 = x4 - x3;\n var dy13 = y1 - y3;\n var dy21 = y2 - y1;\n var dy43 = y4 - y3;\n var ua_t = dx43 * dy13 - dy43 * dx13;\n var ub_t = dx21 * dy13 - dy21 * dx13;\n var u_b = dy43 * dx21 - dx43 * dy21;\n\n if (u_b !== 0) {\n var ua = ua_t / u_b;\n var ub = ub_t / u_b;\n var flptThreshold = 0.001;\n\n var _min = 0 - flptThreshold;\n\n var _max = 1 + flptThreshold;\n\n if (_min <= ua && ua <= _max && _min <= ub && ub <= _max) {\n return [x1 + ua * dx21, y1 + ua * dy21];\n } else {\n if (!infiniteLines) {\n return [];\n } else {\n return [x1 + ua * dx21, y1 + ua * dy21];\n }\n }\n } else {\n if (ua_t === 0 || ub_t === 0) {\n // Parallel, coincident lines. Check if overlap\n // Check endpoint of second line\n if (midOfThree(x1, x2, x4) === x4) {\n return [x4, y4];\n } // Check start point of second line\n\n\n if (midOfThree(x1, x2, x3) === x3) {\n return [x3, y3];\n } // Endpoint of first line\n\n\n if (midOfThree(x3, x4, x2) === x2) {\n return [x2, y2];\n }\n\n return [];\n } else {\n // Parallel, non-coincident\n return [];\n }\n }\n}; // math.polygonIntersectLine( x, y, basePoints, centerX, centerY, width, height, padding )\n// intersect a node polygon (pts transformed)\n//\n// math.polygonIntersectLine( x, y, basePoints, centerX, centerY )\n// intersect the points (no transform)\n\nvar polygonIntersectLine = function polygonIntersectLine(x, y, basePoints, centerX, centerY, width, height, padding) {\n var intersections = [];\n var intersection;\n var transformedPoints = new Array(basePoints.length);\n var doTransform = true;\n\n if (width == null) {\n doTransform = false;\n }\n\n var points;\n\n if (doTransform) {\n for (var i = 0; i < transformedPoints.length / 2; i++) {\n transformedPoints[i * 2] = basePoints[i * 2] * width + centerX;\n transformedPoints[i * 2 + 1] = basePoints[i * 2 + 1] * height + centerY;\n }\n\n if (padding > 0) {\n var expandedLineSet = expandPolygon(transformedPoints, -padding);\n points = joinLines(expandedLineSet);\n } else {\n points = transformedPoints;\n }\n } else {\n points = basePoints;\n }\n\n var currentX, currentY, nextX, nextY;\n\n for (var _i2 = 0; _i2 < points.length / 2; _i2++) {\n currentX = points[_i2 * 2];\n currentY = points[_i2 * 2 + 1];\n\n if (_i2 < points.length / 2 - 1) {\n nextX = points[(_i2 + 1) * 2];\n nextY = points[(_i2 + 1) * 2 + 1];\n } else {\n nextX = points[0];\n nextY = points[1];\n }\n\n intersection = finiteLinesIntersect(x, y, centerX, centerY, currentX, currentY, nextX, nextY);\n\n if (intersection.length !== 0) {\n intersections.push(intersection[0], intersection[1]);\n }\n }\n\n return intersections;\n};\nvar shortenIntersection = function shortenIntersection(intersection, offset, amount) {\n var disp = [intersection[0] - offset[0], intersection[1] - offset[1]];\n var length = Math.sqrt(disp[0] * disp[0] + disp[1] * disp[1]);\n var lenRatio = (length - amount) / length;\n\n if (lenRatio < 0) {\n lenRatio = 0.00001;\n }\n\n return [offset[0] + lenRatio * disp[0], offset[1] + lenRatio * disp[1]];\n};\nvar generateUnitNgonPointsFitToSquare = function generateUnitNgonPointsFitToSquare(sides, rotationRadians) {\n var points = generateUnitNgonPoints(sides, rotationRadians);\n points = fitPolygonToSquare(points);\n return points;\n};\nvar fitPolygonToSquare = function fitPolygonToSquare(points) {\n var x, y;\n var sides = points.length / 2;\n var minX = Infinity,\n minY = Infinity,\n maxX = -Infinity,\n maxY = -Infinity;\n\n for (var i = 0; i < sides; i++) {\n x = points[2 * i];\n y = points[2 * i + 1];\n minX = Math.min(minX, x);\n maxX = Math.max(maxX, x);\n minY = Math.min(minY, y);\n maxY = Math.max(maxY, y);\n } // stretch factors\n\n\n var sx = 2 / (maxX - minX);\n var sy = 2 / (maxY - minY);\n\n for (var _i3 = 0; _i3 < sides; _i3++) {\n x = points[2 * _i3] = points[2 * _i3] * sx;\n y = points[2 * _i3 + 1] = points[2 * _i3 + 1] * sy;\n minX = Math.min(minX, x);\n maxX = Math.max(maxX, x);\n minY = Math.min(minY, y);\n maxY = Math.max(maxY, y);\n }\n\n if (minY < -1) {\n for (var _i4 = 0; _i4 < sides; _i4++) {\n y = points[2 * _i4 + 1] = points[2 * _i4 + 1] + (-1 - minY);\n }\n }\n\n return points;\n};\nvar generateUnitNgonPoints = function generateUnitNgonPoints(sides, rotationRadians) {\n var increment = 1.0 / sides * 2 * Math.PI;\n var startAngle = sides % 2 === 0 ? Math.PI / 2.0 + increment / 2.0 : Math.PI / 2.0;\n startAngle += rotationRadians;\n var points = new Array(sides * 2);\n var currentAngle;\n\n for (var i = 0; i < sides; i++) {\n currentAngle = i * increment + startAngle;\n points[2 * i] = Math.cos(currentAngle); // x\n\n points[2 * i + 1] = Math.sin(-currentAngle); // y\n }\n\n return points;\n}; // Set the default radius, unless half of width or height is smaller than default\n\nvar getRoundRectangleRadius = function getRoundRectangleRadius(width, height) {\n return Math.min(width / 4, height / 4, 8);\n};\nvar getCutRectangleCornerLength = function getCutRectangleCornerLength() {\n return 8;\n};\nvar bezierPtsToQuadCoeff = function bezierPtsToQuadCoeff(p0, p1, p2) {\n return [p0 - 2 * p1 + p2, 2 * (p1 - p0), p0];\n}; // get curve width, height, and control point position offsets as a percentage of node height / width\n\nvar getBarrelCurveConstants = function getBarrelCurveConstants(width, height) {\n return {\n heightOffset: Math.min(15, 0.05 * height),\n widthOffset: Math.min(100, 0.25 * width),\n ctrlPtOffsetPct: 0.05\n };\n};\n\nvar math = /*#__PURE__*/Object.freeze({\n arePositionsSame: arePositionsSame,\n copyPosition: copyPosition,\n modelToRenderedPosition: modelToRenderedPosition,\n renderedToModelPosition: renderedToModelPosition,\n array2point: array2point,\n min: min,\n max: max,\n mean: mean,\n median: median,\n deg2rad: deg2rad,\n getAngleFromDisp: getAngleFromDisp,\n log2: log2,\n signum: signum,\n dist: dist,\n sqdist: sqdist,\n inPlaceSumNormalize: inPlaceSumNormalize,\n normalize: normalize,\n qbezierAt: qbezierAt,\n qbezierPtAt: qbezierPtAt,\n lineAt: lineAt,\n lineAtDist: lineAtDist,\n triangleAngle: triangleAngle,\n bound: bound,\n makeBoundingBox: makeBoundingBox,\n copyBoundingBox: copyBoundingBox,\n clearBoundingBox: clearBoundingBox,\n shiftBoundingBox: shiftBoundingBox,\n updateBoundingBox: updateBoundingBox,\n expandBoundingBoxByPoint: expandBoundingBoxByPoint,\n expandBoundingBox: expandBoundingBox,\n expandBoundingBoxToInts: expandBoundingBoxToInts,\n assignBoundingBox: assignBoundingBox,\n assignShiftToBoundingBox: assignShiftToBoundingBox,\n boundingBoxesIntersect: boundingBoxesIntersect,\n inBoundingBox: inBoundingBox,\n pointInBoundingBox: pointInBoundingBox,\n boundingBoxInBoundingBox: boundingBoxInBoundingBox,\n roundRectangleIntersectLine: roundRectangleIntersectLine,\n inLineVicinity: inLineVicinity,\n inBezierVicinity: inBezierVicinity,\n solveQuadratic: solveQuadratic,\n solveCubic: solveCubic,\n sqdistToQuadraticBezier: sqdistToQuadraticBezier,\n sqdistToFiniteLine: sqdistToFiniteLine,\n pointInsidePolygonPoints: pointInsidePolygonPoints,\n pointInsidePolygon: pointInsidePolygon,\n joinLines: joinLines,\n expandPolygon: expandPolygon,\n intersectLineEllipse: intersectLineEllipse,\n checkInEllipse: checkInEllipse,\n intersectLineCircle: intersectLineCircle,\n findCircleNearPoint: findCircleNearPoint,\n findMaxSqDistanceToOrigin: findMaxSqDistanceToOrigin,\n midOfThree: midOfThree,\n finiteLinesIntersect: finiteLinesIntersect,\n polygonIntersectLine: polygonIntersectLine,\n shortenIntersection: shortenIntersection,\n generateUnitNgonPointsFitToSquare: generateUnitNgonPointsFitToSquare,\n fitPolygonToSquare: fitPolygonToSquare,\n generateUnitNgonPoints: generateUnitNgonPoints,\n getRoundRectangleRadius: getRoundRectangleRadius,\n getCutRectangleCornerLength: getCutRectangleCornerLength,\n bezierPtsToQuadCoeff: bezierPtsToQuadCoeff,\n getBarrelCurveConstants: getBarrelCurveConstants\n});\n\nvar pageRankDefaults = defaults({\n dampingFactor: 0.8,\n precision: 0.000001,\n iterations: 200,\n weight: function weight(edge) {\n return 1;\n }\n});\nvar elesfn$7 = {\n pageRank: function pageRank(options) {\n var _pageRankDefaults = pageRankDefaults(options),\n dampingFactor = _pageRankDefaults.dampingFactor,\n precision = _pageRankDefaults.precision,\n iterations = _pageRankDefaults.iterations,\n weight = _pageRankDefaults.weight;\n\n var cy = this._private.cy;\n\n var _this$byGroup = this.byGroup(),\n nodes = _this$byGroup.nodes,\n edges = _this$byGroup.edges;\n\n var numNodes = nodes.length;\n var numNodesSqd = numNodes * numNodes;\n var numEdges = edges.length; // Construct transposed adjacency matrix\n // First lets have a zeroed matrix of the right size\n // We'll also keep track of the sum of each column\n\n var matrix = new Array(numNodesSqd);\n var columnSum = new Array(numNodes);\n var additionalProb = (1 - dampingFactor) / numNodes; // Create null matrix\n\n for (var i = 0; i < numNodes; i++) {\n for (var j = 0; j < numNodes; j++) {\n var n = i * numNodes + j;\n matrix[n] = 0;\n }\n\n columnSum[i] = 0;\n } // Now, process edges\n\n\n for (var _i = 0; _i < numEdges; _i++) {\n var edge = edges[_i];\n var srcId = edge.data('source');\n var tgtId = edge.data('target'); // Don't include loops in the matrix\n\n if (srcId === tgtId) {\n continue;\n }\n\n var s = nodes.indexOfId(srcId);\n var t = nodes.indexOfId(tgtId);\n var w = weight(edge);\n\n var _n = t * numNodes + s; // Update matrix\n\n\n matrix[_n] += w; // Update column sum\n\n columnSum[s] += w;\n } // Add additional probability based on damping factor\n // Also, take into account columns that have sum = 0\n\n\n var p = 1.0 / numNodes + additionalProb; // Shorthand\n // Traverse matrix, column by column\n\n for (var _j = 0; _j < numNodes; _j++) {\n if (columnSum[_j] === 0) {\n // No 'links' out from node jth, assume equal probability for each possible node\n for (var _i2 = 0; _i2 < numNodes; _i2++) {\n var _n2 = _i2 * numNodes + _j;\n\n matrix[_n2] = p;\n }\n } else {\n // Node jth has outgoing link, compute normalized probabilities\n for (var _i3 = 0; _i3 < numNodes; _i3++) {\n var _n3 = _i3 * numNodes + _j;\n\n matrix[_n3] = matrix[_n3] / columnSum[_j] + additionalProb;\n }\n }\n } // Compute dominant eigenvector using power method\n\n\n var eigenvector = new Array(numNodes);\n var temp = new Array(numNodes);\n var previous; // Start with a vector of all 1's\n // Also, initialize a null vector which will be used as shorthand\n\n for (var _i4 = 0; _i4 < numNodes; _i4++) {\n eigenvector[_i4] = 1;\n }\n\n for (var iter = 0; iter < iterations; iter++) {\n // Temp array with all 0's\n for (var _i5 = 0; _i5 < numNodes; _i5++) {\n temp[_i5] = 0;\n } // Multiply matrix with previous result\n\n\n for (var _i6 = 0; _i6 < numNodes; _i6++) {\n for (var _j2 = 0; _j2 < numNodes; _j2++) {\n var _n4 = _i6 * numNodes + _j2;\n\n temp[_i6] += matrix[_n4] * eigenvector[_j2];\n }\n }\n\n inPlaceSumNormalize(temp);\n previous = eigenvector;\n eigenvector = temp;\n temp = previous;\n var diff = 0; // Compute difference (squared module) of both vectors\n\n for (var _i7 = 0; _i7 < numNodes; _i7++) {\n var delta = previous[_i7] - eigenvector[_i7];\n diff += delta * delta;\n } // If difference is less than the desired threshold, stop iterating\n\n\n if (diff < precision) {\n break;\n }\n } // Construct result\n\n\n var res = {\n rank: function rank(node) {\n node = cy.collection(node)[0];\n return eigenvector[nodes.indexOf(node)];\n }\n };\n return res;\n } // pageRank\n\n}; // elesfn\n\nvar defaults$1 = defaults({\n root: null,\n weight: function weight(edge) {\n return 1;\n },\n directed: false,\n alpha: 0\n});\nvar elesfn$8 = {\n degreeCentralityNormalized: function degreeCentralityNormalized(options) {\n options = defaults$1(options);\n var cy = this.cy();\n var nodes = this.nodes();\n var numNodes = nodes.length;\n\n if (!options.directed) {\n var degrees = {};\n var maxDegree = 0;\n\n for (var i = 0; i < numNodes; i++) {\n var node = nodes[i]; // add current node to the current options object and call degreeCentrality\n\n options.root = node;\n var currDegree = this.degreeCentrality(options);\n\n if (maxDegree < currDegree.degree) {\n maxDegree = currDegree.degree;\n }\n\n degrees[node.id()] = currDegree.degree;\n }\n\n return {\n degree: function degree(node) {\n if (maxDegree === 0) {\n return 0;\n }\n\n if (string(node)) {\n // from is a selector string\n node = cy.filter(node);\n }\n\n return degrees[node.id()] / maxDegree;\n }\n };\n } else {\n var indegrees = {};\n var outdegrees = {};\n var maxIndegree = 0;\n var maxOutdegree = 0;\n\n for (var _i = 0; _i < numNodes; _i++) {\n var _node = nodes[_i];\n\n var id = _node.id(); // add current node to the current options object and call degreeCentrality\n\n\n options.root = _node;\n\n var _currDegree = this.degreeCentrality(options);\n\n if (maxIndegree < _currDegree.indegree) maxIndegree = _currDegree.indegree;\n if (maxOutdegree < _currDegree.outdegree) maxOutdegree = _currDegree.outdegree;\n indegrees[id] = _currDegree.indegree;\n outdegrees[id] = _currDegree.outdegree;\n }\n\n return {\n indegree: function indegree(node) {\n if (maxIndegree == 0) {\n return 0;\n }\n\n if (string(node)) {\n // from is a selector string\n node = cy.filter(node);\n }\n\n return indegrees[node.id()] / maxIndegree;\n },\n outdegree: function outdegree(node) {\n if (maxOutdegree === 0) {\n return 0;\n }\n\n if (string(node)) {\n // from is a selector string\n node = cy.filter(node);\n }\n\n return outdegrees[node.id()] / maxOutdegree;\n }\n };\n }\n },\n // degreeCentralityNormalized\n // Implemented from the algorithm in Opsahl's paper\n // \"Node centrality in weighted networks: Generalizing degree and shortest paths\"\n // check the heading 2 \"Degree\"\n degreeCentrality: function degreeCentrality(options) {\n options = defaults$1(options);\n var cy = this.cy();\n var callingEles = this;\n var _options = options,\n root = _options.root,\n weight = _options.weight,\n directed = _options.directed,\n alpha = _options.alpha;\n root = cy.collection(root)[0];\n\n if (!directed) {\n var connEdges = root.connectedEdges().intersection(callingEles);\n var k = connEdges.length;\n var s = 0; // Now, sum edge weights\n\n for (var i = 0; i < connEdges.length; i++) {\n s += weight(connEdges[i]);\n }\n\n return {\n degree: Math.pow(k, 1 - alpha) * Math.pow(s, alpha)\n };\n } else {\n var edges = root.connectedEdges();\n var incoming = edges.filter(function (edge) {\n return edge.target().same(root) && callingEles.has(edge);\n });\n var outgoing = edges.filter(function (edge) {\n return edge.source().same(root) && callingEles.has(edge);\n });\n var k_in = incoming.length;\n var k_out = outgoing.length;\n var s_in = 0;\n var s_out = 0; // Now, sum incoming edge weights\n\n for (var _i2 = 0; _i2 < incoming.length; _i2++) {\n s_in += weight(incoming[_i2]);\n } // Now, sum outgoing edge weights\n\n\n for (var _i3 = 0; _i3 < outgoing.length; _i3++) {\n s_out += weight(outgoing[_i3]);\n }\n\n return {\n indegree: Math.pow(k_in, 1 - alpha) * Math.pow(s_in, alpha),\n outdegree: Math.pow(k_out, 1 - alpha) * Math.pow(s_out, alpha)\n };\n }\n } // degreeCentrality\n\n}; // elesfn\n// nice, short mathemathical alias\n\nelesfn$8.dc = elesfn$8.degreeCentrality;\nelesfn$8.dcn = elesfn$8.degreeCentralityNormalised = elesfn$8.degreeCentralityNormalized;\n\nvar defaults$2 = defaults({\n harmonic: true,\n weight: function weight() {\n return 1;\n },\n directed: false,\n root: null\n});\nvar elesfn$9 = {\n closenessCentralityNormalized: function closenessCentralityNormalized(options) {\n var _defaults = defaults$2(options),\n harmonic = _defaults.harmonic,\n weight = _defaults.weight,\n directed = _defaults.directed;\n\n var cy = this.cy();\n var closenesses = {};\n var maxCloseness = 0;\n var nodes = this.nodes();\n var fw = this.floydWarshall({\n weight: weight,\n directed: directed\n }); // Compute closeness for every node and find the maximum closeness\n\n for (var i = 0; i < nodes.length; i++) {\n var currCloseness = 0;\n var node_i = nodes[i];\n\n for (var j = 0; j < nodes.length; j++) {\n if (i !== j) {\n var d = fw.distance(node_i, nodes[j]);\n\n if (harmonic) {\n currCloseness += 1 / d;\n } else {\n currCloseness += d;\n }\n }\n }\n\n if (!harmonic) {\n currCloseness = 1 / currCloseness;\n }\n\n if (maxCloseness < currCloseness) {\n maxCloseness = currCloseness;\n }\n\n closenesses[node_i.id()] = currCloseness;\n }\n\n return {\n closeness: function closeness(node) {\n if (maxCloseness == 0) {\n return 0;\n }\n\n if (string(node)) {\n // from is a selector string\n node = cy.filter(node)[0].id();\n } else {\n // from is a node\n node = node.id();\n }\n\n return closenesses[node] / maxCloseness;\n }\n };\n },\n // Implemented from pseudocode from wikipedia\n closenessCentrality: function closenessCentrality(options) {\n var _defaults2 = defaults$2(options),\n root = _defaults2.root,\n weight = _defaults2.weight,\n directed = _defaults2.directed,\n harmonic = _defaults2.harmonic;\n\n root = this.filter(root)[0]; // we need distance from this node to every other node\n\n var dijkstra = this.dijkstra({\n root: root,\n weight: weight,\n directed: directed\n });\n var totalDistance = 0;\n var nodes = this.nodes();\n\n for (var i = 0; i < nodes.length; i++) {\n var n = nodes[i];\n\n if (!n.same(root)) {\n var d = dijkstra.distanceTo(n);\n\n if (harmonic) {\n totalDistance += 1 / d;\n } else {\n totalDistance += d;\n }\n }\n }\n\n return harmonic ? totalDistance : 1 / totalDistance;\n } // closenessCentrality\n\n}; // elesfn\n// nice, short mathemathical alias\n\nelesfn$9.cc = elesfn$9.closenessCentrality;\nelesfn$9.ccn = elesfn$9.closenessCentralityNormalised = elesfn$9.closenessCentralityNormalized;\n\nvar defaults$3 = defaults({\n weight: null,\n directed: false\n});\nvar elesfn$a = {\n // Implemented from the algorithm in the paper \"On Variants of Shortest-Path Betweenness Centrality and their Generic Computation\" by Ulrik Brandes\n betweennessCentrality: function betweennessCentrality(options) {\n var _defaults = defaults$3(options),\n directed = _defaults.directed,\n weight = _defaults.weight;\n\n var weighted = weight != null;\n var cy = this.cy(); // starting\n\n var V = this.nodes();\n var A = {};\n var _C = {};\n var max = 0;\n var C = {\n set: function set(key, val) {\n _C[key] = val;\n\n if (val > max) {\n max = val;\n }\n },\n get: function get(key) {\n return _C[key];\n }\n }; // A contains the neighborhoods of every node\n\n for (var i = 0; i < V.length; i++) {\n var v = V[i];\n var vid = v.id();\n\n if (directed) {\n A[vid] = v.outgoers().nodes(); // get outgoers of every node\n } else {\n A[vid] = v.openNeighborhood().nodes(); // get neighbors of every node\n }\n\n C.set(vid, 0);\n }\n\n var _loop = function _loop(s) {\n var sid = V[s].id();\n var S = []; // stack\n\n var P = {};\n var g = {};\n var d = {};\n var Q = new Heap(function (a, b) {\n return d[a] - d[b];\n }); // queue\n // init dictionaries\n\n for (var _i = 0; _i < V.length; _i++) {\n var _vid = V[_i].id();\n\n P[_vid] = [];\n g[_vid] = 0;\n d[_vid] = Infinity;\n }\n\n g[sid] = 1; // sigma\n\n d[sid] = 0; // distance to s\n\n Q.push(sid);\n\n while (!Q.empty()) {\n var _v = Q.pop();\n\n S.push(_v);\n\n if (weighted) {\n for (var j = 0; j < A[_v].length; j++) {\n var w = A[_v][j];\n var vEle = cy.getElementById(_v);\n var edge = void 0;\n\n if (vEle.edgesTo(w).length > 0) {\n edge = vEle.edgesTo(w)[0];\n } else {\n edge = w.edgesTo(vEle)[0];\n }\n\n var edgeWeight = weight(edge);\n w = w.id();\n\n if (d[w] > d[_v] + edgeWeight) {\n d[w] = d[_v] + edgeWeight;\n\n if (Q.nodes.indexOf(w) < 0) {\n //if w is not in Q\n Q.push(w);\n } else {\n // update position if w is in Q\n Q.updateItem(w);\n }\n\n g[w] = 0;\n P[w] = [];\n }\n\n if (d[w] == d[_v] + edgeWeight) {\n g[w] = g[w] + g[_v];\n P[w].push(_v);\n }\n }\n } else {\n for (var _j = 0; _j < A[_v].length; _j++) {\n var _w = A[_v][_j].id();\n\n if (d[_w] == Infinity) {\n Q.push(_w);\n d[_w] = d[_v] + 1;\n }\n\n if (d[_w] == d[_v] + 1) {\n g[_w] = g[_w] + g[_v];\n\n P[_w].push(_v);\n }\n }\n }\n }\n\n var e = {};\n\n for (var _i2 = 0; _i2 < V.length; _i2++) {\n e[V[_i2].id()] = 0;\n }\n\n while (S.length > 0) {\n var _w2 = S.pop();\n\n for (var _j2 = 0; _j2 < P[_w2].length; _j2++) {\n var _v2 = P[_w2][_j2];\n e[_v2] = e[_v2] + g[_v2] / g[_w2] * (1 + e[_w2]);\n\n if (_w2 != V[s].id()) {\n C.set(_w2, C.get(_w2) + e[_w2]);\n }\n }\n }\n };\n\n for (var s = 0; s < V.length; s++) {\n _loop(s);\n }\n\n var ret = {\n betweenness: function betweenness(node) {\n var id = cy.collection(node).id();\n return C.get(id);\n },\n betweennessNormalized: function betweennessNormalized(node) {\n if (max == 0) {\n return 0;\n }\n\n var id = cy.collection(node).id();\n return C.get(id) / max;\n }\n }; // alias\n\n ret.betweennessNormalised = ret.betweennessNormalized;\n return ret;\n } // betweennessCentrality\n\n}; // elesfn\n// nice, short mathemathical alias\n\nelesfn$a.bc = elesfn$a.betweennessCentrality;\n\n// Implemented by Zoe Xi @zoexi for GSOC 2016\n/* eslint-disable no-unused-vars */\n\nvar defaults$4 = defaults({\n expandFactor: 2,\n // affects time of computation and cluster granularity to some extent: M * M\n inflateFactor: 2,\n // affects cluster granularity (the greater the value, the more clusters): M(i,j) / E(j)\n multFactor: 1,\n // optional self loops for each node. Use a neutral value to improve cluster computations.\n maxIterations: 20,\n // maximum number of iterations of the MCL algorithm in a single run\n attributes: [// attributes/features used to group nodes, ie. similarity values between nodes\n function (edge) {\n return 1;\n }]\n});\n/* eslint-enable */\n\nvar setOptions = function setOptions(options) {\n return defaults$4(options);\n};\n/* eslint-enable */\n\n\nvar getSimilarity = function getSimilarity(edge, attributes) {\n var total = 0;\n\n for (var i = 0; i < attributes.length; i++) {\n total += attributes[i](edge);\n }\n\n return total;\n};\n\nvar addLoops = function addLoops(M, n, val) {\n for (var i = 0; i < n; i++) {\n M[i * n + i] = val;\n }\n};\n\nvar normalize$1 = function normalize(M, n) {\n var sum;\n\n for (var col = 0; col < n; col++) {\n sum = 0;\n\n for (var row = 0; row < n; row++) {\n sum += M[row * n + col];\n }\n\n for (var _row = 0; _row < n; _row++) {\n M[_row * n + col] = M[_row * n + col] / sum;\n }\n }\n}; // TODO: blocked matrix multiplication?\n\n\nvar mmult = function mmult(A, B, n) {\n var C = new Array(n * n);\n\n for (var i = 0; i < n; i++) {\n for (var j = 0; j < n; j++) {\n C[i * n + j] = 0;\n }\n\n for (var k = 0; k < n; k++) {\n for (var _j = 0; _j < n; _j++) {\n C[i * n + _j] += A[i * n + k] * B[k * n + _j];\n }\n }\n }\n\n return C;\n};\n\nvar expand = function expand(M, n, expandFactor\n/** power **/\n) {\n var _M = M.slice(0);\n\n for (var p = 1; p < expandFactor; p++) {\n M = mmult(M, _M, n);\n }\n\n return M;\n};\n\nvar inflate = function inflate(M, n, inflateFactor\n/** r **/\n) {\n var _M = new Array(n * n); // M(i,j) ^ inflatePower\n\n\n for (var i = 0; i < n * n; i++) {\n _M[i] = Math.pow(M[i], inflateFactor);\n }\n\n normalize$1(_M, n);\n return _M;\n};\n\nvar hasConverged = function hasConverged(M, _M, n2, roundFactor) {\n // Check that both matrices have the same elements (i,j)\n for (var i = 0; i < n2; i++) {\n var v1 = Math.round(M[i] * Math.pow(10, roundFactor)) / Math.pow(10, roundFactor); // truncate to 'roundFactor' decimal places\n\n var v2 = Math.round(_M[i] * Math.pow(10, roundFactor)) / Math.pow(10, roundFactor);\n\n if (v1 !== v2) {\n return false;\n }\n }\n\n return true;\n};\n\nvar assign = function assign(M, n, nodes, cy) {\n var clusters = [];\n\n for (var i = 0; i < n; i++) {\n var cluster = [];\n\n for (var j = 0; j < n; j++) {\n // Row-wise attractors and elements that they attract belong in same cluster\n if (Math.round(M[i * n + j] * 1000) / 1000 > 0) {\n cluster.push(nodes[j]);\n }\n }\n\n if (cluster.length !== 0) {\n clusters.push(cy.collection(cluster));\n }\n }\n\n return clusters;\n};\n\nvar isDuplicate = function isDuplicate(c1, c2) {\n for (var i = 0; i < c1.length; i++) {\n if (!c2[i] || c1[i].id() !== c2[i].id()) {\n return false;\n }\n }\n\n return true;\n};\n\nvar removeDuplicates = function removeDuplicates(clusters) {\n for (var i = 0; i < clusters.length; i++) {\n for (var j = 0; j < clusters.length; j++) {\n if (i != j && isDuplicate(clusters[i], clusters[j])) {\n clusters.splice(j, 1);\n }\n }\n }\n\n return clusters;\n};\n\nvar markovClustering = function markovClustering(options) {\n var nodes = this.nodes();\n var edges = this.edges();\n var cy = this.cy(); // Set parameters of algorithm:\n\n var opts = setOptions(options); // Map each node to its position in node array\n\n var id2position = {};\n\n for (var i = 0; i < nodes.length; i++) {\n id2position[nodes[i].id()] = i;\n } // Generate stochastic matrix M from input graph G (should be symmetric/undirected)\n\n\n var n = nodes.length,\n n2 = n * n;\n\n var M = new Array(n2),\n _M;\n\n for (var _i = 0; _i < n2; _i++) {\n M[_i] = 0;\n }\n\n for (var e = 0; e < edges.length; e++) {\n var edge = edges[e];\n var _i2 = id2position[edge.source().id()];\n var j = id2position[edge.target().id()];\n var sim = getSimilarity(edge, opts.attributes);\n M[_i2 * n + j] += sim; // G should be symmetric and undirected\n\n M[j * n + _i2] += sim;\n } // Begin Markov cluster algorithm\n // Step 1: Add self loops to each node, ie. add multFactor to matrix diagonal\n\n\n addLoops(M, n, opts.multFactor); // Step 2: M = normalize( M );\n\n normalize$1(M, n);\n var isStillMoving = true;\n var iterations = 0;\n\n while (isStillMoving && iterations < opts.maxIterations) {\n isStillMoving = false; // Step 3:\n\n _M = expand(M, n, opts.expandFactor); // Step 4:\n\n M = inflate(_M, n, opts.inflateFactor); // Step 5: check to see if ~steady state has been reached\n\n if (!hasConverged(M, _M, n2, 4)) {\n isStillMoving = true;\n }\n\n iterations++;\n } // Build clusters from matrix\n\n\n var clusters = assign(M, n, nodes, cy); // Remove duplicate clusters due to symmetry of graph and M matrix\n\n clusters = removeDuplicates(clusters);\n return clusters;\n};\n\nvar markovClustering$1 = {\n markovClustering: markovClustering,\n mcl: markovClustering\n};\n\n// Common distance metrics for clustering algorithms\n\nvar identity = function identity(x) {\n return x;\n};\n\nvar absDiff = function absDiff(p, q) {\n return Math.abs(q - p);\n};\n\nvar addAbsDiff = function addAbsDiff(total, p, q) {\n return total + absDiff(p, q);\n};\n\nvar addSquaredDiff = function addSquaredDiff(total, p, q) {\n return total + Math.pow(q - p, 2);\n};\n\nvar sqrt = function sqrt(x) {\n return Math.sqrt(x);\n};\n\nvar maxAbsDiff = function maxAbsDiff(currentMax, p, q) {\n return Math.max(currentMax, absDiff(p, q));\n};\n\nvar getDistance = function getDistance(length, getP, getQ, init, visit) {\n var post = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : identity;\n var ret = init;\n var p, q;\n\n for (var dim = 0; dim < length; dim++) {\n p = getP(dim);\n q = getQ(dim);\n ret = visit(ret, p, q);\n }\n\n return post(ret);\n};\n\nvar distances = {\n euclidean: function euclidean(length, getP, getQ) {\n if (length >= 2) {\n return getDistance(length, getP, getQ, 0, addSquaredDiff, sqrt);\n } else {\n // for single attr case, more efficient to avoid sqrt\n return getDistance(length, getP, getQ, 0, addAbsDiff);\n }\n },\n squaredEuclidean: function squaredEuclidean(length, getP, getQ) {\n return getDistance(length, getP, getQ, 0, addSquaredDiff);\n },\n manhattan: function manhattan(length, getP, getQ) {\n return getDistance(length, getP, getQ, 0, addAbsDiff);\n },\n max: function max(length, getP, getQ) {\n return getDistance(length, getP, getQ, -Infinity, maxAbsDiff);\n }\n}; // in case the user accidentally doesn't use camel case\n\ndistances['squared-euclidean'] = distances['squaredEuclidean'];\ndistances['squaredeuclidean'] = distances['squaredEuclidean'];\nfunction clusteringDistance (method, length, getP, getQ, nodeP, nodeQ) {\n var impl;\n\n if (fn(method)) {\n impl = method;\n } else {\n impl = distances[method] || distances.euclidean;\n }\n\n if (length === 0 && fn(method)) {\n return impl(nodeP, nodeQ);\n } else {\n return impl(length, getP, getQ, nodeP, nodeQ);\n }\n}\n\nvar defaults$5 = defaults({\n k: 2,\n m: 2,\n sensitivityThreshold: 0.0001,\n distance: 'euclidean',\n maxIterations: 10,\n attributes: [],\n testMode: false,\n testCentroids: null\n});\n\nvar setOptions$1 = function setOptions(options) {\n return defaults$5(options);\n};\n/* eslint-enable */\n\n\nvar getDist = function getDist(type, node, centroid, attributes, mode) {\n var noNodeP = mode !== 'kMedoids';\n var getP = noNodeP ? function (i) {\n return centroid[i];\n } : function (i) {\n return attributes[i](centroid);\n };\n\n var getQ = function getQ(i) {\n return attributes[i](node);\n };\n\n var nodeP = centroid;\n var nodeQ = node;\n return clusteringDistance(type, attributes.length, getP, getQ, nodeP, nodeQ);\n};\n\nvar randomCentroids = function randomCentroids(nodes, k, attributes) {\n var ndim = attributes.length;\n var min = new Array(ndim);\n var max = new Array(ndim);\n var centroids = new Array(k);\n var centroid = null; // Find min, max values for each attribute dimension\n\n for (var i = 0; i < ndim; i++) {\n min[i] = nodes.min(attributes[i]).value;\n max[i] = nodes.max(attributes[i]).value;\n } // Build k centroids, each represented as an n-dim feature vector\n\n\n for (var c = 0; c < k; c++) {\n centroid = [];\n\n for (var _i = 0; _i < ndim; _i++) {\n centroid[_i] = Math.random() * (max[_i] - min[_i]) + min[_i]; // random initial value\n }\n\n centroids[c] = centroid;\n }\n\n return centroids;\n};\n\nvar classify = function classify(node, centroids, distance, attributes, type) {\n var min = Infinity;\n var index = 0;\n\n for (var i = 0; i < centroids.length; i++) {\n var dist = getDist(distance, node, centroids[i], attributes, type);\n\n if (dist < min) {\n min = dist;\n index = i;\n }\n }\n\n return index;\n};\n\nvar buildCluster = function buildCluster(centroid, nodes, assignment) {\n var cluster = [];\n var node = null;\n\n for (var n = 0; n < nodes.length; n++) {\n node = nodes[n];\n\n if (assignment[node.id()] === centroid) {\n //console.log(\"Node \" + node.id() + \" is associated with medoid #: \" + m);\n cluster.push(node);\n }\n }\n\n return cluster;\n};\n\nvar haveValuesConverged = function haveValuesConverged(v1, v2, sensitivityThreshold) {\n return Math.abs(v2 - v1) <= sensitivityThreshold;\n};\n\nvar haveMatricesConverged = function haveMatricesConverged(v1, v2, sensitivityThreshold) {\n for (var i = 0; i < v1.length; i++) {\n for (var j = 0; j < v1[i].length; j++) {\n var diff = Math.abs(v1[i][j] - v2[i][j]);\n\n if (diff > sensitivityThreshold) {\n return false;\n }\n }\n }\n\n return true;\n};\n\nvar seenBefore = function seenBefore(node, medoids, n) {\n for (var i = 0; i < n; i++) {\n if (node === medoids[i]) return true;\n }\n\n return false;\n};\n\nvar randomMedoids = function randomMedoids(nodes, k) {\n var medoids = new Array(k); // For small data sets, the probability of medoid conflict is greater,\n // so we need to check to see if we've already seen or chose this node before.\n\n if (nodes.length < 50) {\n // Randomly select k medoids from the n nodes\n for (var i = 0; i < k; i++) {\n var node = nodes[Math.floor(Math.random() * nodes.length)]; // If we've already chosen this node to be a medoid, don't choose it again (for small data sets).\n // Instead choose a different random node.\n\n while (seenBefore(node, medoids, i)) {\n node = nodes[Math.floor(Math.random() * nodes.length)];\n }\n\n medoids[i] = node;\n }\n } else {\n // Relatively large data set, so pretty safe to not check and just select random nodes\n for (var _i2 = 0; _i2 < k; _i2++) {\n medoids[_i2] = nodes[Math.floor(Math.random() * nodes.length)];\n }\n }\n\n return medoids;\n};\n\nvar findCost = function findCost(potentialNewMedoid, cluster, attributes) {\n var cost = 0;\n\n for (var n = 0; n < cluster.length; n++) {\n cost += getDist('manhattan', cluster[n], potentialNewMedoid, attributes, 'kMedoids');\n }\n\n return cost;\n};\n\nvar kMeans = function kMeans(options) {\n var cy = this.cy();\n var nodes = this.nodes();\n var node = null; // Set parameters of algorithm: # of clusters, distance metric, etc.\n\n var opts = setOptions$1(options); // Begin k-means algorithm\n\n var clusters = new Array(opts.k);\n var assignment = {};\n var centroids; // Step 1: Initialize centroid positions\n\n if (opts.testMode) {\n if (typeof opts.testCentroids === 'number') {\n // TODO: implement a seeded random number generator.\n var seed = opts.testCentroids;\n centroids = randomCentroids(nodes, opts.k, opts.attributes, seed);\n } else if (_typeof(opts.testCentroids) === 'object') {\n centroids = opts.testCentroids;\n } else {\n centroids = randomCentroids(nodes, opts.k, opts.attributes);\n }\n } else {\n centroids = randomCentroids(nodes, opts.k, opts.attributes);\n }\n\n var isStillMoving = true;\n var iterations = 0;\n\n while (isStillMoving && iterations < opts.maxIterations) {\n // Step 2: Assign nodes to the nearest centroid\n for (var n = 0; n < nodes.length; n++) {\n node = nodes[n]; // Determine which cluster this node belongs to: node id => cluster #\n\n assignment[node.id()] = classify(node, centroids, opts.distance, opts.attributes, 'kMeans');\n } // Step 3: For each of the k clusters, update its centroid\n\n\n isStillMoving = false;\n\n for (var c = 0; c < opts.k; c++) {\n // Get all nodes that belong to this cluster\n var cluster = buildCluster(c, nodes, assignment);\n\n if (cluster.length === 0) {\n // If cluster is empty, break out early & move to next cluster\n continue;\n } // Update centroids by calculating avg of all nodes within the cluster.\n\n\n var ndim = opts.attributes.length;\n var centroid = centroids[c]; // [ dim_1, dim_2, dim_3, ... , dim_n ]\n\n var newCentroid = new Array(ndim);\n var sum = new Array(ndim);\n\n for (var d = 0; d < ndim; d++) {\n sum[d] = 0.0;\n\n for (var i = 0; i < cluster.length; i++) {\n node = cluster[i];\n sum[d] += opts.attributes[d](node);\n }\n\n newCentroid[d] = sum[d] / cluster.length; // Check to see if algorithm has converged, i.e. when centroids no longer change\n\n if (!haveValuesConverged(newCentroid[d], centroid[d], opts.sensitivityThreshold)) {\n isStillMoving = true;\n }\n }\n\n centroids[c] = newCentroid;\n clusters[c] = cy.collection(cluster);\n }\n\n iterations++;\n }\n\n return clusters;\n};\n\nvar kMedoids = function kMedoids(options) {\n var cy = this.cy();\n var nodes = this.nodes();\n var node = null;\n var opts = setOptions$1(options); // Begin k-medoids algorithm\n\n var clusters = new Array(opts.k);\n var medoids;\n var assignment = {};\n var curCost;\n var minCosts = new Array(opts.k); // minimum cost configuration for each cluster\n // Step 1: Initialize k medoids\n\n if (opts.testMode) {\n if (typeof opts.testCentroids === 'number') ; else if (_typeof(opts.testCentroids) === 'object') {\n medoids = opts.testCentroids;\n } else {\n medoids = randomMedoids(nodes, opts.k);\n }\n } else {\n medoids = randomMedoids(nodes, opts.k);\n }\n\n var isStillMoving = true;\n var iterations = 0;\n\n while (isStillMoving && iterations < opts.maxIterations) {\n // Step 2: Assign nodes to the nearest medoid\n for (var n = 0; n < nodes.length; n++) {\n node = nodes[n]; // Determine which cluster this node belongs to: node id => cluster #\n\n assignment[node.id()] = classify(node, medoids, opts.distance, opts.attributes, 'kMedoids');\n }\n\n isStillMoving = false; // Step 3: For each medoid m, and for each node assciated with mediod m,\n // select the node with the lowest configuration cost as new medoid.\n\n for (var m = 0; m < medoids.length; m++) {\n // Get all nodes that belong to this medoid\n var cluster = buildCluster(m, nodes, assignment);\n\n if (cluster.length === 0) {\n // If cluster is empty, break out early & move to next cluster\n continue;\n }\n\n minCosts[m] = findCost(medoids[m], cluster, opts.attributes); // original cost\n // Select different medoid if its configuration has the lowest cost\n\n for (var _n = 0; _n < cluster.length; _n++) {\n curCost = findCost(cluster[_n], cluster, opts.attributes);\n\n if (curCost < minCosts[m]) {\n minCosts[m] = curCost;\n medoids[m] = cluster[_n];\n isStillMoving = true;\n }\n }\n\n clusters[m] = cy.collection(cluster);\n }\n\n iterations++;\n }\n\n return clusters;\n};\n\nvar updateCentroids = function updateCentroids(centroids, nodes, U, weight, opts) {\n var numerator, denominator;\n\n for (var n = 0; n < nodes.length; n++) {\n for (var c = 0; c < centroids.length; c++) {\n weight[n][c] = Math.pow(U[n][c], opts.m);\n }\n }\n\n for (var _c = 0; _c < centroids.length; _c++) {\n for (var dim = 0; dim < opts.attributes.length; dim++) {\n numerator = 0;\n denominator = 0;\n\n for (var _n2 = 0; _n2 < nodes.length; _n2++) {\n numerator += weight[_n2][_c] * opts.attributes[dim](nodes[_n2]);\n denominator += weight[_n2][_c];\n }\n\n centroids[_c][dim] = numerator / denominator;\n }\n }\n};\n\nvar updateMembership = function updateMembership(U, _U, centroids, nodes, opts) {\n // Save previous step\n for (var i = 0; i < U.length; i++) {\n _U[i] = U[i].slice();\n }\n\n var sum, numerator, denominator;\n var pow = 2 / (opts.m - 1);\n\n for (var c = 0; c < centroids.length; c++) {\n for (var n = 0; n < nodes.length; n++) {\n sum = 0;\n\n for (var k = 0; k < centroids.length; k++) {\n // against all other centroids\n numerator = getDist(opts.distance, nodes[n], centroids[c], opts.attributes, 'cmeans');\n denominator = getDist(opts.distance, nodes[n], centroids[k], opts.attributes, 'cmeans');\n sum += Math.pow(numerator / denominator, pow);\n }\n\n U[n][c] = 1 / sum;\n }\n }\n};\n\nvar assign$1 = function assign(nodes, U, opts, cy) {\n var clusters = new Array(opts.k);\n\n for (var c = 0; c < clusters.length; c++) {\n clusters[c] = [];\n }\n\n var max;\n var index;\n\n for (var n = 0; n < U.length; n++) {\n // for each node (U is N x C matrix)\n max = -Infinity;\n index = -1; // Determine which cluster the node is most likely to belong in\n\n for (var _c2 = 0; _c2 < U[0].length; _c2++) {\n if (U[n][_c2] > max) {\n max = U[n][_c2];\n index = _c2;\n }\n }\n\n clusters[index].push(nodes[n]);\n } // Turn every array into a collection of nodes\n\n\n for (var _c3 = 0; _c3 < clusters.length; _c3++) {\n clusters[_c3] = cy.collection(clusters[_c3]);\n }\n\n return clusters;\n};\n\nvar fuzzyCMeans = function fuzzyCMeans(options) {\n var cy = this.cy();\n var nodes = this.nodes();\n var opts = setOptions$1(options); // Begin fuzzy c-means algorithm\n\n var clusters;\n var centroids;\n var U;\n\n var _U;\n\n var weight; // Step 1: Initialize letiables.\n\n _U = new Array(nodes.length);\n\n for (var i = 0; i < nodes.length; i++) {\n // N x C matrix\n _U[i] = new Array(opts.k);\n }\n\n U = new Array(nodes.length);\n\n for (var _i3 = 0; _i3 < nodes.length; _i3++) {\n // N x C matrix\n U[_i3] = new Array(opts.k);\n }\n\n for (var _i4 = 0; _i4 < nodes.length; _i4++) {\n var total = 0;\n\n for (var j = 0; j < opts.k; j++) {\n U[_i4][j] = Math.random();\n total += U[_i4][j];\n }\n\n for (var _j = 0; _j < opts.k; _j++) {\n U[_i4][_j] = U[_i4][_j] / total;\n }\n }\n\n centroids = new Array(opts.k);\n\n for (var _i5 = 0; _i5 < opts.k; _i5++) {\n centroids[_i5] = new Array(opts.attributes.length);\n }\n\n weight = new Array(nodes.length);\n\n for (var _i6 = 0; _i6 < nodes.length; _i6++) {\n // N x C matrix\n weight[_i6] = new Array(opts.k);\n } // end init FCM\n\n\n var isStillMoving = true;\n var iterations = 0;\n\n while (isStillMoving && iterations < opts.maxIterations) {\n isStillMoving = false; // Step 2: Calculate the centroids for each step.\n\n updateCentroids(centroids, nodes, U, weight, opts); // Step 3: Update the partition matrix U.\n\n updateMembership(U, _U, centroids, nodes, opts); // Step 4: Check for convergence.\n\n if (!haveMatricesConverged(U, _U, opts.sensitivityThreshold)) {\n isStillMoving = true;\n }\n\n iterations++;\n } // Assign nodes to clusters with highest probability.\n\n\n clusters = assign$1(nodes, U, opts, cy);\n return {\n clusters: clusters,\n degreeOfMembership: U\n };\n};\n\nvar kClustering = {\n kMeans: kMeans,\n kMedoids: kMedoids,\n fuzzyCMeans: fuzzyCMeans,\n fcm: fuzzyCMeans\n};\n\n// Implemented by Zoe Xi @zoexi for GSOC 2016\nvar defaults$6 = defaults({\n distance: 'euclidean',\n // distance metric to compare nodes\n linkage: 'min',\n // linkage criterion : how to determine the distance between clusters of nodes\n mode: 'threshold',\n // mode:'threshold' => clusters must be threshold distance apart\n threshold: Infinity,\n // the distance threshold\n // mode:'dendrogram' => the nodes are organised as leaves in a tree (siblings are close), merging makes clusters\n addDendrogram: false,\n // whether to add the dendrogram to the graph for viz\n dendrogramDepth: 0,\n // depth at which dendrogram branches are merged into the returned clusters\n attributes: [] // array of attr functions\n\n});\nvar linkageAliases = {\n 'single': 'min',\n 'complete': 'max'\n};\n\nvar setOptions$2 = function setOptions(options) {\n var opts = defaults$6(options);\n var preferredAlias = linkageAliases[opts.linkage];\n\n if (preferredAlias != null) {\n opts.linkage = preferredAlias;\n }\n\n return opts;\n};\n\nvar mergeClosest = function mergeClosest(clusters, index, dists, mins, opts) {\n // Find two closest clusters from cached mins\n var minKey = 0;\n var min = Infinity;\n var dist;\n var attrs = opts.attributes;\n\n var getDist = function getDist(n1, n2) {\n return clusteringDistance(opts.distance, attrs.length, function (i) {\n return attrs[i](n1);\n }, function (i) {\n return attrs[i](n2);\n }, n1, n2);\n };\n\n for (var i = 0; i < clusters.length; i++) {\n var key = clusters[i].key;\n var _dist = dists[key][mins[key]];\n\n if (_dist < min) {\n minKey = key;\n min = _dist;\n }\n }\n\n if (opts.mode === 'threshold' && min >= opts.threshold || opts.mode === 'dendrogram' && clusters.length === 1) {\n return false;\n }\n\n var c1 = index[minKey];\n var c2 = index[mins[minKey]];\n var merged; // Merge two closest clusters\n\n if (opts.mode === 'dendrogram') {\n merged = {\n left: c1,\n right: c2,\n key: c1.key\n };\n } else {\n merged = {\n value: c1.value.concat(c2.value),\n key: c1.key\n };\n }\n\n clusters[c1.index] = merged;\n clusters.splice(c2.index, 1);\n index[c1.key] = merged; // Update distances with new merged cluster\n\n for (var _i = 0; _i < clusters.length; _i++) {\n var cur = clusters[_i];\n\n if (c1.key === cur.key) {\n dist = Infinity;\n } else if (opts.linkage === 'min') {\n dist = dists[c1.key][cur.key];\n\n if (dists[c1.key][cur.key] > dists[c2.key][cur.key]) {\n dist = dists[c2.key][cur.key];\n }\n } else if (opts.linkage === 'max') {\n dist = dists[c1.key][cur.key];\n\n if (dists[c1.key][cur.key] < dists[c2.key][cur.key]) {\n dist = dists[c2.key][cur.key];\n }\n } else if (opts.linkage === 'mean') {\n dist = (dists[c1.key][cur.key] * c1.size + dists[c2.key][cur.key] * c2.size) / (c1.size + c2.size);\n } else {\n if (opts.mode === 'dendrogram') dist = getDist(cur.value, c1.value);else dist = getDist(cur.value[0], c1.value[0]);\n }\n\n dists[c1.key][cur.key] = dists[cur.key][c1.key] = dist; // distance matrix is symmetric\n } // Update cached mins\n\n\n for (var _i2 = 0; _i2 < clusters.length; _i2++) {\n var key1 = clusters[_i2].key;\n\n if (mins[key1] === c1.key || mins[key1] === c2.key) {\n var _min = key1;\n\n for (var j = 0; j < clusters.length; j++) {\n var key2 = clusters[j].key;\n\n if (dists[key1][key2] < dists[key1][_min]) {\n _min = key2;\n }\n }\n\n mins[key1] = _min;\n }\n\n clusters[_i2].index = _i2;\n } // Clean up meta data used for clustering\n\n\n c1.key = c2.key = c1.index = c2.index = null;\n return true;\n};\n\nvar getAllChildren = function getAllChildren(root, arr, cy) {\n if (!root) return;\n\n if (root.value) {\n arr.push(root.value);\n } else {\n if (root.left) getAllChildren(root.left, arr, cy);\n if (root.right) getAllChildren(root.right, arr, cy);\n }\n};\n\nvar buildDendrogram = function buildDendrogram(root, cy) {\n if (!root) return '';\n\n if (root.left && root.right) {\n var leftStr = buildDendrogram(root.left, cy);\n var rightStr = buildDendrogram(root.right, cy);\n var node = cy.add({\n group: 'nodes',\n data: {\n id: leftStr + ',' + rightStr\n }\n });\n cy.add({\n group: 'edges',\n data: {\n source: leftStr,\n target: node.id()\n }\n });\n cy.add({\n group: 'edges',\n data: {\n source: rightStr,\n target: node.id()\n }\n });\n return node.id();\n } else if (root.value) {\n return root.value.id();\n }\n};\n\nvar buildClustersFromTree = function buildClustersFromTree(root, k, cy) {\n if (!root) return [];\n var left = [],\n right = [],\n leaves = [];\n\n if (k === 0) {\n // don't cut tree, simply return all nodes as 1 single cluster\n if (root.left) getAllChildren(root.left, left, cy);\n if (root.right) getAllChildren(root.right, right, cy);\n leaves = left.concat(right);\n return [cy.collection(leaves)];\n } else if (k === 1) {\n // cut at root\n if (root.value) {\n // leaf node\n return [cy.collection(root.value)];\n } else {\n if (root.left) getAllChildren(root.left, left, cy);\n if (root.right) getAllChildren(root.right, right, cy);\n return [cy.collection(left), cy.collection(right)];\n }\n } else {\n if (root.value) {\n return [cy.collection(root.value)];\n } else {\n if (root.left) left = buildClustersFromTree(root.left, k - 1, cy);\n if (root.right) right = buildClustersFromTree(root.right, k - 1, cy);\n return left.concat(right);\n }\n }\n};\n/* eslint-enable */\n\n\nvar hierarchicalClustering = function hierarchicalClustering(options) {\n var cy = this.cy();\n var nodes = this.nodes(); // Set parameters of algorithm: linkage type, distance metric, etc.\n\n var opts = setOptions$2(options);\n var attrs = opts.attributes;\n\n var getDist = function getDist(n1, n2) {\n return clusteringDistance(opts.distance, attrs.length, function (i) {\n return attrs[i](n1);\n }, function (i) {\n return attrs[i](n2);\n }, n1, n2);\n }; // Begin hierarchical algorithm\n\n\n var clusters = [];\n var dists = []; // distances between each pair of clusters\n\n var mins = []; // closest cluster for each cluster\n\n var index = []; // hash of all clusters by key\n // In agglomerative (bottom-up) clustering, each node starts as its own cluster\n\n for (var n = 0; n < nodes.length; n++) {\n var cluster = {\n value: opts.mode === 'dendrogram' ? nodes[n] : [nodes[n]],\n key: n,\n index: n\n };\n clusters[n] = cluster;\n index[n] = cluster;\n dists[n] = [];\n mins[n] = 0;\n } // Calculate the distance between each pair of clusters\n\n\n for (var i = 0; i < clusters.length; i++) {\n for (var j = 0; j <= i; j++) {\n var dist = void 0;\n\n if (opts.mode === 'dendrogram') {\n // modes store cluster values differently\n dist = i === j ? Infinity : getDist(clusters[i].value, clusters[j].value);\n } else {\n dist = i === j ? Infinity : getDist(clusters[i].value[0], clusters[j].value[0]);\n }\n\n dists[i][j] = dist;\n dists[j][i] = dist;\n\n if (dist < dists[i][mins[i]]) {\n mins[i] = j; // Cache mins: closest cluster to cluster i is cluster j\n }\n }\n } // Find the closest pair of clusters and merge them into a single cluster.\n // Update distances between new cluster and each of the old clusters, and loop until threshold reached.\n\n\n var merged = mergeClosest(clusters, index, dists, mins, opts);\n\n while (merged) {\n merged = mergeClosest(clusters, index, dists, mins, opts);\n }\n\n var retClusters; // Dendrogram mode builds the hierarchy and adds intermediary nodes + edges\n // in addition to returning the clusters.\n\n if (opts.mode === 'dendrogram') {\n retClusters = buildClustersFromTree(clusters[0], opts.dendrogramDepth, cy);\n if (opts.addDendrogram) buildDendrogram(clusters[0], cy);\n } else {\n // Regular mode simply returns the clusters\n retClusters = new Array(clusters.length);\n clusters.forEach(function (cluster, i) {\n // Clean up meta data used for clustering\n cluster.key = cluster.index = null;\n retClusters[i] = cy.collection(cluster.value);\n });\n }\n\n return retClusters;\n};\n\nvar hierarchicalClustering$1 = {\n hierarchicalClustering: hierarchicalClustering,\n hca: hierarchicalClustering\n};\n\n// Implemented by Zoe Xi @zoexi for GSOC 2016\nvar defaults$7 = defaults({\n distance: 'euclidean',\n // distance metric to compare attributes between two nodes\n preference: 'median',\n // suitability of a data point to serve as an exemplar\n damping: 0.8,\n // damping factor between [0.5, 1)\n maxIterations: 1000,\n // max number of iterations to run\n minIterations: 100,\n // min number of iterations to run in order for clustering to stop\n attributes: [// functions to quantify the similarity between any two points\n // e.g. node => node.data('weight')\n ]\n});\n\nvar setOptions$3 = function setOptions(options) {\n var dmp = options.damping;\n var pref = options.preference;\n\n if (!(0.5 <= dmp && dmp < 1)) {\n error(\"Damping must range on [0.5, 1). Got: \".concat(dmp));\n }\n\n var validPrefs = ['median', 'mean', 'min', 'max'];\n\n if (!(validPrefs.some(function (v) {\n return v === pref;\n }) || number(pref))) {\n error(\"Preference must be one of [\".concat(validPrefs.map(function (p) {\n return \"'\".concat(p, \"'\");\n }).join(', '), \"] or a number. Got: \").concat(pref));\n }\n\n return defaults$7(options);\n};\n/* eslint-enable */\n\n\nvar getSimilarity$1 = function getSimilarity(type, n1, n2, attributes) {\n var attr = function attr(n, i) {\n return attributes[i](n);\n }; // nb negative because similarity should have an inverse relationship to distance\n\n\n return -clusteringDistance(type, attributes.length, function (i) {\n return attr(n1, i);\n }, function (i) {\n return attr(n2, i);\n }, n1, n2);\n};\n\nvar getPreference = function getPreference(S, preference) {\n // larger preference = greater # of clusters\n var p = null;\n\n if (preference === 'median') {\n p = median(S);\n } else if (preference === 'mean') {\n p = mean(S);\n } else if (preference === 'min') {\n p = min(S);\n } else if (preference === 'max') {\n p = max(S);\n } else {\n // Custom preference number, as set by user\n p = preference;\n }\n\n return p;\n};\n\nvar findExemplars = function findExemplars(n, R, A) {\n var indices = [];\n\n for (var i = 0; i < n; i++) {\n if (R[i * n + i] + A[i * n + i] > 0) {\n indices.push(i);\n }\n }\n\n return indices;\n};\n\nvar assignClusters = function assignClusters(n, S, exemplars) {\n var clusters = [];\n\n for (var i = 0; i < n; i++) {\n var index = -1;\n var max = -Infinity;\n\n for (var ei = 0; ei < exemplars.length; ei++) {\n var e = exemplars[ei];\n\n if (S[i * n + e] > max) {\n index = e;\n max = S[i * n + e];\n }\n }\n\n if (index > 0) {\n clusters.push(index);\n }\n }\n\n for (var _ei = 0; _ei < exemplars.length; _ei++) {\n clusters[exemplars[_ei]] = exemplars[_ei];\n }\n\n return clusters;\n};\n\nvar assign$2 = function assign(n, S, exemplars) {\n var clusters = assignClusters(n, S, exemplars);\n\n for (var ei = 0; ei < exemplars.length; ei++) {\n var ii = [];\n\n for (var c = 0; c < clusters.length; c++) {\n if (clusters[c] === exemplars[ei]) {\n ii.push(c);\n }\n }\n\n var maxI = -1;\n var maxSum = -Infinity;\n\n for (var i = 0; i < ii.length; i++) {\n var sum = 0;\n\n for (var j = 0; j < ii.length; j++) {\n sum += S[ii[j] * n + ii[i]];\n }\n\n if (sum > maxSum) {\n maxI = i;\n maxSum = sum;\n }\n }\n\n exemplars[ei] = ii[maxI];\n }\n\n clusters = assignClusters(n, S, exemplars);\n return clusters;\n};\n\nvar affinityPropagation = function affinityPropagation(options) {\n var cy = this.cy();\n var nodes = this.nodes();\n var opts = setOptions$3(options); // Map each node to its position in node array\n\n var id2position = {};\n\n for (var i = 0; i < nodes.length; i++) {\n id2position[nodes[i].id()] = i;\n } // Begin affinity propagation algorithm\n\n\n var n; // number of data points\n\n var n2; // size of matrices\n\n var S; // similarity matrix (1D array)\n\n var p; // preference/suitability of a data point to serve as an exemplar\n\n var R; // responsibility matrix (1D array)\n\n var A; // availability matrix (1D array)\n\n n = nodes.length;\n n2 = n * n; // Initialize and build S similarity matrix\n\n S = new Array(n2);\n\n for (var _i = 0; _i < n2; _i++) {\n S[_i] = -Infinity; // for cases where two data points shouldn't be linked together\n }\n\n for (var _i2 = 0; _i2 < n; _i2++) {\n for (var j = 0; j < n; j++) {\n if (_i2 !== j) {\n S[_i2 * n + j] = getSimilarity$1(opts.distance, nodes[_i2], nodes[j], opts.attributes);\n }\n }\n } // Place preferences on the diagonal of S\n\n\n p = getPreference(S, opts.preference);\n\n for (var _i3 = 0; _i3 < n; _i3++) {\n S[_i3 * n + _i3] = p;\n } // Initialize R responsibility matrix\n\n\n R = new Array(n2);\n\n for (var _i4 = 0; _i4 < n2; _i4++) {\n R[_i4] = 0.0;\n } // Initialize A availability matrix\n\n\n A = new Array(n2);\n\n for (var _i5 = 0; _i5 < n2; _i5++) {\n A[_i5] = 0.0;\n }\n\n var old = new Array(n);\n var Rp = new Array(n);\n var se = new Array(n);\n\n for (var _i6 = 0; _i6 < n; _i6++) {\n old[_i6] = 0.0;\n Rp[_i6] = 0.0;\n se[_i6] = 0;\n }\n\n var e = new Array(n * opts.minIterations);\n\n for (var _i7 = 0; _i7 < e.length; _i7++) {\n e[_i7] = 0;\n }\n\n var iter;\n\n for (iter = 0; iter < opts.maxIterations; iter++) {\n // main algorithmic loop\n // Update R responsibility matrix\n for (var _i8 = 0; _i8 < n; _i8++) {\n var max = -Infinity,\n max2 = -Infinity,\n maxI = -1,\n AS = 0.0;\n\n for (var _j = 0; _j < n; _j++) {\n old[_j] = R[_i8 * n + _j];\n AS = A[_i8 * n + _j] + S[_i8 * n + _j];\n\n if (AS >= max) {\n max2 = max;\n max = AS;\n maxI = _j;\n } else if (AS > max2) {\n max2 = AS;\n }\n }\n\n for (var _j2 = 0; _j2 < n; _j2++) {\n R[_i8 * n + _j2] = (1 - opts.damping) * (S[_i8 * n + _j2] - max) + opts.damping * old[_j2];\n }\n\n R[_i8 * n + maxI] = (1 - opts.damping) * (S[_i8 * n + maxI] - max2) + opts.damping * old[maxI];\n } // Update A availability matrix\n\n\n for (var _i9 = 0; _i9 < n; _i9++) {\n var sum = 0;\n\n for (var _j3 = 0; _j3 < n; _j3++) {\n old[_j3] = A[_j3 * n + _i9];\n Rp[_j3] = Math.max(0, R[_j3 * n + _i9]);\n sum += Rp[_j3];\n }\n\n sum -= Rp[_i9];\n Rp[_i9] = R[_i9 * n + _i9];\n sum += Rp[_i9];\n\n for (var _j4 = 0; _j4 < n; _j4++) {\n A[_j4 * n + _i9] = (1 - opts.damping) * Math.min(0, sum - Rp[_j4]) + opts.damping * old[_j4];\n }\n\n A[_i9 * n + _i9] = (1 - opts.damping) * (sum - Rp[_i9]) + opts.damping * old[_i9];\n } // Check for convergence\n\n\n var K = 0;\n\n for (var _i10 = 0; _i10 < n; _i10++) {\n var E = A[_i10 * n + _i10] + R[_i10 * n + _i10] > 0 ? 1 : 0;\n e[iter % opts.minIterations * n + _i10] = E;\n K += E;\n }\n\n if (K > 0 && (iter >= opts.minIterations - 1 || iter == opts.maxIterations - 1)) {\n var _sum = 0;\n\n for (var _i11 = 0; _i11 < n; _i11++) {\n se[_i11] = 0;\n\n for (var _j5 = 0; _j5 < opts.minIterations; _j5++) {\n se[_i11] += e[_j5 * n + _i11];\n }\n\n if (se[_i11] === 0 || se[_i11] === opts.minIterations) {\n _sum++;\n }\n }\n\n if (_sum === n) {\n // then we have convergence\n break;\n }\n }\n } // Identify exemplars (cluster centers)\n\n\n var exemplarsIndices = findExemplars(n, R, A); // Assign nodes to clusters\n\n var clusterIndices = assign$2(n, S, exemplarsIndices, nodes, id2position);\n var clusters = {};\n\n for (var c = 0; c < exemplarsIndices.length; c++) {\n clusters[exemplarsIndices[c]] = [];\n }\n\n for (var _i12 = 0; _i12 < nodes.length; _i12++) {\n var pos = id2position[nodes[_i12].id()];\n\n var clusterIndex = clusterIndices[pos];\n\n if (clusterIndex != null) {\n // the node may have not been assigned a cluster if no valid attributes were specified\n clusters[clusterIndex].push(nodes[_i12]);\n }\n }\n\n var retClusters = new Array(exemplarsIndices.length);\n\n for (var _c = 0; _c < exemplarsIndices.length; _c++) {\n retClusters[_c] = cy.collection(clusters[exemplarsIndices[_c]]);\n }\n\n return retClusters;\n};\n\nvar affinityPropagation$1 = {\n affinityPropagation: affinityPropagation,\n ap: affinityPropagation\n};\n\nvar elesfn$b = {};\n[elesfn, elesfn$1, elesfn$2, elesfn$3, elesfn$4, elesfn$5, elesfn$6, elesfn$7, elesfn$8, elesfn$9, elesfn$a, markovClustering$1, kClustering, hierarchicalClustering$1, affinityPropagation$1].forEach(function (props) {\n extend(elesfn$b, props);\n});\n\n/*!\nEmbeddable Minimum Strictly-Compliant Promises/A+ 1.1.1 Thenable\nCopyright (c) 2013-2014 Ralf S. Engelschall (http://engelschall.com)\nLicensed under The MIT License (http://opensource.org/licenses/MIT)\n*/\n\n/* promise states [Promises/A+ 2.1] */\nvar STATE_PENDING = 0;\n/* [Promises/A+ 2.1.1] */\n\nvar STATE_FULFILLED = 1;\n/* [Promises/A+ 2.1.2] */\n\nvar STATE_REJECTED = 2;\n/* [Promises/A+ 2.1.3] */\n\n/* promise object constructor */\n\nvar api = function api(executor) {\n /* optionally support non-constructor/plain-function call */\n if (!(this instanceof api)) return new api(executor);\n /* initialize object */\n\n this.id = 'Thenable/1.0.7';\n this.state = STATE_PENDING;\n /* initial state */\n\n this.fulfillValue = undefined;\n /* initial value */\n\n /* [Promises/A+ 1.3, 2.1.2.2] */\n\n this.rejectReason = undefined;\n /* initial reason */\n\n /* [Promises/A+ 1.5, 2.1.3.2] */\n\n this.onFulfilled = [];\n /* initial handlers */\n\n this.onRejected = [];\n /* initial handlers */\n\n /* provide optional information-hiding proxy */\n\n this.proxy = {\n then: this.then.bind(this)\n };\n /* support optional executor function */\n\n if (typeof executor === 'function') executor.call(this, this.fulfill.bind(this), this.reject.bind(this));\n};\n/* promise API methods */\n\n\napi.prototype = {\n /* promise resolving methods */\n fulfill: function fulfill(value) {\n return deliver(this, STATE_FULFILLED, 'fulfillValue', value);\n },\n reject: function reject(value) {\n return deliver(this, STATE_REJECTED, 'rejectReason', value);\n },\n\n /* \"The then Method\" [Promises/A+ 1.1, 1.2, 2.2] */\n then: function then(onFulfilled, onRejected) {\n var curr = this;\n var next = new api();\n /* [Promises/A+ 2.2.7] */\n\n curr.onFulfilled.push(resolver(onFulfilled, next, 'fulfill'));\n /* [Promises/A+ 2.2.2/2.2.6] */\n\n curr.onRejected.push(resolver(onRejected, next, 'reject'));\n /* [Promises/A+ 2.2.3/2.2.6] */\n\n execute(curr);\n return next.proxy;\n /* [Promises/A+ 2.2.7, 3.3] */\n }\n};\n/* deliver an action */\n\nvar deliver = function deliver(curr, state, name, value) {\n if (curr.state === STATE_PENDING) {\n curr.state = state;\n /* [Promises/A+ 2.1.2.1, 2.1.3.1] */\n\n curr[name] = value;\n /* [Promises/A+ 2.1.2.2, 2.1.3.2] */\n\n execute(curr);\n }\n\n return curr;\n};\n/* execute all handlers */\n\n\nvar execute = function execute(curr) {\n if (curr.state === STATE_FULFILLED) execute_handlers(curr, 'onFulfilled', curr.fulfillValue);else if (curr.state === STATE_REJECTED) execute_handlers(curr, 'onRejected', curr.rejectReason);\n};\n/* execute particular set of handlers */\n\n\nvar execute_handlers = function execute_handlers(curr, name, value) {\n /* global setImmediate: true */\n\n /* global setTimeout: true */\n\n /* short-circuit processing */\n if (curr[name].length === 0) return;\n /* iterate over all handlers, exactly once */\n\n var handlers = curr[name];\n curr[name] = [];\n /* [Promises/A+ 2.2.2.3, 2.2.3.3] */\n\n var func = function func() {\n for (var i = 0; i < handlers.length; i++) {\n handlers[i](value);\n }\n /* [Promises/A+ 2.2.5] */\n\n };\n /* execute procedure asynchronously */\n\n /* [Promises/A+ 2.2.4, 3.1] */\n\n\n if (typeof setImmediate === 'function') setImmediate(func);else setTimeout(func, 0);\n};\n/* generate a resolver function */\n\n\nvar resolver = function resolver(cb, next, method) {\n return function (value) {\n if (typeof cb !== 'function')\n /* [Promises/A+ 2.2.1, 2.2.7.3, 2.2.7.4] */\n next[method].call(next, value);\n /* [Promises/A+ 2.2.7.3, 2.2.7.4] */\n else {\n var result;\n\n try {\n result = cb(value);\n }\n /* [Promises/A+ 2.2.2.1, 2.2.3.1, 2.2.5, 3.2] */\n catch (e) {\n next.reject(e);\n /* [Promises/A+ 2.2.7.2] */\n\n return;\n }\n\n resolve(next, result);\n /* [Promises/A+ 2.2.7.1] */\n }\n };\n};\n/* \"Promise Resolution Procedure\" */\n\n/* [Promises/A+ 2.3] */\n\n\nvar resolve = function resolve(promise, x) {\n /* sanity check arguments */\n\n /* [Promises/A+ 2.3.1] */\n if (promise === x || promise.proxy === x) {\n promise.reject(new TypeError('cannot resolve promise with itself'));\n return;\n }\n /* surgically check for a \"then\" method\n (mainly to just call the \"getter\" of \"then\" only once) */\n\n\n var then;\n\n if (_typeof(x) === 'object' && x !== null || typeof x === 'function') {\n try {\n then = x.then;\n }\n /* [Promises/A+ 2.3.3.1, 3.5] */\n catch (e) {\n promise.reject(e);\n /* [Promises/A+ 2.3.3.2] */\n\n return;\n }\n }\n /* handle own Thenables [Promises/A+ 2.3.2]\n and similar \"thenables\" [Promises/A+ 2.3.3] */\n\n\n if (typeof then === 'function') {\n var resolved = false;\n\n try {\n /* call retrieved \"then\" method */\n\n /* [Promises/A+ 2.3.3.3] */\n then.call(x,\n /* resolvePromise */\n\n /* [Promises/A+ 2.3.3.3.1] */\n function (y) {\n if (resolved) return;\n resolved = true;\n /* [Promises/A+ 2.3.3.3.3] */\n\n if (y === x)\n /* [Promises/A+ 3.6] */\n promise.reject(new TypeError('circular thenable chain'));else resolve(promise, y);\n },\n /* rejectPromise */\n\n /* [Promises/A+ 2.3.3.3.2] */\n function (r) {\n if (resolved) return;\n resolved = true;\n /* [Promises/A+ 2.3.3.3.3] */\n\n promise.reject(r);\n });\n } catch (e) {\n if (!resolved)\n /* [Promises/A+ 2.3.3.3.3] */\n promise.reject(e);\n /* [Promises/A+ 2.3.3.3.4] */\n }\n\n return;\n }\n /* handle other values */\n\n\n promise.fulfill(x);\n /* [Promises/A+ 2.3.4, 2.3.3.4] */\n}; // so we always have Promise.all()\n\n\napi.all = function (ps) {\n return new api(function (resolveAll, rejectAll) {\n var vals = new Array(ps.length);\n var doneCount = 0;\n\n var fulfill = function fulfill(i, val) {\n vals[i] = val;\n doneCount++;\n\n if (doneCount === ps.length) {\n resolveAll(vals);\n }\n };\n\n for (var i = 0; i < ps.length; i++) {\n (function (i) {\n var p = ps[i];\n var isPromise = p != null && p.then != null;\n\n if (isPromise) {\n p.then(function (val) {\n fulfill(i, val);\n }, function (err) {\n rejectAll(err);\n });\n } else {\n var val = p;\n fulfill(i, val);\n }\n })(i);\n }\n });\n};\n\napi.resolve = function (val) {\n return new api(function (resolve, reject) {\n resolve(val);\n });\n};\n\napi.reject = function (val) {\n return new api(function (resolve, reject) {\n reject(val);\n });\n};\n\nvar Promise$1 = typeof Promise !== 'undefined' ? Promise : api; // eslint-disable-line no-undef\n\nvar Animation = function Animation(target, opts, opts2) {\n var isCore = core(target);\n var isEle = !isCore;\n\n var _p = this._private = extend({\n duration: 1000\n }, opts, opts2);\n\n _p.target = target;\n _p.style = _p.style || _p.css;\n _p.started = false;\n _p.playing = false;\n _p.hooked = false;\n _p.applying = false;\n _p.progress = 0;\n _p.completes = [];\n _p.frames = [];\n\n if (_p.complete && fn(_p.complete)) {\n _p.completes.push(_p.complete);\n }\n\n if (isEle) {\n var pos = target.position();\n _p.startPosition = _p.startPosition || {\n x: pos.x,\n y: pos.y\n };\n _p.startStyle = _p.startStyle || target.cy().style().getAnimationStartStyle(target, _p.style);\n }\n\n if (isCore) {\n var pan = target.pan();\n _p.startPan = {\n x: pan.x,\n y: pan.y\n };\n _p.startZoom = target.zoom();\n } // for future timeline/animations impl\n\n\n this.length = 1;\n this[0] = this;\n};\n\nvar anifn = Animation.prototype;\nextend(anifn, {\n instanceString: function instanceString() {\n return 'animation';\n },\n hook: function hook() {\n var _p = this._private;\n\n if (!_p.hooked) {\n // add to target's animation queue\n var q;\n var tAni = _p.target._private.animation;\n\n if (_p.queue) {\n q = tAni.queue;\n } else {\n q = tAni.current;\n }\n\n q.push(this); // add to the animation loop pool\n\n if (elementOrCollection(_p.target)) {\n _p.target.cy().addToAnimationPool(_p.target);\n }\n\n _p.hooked = true;\n }\n\n return this;\n },\n play: function play() {\n var _p = this._private; // autorewind\n\n if (_p.progress === 1) {\n _p.progress = 0;\n }\n\n _p.playing = true;\n _p.started = false; // needs to be started by animation loop\n\n _p.stopped = false;\n this.hook(); // the animation loop will start the animation...\n\n return this;\n },\n playing: function playing() {\n return this._private.playing;\n },\n apply: function apply() {\n var _p = this._private;\n _p.applying = true;\n _p.started = false; // needs to be started by animation loop\n\n _p.stopped = false;\n this.hook(); // the animation loop will apply the animation at this progress\n\n return this;\n },\n applying: function applying() {\n return this._private.applying;\n },\n pause: function pause() {\n var _p = this._private;\n _p.playing = false;\n _p.started = false;\n return this;\n },\n stop: function stop() {\n var _p = this._private;\n _p.playing = false;\n _p.started = false;\n _p.stopped = true; // to be removed from animation queues\n\n return this;\n },\n rewind: function rewind() {\n return this.progress(0);\n },\n fastforward: function fastforward() {\n return this.progress(1);\n },\n time: function time(t) {\n var _p = this._private;\n\n if (t === undefined) {\n return _p.progress * _p.duration;\n } else {\n return this.progress(t / _p.duration);\n }\n },\n progress: function progress(p) {\n var _p = this._private;\n var wasPlaying = _p.playing;\n\n if (p === undefined) {\n return _p.progress;\n } else {\n if (wasPlaying) {\n this.pause();\n }\n\n _p.progress = p;\n _p.started = false;\n\n if (wasPlaying) {\n this.play();\n }\n }\n\n return this;\n },\n completed: function completed() {\n return this._private.progress === 1;\n },\n reverse: function reverse() {\n var _p = this._private;\n var wasPlaying = _p.playing;\n\n if (wasPlaying) {\n this.pause();\n }\n\n _p.progress = 1 - _p.progress;\n _p.started = false;\n\n var swap = function swap(a, b) {\n var _pa = _p[a];\n\n if (_pa == null) {\n return;\n }\n\n _p[a] = _p[b];\n _p[b] = _pa;\n };\n\n swap('zoom', 'startZoom');\n swap('pan', 'startPan');\n swap('position', 'startPosition'); // swap styles\n\n if (_p.style) {\n for (var i = 0; i < _p.style.length; i++) {\n var prop = _p.style[i];\n var name = prop.name;\n var startStyleProp = _p.startStyle[name];\n _p.startStyle[name] = prop;\n _p.style[i] = startStyleProp;\n }\n }\n\n if (wasPlaying) {\n this.play();\n }\n\n return this;\n },\n promise: function promise(type) {\n var _p = this._private;\n var arr;\n\n switch (type) {\n case 'frame':\n arr = _p.frames;\n break;\n\n default:\n case 'complete':\n case 'completed':\n arr = _p.completes;\n }\n\n return new Promise$1(function (resolve, reject) {\n arr.push(function () {\n resolve();\n });\n });\n }\n});\nanifn.complete = anifn.completed;\nanifn.run = anifn.play;\nanifn.running = anifn.playing;\n\nvar define = {\n animated: function animated() {\n return function animatedImpl() {\n var self = this;\n var selfIsArrayLike = self.length !== undefined;\n var all = selfIsArrayLike ? self : [self]; // put in array if not array-like\n\n var cy = this._private.cy || this;\n\n if (!cy.styleEnabled()) {\n return false;\n }\n\n var ele = all[0];\n\n if (ele) {\n return ele._private.animation.current.length > 0;\n }\n };\n },\n // animated\n clearQueue: function clearQueue() {\n return function clearQueueImpl() {\n var self = this;\n var selfIsArrayLike = self.length !== undefined;\n var all = selfIsArrayLike ? self : [self]; // put in array if not array-like\n\n var cy = this._private.cy || this;\n\n if (!cy.styleEnabled()) {\n return this;\n }\n\n for (var i = 0; i < all.length; i++) {\n var ele = all[i];\n ele._private.animation.queue = [];\n }\n\n return this;\n };\n },\n // clearQueue\n delay: function delay() {\n return function delayImpl(time, complete) {\n var cy = this._private.cy || this;\n\n if (!cy.styleEnabled()) {\n return this;\n }\n\n return this.animate({\n delay: time,\n duration: time,\n complete: complete\n });\n };\n },\n // delay\n delayAnimation: function delayAnimation() {\n return function delayAnimationImpl(time, complete) {\n var cy = this._private.cy || this;\n\n if (!cy.styleEnabled()) {\n return this;\n }\n\n return this.animation({\n delay: time,\n duration: time,\n complete: complete\n });\n };\n },\n // delay\n animation: function animation() {\n return function animationImpl(properties, params) {\n var self = this;\n var selfIsArrayLike = self.length !== undefined;\n var all = selfIsArrayLike ? self : [self]; // put in array if not array-like\n\n var cy = this._private.cy || this;\n var isCore = !selfIsArrayLike;\n var isEles = !isCore;\n\n if (!cy.styleEnabled()) {\n return this;\n }\n\n var style = cy.style();\n properties = extend({}, properties, params);\n var propertiesEmpty = Object.keys(properties).length === 0;\n\n if (propertiesEmpty) {\n return new Animation(all[0], properties); // nothing to animate\n }\n\n if (properties.duration === undefined) {\n properties.duration = 400;\n }\n\n switch (properties.duration) {\n case 'slow':\n properties.duration = 600;\n break;\n\n case 'fast':\n properties.duration = 200;\n break;\n }\n\n if (isEles) {\n properties.style = style.getPropsList(properties.style || properties.css);\n properties.css = undefined;\n }\n\n if (isEles && properties.renderedPosition != null) {\n var rpos = properties.renderedPosition;\n var pan = cy.pan();\n var zoom = cy.zoom();\n properties.position = renderedToModelPosition(rpos, zoom, pan);\n } // override pan w/ panBy if set\n\n\n if (isCore && properties.panBy != null) {\n var panBy = properties.panBy;\n var cyPan = cy.pan();\n properties.pan = {\n x: cyPan.x + panBy.x,\n y: cyPan.y + panBy.y\n };\n } // override pan w/ center if set\n\n\n var center = properties.center || properties.centre;\n\n if (isCore && center != null) {\n var centerPan = cy.getCenterPan(center.eles, properties.zoom);\n\n if (centerPan != null) {\n properties.pan = centerPan;\n }\n } // override pan & zoom w/ fit if set\n\n\n if (isCore && properties.fit != null) {\n var fit = properties.fit;\n var fitVp = cy.getFitViewport(fit.eles || fit.boundingBox, fit.padding);\n\n if (fitVp != null) {\n properties.pan = fitVp.pan;\n properties.zoom = fitVp.zoom;\n }\n } // override zoom (& potentially pan) w/ zoom obj if set\n\n\n if (isCore && plainObject(properties.zoom)) {\n var vp = cy.getZoomedViewport(properties.zoom);\n\n if (vp != null) {\n if (vp.zoomed) {\n properties.zoom = vp.zoom;\n }\n\n if (vp.panned) {\n properties.pan = vp.pan;\n }\n }\n }\n\n return new Animation(all[0], properties);\n };\n },\n // animate\n animate: function animate() {\n return function animateImpl(properties, params) {\n var self = this;\n var selfIsArrayLike = self.length !== undefined;\n var all = selfIsArrayLike ? self : [self]; // put in array if not array-like\n\n var cy = this._private.cy || this;\n\n if (!cy.styleEnabled()) {\n return this;\n }\n\n if (params) {\n properties = extend({}, properties, params);\n } // manually hook and run the animation\n\n\n for (var i = 0; i < all.length; i++) {\n var ele = all[i];\n var queue = ele.animated() && (properties.queue === undefined || properties.queue);\n var ani = ele.animation(properties, queue ? {\n queue: true\n } : undefined);\n ani.play();\n }\n\n return this; // chaining\n };\n },\n // animate\n stop: function stop() {\n return function stopImpl(clearQueue, jumpToEnd) {\n var self = this;\n var selfIsArrayLike = self.length !== undefined;\n var all = selfIsArrayLike ? self : [self]; // put in array if not array-like\n\n var cy = this._private.cy || this;\n\n if (!cy.styleEnabled()) {\n return this;\n }\n\n for (var i = 0; i < all.length; i++) {\n var ele = all[i];\n var _p = ele._private;\n var anis = _p.animation.current;\n\n for (var j = 0; j < anis.length; j++) {\n var ani = anis[j];\n var ani_p = ani._private;\n\n if (jumpToEnd) {\n // next iteration of the animation loop, the animation\n // will go straight to the end and be removed\n ani_p.duration = 0;\n }\n } // clear the queue of future animations\n\n\n if (clearQueue) {\n _p.animation.queue = [];\n }\n\n if (!jumpToEnd) {\n _p.animation.current = [];\n }\n } // we have to notify (the animation loop doesn't do it for us on `stop`)\n\n\n cy.notify('draw');\n return this;\n };\n } // stop\n\n}; // define\n\nvar define$1 = {\n // access data field\n data: function data(params) {\n var defaults = {\n field: 'data',\n bindingEvent: 'data',\n allowBinding: false,\n allowSetting: false,\n allowGetting: false,\n settingEvent: 'data',\n settingTriggersEvent: false,\n triggerFnName: 'trigger',\n immutableKeys: {},\n // key => true if immutable\n updateStyle: false,\n beforeGet: function beforeGet(self) {},\n beforeSet: function beforeSet(self, obj) {},\n onSet: function onSet(self) {},\n canSet: function canSet(self) {\n return true;\n }\n };\n params = extend({}, defaults, params);\n return function dataImpl(name, value) {\n var p = params;\n var self = this;\n var selfIsArrayLike = self.length !== undefined;\n var all = selfIsArrayLike ? self : [self]; // put in array if not array-like\n\n var single = selfIsArrayLike ? self[0] : self; // .data('foo', ...)\n\n if (string(name)) {\n // set or get property\n // .data('foo')\n if (p.allowGetting && value === undefined) {\n // get\n var ret;\n\n if (single) {\n p.beforeGet(single);\n ret = single._private[p.field][name];\n }\n\n return ret; // .data('foo', 'bar')\n } else if (p.allowSetting && value !== undefined) {\n // set\n var valid = !p.immutableKeys[name];\n\n if (valid) {\n var change = _defineProperty({}, name, value);\n\n p.beforeSet(self, change);\n\n for (var i = 0, l = all.length; i < l; i++) {\n var ele = all[i];\n\n if (p.canSet(ele)) {\n ele._private[p.field][name] = value;\n }\n } // update mappers if asked\n\n\n if (p.updateStyle) {\n self.updateStyle();\n } // call onSet callback\n\n\n p.onSet(self);\n\n if (p.settingTriggersEvent) {\n self[p.triggerFnName](p.settingEvent);\n }\n }\n } // .data({ 'foo': 'bar' })\n\n } else if (p.allowSetting && plainObject(name)) {\n // extend\n var obj = name;\n var k, v;\n var keys = Object.keys(obj);\n p.beforeSet(self, obj);\n\n for (var _i = 0; _i < keys.length; _i++) {\n k = keys[_i];\n v = obj[k];\n\n var _valid = !p.immutableKeys[k];\n\n if (_valid) {\n for (var j = 0; j < all.length; j++) {\n var _ele = all[j];\n\n if (p.canSet(_ele)) {\n _ele._private[p.field][k] = v;\n }\n }\n }\n } // update mappers if asked\n\n\n if (p.updateStyle) {\n self.updateStyle();\n } // call onSet callback\n\n\n p.onSet(self);\n\n if (p.settingTriggersEvent) {\n self[p.triggerFnName](p.settingEvent);\n } // .data(function(){ ... })\n\n } else if (p.allowBinding && fn(name)) {\n // bind to event\n var fn$1 = name;\n self.on(p.bindingEvent, fn$1); // .data()\n } else if (p.allowGetting && name === undefined) {\n // get whole object\n var _ret;\n\n if (single) {\n p.beforeGet(single);\n _ret = single._private[p.field];\n }\n\n return _ret;\n }\n\n return self; // maintain chainability\n }; // function\n },\n // data\n // remove data field\n removeData: function removeData(params) {\n var defaults = {\n field: 'data',\n event: 'data',\n triggerFnName: 'trigger',\n triggerEvent: false,\n immutableKeys: {} // key => true if immutable\n\n };\n params = extend({}, defaults, params);\n return function removeDataImpl(names) {\n var p = params;\n var self = this;\n var selfIsArrayLike = self.length !== undefined;\n var all = selfIsArrayLike ? self : [self]; // put in array if not array-like\n // .removeData('foo bar')\n\n if (string(names)) {\n // then get the list of keys, and delete them\n var keys = names.split(/\\s+/);\n var l = keys.length;\n\n for (var i = 0; i < l; i++) {\n // delete each non-empty key\n var key = keys[i];\n\n if (emptyString(key)) {\n continue;\n }\n\n var valid = !p.immutableKeys[key]; // not valid if immutable\n\n if (valid) {\n for (var i_a = 0, l_a = all.length; i_a < l_a; i_a++) {\n all[i_a]._private[p.field][key] = undefined;\n }\n }\n }\n\n if (p.triggerEvent) {\n self[p.triggerFnName](p.event);\n } // .removeData()\n\n } else if (names === undefined) {\n // then delete all keys\n for (var _i_a = 0, _l_a = all.length; _i_a < _l_a; _i_a++) {\n var _privateFields = all[_i_a]._private[p.field];\n\n var _keys = Object.keys(_privateFields);\n\n for (var _i2 = 0; _i2 < _keys.length; _i2++) {\n var _key = _keys[_i2];\n var validKeyToDelete = !p.immutableKeys[_key];\n\n if (validKeyToDelete) {\n _privateFields[_key] = undefined;\n }\n }\n }\n\n if (p.triggerEvent) {\n self[p.triggerFnName](p.event);\n }\n }\n\n return self; // maintain chaining\n }; // function\n } // removeData\n\n}; // define\n\nvar define$2 = {\n eventAliasesOn: function eventAliasesOn(proto) {\n var p = proto;\n p.addListener = p.listen = p.bind = p.on;\n p.unlisten = p.unbind = p.off = p.removeListener;\n p.trigger = p.emit; // this is just a wrapper alias of .on()\n\n p.pon = p.promiseOn = function (events, selector) {\n var self = this;\n var args = Array.prototype.slice.call(arguments, 0);\n return new Promise$1(function (resolve, reject) {\n var callback = function callback(e) {\n self.off.apply(self, offArgs);\n resolve(e);\n };\n\n var onArgs = args.concat([callback]);\n var offArgs = onArgs.concat([]);\n self.on.apply(self, onArgs);\n });\n };\n }\n}; // define\n\n// use this module to cherry pick functions into your prototype\nvar define$3 = {};\n[define, define$1, define$2].forEach(function (m) {\n extend(define$3, m);\n});\n\nvar elesfn$c = {\n animate: define$3.animate(),\n animation: define$3.animation(),\n animated: define$3.animated(),\n clearQueue: define$3.clearQueue(),\n delay: define$3.delay(),\n delayAnimation: define$3.delayAnimation(),\n stop: define$3.stop()\n};\n\nvar elesfn$d = {\n classes: function classes(_classes) {\n var self = this;\n\n if (_classes === undefined) {\n var ret = [];\n\n self[0]._private.classes.forEach(function (cls) {\n return ret.push(cls);\n });\n\n return ret;\n } else if (!array(_classes)) {\n // extract classes from string\n _classes = (_classes || '').match(/\\S+/g) || [];\n }\n\n var changed = [];\n var classesSet = new Set$1(_classes); // check and update each ele\n\n for (var j = 0; j < self.length; j++) {\n var ele = self[j];\n var _p = ele._private;\n var eleClasses = _p.classes;\n var changedEle = false; // check if ele has all of the passed classes\n\n for (var i = 0; i < _classes.length; i++) {\n var cls = _classes[i];\n var eleHasClass = eleClasses.has(cls);\n\n if (!eleHasClass) {\n changedEle = true;\n break;\n }\n } // check if ele has classes outside of those passed\n\n\n if (!changedEle) {\n changedEle = eleClasses.size !== _classes.length;\n }\n\n if (changedEle) {\n _p.classes = classesSet;\n changed.push(ele);\n }\n } // trigger update style on those eles that had class changes\n\n\n if (changed.length > 0) {\n this.spawn(changed).updateStyle().emit('class');\n }\n\n return self;\n },\n addClass: function addClass(classes) {\n return this.toggleClass(classes, true);\n },\n hasClass: function hasClass(className) {\n var ele = this[0];\n return ele != null && ele._private.classes.has(className);\n },\n toggleClass: function toggleClass(classes, toggle) {\n if (!array(classes)) {\n // extract classes from string\n classes = classes.match(/\\S+/g) || [];\n }\n\n var self = this;\n var toggleUndefd = toggle === undefined;\n var changed = []; // eles who had classes changed\n\n for (var i = 0, il = self.length; i < il; i++) {\n var ele = self[i];\n var eleClasses = ele._private.classes;\n var changedEle = false;\n\n for (var j = 0; j < classes.length; j++) {\n var cls = classes[j];\n var hasClass = eleClasses.has(cls);\n var changedNow = false;\n\n if (toggle || toggleUndefd && !hasClass) {\n eleClasses.add(cls);\n changedNow = true;\n } else if (!toggle || toggleUndefd && hasClass) {\n eleClasses.delete(cls);\n changedNow = true;\n }\n\n if (!changedEle && changedNow) {\n changed.push(ele);\n changedEle = true;\n }\n } // for j classes\n\n } // for i eles\n // trigger update style on those eles that had class changes\n\n\n if (changed.length > 0) {\n this.spawn(changed).updateStyle().emit('class');\n }\n\n return self;\n },\n removeClass: function removeClass(classes) {\n return this.toggleClass(classes, false);\n },\n flashClass: function flashClass(classes, duration) {\n var self = this;\n\n if (duration == null) {\n duration = 250;\n } else if (duration === 0) {\n return self; // nothing to do really\n }\n\n self.addClass(classes);\n setTimeout(function () {\n self.removeClass(classes);\n }, duration);\n return self;\n }\n};\nelesfn$d.className = elesfn$d.classNames = elesfn$d.classes;\n\nvar tokens = {\n metaChar: '[\\\\!\\\\\"\\\\#\\\\$\\\\%\\\\&\\\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\.\\\\/\\\\:\\\\;\\\\<\\\\=\\\\>\\\\?\\\\@\\\\[\\\\]\\\\^\\\\`\\\\{\\\\|\\\\}\\\\~]',\n // chars we need to escape in let names, etc\n comparatorOp: '=|\\\\!=|>|>=|<|<=|\\\\$=|\\\\^=|\\\\*=',\n // binary comparison op (used in data selectors)\n boolOp: '\\\\?|\\\\!|\\\\^',\n // boolean (unary) operators (used in data selectors)\n string: '\"(?:\\\\\\\\\"|[^\"])*\"' + '|' + \"'(?:\\\\\\\\'|[^'])*'\",\n // string literals (used in data selectors) -- doublequotes | singlequotes\n number: number$1,\n // number literal (used in data selectors) --- e.g. 0.1234, 1234, 12e123\n meta: 'degree|indegree|outdegree',\n // allowed metadata fields (i.e. allowed functions to use from Collection)\n separator: '\\\\s*,\\\\s*',\n // queries are separated by commas, e.g. edge[foo = 'bar'], node.someClass\n descendant: '\\\\s+',\n child: '\\\\s+>\\\\s+',\n subject: '\\\\$',\n group: 'node|edge|\\\\*',\n directedEdge: '\\\\s+->\\\\s+',\n undirectedEdge: '\\\\s+<->\\\\s+'\n};\ntokens.variable = '(?:[\\\\w-]|(?:\\\\\\\\' + tokens.metaChar + '))+'; // a variable name\n\ntokens.value = tokens.string + '|' + tokens.number; // a value literal, either a string or number\n\ntokens.className = tokens.variable; // a class name (follows variable conventions)\n\ntokens.id = tokens.variable; // an element id (follows variable conventions)\n\n(function () {\n var ops, op, i; // add @ variants to comparatorOp\n\n ops = tokens.comparatorOp.split('|');\n\n for (i = 0; i < ops.length; i++) {\n op = ops[i];\n tokens.comparatorOp += '|@' + op;\n } // add ! variants to comparatorOp\n\n\n ops = tokens.comparatorOp.split('|');\n\n for (i = 0; i < ops.length; i++) {\n op = ops[i];\n\n if (op.indexOf('!') >= 0) {\n continue;\n } // skip ops that explicitly contain !\n\n\n if (op === '=') {\n continue;\n } // skip = b/c != is explicitly defined\n\n\n tokens.comparatorOp += '|\\\\!' + op;\n }\n})();\n\n/**\n * Make a new query object\n *\n * @prop type {Type} The type enum (int) of the query\n * @prop checks List of checks to make against an ele to test for a match\n */\nvar newQuery = function newQuery() {\n return {\n checks: []\n };\n};\n\n/**\n * A check type enum-like object. Uses integer values for fast match() lookup.\n * The ordering does not matter as long as the ints are unique.\n */\nvar Type = {\n /** E.g. node */\n GROUP: 0,\n\n /** A collection of elements */\n COLLECTION: 1,\n\n /** A filter(ele) function */\n FILTER: 2,\n\n /** E.g. [foo > 1] */\n DATA_COMPARE: 3,\n\n /** E.g. [foo] */\n DATA_EXIST: 4,\n\n /** E.g. [?foo] */\n DATA_BOOL: 5,\n\n /** E.g. [[degree > 2]] */\n META_COMPARE: 6,\n\n /** E.g. :selected */\n STATE: 7,\n\n /** E.g. #foo */\n ID: 8,\n\n /** E.g. .foo */\n CLASS: 9,\n\n /** E.g. #foo <-> #bar */\n UNDIRECTED_EDGE: 10,\n\n /** E.g. #foo -> #bar */\n DIRECTED_EDGE: 11,\n\n /** E.g. $#foo -> #bar */\n NODE_SOURCE: 12,\n\n /** E.g. #foo -> $#bar */\n NODE_TARGET: 13,\n\n /** E.g. $#foo <-> #bar */\n NODE_NEIGHBOR: 14,\n\n /** E.g. #foo > #bar */\n CHILD: 15,\n\n /** E.g. #foo #bar */\n DESCENDANT: 16,\n\n /** E.g. $#foo > #bar */\n PARENT: 17,\n\n /** E.g. $#foo #bar */\n ANCESTOR: 18,\n\n /** E.g. #foo > $bar > #baz */\n COMPOUND_SPLIT: 19,\n\n /** Always matches, useful placeholder for subject in `COMPOUND_SPLIT` */\n TRUE: 20\n};\n\nvar stateSelectors = [{\n selector: ':selected',\n matches: function matches(ele) {\n return ele.selected();\n }\n}, {\n selector: ':unselected',\n matches: function matches(ele) {\n return !ele.selected();\n }\n}, {\n selector: ':selectable',\n matches: function matches(ele) {\n return ele.selectable();\n }\n}, {\n selector: ':unselectable',\n matches: function matches(ele) {\n return !ele.selectable();\n }\n}, {\n selector: ':locked',\n matches: function matches(ele) {\n return ele.locked();\n }\n}, {\n selector: ':unlocked',\n matches: function matches(ele) {\n return !ele.locked();\n }\n}, {\n selector: ':visible',\n matches: function matches(ele) {\n return ele.visible();\n }\n}, {\n selector: ':hidden',\n matches: function matches(ele) {\n return !ele.visible();\n }\n}, {\n selector: ':transparent',\n matches: function matches(ele) {\n return ele.transparent();\n }\n}, {\n selector: ':grabbed',\n matches: function matches(ele) {\n return ele.grabbed();\n }\n}, {\n selector: ':free',\n matches: function matches(ele) {\n return !ele.grabbed();\n }\n}, {\n selector: ':removed',\n matches: function matches(ele) {\n return ele.removed();\n }\n}, {\n selector: ':inside',\n matches: function matches(ele) {\n return !ele.removed();\n }\n}, {\n selector: ':grabbable',\n matches: function matches(ele) {\n return ele.grabbable();\n }\n}, {\n selector: ':ungrabbable',\n matches: function matches(ele) {\n return !ele.grabbable();\n }\n}, {\n selector: ':animated',\n matches: function matches(ele) {\n return ele.animated();\n }\n}, {\n selector: ':unanimated',\n matches: function matches(ele) {\n return !ele.animated();\n }\n}, {\n selector: ':parent',\n matches: function matches(ele) {\n return ele.isParent();\n }\n}, {\n selector: ':childless',\n matches: function matches(ele) {\n return ele.isChildless();\n }\n}, {\n selector: ':child',\n matches: function matches(ele) {\n return ele.isChild();\n }\n}, {\n selector: ':orphan',\n matches: function matches(ele) {\n return ele.isOrphan();\n }\n}, {\n selector: ':nonorphan',\n matches: function matches(ele) {\n return ele.isChild();\n }\n}, {\n selector: ':compound',\n matches: function matches(ele) {\n if (ele.isNode()) {\n return ele.isParent();\n } else {\n return ele.source().isParent() || ele.target().isParent();\n }\n }\n}, {\n selector: ':loop',\n matches: function matches(ele) {\n return ele.isLoop();\n }\n}, {\n selector: ':simple',\n matches: function matches(ele) {\n return ele.isSimple();\n }\n}, {\n selector: ':active',\n matches: function matches(ele) {\n return ele.active();\n }\n}, {\n selector: ':inactive',\n matches: function matches(ele) {\n return !ele.active();\n }\n}, {\n selector: ':backgrounding',\n matches: function matches(ele) {\n return ele.backgrounding();\n }\n}, {\n selector: ':nonbackgrounding',\n matches: function matches(ele) {\n return !ele.backgrounding();\n }\n}].sort(function (a, b) {\n // n.b. selectors that are starting substrings of others must have the longer ones first\n return descending(a.selector, b.selector);\n});\n\nvar lookup = function () {\n var selToFn = {};\n var s;\n\n for (var i = 0; i < stateSelectors.length; i++) {\n s = stateSelectors[i];\n selToFn[s.selector] = s.matches;\n }\n\n return selToFn;\n}();\n\nvar stateSelectorMatches = function stateSelectorMatches(sel, ele) {\n return lookup[sel](ele);\n};\nvar stateSelectorRegex = '(' + stateSelectors.map(function (s) {\n return s.selector;\n}).join('|') + ')';\n\n// so that values get compared properly in Selector.filter()\n\nvar cleanMetaChars = function cleanMetaChars(str) {\n return str.replace(new RegExp('\\\\\\\\(' + tokens.metaChar + ')', 'g'), function (match, $1) {\n return $1;\n });\n};\n\nvar replaceLastQuery = function replaceLastQuery(selector, examiningQuery, replacementQuery) {\n selector[selector.length - 1] = replacementQuery;\n}; // NOTE: add new expression syntax here to have it recognised by the parser;\n// - a query contains all adjacent (i.e. no separator in between) expressions;\n// - the current query is stored in selector[i]\n// - you need to check the query objects in match() for it actually filter properly, but that's pretty straight forward\n\n\nvar exprs = [{\n name: 'group',\n // just used for identifying when debugging\n query: true,\n regex: '(' + tokens.group + ')',\n populate: function populate(selector, query, _ref) {\n var _ref2 = _slicedToArray(_ref, 1),\n group = _ref2[0];\n\n query.checks.push({\n type: Type.GROUP,\n value: group === '*' ? group : group + 's'\n });\n }\n}, {\n name: 'state',\n query: true,\n regex: stateSelectorRegex,\n populate: function populate(selector, query, _ref3) {\n var _ref4 = _slicedToArray(_ref3, 1),\n state = _ref4[0];\n\n query.checks.push({\n type: Type.STATE,\n value: state\n });\n }\n}, {\n name: 'id',\n query: true,\n regex: '\\\\#(' + tokens.id + ')',\n populate: function populate(selector, query, _ref5) {\n var _ref6 = _slicedToArray(_ref5, 1),\n id = _ref6[0];\n\n query.checks.push({\n type: Type.ID,\n value: cleanMetaChars(id)\n });\n }\n}, {\n name: 'className',\n query: true,\n regex: '\\\\.(' + tokens.className + ')',\n populate: function populate(selector, query, _ref7) {\n var _ref8 = _slicedToArray(_ref7, 1),\n className = _ref8[0];\n\n query.checks.push({\n type: Type.CLASS,\n value: cleanMetaChars(className)\n });\n }\n}, {\n name: 'dataExists',\n query: true,\n regex: '\\\\[\\\\s*(' + tokens.variable + ')\\\\s*\\\\]',\n populate: function populate(selector, query, _ref9) {\n var _ref10 = _slicedToArray(_ref9, 1),\n variable = _ref10[0];\n\n query.checks.push({\n type: Type.DATA_EXIST,\n field: cleanMetaChars(variable)\n });\n }\n}, {\n name: 'dataCompare',\n query: true,\n regex: '\\\\[\\\\s*(' + tokens.variable + ')\\\\s*(' + tokens.comparatorOp + ')\\\\s*(' + tokens.value + ')\\\\s*\\\\]',\n populate: function populate(selector, query, _ref11) {\n var _ref12 = _slicedToArray(_ref11, 3),\n variable = _ref12[0],\n comparatorOp = _ref12[1],\n value = _ref12[2];\n\n var valueIsString = new RegExp('^' + tokens.string + '$').exec(value) != null;\n\n if (valueIsString) {\n value = value.substring(1, value.length - 1);\n } else {\n value = parseFloat(value);\n }\n\n query.checks.push({\n type: Type.DATA_COMPARE,\n field: cleanMetaChars(variable),\n operator: comparatorOp,\n value: value\n });\n }\n}, {\n name: 'dataBool',\n query: true,\n regex: '\\\\[\\\\s*(' + tokens.boolOp + ')\\\\s*(' + tokens.variable + ')\\\\s*\\\\]',\n populate: function populate(selector, query, _ref13) {\n var _ref14 = _slicedToArray(_ref13, 2),\n boolOp = _ref14[0],\n variable = _ref14[1];\n\n query.checks.push({\n type: Type.DATA_BOOL,\n field: cleanMetaChars(variable),\n operator: boolOp\n });\n }\n}, {\n name: 'metaCompare',\n query: true,\n regex: '\\\\[\\\\[\\\\s*(' + tokens.meta + ')\\\\s*(' + tokens.comparatorOp + ')\\\\s*(' + tokens.number + ')\\\\s*\\\\]\\\\]',\n populate: function populate(selector, query, _ref15) {\n var _ref16 = _slicedToArray(_ref15, 3),\n meta = _ref16[0],\n comparatorOp = _ref16[1],\n number = _ref16[2];\n\n query.checks.push({\n type: Type.META_COMPARE,\n field: cleanMetaChars(meta),\n operator: comparatorOp,\n value: parseFloat(number)\n });\n }\n}, {\n name: 'nextQuery',\n separator: true,\n regex: tokens.separator,\n populate: function populate(selector, query) {\n var currentSubject = selector.currentSubject;\n var edgeCount = selector.edgeCount;\n var compoundCount = selector.compoundCount;\n var lastQ = selector[selector.length - 1];\n\n if (currentSubject != null) {\n lastQ.subject = currentSubject;\n selector.currentSubject = null;\n }\n\n lastQ.edgeCount = edgeCount;\n lastQ.compoundCount = compoundCount;\n selector.edgeCount = 0;\n selector.compoundCount = 0; // go on to next query\n\n var nextQuery = selector[selector.length++] = newQuery();\n return nextQuery; // this is the new query to be filled by the following exprs\n }\n}, {\n name: 'directedEdge',\n separator: true,\n regex: tokens.directedEdge,\n populate: function populate(selector, query) {\n if (selector.currentSubject == null) {\n // undirected edge\n var edgeQuery = newQuery();\n var source = query;\n var target = newQuery();\n edgeQuery.checks.push({\n type: Type.DIRECTED_EDGE,\n source: source,\n target: target\n }); // the query in the selector should be the edge rather than the source\n\n replaceLastQuery(selector, query, edgeQuery);\n selector.edgeCount++; // we're now populating the target query with expressions that follow\n\n return target;\n } else {\n // source/target\n var srcTgtQ = newQuery();\n var _source = query;\n\n var _target = newQuery();\n\n srcTgtQ.checks.push({\n type: Type.NODE_SOURCE,\n source: _source,\n target: _target\n }); // the query in the selector should be the neighbourhood rather than the node\n\n replaceLastQuery(selector, query, srcTgtQ);\n selector.edgeCount++;\n return _target; // now populating the target with the following expressions\n }\n }\n}, {\n name: 'undirectedEdge',\n separator: true,\n regex: tokens.undirectedEdge,\n populate: function populate(selector, query) {\n if (selector.currentSubject == null) {\n // undirected edge\n var edgeQuery = newQuery();\n var source = query;\n var target = newQuery();\n edgeQuery.checks.push({\n type: Type.UNDIRECTED_EDGE,\n nodes: [source, target]\n }); // the query in the selector should be the edge rather than the source\n\n replaceLastQuery(selector, query, edgeQuery);\n selector.edgeCount++; // we're now populating the target query with expressions that follow\n\n return target;\n } else {\n // neighbourhood\n var nhoodQ = newQuery();\n var node = query;\n var neighbor = newQuery();\n nhoodQ.checks.push({\n type: Type.NODE_NEIGHBOR,\n node: node,\n neighbor: neighbor\n }); // the query in the selector should be the neighbourhood rather than the node\n\n replaceLastQuery(selector, query, nhoodQ);\n return neighbor; // now populating the neighbor with following expressions\n }\n }\n}, {\n name: 'child',\n separator: true,\n regex: tokens.child,\n populate: function populate(selector, query) {\n if (selector.currentSubject == null) {\n // default: child query\n var parentChildQuery = newQuery();\n var child = newQuery();\n var parent = selector[selector.length - 1];\n parentChildQuery.checks.push({\n type: Type.CHILD,\n parent: parent,\n child: child\n }); // the query in the selector should be the '>' itself\n\n replaceLastQuery(selector, query, parentChildQuery);\n selector.compoundCount++; // we're now populating the child query with expressions that follow\n\n return child;\n } else if (selector.currentSubject === query) {\n // compound split query\n var compound = newQuery();\n var left = selector[selector.length - 1];\n var right = newQuery();\n var subject = newQuery();\n\n var _child = newQuery();\n\n var _parent = newQuery(); // set up the root compound q\n\n\n compound.checks.push({\n type: Type.COMPOUND_SPLIT,\n left: left,\n right: right,\n subject: subject\n }); // populate the subject and replace the q at the old spot (within left) with TRUE\n\n subject.checks = query.checks; // take the checks from the left\n\n query.checks = [{\n type: Type.TRUE\n }]; // checks under left refs the subject implicitly\n // set up the right q\n\n _parent.checks.push({\n type: Type.TRUE\n }); // parent implicitly refs the subject\n\n\n right.checks.push({\n type: Type.PARENT,\n // type is swapped on right side queries\n parent: _parent,\n child: _child // empty for now\n\n });\n replaceLastQuery(selector, left, compound); // update the ref since we moved things around for `query`\n\n selector.currentSubject = subject;\n selector.compoundCount++;\n return _child; // now populating the right side's child\n } else {\n // parent query\n // info for parent query\n var _parent2 = newQuery();\n\n var _child2 = newQuery();\n\n var pcQChecks = [{\n type: Type.PARENT,\n parent: _parent2,\n child: _child2\n }]; // the parent-child query takes the place of the query previously being populated\n\n _parent2.checks = query.checks; // the previous query contains the checks for the parent\n\n query.checks = pcQChecks; // pc query takes over\n\n selector.compoundCount++;\n return _child2; // we're now populating the child\n }\n }\n}, {\n name: 'descendant',\n separator: true,\n regex: tokens.descendant,\n populate: function populate(selector, query) {\n if (selector.currentSubject == null) {\n // default: descendant query\n var ancChQuery = newQuery();\n var descendant = newQuery();\n var ancestor = selector[selector.length - 1];\n ancChQuery.checks.push({\n type: Type.DESCENDANT,\n ancestor: ancestor,\n descendant: descendant\n }); // the query in the selector should be the '>' itself\n\n replaceLastQuery(selector, query, ancChQuery);\n selector.compoundCount++; // we're now populating the descendant query with expressions that follow\n\n return descendant;\n } else if (selector.currentSubject === query) {\n // compound split query\n var compound = newQuery();\n var left = selector[selector.length - 1];\n var right = newQuery();\n var subject = newQuery();\n\n var _descendant = newQuery();\n\n var _ancestor = newQuery(); // set up the root compound q\n\n\n compound.checks.push({\n type: Type.COMPOUND_SPLIT,\n left: left,\n right: right,\n subject: subject\n }); // populate the subject and replace the q at the old spot (within left) with TRUE\n\n subject.checks = query.checks; // take the checks from the left\n\n query.checks = [{\n type: Type.TRUE\n }]; // checks under left refs the subject implicitly\n // set up the right q\n\n _ancestor.checks.push({\n type: Type.TRUE\n }); // ancestor implicitly refs the subject\n\n\n right.checks.push({\n type: Type.ANCESTOR,\n // type is swapped on right side queries\n ancestor: _ancestor,\n descendant: _descendant // empty for now\n\n });\n replaceLastQuery(selector, left, compound); // update the ref since we moved things around for `query`\n\n selector.currentSubject = subject;\n selector.compoundCount++;\n return _descendant; // now populating the right side's descendant\n } else {\n // ancestor query\n // info for parent query\n var _ancestor2 = newQuery();\n\n var _descendant2 = newQuery();\n\n var adQChecks = [{\n type: Type.ANCESTOR,\n ancestor: _ancestor2,\n descendant: _descendant2\n }]; // the parent-child query takes the place of the query previously being populated\n\n _ancestor2.checks = query.checks; // the previous query contains the checks for the parent\n\n query.checks = adQChecks; // pc query takes over\n\n selector.compoundCount++;\n return _descendant2; // we're now populating the child\n }\n }\n}, {\n name: 'subject',\n modifier: true,\n regex: tokens.subject,\n populate: function populate(selector, query) {\n if (selector.currentSubject != null && selector.currentSubject !== query) {\n warn('Redefinition of subject in selector `' + selector.toString() + '`');\n return false;\n }\n\n selector.currentSubject = query;\n var topQ = selector[selector.length - 1];\n var topChk = topQ.checks[0];\n var topType = topChk == null ? null : topChk.type;\n\n if (topType === Type.DIRECTED_EDGE) {\n // directed edge with subject on the target\n // change to target node check\n topChk.type = Type.NODE_TARGET;\n } else if (topType === Type.UNDIRECTED_EDGE) {\n // undirected edge with subject on the second node\n // change to neighbor check\n topChk.type = Type.NODE_NEIGHBOR;\n topChk.node = topChk.nodes[1]; // second node is subject\n\n topChk.neighbor = topChk.nodes[0]; // clean up unused fields for new type\n\n topChk.nodes = null;\n }\n }\n}];\nexprs.forEach(function (e) {\n return e.regexObj = new RegExp('^' + e.regex);\n});\n\n/**\n * Of all the expressions, find the first match in the remaining text.\n * @param {string} remaining The remaining text to parse\n * @returns The matched expression and the newly remaining text `{ expr, match, name, remaining }`\n */\n\nvar consumeExpr = function consumeExpr(remaining) {\n var expr;\n var match;\n var name;\n\n for (var j = 0; j < exprs.length; j++) {\n var e = exprs[j];\n var n = e.name;\n var m = remaining.match(e.regexObj);\n\n if (m != null) {\n match = m;\n expr = e;\n name = n;\n var consumed = m[0];\n remaining = remaining.substring(consumed.length);\n break; // we've consumed one expr, so we can return now\n }\n }\n\n return {\n expr: expr,\n match: match,\n name: name,\n remaining: remaining\n };\n};\n/**\n * Consume all the leading whitespace\n * @param {string} remaining The text to consume\n * @returns The text with the leading whitespace removed\n */\n\n\nvar consumeWhitespace = function consumeWhitespace(remaining) {\n var match = remaining.match(/^\\s+/);\n\n if (match) {\n var consumed = match[0];\n remaining = remaining.substring(consumed.length);\n }\n\n return remaining;\n};\n/**\n * Parse the string and store the parsed representation in the Selector.\n * @param {string} selector The selector string\n * @returns `true` if the selector was successfully parsed, `false` otherwise\n */\n\n\nvar parse = function parse(selector) {\n var self = this;\n var remaining = self.inputText = selector;\n var currentQuery = self[0] = newQuery();\n self.length = 1;\n remaining = consumeWhitespace(remaining); // get rid of leading whitespace\n\n for (;;) {\n var exprInfo = consumeExpr(remaining);\n\n if (exprInfo.expr == null) {\n warn('The selector `' + selector + '`is invalid');\n return false;\n } else {\n var args = exprInfo.match.slice(1); // let the token populate the selector object in currentQuery\n\n var ret = exprInfo.expr.populate(self, currentQuery, args);\n\n if (ret === false) {\n return false; // exit if population failed\n } else if (ret != null) {\n currentQuery = ret; // change the current query to be filled if the expr specifies\n }\n }\n\n remaining = exprInfo.remaining; // we're done when there's nothing left to parse\n\n if (remaining.match(/^\\s*$/)) {\n break;\n }\n }\n\n var lastQ = self[self.length - 1];\n\n if (self.currentSubject != null) {\n lastQ.subject = self.currentSubject;\n }\n\n lastQ.edgeCount = self.edgeCount;\n lastQ.compoundCount = self.compoundCount;\n\n for (var i = 0; i < self.length; i++) {\n var q = self[i]; // in future, this could potentially be allowed if there were operator precedence and detection of invalid combinations\n\n if (q.compoundCount > 0 && q.edgeCount > 0) {\n warn('The selector `' + selector + '` is invalid because it uses both a compound selector and an edge selector');\n return false;\n }\n\n if (q.edgeCount > 1) {\n warn('The selector `' + selector + '` is invalid because it uses multiple edge selectors');\n return false;\n } else if (q.edgeCount === 1) {\n warn('The selector `' + selector + '` is deprecated. Edge selectors do not take effect on changes to source and target nodes after an edge is added, for performance reasons. Use a class or data selector on edges instead, updating the class or data of an edge when your app detects a change in source or target nodes.');\n }\n }\n\n return true; // success\n};\n/**\n * Get the selector represented as a string. This value uses default formatting,\n * so things like spacing may differ from the input text passed to the constructor.\n * @returns {string} The selector string\n */\n\n\nvar toString = function toString() {\n if (this.toStringCache != null) {\n return this.toStringCache;\n }\n\n var clean = function clean(obj) {\n if (obj == null) {\n return '';\n } else {\n return obj;\n }\n };\n\n var cleanVal = function cleanVal(val) {\n if (string(val)) {\n return '\"' + val + '\"';\n } else {\n return clean(val);\n }\n };\n\n var space = function space(val) {\n return ' ' + val + ' ';\n };\n\n var checkToString = function checkToString(check, subject) {\n var type = check.type,\n value = check.value;\n\n switch (type) {\n case Type.GROUP:\n {\n var group = clean(value);\n return group.substring(0, group.length - 1);\n }\n\n case Type.DATA_COMPARE:\n {\n var field = check.field,\n operator = check.operator;\n return '[' + field + space(clean(operator)) + cleanVal(value) + ']';\n }\n\n case Type.DATA_BOOL:\n {\n var _operator = check.operator,\n _field = check.field;\n return '[' + clean(_operator) + _field + ']';\n }\n\n case Type.DATA_EXIST:\n {\n var _field2 = check.field;\n return '[' + _field2 + ']';\n }\n\n case Type.META_COMPARE:\n {\n var _operator2 = check.operator,\n _field3 = check.field;\n return '[[' + _field3 + space(clean(_operator2)) + cleanVal(value) + ']]';\n }\n\n case Type.STATE:\n {\n return value;\n }\n\n case Type.ID:\n {\n return '#' + value;\n }\n\n case Type.CLASS:\n {\n return '.' + value;\n }\n\n case Type.PARENT:\n case Type.CHILD:\n {\n return queryToString(check.parent, subject) + space('>') + queryToString(check.child, subject);\n }\n\n case Type.ANCESTOR:\n case Type.DESCENDANT:\n {\n return queryToString(check.ancestor, subject) + ' ' + queryToString(check.descendant, subject);\n }\n\n case Type.COMPOUND_SPLIT:\n {\n var lhs = queryToString(check.left, subject);\n var sub = queryToString(check.subject, subject);\n var rhs = queryToString(check.right, subject);\n return lhs + (lhs.length > 0 ? ' ' : '') + sub + rhs;\n }\n\n case Type.TRUE:\n {\n return '';\n }\n }\n };\n\n var queryToString = function queryToString(query, subject) {\n return query.checks.reduce(function (str, chk, i) {\n return str + (subject === query && i === 0 ? '$' : '') + checkToString(chk, subject);\n }, '');\n };\n\n var str = '';\n\n for (var i = 0; i < this.length; i++) {\n var query = this[i];\n str += queryToString(query, query.subject);\n\n if (this.length > 1 && i < this.length - 1) {\n str += ', ';\n }\n }\n\n this.toStringCache = str;\n return str;\n};\nvar parse$1 = {\n parse: parse,\n toString: toString\n};\n\nvar valCmp = function valCmp(fieldVal, operator, value) {\n var matches;\n var isFieldStr = string(fieldVal);\n var isFieldNum = number(fieldVal);\n var isValStr = string(value);\n var fieldStr, valStr;\n var caseInsensitive = false;\n var notExpr = false;\n var isIneqCmp = false;\n\n if (operator.indexOf('!') >= 0) {\n operator = operator.replace('!', '');\n notExpr = true;\n }\n\n if (operator.indexOf('@') >= 0) {\n operator = operator.replace('@', '');\n caseInsensitive = true;\n }\n\n if (isFieldStr || isValStr || caseInsensitive) {\n fieldStr = !isFieldStr && !isFieldNum ? '' : '' + fieldVal;\n valStr = '' + value;\n } // if we're doing a case insensitive comparison, then we're using a STRING comparison\n // even if we're comparing numbers\n\n\n if (caseInsensitive) {\n fieldVal = fieldStr = fieldStr.toLowerCase();\n value = valStr = valStr.toLowerCase();\n }\n\n switch (operator) {\n case '*=':\n matches = fieldStr.indexOf(valStr) >= 0;\n break;\n\n case '$=':\n matches = fieldStr.indexOf(valStr, fieldStr.length - valStr.length) >= 0;\n break;\n\n case '^=':\n matches = fieldStr.indexOf(valStr) === 0;\n break;\n\n case '=':\n matches = fieldVal === value;\n break;\n\n case '>':\n isIneqCmp = true;\n matches = fieldVal > value;\n break;\n\n case '>=':\n isIneqCmp = true;\n matches = fieldVal >= value;\n break;\n\n case '<':\n isIneqCmp = true;\n matches = fieldVal < value;\n break;\n\n case '<=':\n isIneqCmp = true;\n matches = fieldVal <= value;\n break;\n\n default:\n matches = false;\n break;\n } // apply the not op, but null vals for inequalities should always stay non-matching\n\n\n if (notExpr && (fieldVal != null || !isIneqCmp)) {\n matches = !matches;\n }\n\n return matches;\n};\nvar boolCmp = function boolCmp(fieldVal, operator) {\n switch (operator) {\n case '?':\n return fieldVal ? true : false;\n\n case '!':\n return fieldVal ? false : true;\n\n case '^':\n return fieldVal === undefined;\n }\n};\nvar existCmp = function existCmp(fieldVal) {\n return fieldVal !== undefined;\n};\nvar data = function data(ele, field) {\n return ele.data(field);\n};\nvar meta = function meta(ele, field) {\n return ele[field]();\n};\n\n/** A lookup of `match(check, ele)` functions by `Type` int */\n\nvar match = [];\n/**\n * Returns whether the query matches for the element\n * @param query The `{ type, value, ... }` query object\n * @param ele The element to compare against\n*/\n\nvar matches = function matches(query, ele) {\n return query.checks.every(function (chk) {\n return match[chk.type](chk, ele);\n });\n};\n\nmatch[Type.GROUP] = function (check, ele) {\n var group = check.value;\n return group === '*' || group === ele.group();\n};\n\nmatch[Type.STATE] = function (check, ele) {\n var stateSelector = check.value;\n return stateSelectorMatches(stateSelector, ele);\n};\n\nmatch[Type.ID] = function (check, ele) {\n var id = check.value;\n return ele.id() === id;\n};\n\nmatch[Type.CLASS] = function (check, ele) {\n var cls = check.value;\n return ele.hasClass(cls);\n};\n\nmatch[Type.META_COMPARE] = function (check, ele) {\n var field = check.field,\n operator = check.operator,\n value = check.value;\n return valCmp(meta(ele, field), operator, value);\n};\n\nmatch[Type.DATA_COMPARE] = function (check, ele) {\n var field = check.field,\n operator = check.operator,\n value = check.value;\n return valCmp(data(ele, field), operator, value);\n};\n\nmatch[Type.DATA_BOOL] = function (check, ele) {\n var field = check.field,\n operator = check.operator;\n return boolCmp(data(ele, field), operator);\n};\n\nmatch[Type.DATA_EXIST] = function (check, ele) {\n var field = check.field,\n operator = check.operator;\n return existCmp(data(ele, field), operator);\n};\n\nmatch[Type.UNDIRECTED_EDGE] = function (check, ele) {\n var qA = check.nodes[0];\n var qB = check.nodes[1];\n var src = ele.source();\n var tgt = ele.target();\n return matches(qA, src) && matches(qB, tgt) || matches(qB, src) && matches(qA, tgt);\n};\n\nmatch[Type.NODE_NEIGHBOR] = function (check, ele) {\n return matches(check.node, ele) && ele.neighborhood().some(function (n) {\n return n.isNode() && matches(check.neighbor, n);\n });\n};\n\nmatch[Type.DIRECTED_EDGE] = function (check, ele) {\n return matches(check.source, ele.source()) && matches(check.target, ele.target());\n};\n\nmatch[Type.NODE_SOURCE] = function (check, ele) {\n return matches(check.source, ele) && ele.outgoers().some(function (n) {\n return n.isNode() && matches(check.target, n);\n });\n};\n\nmatch[Type.NODE_TARGET] = function (check, ele) {\n return matches(check.target, ele) && ele.incomers().some(function (n) {\n return n.isNode() && matches(check.source, n);\n });\n};\n\nmatch[Type.CHILD] = function (check, ele) {\n return matches(check.child, ele) && matches(check.parent, ele.parent());\n};\n\nmatch[Type.PARENT] = function (check, ele) {\n return matches(check.parent, ele) && ele.children().some(function (c) {\n return matches(check.child, c);\n });\n};\n\nmatch[Type.DESCENDANT] = function (check, ele) {\n return matches(check.descendant, ele) && ele.ancestors().some(function (a) {\n return matches(check.ancestor, a);\n });\n};\n\nmatch[Type.ANCESTOR] = function (check, ele) {\n return matches(check.ancestor, ele) && ele.descendants().some(function (d) {\n return matches(check.descendant, d);\n });\n};\n\nmatch[Type.COMPOUND_SPLIT] = function (check, ele) {\n return matches(check.subject, ele) && matches(check.left, ele) && matches(check.right, ele);\n};\n\nmatch[Type.TRUE] = function () {\n return true;\n};\n\nmatch[Type.COLLECTION] = function (check, ele) {\n var collection = check.value;\n return collection.has(ele);\n};\n\nmatch[Type.FILTER] = function (check, ele) {\n var filter = check.value;\n return filter(ele);\n};\n\nvar filter = function filter(collection) {\n var self = this; // for 1 id #foo queries, just get the element\n\n if (self.length === 1 && self[0].checks.length === 1 && self[0].checks[0].type === Type.ID) {\n return collection.getElementById(self[0].checks[0].value).collection();\n }\n\n var selectorFunction = function selectorFunction(element) {\n for (var j = 0; j < self.length; j++) {\n var query = self[j];\n\n if (matches(query, element)) {\n return true;\n }\n }\n\n return false;\n };\n\n if (self.text() == null) {\n selectorFunction = function selectorFunction() {\n return true;\n };\n }\n\n return collection.filter(selectorFunction);\n}; // filter\n// does selector match a single element?\n\n\nvar matches$1 = function matches$1(ele) {\n var self = this;\n\n for (var j = 0; j < self.length; j++) {\n var query = self[j];\n\n if (matches(query, ele)) {\n return true;\n }\n }\n\n return false;\n}; // matches\n\n\nvar matching = {\n matches: matches$1,\n filter: filter\n};\n\nvar Selector = function Selector(selector) {\n this.inputText = selector;\n this.currentSubject = null;\n this.compoundCount = 0;\n this.edgeCount = 0;\n this.length = 0;\n\n if (selector == null || string(selector) && selector.match(/^\\s*$/)) ; else if (elementOrCollection(selector)) {\n this.addQuery({\n checks: [{\n type: Type.COLLECTION,\n value: selector.collection()\n }]\n });\n } else if (fn(selector)) {\n this.addQuery({\n checks: [{\n type: Type.FILTER,\n value: selector\n }]\n });\n } else if (string(selector)) {\n if (!this.parse(selector)) {\n this.invalid = true;\n }\n } else {\n error('A selector must be created from a string; found ', selector);\n }\n};\n\nvar selfn = Selector.prototype;\n[parse$1, matching].forEach(function (p) {\n return extend(selfn, p);\n});\n\nselfn.text = function () {\n return this.inputText;\n};\n\nselfn.size = function () {\n return this.length;\n};\n\nselfn.eq = function (i) {\n return this[i];\n};\n\nselfn.sameText = function (otherSel) {\n return !this.invalid && !otherSel.invalid && this.text() === otherSel.text();\n};\n\nselfn.addQuery = function (q) {\n this[this.length++] = q;\n};\n\nselfn.selector = selfn.toString;\n\nvar elesfn$e = {\n allAre: function allAre(selector) {\n var selObj = new Selector(selector);\n return this.every(function (ele) {\n return selObj.matches(ele);\n });\n },\n is: function is(selector) {\n var selObj = new Selector(selector);\n return this.some(function (ele) {\n return selObj.matches(ele);\n });\n },\n some: function some(fn, thisArg) {\n for (var i = 0; i < this.length; i++) {\n var ret = !thisArg ? fn(this[i], i, this) : fn.apply(thisArg, [this[i], i, this]);\n\n if (ret) {\n return true;\n }\n }\n\n return false;\n },\n every: function every(fn, thisArg) {\n for (var i = 0; i < this.length; i++) {\n var ret = !thisArg ? fn(this[i], i, this) : fn.apply(thisArg, [this[i], i, this]);\n\n if (!ret) {\n return false;\n }\n }\n\n return true;\n },\n same: function same(collection) {\n // cheap collection ref check\n if (this === collection) {\n return true;\n }\n\n collection = this.cy().collection(collection);\n var thisLength = this.length;\n var collectionLength = collection.length; // cheap length check\n\n if (thisLength !== collectionLength) {\n return false;\n } // cheap element ref check\n\n\n if (thisLength === 1) {\n return this[0] === collection[0];\n }\n\n return this.every(function (ele) {\n return collection.hasElementWithId(ele.id());\n });\n },\n anySame: function anySame(collection) {\n collection = this.cy().collection(collection);\n return this.some(function (ele) {\n return collection.hasElementWithId(ele.id());\n });\n },\n allAreNeighbors: function allAreNeighbors(collection) {\n collection = this.cy().collection(collection);\n var nhood = this.neighborhood();\n return collection.every(function (ele) {\n return nhood.hasElementWithId(ele.id());\n });\n },\n contains: function contains(collection) {\n collection = this.cy().collection(collection);\n var self = this;\n return collection.every(function (ele) {\n return self.hasElementWithId(ele.id());\n });\n }\n};\nelesfn$e.allAreNeighbours = elesfn$e.allAreNeighbors;\nelesfn$e.has = elesfn$e.contains;\nelesfn$e.equal = elesfn$e.equals = elesfn$e.same;\n\nvar cache = function cache(fn, name) {\n return function traversalCache(arg1, arg2, arg3, arg4) {\n var selectorOrEles = arg1;\n var eles = this;\n var key;\n\n if (selectorOrEles == null) {\n key = '';\n } else if (elementOrCollection(selectorOrEles) && selectorOrEles.length === 1) {\n key = selectorOrEles.id();\n }\n\n if (eles.length === 1 && key) {\n var _p = eles[0]._private;\n var tch = _p.traversalCache = _p.traversalCache || {};\n var ch = tch[name] = tch[name] || [];\n var hash = hashString(key);\n var cacheHit = ch[hash];\n\n if (cacheHit) {\n return cacheHit;\n } else {\n return ch[hash] = fn.call(eles, arg1, arg2, arg3, arg4);\n }\n } else {\n return fn.call(eles, arg1, arg2, arg3, arg4);\n }\n };\n};\n\nvar elesfn$f = {\n parent: function parent(selector) {\n var parents = []; // optimisation for single ele call\n\n if (this.length === 1) {\n var parent = this[0]._private.parent;\n\n if (parent) {\n return parent;\n }\n }\n\n for (var i = 0; i < this.length; i++) {\n var ele = this[i];\n var _parent = ele._private.parent;\n\n if (_parent) {\n parents.push(_parent);\n }\n }\n\n return this.spawn(parents, {\n unique: true\n }).filter(selector);\n },\n parents: function parents(selector) {\n var parents = [];\n var eles = this.parent();\n\n while (eles.nonempty()) {\n for (var i = 0; i < eles.length; i++) {\n var ele = eles[i];\n parents.push(ele);\n }\n\n eles = eles.parent();\n }\n\n return this.spawn(parents, {\n unique: true\n }).filter(selector);\n },\n commonAncestors: function commonAncestors(selector) {\n var ancestors;\n\n for (var i = 0; i < this.length; i++) {\n var ele = this[i];\n var parents = ele.parents();\n ancestors = ancestors || parents;\n ancestors = ancestors.intersect(parents); // current list must be common with current ele parents set\n }\n\n return ancestors.filter(selector);\n },\n orphans: function orphans(selector) {\n return this.stdFilter(function (ele) {\n return ele.isOrphan();\n }).filter(selector);\n },\n nonorphans: function nonorphans(selector) {\n return this.stdFilter(function (ele) {\n return ele.isChild();\n }).filter(selector);\n },\n children: cache(function (selector) {\n var children = [];\n\n for (var i = 0; i < this.length; i++) {\n var ele = this[i];\n var eleChildren = ele._private.children;\n\n for (var j = 0; j < eleChildren.length; j++) {\n children.push(eleChildren[j]);\n }\n }\n\n return this.spawn(children, {\n unique: true\n }).filter(selector);\n }, 'children'),\n siblings: function siblings(selector) {\n return this.parent().children().not(this).filter(selector);\n },\n isParent: function isParent() {\n var ele = this[0];\n\n if (ele) {\n return ele.isNode() && ele._private.children.length !== 0;\n }\n },\n isChildless: function isChildless() {\n var ele = this[0];\n\n if (ele) {\n return ele.isNode() && ele._private.children.length === 0;\n }\n },\n isChild: function isChild() {\n var ele = this[0];\n\n if (ele) {\n return ele.isNode() && ele._private.parent != null;\n }\n },\n isOrphan: function isOrphan() {\n var ele = this[0];\n\n if (ele) {\n return ele.isNode() && ele._private.parent == null;\n }\n },\n descendants: function descendants(selector) {\n var elements = [];\n\n function add(eles) {\n for (var i = 0; i < eles.length; i++) {\n var ele = eles[i];\n elements.push(ele);\n\n if (ele.children().nonempty()) {\n add(ele.children());\n }\n }\n }\n\n add(this.children());\n return this.spawn(elements, {\n unique: true\n }).filter(selector);\n }\n};\n\nfunction forEachCompound(eles, fn, includeSelf, recursiveStep) {\n var q = [];\n var did = new Set$1();\n var cy = eles.cy();\n var hasCompounds = cy.hasCompoundNodes();\n\n for (var i = 0; i < eles.length; i++) {\n var ele = eles[i];\n\n if (includeSelf) {\n q.push(ele);\n } else if (hasCompounds) {\n recursiveStep(q, did, ele);\n }\n }\n\n while (q.length > 0) {\n var _ele = q.shift();\n\n fn(_ele);\n did.add(_ele.id());\n\n if (hasCompounds) {\n recursiveStep(q, did, _ele);\n }\n }\n\n return eles;\n}\n\nfunction addChildren(q, did, ele) {\n if (ele.isParent()) {\n var children = ele._private.children;\n\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n\n if (!did.has(child.id())) {\n q.push(child);\n }\n }\n }\n} // very efficient version of eles.add( eles.descendants() ).forEach()\n// for internal use\n\n\nelesfn$f.forEachDown = function (fn) {\n var includeSelf = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n return forEachCompound(this, fn, includeSelf, addChildren);\n};\n\nfunction addParent(q, did, ele) {\n if (ele.isChild()) {\n var parent = ele._private.parent;\n\n if (!did.has(parent.id())) {\n q.push(parent);\n }\n }\n}\n\nelesfn$f.forEachUp = function (fn) {\n var includeSelf = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n return forEachCompound(this, fn, includeSelf, addParent);\n};\n\nfunction addParentAndChildren(q, did, ele) {\n addParent(q, did, ele);\n addChildren(q, did, ele);\n}\n\nelesfn$f.forEachUpAndDown = function (fn) {\n var includeSelf = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n return forEachCompound(this, fn, includeSelf, addParentAndChildren);\n}; // aliases\n\n\nelesfn$f.ancestors = elesfn$f.parents;\n\nvar fn$1, elesfn$g;\nfn$1 = elesfn$g = {\n data: define$3.data({\n field: 'data',\n bindingEvent: 'data',\n allowBinding: true,\n allowSetting: true,\n settingEvent: 'data',\n settingTriggersEvent: true,\n triggerFnName: 'trigger',\n allowGetting: true,\n immutableKeys: {\n 'id': true,\n 'source': true,\n 'target': true,\n 'parent': true\n },\n updateStyle: true\n }),\n removeData: define$3.removeData({\n field: 'data',\n event: 'data',\n triggerFnName: 'trigger',\n triggerEvent: true,\n immutableKeys: {\n 'id': true,\n 'source': true,\n 'target': true,\n 'parent': true\n },\n updateStyle: true\n }),\n scratch: define$3.data({\n field: 'scratch',\n bindingEvent: 'scratch',\n allowBinding: true,\n allowSetting: true,\n settingEvent: 'scratch',\n settingTriggersEvent: true,\n triggerFnName: 'trigger',\n allowGetting: true,\n updateStyle: true\n }),\n removeScratch: define$3.removeData({\n field: 'scratch',\n event: 'scratch',\n triggerFnName: 'trigger',\n triggerEvent: true,\n updateStyle: true\n }),\n rscratch: define$3.data({\n field: 'rscratch',\n allowBinding: false,\n allowSetting: true,\n settingTriggersEvent: false,\n allowGetting: true\n }),\n removeRscratch: define$3.removeData({\n field: 'rscratch',\n triggerEvent: false\n }),\n id: function id() {\n var ele = this[0];\n\n if (ele) {\n return ele._private.data.id;\n }\n }\n}; // aliases\n\nfn$1.attr = fn$1.data;\nfn$1.removeAttr = fn$1.removeData;\nvar data$1 = elesfn$g;\n\nvar elesfn$h = {};\n\nfunction defineDegreeFunction(callback) {\n return function (includeLoops) {\n var self = this;\n\n if (includeLoops === undefined) {\n includeLoops = true;\n }\n\n if (self.length === 0) {\n return;\n }\n\n if (self.isNode() && !self.removed()) {\n var degree = 0;\n var node = self[0];\n var connectedEdges = node._private.edges;\n\n for (var i = 0; i < connectedEdges.length; i++) {\n var edge = connectedEdges[i];\n\n if (!includeLoops && edge.isLoop()) {\n continue;\n }\n\n degree += callback(node, edge);\n }\n\n return degree;\n } else {\n return;\n }\n };\n}\n\nextend(elesfn$h, {\n degree: defineDegreeFunction(function (node, edge) {\n if (edge.source().same(edge.target())) {\n return 2;\n } else {\n return 1;\n }\n }),\n indegree: defineDegreeFunction(function (node, edge) {\n if (edge.target().same(node)) {\n return 1;\n } else {\n return 0;\n }\n }),\n outdegree: defineDegreeFunction(function (node, edge) {\n if (edge.source().same(node)) {\n return 1;\n } else {\n return 0;\n }\n })\n});\n\nfunction defineDegreeBoundsFunction(degreeFn, callback) {\n return function (includeLoops) {\n var ret;\n var nodes = this.nodes();\n\n for (var i = 0; i < nodes.length; i++) {\n var ele = nodes[i];\n var degree = ele[degreeFn](includeLoops);\n\n if (degree !== undefined && (ret === undefined || callback(degree, ret))) {\n ret = degree;\n }\n }\n\n return ret;\n };\n}\n\nextend(elesfn$h, {\n minDegree: defineDegreeBoundsFunction('degree', function (degree, min) {\n return degree < min;\n }),\n maxDegree: defineDegreeBoundsFunction('degree', function (degree, max) {\n return degree > max;\n }),\n minIndegree: defineDegreeBoundsFunction('indegree', function (degree, min) {\n return degree < min;\n }),\n maxIndegree: defineDegreeBoundsFunction('indegree', function (degree, max) {\n return degree > max;\n }),\n minOutdegree: defineDegreeBoundsFunction('outdegree', function (degree, min) {\n return degree < min;\n }),\n maxOutdegree: defineDegreeBoundsFunction('outdegree', function (degree, max) {\n return degree > max;\n })\n});\nextend(elesfn$h, {\n totalDegree: function totalDegree(includeLoops) {\n var total = 0;\n var nodes = this.nodes();\n\n for (var i = 0; i < nodes.length; i++) {\n total += nodes[i].degree(includeLoops);\n }\n\n return total;\n }\n});\n\nvar fn$2, elesfn$i;\n\nvar beforePositionSet = function beforePositionSet(eles, newPos, silent) {\n for (var i = 0; i < eles.length; i++) {\n var ele = eles[i];\n\n if (!ele.locked()) {\n var oldPos = ele._private.position;\n var delta = {\n x: newPos.x != null ? newPos.x - oldPos.x : 0,\n y: newPos.y != null ? newPos.y - oldPos.y : 0\n };\n\n if (ele.isParent() && !(delta.x === 0 && delta.y === 0)) {\n ele.children().shift(delta, silent);\n }\n\n ele.shiftCachedBoundingBox(delta);\n }\n }\n};\n\nvar positionDef = {\n field: 'position',\n bindingEvent: 'position',\n allowBinding: true,\n allowSetting: true,\n settingEvent: 'position',\n settingTriggersEvent: true,\n triggerFnName: 'emitAndNotify',\n allowGetting: true,\n validKeys: ['x', 'y'],\n beforeGet: function beforeGet(ele) {\n ele.updateCompoundBounds();\n },\n beforeSet: function beforeSet(eles, newPos) {\n beforePositionSet(eles, newPos, false);\n },\n onSet: function onSet(eles) {\n eles.dirtyCompoundBoundsCache();\n },\n canSet: function canSet(ele) {\n return !ele.locked();\n }\n};\nfn$2 = elesfn$i = {\n position: define$3.data(positionDef),\n // position but no notification to renderer\n silentPosition: define$3.data(extend({}, positionDef, {\n allowBinding: false,\n allowSetting: true,\n settingTriggersEvent: false,\n allowGetting: false,\n beforeSet: function beforeSet(eles, newPos) {\n beforePositionSet(eles, newPos, true);\n }\n })),\n positions: function positions(pos, silent) {\n if (plainObject(pos)) {\n if (silent) {\n this.silentPosition(pos);\n } else {\n this.position(pos);\n }\n } else if (fn(pos)) {\n var _fn = pos;\n var cy = this.cy();\n cy.startBatch();\n\n for (var i = 0; i < this.length; i++) {\n var ele = this[i];\n\n var _pos = void 0;\n\n if (_pos = _fn(ele, i)) {\n if (silent) {\n ele.silentPosition(_pos);\n } else {\n ele.position(_pos);\n }\n }\n }\n\n cy.endBatch();\n }\n\n return this; // chaining\n },\n silentPositions: function silentPositions(pos) {\n return this.positions(pos, true);\n },\n shift: function shift(dim, val, silent) {\n var delta;\n\n if (plainObject(dim)) {\n delta = {\n x: number(dim.x) ? dim.x : 0,\n y: number(dim.y) ? dim.y : 0\n };\n silent = val;\n } else if (string(dim) && number(val)) {\n delta = {\n x: 0,\n y: 0\n };\n delta[dim] = val;\n }\n\n if (delta != null) {\n var cy = this.cy();\n cy.startBatch();\n\n for (var i = 0; i < this.length; i++) {\n var ele = this[i];\n var pos = ele.position();\n var newPos = {\n x: pos.x + delta.x,\n y: pos.y + delta.y\n };\n\n if (silent) {\n ele.silentPosition(newPos);\n } else {\n ele.position(newPos);\n }\n }\n\n cy.endBatch();\n }\n\n return this;\n },\n silentShift: function silentShift(dim, val) {\n if (plainObject(dim)) {\n this.shift(dim, true);\n } else if (string(dim) && number(val)) {\n this.shift(dim, val, true);\n }\n\n return this;\n },\n // get/set the rendered (i.e. on screen) positon of the element\n renderedPosition: function renderedPosition(dim, val) {\n var ele = this[0];\n var cy = this.cy();\n var zoom = cy.zoom();\n var pan = cy.pan();\n var rpos = plainObject(dim) ? dim : undefined;\n var setting = rpos !== undefined || val !== undefined && string(dim);\n\n if (ele && ele.isNode()) {\n // must have an element and must be a node to return position\n if (setting) {\n for (var i = 0; i < this.length; i++) {\n var _ele = this[i];\n\n if (val !== undefined) {\n // set one dimension\n _ele.position(dim, (val - pan[dim]) / zoom);\n } else if (rpos !== undefined) {\n // set whole position\n _ele.position(renderedToModelPosition(rpos, zoom, pan));\n }\n }\n } else {\n // getting\n var pos = ele.position();\n rpos = modelToRenderedPosition(pos, zoom, pan);\n\n if (dim === undefined) {\n // then return the whole rendered position\n return rpos;\n } else {\n // then return the specified dimension\n return rpos[dim];\n }\n }\n } else if (!setting) {\n return undefined; // for empty collection case\n }\n\n return this; // chaining\n },\n // get/set the position relative to the parent\n relativePosition: function relativePosition(dim, val) {\n var ele = this[0];\n var cy = this.cy();\n var ppos = plainObject(dim) ? dim : undefined;\n var setting = ppos !== undefined || val !== undefined && string(dim);\n var hasCompoundNodes = cy.hasCompoundNodes();\n\n if (ele && ele.isNode()) {\n // must have an element and must be a node to return position\n if (setting) {\n for (var i = 0; i < this.length; i++) {\n var _ele2 = this[i];\n var parent = hasCompoundNodes ? _ele2.parent() : null;\n var hasParent = parent && parent.length > 0;\n var relativeToParent = hasParent;\n\n if (hasParent) {\n parent = parent[0];\n }\n\n var origin = relativeToParent ? parent.position() : {\n x: 0,\n y: 0\n };\n\n if (val !== undefined) {\n // set one dimension\n _ele2.position(dim, val + origin[dim]);\n } else if (ppos !== undefined) {\n // set whole position\n _ele2.position({\n x: ppos.x + origin.x,\n y: ppos.y + origin.y\n });\n }\n }\n } else {\n // getting\n var pos = ele.position();\n\n var _parent = hasCompoundNodes ? ele.parent() : null;\n\n var _hasParent = _parent && _parent.length > 0;\n\n var _relativeToParent = _hasParent;\n\n if (_hasParent) {\n _parent = _parent[0];\n }\n\n var _origin = _relativeToParent ? _parent.position() : {\n x: 0,\n y: 0\n };\n\n ppos = {\n x: pos.x - _origin.x,\n y: pos.y - _origin.y\n };\n\n if (dim === undefined) {\n // then return the whole rendered position\n return ppos;\n } else {\n // then return the specified dimension\n return ppos[dim];\n }\n }\n } else if (!setting) {\n return undefined; // for empty collection case\n }\n\n return this; // chaining\n }\n}; // aliases\n\nfn$2.modelPosition = fn$2.point = fn$2.position;\nfn$2.modelPositions = fn$2.points = fn$2.positions;\nfn$2.renderedPoint = fn$2.renderedPosition;\nfn$2.relativePoint = fn$2.relativePosition;\nvar position = elesfn$i;\n\nvar fn$3, elesfn$j;\nfn$3 = elesfn$j = {};\n\nelesfn$j.renderedBoundingBox = function (options) {\n var bb = this.boundingBox(options);\n var cy = this.cy();\n var zoom = cy.zoom();\n var pan = cy.pan();\n var x1 = bb.x1 * zoom + pan.x;\n var x2 = bb.x2 * zoom + pan.x;\n var y1 = bb.y1 * zoom + pan.y;\n var y2 = bb.y2 * zoom + pan.y;\n return {\n x1: x1,\n x2: x2,\n y1: y1,\n y2: y2,\n w: x2 - x1,\n h: y2 - y1\n };\n};\n\nelesfn$j.dirtyCompoundBoundsCache = function () {\n var cy = this.cy();\n\n if (!cy.styleEnabled() || !cy.hasCompoundNodes()) {\n return this;\n }\n\n this.forEachUp(function (ele) {\n if (ele.isParent()) {\n var _p = ele._private;\n _p.compoundBoundsClean = false;\n _p.bbCache = null;\n ele.emitAndNotify('bounds');\n }\n });\n return this;\n};\n\nelesfn$j.updateCompoundBounds = function () {\n var force = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var cy = this.cy(); // not possible to do on non-compound graphs or with the style disabled\n\n if (!cy.styleEnabled() || !cy.hasCompoundNodes()) {\n return this;\n } // save cycles when batching -- but bounds will be stale (or not exist yet)\n\n\n if (!force && cy.batching()) {\n return this;\n }\n\n function update(parent) {\n if (!parent.isParent()) {\n return;\n }\n\n var _p = parent._private;\n var children = parent.children();\n var includeLabels = parent.pstyle('compound-sizing-wrt-labels').value === 'include';\n var min = {\n width: {\n val: parent.pstyle('min-width').pfValue,\n left: parent.pstyle('min-width-bias-left'),\n right: parent.pstyle('min-width-bias-right')\n },\n height: {\n val: parent.pstyle('min-height').pfValue,\n top: parent.pstyle('min-height-bias-top'),\n bottom: parent.pstyle('min-height-bias-bottom')\n }\n };\n\n var takesUpSpace = function takesUpSpace(ele) {\n return ele.pstyle('display').value === 'element';\n };\n\n var bb = children.filter(takesUpSpace).boundingBox({\n includeLabels: includeLabels,\n includeOverlays: false,\n // updating the compound bounds happens outside of the regular\n // cache cycle (i.e. before fired events)\n useCache: false\n });\n var pos = _p.position; // if children take up zero area then keep position and fall back on stylesheet w/h\n\n if (bb.w === 0 || bb.h === 0) {\n bb = {\n w: parent.pstyle('width').pfValue,\n h: parent.pstyle('height').pfValue\n };\n bb.x1 = pos.x - bb.w / 2;\n bb.x2 = pos.x + bb.w / 2;\n bb.y1 = pos.y - bb.h / 2;\n bb.y2 = pos.y + bb.h / 2;\n }\n\n function computeBiasValues(propDiff, propBias, propBiasComplement) {\n var biasDiff = 0;\n var biasComplementDiff = 0;\n var biasTotal = propBias + propBiasComplement;\n\n if (propDiff > 0 && biasTotal > 0) {\n biasDiff = propBias / biasTotal * propDiff;\n biasComplementDiff = propBiasComplement / biasTotal * propDiff;\n }\n\n return {\n biasDiff: biasDiff,\n biasComplementDiff: biasComplementDiff\n };\n }\n\n function computePaddingValues(width, height, paddingObject, relativeTo) {\n // Assuming percentage is number from 0 to 1\n if (paddingObject.units === '%') {\n switch (relativeTo) {\n case 'width':\n return width > 0 ? paddingObject.pfValue * width : 0;\n\n case 'height':\n return height > 0 ? paddingObject.pfValue * height : 0;\n\n case 'average':\n return width > 0 && height > 0 ? paddingObject.pfValue * (width + height) / 2 : 0;\n\n case 'min':\n return width > 0 && height > 0 ? width > height ? paddingObject.pfValue * height : paddingObject.pfValue * width : 0;\n\n case 'max':\n return width > 0 && height > 0 ? width > height ? paddingObject.pfValue * width : paddingObject.pfValue * height : 0;\n\n default:\n return 0;\n }\n } else if (paddingObject.units === 'px') {\n return paddingObject.pfValue;\n } else {\n return 0;\n }\n }\n\n var leftVal = min.width.left.value;\n\n if (min.width.left.units === 'px' && min.width.val > 0) {\n leftVal = leftVal * 100 / min.width.val;\n }\n\n var rightVal = min.width.right.value;\n\n if (min.width.right.units === 'px' && min.width.val > 0) {\n rightVal = rightVal * 100 / min.width.val;\n }\n\n var topVal = min.height.top.value;\n\n if (min.height.top.units === 'px' && min.height.val > 0) {\n topVal = topVal * 100 / min.height.val;\n }\n\n var bottomVal = min.height.bottom.value;\n\n if (min.height.bottom.units === 'px' && min.height.val > 0) {\n bottomVal = bottomVal * 100 / min.height.val;\n }\n\n var widthBiasDiffs = computeBiasValues(min.width.val - bb.w, leftVal, rightVal);\n var diffLeft = widthBiasDiffs.biasDiff;\n var diffRight = widthBiasDiffs.biasComplementDiff;\n var heightBiasDiffs = computeBiasValues(min.height.val - bb.h, topVal, bottomVal);\n var diffTop = heightBiasDiffs.biasDiff;\n var diffBottom = heightBiasDiffs.biasComplementDiff;\n _p.autoPadding = computePaddingValues(bb.w, bb.h, parent.pstyle('padding'), parent.pstyle('padding-relative-to').value);\n _p.autoWidth = Math.max(bb.w, min.width.val);\n pos.x = (-diffLeft + bb.x1 + bb.x2 + diffRight) / 2;\n _p.autoHeight = Math.max(bb.h, min.height.val);\n pos.y = (-diffTop + bb.y1 + bb.y2 + diffBottom) / 2;\n }\n\n for (var i = 0; i < this.length; i++) {\n var ele = this[i];\n var _p = ele._private;\n\n if (!_p.compoundBoundsClean) {\n update(ele);\n\n if (!cy.batching()) {\n _p.compoundBoundsClean = true;\n }\n }\n }\n\n return this;\n};\n\nvar noninf = function noninf(x) {\n if (x === Infinity || x === -Infinity) {\n return 0;\n }\n\n return x;\n};\n\nvar updateBounds = function updateBounds(b, x1, y1, x2, y2) {\n // don't update with zero area boxes\n if (x2 - x1 === 0 || y2 - y1 === 0) {\n return;\n } // don't update with null dim\n\n\n if (x1 == null || y1 == null || x2 == null || y2 == null) {\n return;\n }\n\n b.x1 = x1 < b.x1 ? x1 : b.x1;\n b.x2 = x2 > b.x2 ? x2 : b.x2;\n b.y1 = y1 < b.y1 ? y1 : b.y1;\n b.y2 = y2 > b.y2 ? y2 : b.y2;\n b.w = b.x2 - b.x1;\n b.h = b.y2 - b.y1;\n};\n\nvar updateBoundsFromBox = function updateBoundsFromBox(b, b2) {\n if (b2 == null) {\n return b;\n }\n\n return updateBounds(b, b2.x1, b2.y1, b2.x2, b2.y2);\n};\n\nvar prefixedProperty = function prefixedProperty(obj, field, prefix) {\n return getPrefixedProperty(obj, field, prefix);\n};\n\nvar updateBoundsFromArrow = function updateBoundsFromArrow(bounds, ele, prefix) {\n if (ele.cy().headless()) {\n return;\n }\n\n var _p = ele._private;\n var rstyle = _p.rstyle;\n var halfArW = rstyle.arrowWidth / 2;\n var arrowType = ele.pstyle(prefix + '-arrow-shape').value;\n var x;\n var y;\n\n if (arrowType !== 'none') {\n if (prefix === 'source') {\n x = rstyle.srcX;\n y = rstyle.srcY;\n } else if (prefix === 'target') {\n x = rstyle.tgtX;\n y = rstyle.tgtY;\n } else {\n x = rstyle.midX;\n y = rstyle.midY;\n } // always store the individual arrow bounds\n\n\n var bbs = _p.arrowBounds = _p.arrowBounds || {};\n var bb = bbs[prefix] = bbs[prefix] || {};\n bb.x1 = x - halfArW;\n bb.y1 = y - halfArW;\n bb.x2 = x + halfArW;\n bb.y2 = y + halfArW;\n bb.w = bb.x2 - bb.x1;\n bb.h = bb.y2 - bb.y1;\n expandBoundingBox(bb, 1);\n updateBounds(bounds, bb.x1, bb.y1, bb.x2, bb.y2);\n }\n};\n\nvar updateBoundsFromLabel = function updateBoundsFromLabel(bounds, ele, prefix) {\n if (ele.cy().headless()) {\n return;\n }\n\n var prefixDash;\n\n if (prefix) {\n prefixDash = prefix + '-';\n } else {\n prefixDash = '';\n }\n\n var _p = ele._private;\n var rstyle = _p.rstyle;\n var label = ele.pstyle(prefixDash + 'label').strValue;\n\n if (label) {\n var halign = ele.pstyle('text-halign');\n var valign = ele.pstyle('text-valign');\n var labelWidth = prefixedProperty(rstyle, 'labelWidth', prefix);\n var labelHeight = prefixedProperty(rstyle, 'labelHeight', prefix);\n var labelX = prefixedProperty(rstyle, 'labelX', prefix);\n var labelY = prefixedProperty(rstyle, 'labelY', prefix);\n var marginX = ele.pstyle(prefixDash + 'text-margin-x').pfValue;\n var marginY = ele.pstyle(prefixDash + 'text-margin-y').pfValue;\n var isEdge = ele.isEdge();\n var rotation = ele.pstyle(prefixDash + 'text-rotation');\n var outlineWidth = ele.pstyle('text-outline-width').pfValue;\n var borderWidth = ele.pstyle('text-border-width').pfValue;\n var halfBorderWidth = borderWidth / 2;\n var padding = ele.pstyle('text-background-padding').pfValue;\n var lh = labelHeight;\n var lw = labelWidth;\n var lw_2 = lw / 2;\n var lh_2 = lh / 2;\n var lx1, lx2, ly1, ly2;\n\n if (isEdge) {\n lx1 = labelX - lw_2;\n lx2 = labelX + lw_2;\n ly1 = labelY - lh_2;\n ly2 = labelY + lh_2;\n } else {\n switch (halign.value) {\n case 'left':\n lx1 = labelX - lw;\n lx2 = labelX;\n break;\n\n case 'center':\n lx1 = labelX - lw_2;\n lx2 = labelX + lw_2;\n break;\n\n case 'right':\n lx1 = labelX;\n lx2 = labelX + lw;\n break;\n }\n\n switch (valign.value) {\n case 'top':\n ly1 = labelY - lh;\n ly2 = labelY;\n break;\n\n case 'center':\n ly1 = labelY - lh_2;\n ly2 = labelY + lh_2;\n break;\n\n case 'bottom':\n ly1 = labelY;\n ly2 = labelY + lh;\n break;\n }\n } // shift by margin and expand by outline and border\n\n\n lx1 += marginX - Math.max(outlineWidth, halfBorderWidth) - padding;\n lx2 += marginX + Math.max(outlineWidth, halfBorderWidth) + padding;\n ly1 += marginY - Math.max(outlineWidth, halfBorderWidth) - padding;\n ly2 += marginY + Math.max(outlineWidth, halfBorderWidth) + padding; // always store the unrotated label bounds separately\n\n var bbPrefix = prefix || 'main';\n var bbs = _p.labelBounds;\n var bb = bbs[bbPrefix] = bbs[bbPrefix] || {};\n bb.x1 = lx1;\n bb.y1 = ly1;\n bb.x2 = lx2;\n bb.y2 = ly2;\n bb.w = lx2 - lx1;\n bb.h = ly2 - ly1;\n expandBoundingBox(bb, 1); // expand to work around browser dimension inaccuracies\n\n var isAutorotate = isEdge && rotation.strValue === 'autorotate';\n var isPfValue = rotation.pfValue != null && rotation.pfValue !== 0;\n\n if (isAutorotate || isPfValue) {\n var theta = isAutorotate ? prefixedProperty(_p.rstyle, 'labelAngle', prefix) : rotation.pfValue;\n var cos = Math.cos(theta);\n var sin = Math.sin(theta); // rotation point (default value for center-center)\n\n var xo = (lx1 + lx2) / 2;\n var yo = (ly1 + ly2) / 2;\n\n if (!isEdge) {\n switch (halign.value) {\n case 'left':\n xo = lx2;\n break;\n\n case 'right':\n xo = lx1;\n break;\n }\n\n switch (valign.value) {\n case 'top':\n yo = ly2;\n break;\n\n case 'bottom':\n yo = ly1;\n break;\n }\n }\n\n var rotate = function rotate(x, y) {\n x = x - xo;\n y = y - yo;\n return {\n x: x * cos - y * sin + xo,\n y: x * sin + y * cos + yo\n };\n };\n\n var px1y1 = rotate(lx1, ly1);\n var px1y2 = rotate(lx1, ly2);\n var px2y1 = rotate(lx2, ly1);\n var px2y2 = rotate(lx2, ly2);\n lx1 = Math.min(px1y1.x, px1y2.x, px2y1.x, px2y2.x);\n lx2 = Math.max(px1y1.x, px1y2.x, px2y1.x, px2y2.x);\n ly1 = Math.min(px1y1.y, px1y2.y, px2y1.y, px2y2.y);\n ly2 = Math.max(px1y1.y, px1y2.y, px2y1.y, px2y2.y);\n }\n\n updateBounds(bounds, lx1, ly1, lx2, ly2);\n updateBounds(_p.labelBounds.all, lx1, ly1, lx2, ly2);\n }\n\n return bounds;\n}; // get the bounding box of the elements (in raw model position)\n\n\nvar boundingBoxImpl = function boundingBoxImpl(ele, options) {\n var cy = ele._private.cy;\n var styleEnabled = cy.styleEnabled();\n var headless = cy.headless();\n var bounds = makeBoundingBox();\n var _p = ele._private;\n var display = styleEnabled ? ele.pstyle('display').value : 'element';\n var isNode = ele.isNode();\n var isEdge = ele.isEdge();\n var ex1, ex2, ey1, ey2; // extrema of body / lines\n\n var x, y; // node pos\n\n var displayed = display !== 'none';\n var rstyle = _p.rstyle;\n var manualExpansion = isNode && styleEnabled ? ele.pstyle('bounds-expansion').pfValue : 0;\n\n if (displayed) {\n var overlayOpacity = 0;\n var overlayPadding = 0;\n\n if (styleEnabled && options.includeOverlays) {\n overlayOpacity = ele.pstyle('overlay-opacity').value;\n\n if (overlayOpacity !== 0) {\n overlayPadding = ele.pstyle('overlay-padding').value;\n }\n }\n\n var w = 0;\n var wHalf = 0;\n\n if (styleEnabled) {\n w = ele.pstyle('width').pfValue;\n wHalf = w / 2;\n }\n\n if (isNode && options.includeNodes) {\n var pos = ele.position();\n x = pos.x;\n y = pos.y;\n\n var _w = ele.outerWidth();\n\n var halfW = _w / 2;\n var h = ele.outerHeight();\n var halfH = h / 2; // handle node dimensions\n /////////////////////////\n\n ex1 = x - halfW;\n ex2 = x + halfW;\n ey1 = y - halfH;\n ey2 = y + halfH;\n updateBounds(bounds, ex1, ey1, ex2, ey2);\n } else if (isEdge && options.includeEdges) {\n // handle edge dimensions (rough box estimate)\n //////////////////////////////////////////////\n if (styleEnabled && !headless) {\n ex1 = Math.min(rstyle.srcX, rstyle.midX, rstyle.tgtX);\n ex2 = Math.max(rstyle.srcX, rstyle.midX, rstyle.tgtX);\n ey1 = Math.min(rstyle.srcY, rstyle.midY, rstyle.tgtY);\n ey2 = Math.max(rstyle.srcY, rstyle.midY, rstyle.tgtY); // take into account edge width\n\n ex1 -= wHalf;\n ex2 += wHalf;\n ey1 -= wHalf;\n ey2 += wHalf;\n updateBounds(bounds, ex1, ey1, ex2, ey2);\n } // precise haystacks\n ////////////////////\n\n\n if (styleEnabled && !headless && ele.pstyle('curve-style').strValue === 'haystack') {\n var hpts = rstyle.haystackPts || [];\n ex1 = hpts[0].x;\n ey1 = hpts[0].y;\n ex2 = hpts[1].x;\n ey2 = hpts[1].y;\n\n if (ex1 > ex2) {\n var temp = ex1;\n ex1 = ex2;\n ex2 = temp;\n }\n\n if (ey1 > ey2) {\n var _temp = ey1;\n ey1 = ey2;\n ey2 = _temp;\n }\n\n updateBounds(bounds, ex1 - wHalf, ey1 - wHalf, ex2 + wHalf, ey2 + wHalf); // handle points along edge\n ///////////////////////////\n } else {\n var pts = rstyle.bezierPts || rstyle.linePts || [];\n\n for (var j = 0; j < pts.length; j++) {\n var pt = pts[j];\n ex1 = pt.x - wHalf;\n ex2 = pt.x + wHalf;\n ey1 = pt.y - wHalf;\n ey2 = pt.y + wHalf;\n updateBounds(bounds, ex1, ey1, ex2, ey2);\n } // fallback on source and target positions\n //////////////////////////////////////////\n\n\n if (pts.length === 0) {\n var n1 = ele.source();\n var n1pos = n1.position();\n var n2 = ele.target();\n var n2pos = n2.position();\n ex1 = n1pos.x;\n ex2 = n2pos.x;\n ey1 = n1pos.y;\n ey2 = n2pos.y;\n\n if (ex1 > ex2) {\n var _temp2 = ex1;\n ex1 = ex2;\n ex2 = _temp2;\n }\n\n if (ey1 > ey2) {\n var _temp3 = ey1;\n ey1 = ey2;\n ey2 = _temp3;\n } // take into account edge width\n\n\n ex1 -= wHalf;\n ex2 += wHalf;\n ey1 -= wHalf;\n ey2 += wHalf;\n updateBounds(bounds, ex1, ey1, ex2, ey2);\n }\n }\n } // edges\n // handle edge arrow size\n /////////////////////////\n\n\n if (styleEnabled && options.includeEdges && isEdge) {\n updateBoundsFromArrow(bounds, ele, 'mid-source', options);\n updateBoundsFromArrow(bounds, ele, 'mid-target', options);\n updateBoundsFromArrow(bounds, ele, 'source', options);\n updateBoundsFromArrow(bounds, ele, 'target', options);\n } // ghost\n ////////\n\n\n if (styleEnabled) {\n var ghost = ele.pstyle('ghost').value === 'yes';\n\n if (ghost) {\n var gx = ele.pstyle('ghost-offset-x').pfValue;\n var gy = ele.pstyle('ghost-offset-y').pfValue;\n updateBounds(bounds, bounds.x1 + gx, bounds.y1 + gy, bounds.x2 + gx, bounds.y2 + gy);\n }\n } // always store the body bounds separately from the labels\n\n\n var bbBody = _p.bodyBounds = _p.bodyBounds || {};\n assignBoundingBox(bbBody, bounds);\n expandBoundingBox(bbBody, manualExpansion);\n expandBoundingBox(bbBody, 1); // expand to work around browser dimension inaccuracies\n // overlay\n //////////\n\n if (styleEnabled) {\n ex1 = bounds.x1;\n ex2 = bounds.x2;\n ey1 = bounds.y1;\n ey2 = bounds.y2;\n updateBounds(bounds, ex1 - overlayPadding, ey1 - overlayPadding, ex2 + overlayPadding, ey2 + overlayPadding);\n } // always store the body bounds separately from the labels\n\n\n var bbOverlay = _p.overlayBounds = _p.overlayBounds || {};\n assignBoundingBox(bbOverlay, bounds);\n expandBoundingBox(bbOverlay, manualExpansion);\n expandBoundingBox(bbOverlay, 1); // expand to work around browser dimension inaccuracies\n // handle label dimensions\n //////////////////////////\n\n var bbLabels = _p.labelBounds = _p.labelBounds || {};\n\n if (bbLabels.all != null) {\n clearBoundingBox(bbLabels.all);\n } else {\n bbLabels.all = makeBoundingBox();\n }\n\n if (styleEnabled && options.includeLabels) {\n updateBoundsFromLabel(bounds, ele, null, options);\n\n if (isEdge) {\n updateBoundsFromLabel(bounds, ele, 'source', options);\n updateBoundsFromLabel(bounds, ele, 'target', options);\n }\n } // style enabled for labels\n\n } // if displayed\n\n\n bounds.x1 = noninf(bounds.x1);\n bounds.y1 = noninf(bounds.y1);\n bounds.x2 = noninf(bounds.x2);\n bounds.y2 = noninf(bounds.y2);\n bounds.w = noninf(bounds.x2 - bounds.x1);\n bounds.h = noninf(bounds.y2 - bounds.y1);\n\n if (bounds.w > 0 && bounds.h > 0 && displayed) {\n expandBoundingBox(bounds, manualExpansion); // expand bounds by 1 because antialiasing can increase the visual/effective size by 1 on all sides\n\n expandBoundingBox(bounds, 1);\n }\n\n return bounds;\n};\n\nvar getKey = function getKey(opts) {\n var i = 0;\n\n var tf = function tf(val) {\n return (val ? 1 : 0) << i++;\n };\n\n var key = 0;\n key += tf(opts.incudeNodes);\n key += tf(opts.includeEdges);\n key += tf(opts.includeLabels);\n key += tf(opts.includeOverlays);\n return key;\n};\n\nvar getBoundingBoxPosKey = function getBoundingBoxPosKey(ele) {\n if (ele.isEdge()) {\n var p1 = ele.source().position();\n var p2 = ele.target().position();\n\n var r = function r(x) {\n return Math.round(x);\n };\n\n return hashIntsArray([r(p1.x), r(p1.y), r(p2.x), r(p2.y)]);\n } else {\n return 0;\n }\n};\n\nvar cachedBoundingBoxImpl = function cachedBoundingBoxImpl(ele, opts) {\n var _p = ele._private;\n var bb;\n var key = opts == null ? defBbOptsKey : getKey(opts);\n var usingDefOpts = key === defBbOptsKey;\n var currPosKey = getBoundingBoxPosKey(ele);\n var isPosKeySame = _p.bbCachePosKey === currPosKey;\n var useCache = opts.useCache && isPosKeySame;\n var needRecalc = !useCache || _p.bbCache == null;\n\n if (needRecalc) {\n if (!isPosKeySame) {\n ele.recalculateRenderedStyle();\n }\n\n bb = boundingBoxImpl(ele, defBbOpts);\n _p.bbCache = bb;\n _p.bbCacheShift.x = _p.bbCacheShift.y = 0;\n _p.bbCachePosKey = currPosKey;\n } else {\n bb = _p.bbCache;\n }\n\n if (!needRecalc && (_p.bbCacheShift.x !== 0 || _p.bbCacheShift.y !== 0)) {\n var shift = assignShiftToBoundingBox;\n var delta = _p.bbCacheShift;\n\n var safeShift = function safeShift(bb, delta) {\n if (bb != null) {\n shift(bb, delta);\n }\n };\n\n shift(bb, delta);\n var bodyBounds = _p.bodyBounds,\n overlayBounds = _p.overlayBounds,\n labelBounds = _p.labelBounds,\n arrowBounds = _p.arrowBounds;\n safeShift(bodyBounds, delta);\n safeShift(overlayBounds, delta);\n\n if (arrowBounds != null) {\n safeShift(arrowBounds.source, delta);\n safeShift(arrowBounds.target, delta);\n safeShift(arrowBounds['mid-source'], delta);\n safeShift(arrowBounds['mid-target'], delta);\n }\n\n if (labelBounds != null) {\n safeShift(labelBounds.main, delta);\n safeShift(labelBounds.all, delta);\n safeShift(labelBounds.source, delta);\n safeShift(labelBounds.target, delta);\n }\n } // always reset the shift, because we either applied the shift or cleared it by doing a fresh recalc\n\n\n _p.bbCacheShift.x = _p.bbCacheShift.y = 0; // not using def opts => need to build up bb from combination of sub bbs\n\n if (!usingDefOpts) {\n var isNode = ele.isNode();\n bb = makeBoundingBox();\n\n if (opts.includeNodes && isNode || opts.includeEdges && !isNode) {\n if (opts.includeOverlays) {\n updateBoundsFromBox(bb, _p.overlayBounds);\n } else {\n updateBoundsFromBox(bb, _p.bodyBounds);\n }\n }\n\n if (opts.includeLabels) {\n updateBoundsFromBox(bb, _p.labelBounds.all);\n }\n\n bb.w = bb.x2 - bb.x1;\n bb.h = bb.y2 - bb.y1;\n }\n\n return bb;\n};\n\nvar defBbOpts = {\n includeNodes: true,\n includeEdges: true,\n includeLabels: true,\n includeOverlays: true,\n useCache: true\n};\nvar defBbOptsKey = getKey(defBbOpts);\nvar filledBbOpts = defaults(defBbOpts);\n\nelesfn$j.boundingBox = function (options) {\n // the main usecase is ele.boundingBox() for a single element with no/def options\n // specified s.t. the cache is used, so check for this case to make it faster by\n // avoiding the overhead of the rest of the function\n if (this.length === 1 && this[0]._private.bbCache != null && (options === undefined || options.useCache === undefined || options.useCache === true)) {\n if (options === undefined) {\n options = defBbOpts;\n } else {\n options = filledBbOpts(options);\n }\n\n return cachedBoundingBoxImpl(this[0], options);\n }\n\n var bounds = makeBoundingBox();\n options = options || defBbOpts;\n var opts = filledBbOpts(options);\n var eles = this;\n var cy = eles.cy();\n var styleEnabled = cy.styleEnabled();\n\n if (styleEnabled) {\n for (var i = 0; i < eles.length; i++) {\n var ele = eles[i];\n var _p = ele._private;\n var currPosKey = getBoundingBoxPosKey(ele);\n var isPosKeySame = _p.bbCachePosKey === currPosKey;\n var useCache = opts.useCache && isPosKeySame;\n ele.recalculateRenderedStyle(useCache);\n }\n }\n\n this.updateCompoundBounds();\n\n for (var _i = 0; _i < eles.length; _i++) {\n var _ele = eles[_i];\n updateBoundsFromBox(bounds, cachedBoundingBoxImpl(_ele, opts));\n }\n\n bounds.x1 = noninf(bounds.x1);\n bounds.y1 = noninf(bounds.y1);\n bounds.x2 = noninf(bounds.x2);\n bounds.y2 = noninf(bounds.y2);\n bounds.w = noninf(bounds.x2 - bounds.x1);\n bounds.h = noninf(bounds.y2 - bounds.y1);\n return bounds;\n};\n\nelesfn$j.dirtyBoundingBoxCache = function () {\n for (var i = 0; i < this.length; i++) {\n var _p = this[i]._private;\n _p.bbCache = null;\n _p.bbCacheShift.x = _p.bbCacheShift.y = 0;\n _p.bbCachePosKey = null;\n }\n\n this.emitAndNotify('bounds');\n return this;\n};\n\nelesfn$j.shiftCachedBoundingBox = function (delta) {\n for (var i = 0; i < this.length; i++) {\n var ele = this[i];\n var _p = ele._private;\n var bb = _p.bbCache;\n\n if (bb != null) {\n _p.bbCacheShift.x += delta.x;\n _p.bbCacheShift.y += delta.y;\n }\n }\n\n this.emitAndNotify('bounds');\n return this;\n}; // private helper to get bounding box for custom node positions\n// - good for perf in certain cases but currently requires dirtying the rendered style\n// - would be better to not modify the nodes but the nodes are read directly everywhere in the renderer...\n// - try to use for only things like discrete layouts where the node position would change anyway\n\n\nelesfn$j.boundingBoxAt = function (fn) {\n var nodes = this.nodes();\n var cy = this.cy();\n var hasCompoundNodes = cy.hasCompoundNodes();\n\n if (hasCompoundNodes) {\n nodes = nodes.filter(function (node) {\n return !node.isParent();\n });\n }\n\n if (plainObject(fn)) {\n var obj = fn;\n\n fn = function fn() {\n return obj;\n };\n }\n\n var storeOldPos = function storeOldPos(node, i) {\n return node._private.bbAtOldPos = fn(node, i);\n };\n\n var getOldPos = function getOldPos(node) {\n return node._private.bbAtOldPos;\n };\n\n cy.startBatch();\n nodes.forEach(storeOldPos).silentPositions(fn);\n\n if (hasCompoundNodes) {\n this.updateCompoundBounds(true); // force update b/c we're inside a batch cycle\n }\n\n var bb = copyBoundingBox(this.boundingBox({\n useCache: false\n }));\n nodes.silentPositions(getOldPos);\n cy.endBatch();\n return bb;\n};\n\nfn$3.boundingbox = fn$3.bb = fn$3.boundingBox;\nfn$3.renderedBoundingbox = fn$3.renderedBoundingBox;\nvar bounds = elesfn$j;\n\nvar fn$4, elesfn$k;\nfn$4 = elesfn$k = {};\n\nvar defineDimFns = function defineDimFns(opts) {\n opts.uppercaseName = capitalize(opts.name);\n opts.autoName = 'auto' + opts.uppercaseName;\n opts.labelName = 'label' + opts.uppercaseName;\n opts.outerName = 'outer' + opts.uppercaseName;\n opts.uppercaseOuterName = capitalize(opts.outerName);\n\n fn$4[opts.name] = function dimImpl() {\n var ele = this[0];\n var _p = ele._private;\n var cy = _p.cy;\n var styleEnabled = cy._private.styleEnabled;\n\n if (ele) {\n if (styleEnabled) {\n if (ele.isParent()) {\n ele.updateCompoundBounds();\n return _p[opts.autoName] || 0;\n }\n\n var d = ele.pstyle(opts.name);\n\n switch (d.strValue) {\n case 'label':\n ele.recalculateRenderedStyle();\n return _p.rstyle[opts.labelName] || 0;\n\n default:\n return d.pfValue;\n }\n } else {\n return 1;\n }\n }\n };\n\n fn$4['outer' + opts.uppercaseName] = function outerDimImpl() {\n var ele = this[0];\n var _p = ele._private;\n var cy = _p.cy;\n var styleEnabled = cy._private.styleEnabled;\n\n if (ele) {\n if (styleEnabled) {\n var dim = ele[opts.name]();\n var border = ele.pstyle('border-width').pfValue; // n.b. 1/2 each side\n\n var padding = 2 * ele.padding();\n return dim + border + padding;\n } else {\n return 1;\n }\n }\n };\n\n fn$4['rendered' + opts.uppercaseName] = function renderedDimImpl() {\n var ele = this[0];\n\n if (ele) {\n var d = ele[opts.name]();\n return d * this.cy().zoom();\n }\n };\n\n fn$4['rendered' + opts.uppercaseOuterName] = function renderedOuterDimImpl() {\n var ele = this[0];\n\n if (ele) {\n var od = ele[opts.outerName]();\n return od * this.cy().zoom();\n }\n };\n};\n\ndefineDimFns({\n name: 'width'\n});\ndefineDimFns({\n name: 'height'\n});\n\nelesfn$k.padding = function () {\n var ele = this[0];\n var _p = ele._private;\n\n if (ele.isParent()) {\n ele.updateCompoundBounds();\n\n if (_p.autoPadding !== undefined) {\n return _p.autoPadding;\n } else {\n return ele.pstyle('padding').pfValue;\n }\n } else {\n return ele.pstyle('padding').pfValue;\n }\n};\n\nvar widthHeight = elesfn$k;\n\nvar ifEdge = function ifEdge(ele, getValue) {\n if (ele.isEdge()) {\n return getValue(ele);\n }\n};\n\nvar ifEdgeRenderedPosition = function ifEdgeRenderedPosition(ele, getPoint) {\n if (ele.isEdge()) {\n var cy = ele.cy();\n return modelToRenderedPosition(getPoint(ele), cy.zoom(), cy.pan());\n }\n};\n\nvar ifEdgeRenderedPositions = function ifEdgeRenderedPositions(ele, getPoints) {\n if (ele.isEdge()) {\n var cy = ele.cy();\n var pan = cy.pan();\n var zoom = cy.zoom();\n return getPoints(ele).map(function (p) {\n return modelToRenderedPosition(p, zoom, pan);\n });\n }\n};\n\nvar controlPoints = function controlPoints(ele) {\n return ele.renderer().getControlPoints(ele);\n};\n\nvar segmentPoints = function segmentPoints(ele) {\n return ele.renderer().getSegmentPoints(ele);\n};\n\nvar sourceEndpoint = function sourceEndpoint(ele) {\n return ele.renderer().getSourceEndpoint(ele);\n};\n\nvar targetEndpoint = function targetEndpoint(ele) {\n return ele.renderer().getTargetEndpoint(ele);\n};\n\nvar midpoint = function midpoint(ele) {\n return ele.renderer().getEdgeMidpoint(ele);\n};\n\nvar pts = {\n controlPoints: {\n get: controlPoints,\n mult: true\n },\n segmentPoints: {\n get: segmentPoints,\n mult: true\n },\n sourceEndpoint: {\n get: sourceEndpoint\n },\n targetEndpoint: {\n get: targetEndpoint\n },\n midpoint: {\n get: midpoint\n }\n};\n\nvar renderedName = function renderedName(name) {\n return 'rendered' + name[0].toUpperCase() + name.substr(1);\n};\n\nvar edgePoints = Object.keys(pts).reduce(function (obj, name) {\n var spec = pts[name];\n var rName = renderedName(name);\n\n obj[name] = function () {\n return ifEdge(this, spec.get);\n };\n\n if (spec.mult) {\n obj[rName] = function () {\n return ifEdgeRenderedPositions(this, spec.get);\n };\n } else {\n obj[rName] = function () {\n return ifEdgeRenderedPosition(this, spec.get);\n };\n }\n\n return obj;\n}, {});\n\nvar dimensions = extend({}, position, bounds, widthHeight, edgePoints);\n\n/*!\nEvent object based on jQuery events, MIT license\n\nhttps://jquery.org/license/\nhttps://tldrlegal.com/license/mit-license\nhttps://github.com/jquery/jquery/blob/master/src/event.js\n*/\nvar Event = function Event(src, props) {\n this.recycle(src, props);\n};\n\nfunction returnFalse() {\n return false;\n}\n\nfunction returnTrue() {\n return true;\n} // http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\n\n\nEvent.prototype = {\n instanceString: function instanceString() {\n return 'event';\n },\n recycle: function recycle(src, props) {\n this.isImmediatePropagationStopped = this.isPropagationStopped = this.isDefaultPrevented = returnFalse;\n\n if (src != null && src.preventDefault) {\n // Browser Event object\n this.type = src.type; // Events bubbling up the document may have been marked as prevented\n // by a handler lower down the tree; reflect the correct value.\n\n this.isDefaultPrevented = src.defaultPrevented ? returnTrue : returnFalse;\n } else if (src != null && src.type) {\n // Plain object containing all event details\n props = src;\n } else {\n // Event string\n this.type = src;\n } // Put explicitly provided properties onto the event object\n\n\n if (props != null) {\n // more efficient to manually copy fields we use\n this.originalEvent = props.originalEvent;\n this.type = props.type != null ? props.type : this.type;\n this.cy = props.cy;\n this.target = props.target;\n this.position = props.position;\n this.renderedPosition = props.renderedPosition;\n this.namespace = props.namespace;\n this.layout = props.layout;\n }\n\n if (this.cy != null && this.position != null && this.renderedPosition == null) {\n // create a rendered position based on the passed position\n var pos = this.position;\n var zoom = this.cy.zoom();\n var pan = this.cy.pan();\n this.renderedPosition = {\n x: pos.x * zoom + pan.x,\n y: pos.y * zoom + pan.y\n };\n } // Create a timestamp if incoming event doesn't have one\n\n\n this.timeStamp = src && src.timeStamp || Date.now();\n },\n preventDefault: function preventDefault() {\n this.isDefaultPrevented = returnTrue;\n var e = this.originalEvent;\n\n if (!e) {\n return;\n } // if preventDefault exists run it on the original event\n\n\n if (e.preventDefault) {\n e.preventDefault();\n }\n },\n stopPropagation: function stopPropagation() {\n this.isPropagationStopped = returnTrue;\n var e = this.originalEvent;\n\n if (!e) {\n return;\n } // if stopPropagation exists run it on the original event\n\n\n if (e.stopPropagation) {\n e.stopPropagation();\n }\n },\n stopImmediatePropagation: function stopImmediatePropagation() {\n this.isImmediatePropagationStopped = returnTrue;\n this.stopPropagation();\n },\n isDefaultPrevented: returnFalse,\n isPropagationStopped: returnFalse,\n isImmediatePropagationStopped: returnFalse\n};\n\nvar eventRegex = /^([^.]+)(\\.(?:[^.]+))?$/; // regex for matching event strings (e.g. \"click.namespace\")\n\nvar universalNamespace = '.*'; // matches as if no namespace specified and prevents users from unbinding accidentally\n\nvar defaults$8 = {\n qualifierCompare: function qualifierCompare(q1, q2) {\n return q1 === q2;\n },\n eventMatches: function eventMatches()\n /*context, listener, eventObj*/\n {\n return true;\n },\n addEventFields: function addEventFields()\n /*context, evt*/\n {},\n callbackContext: function callbackContext(context\n /*, listener, eventObj*/\n ) {\n return context;\n },\n beforeEmit: function beforeEmit()\n /* context, listener, eventObj */\n {},\n afterEmit: function afterEmit()\n /* context, listener, eventObj */\n {},\n bubble: function bubble()\n /*context*/\n {\n return false;\n },\n parent: function parent()\n /*context*/\n {\n return null;\n },\n context: null\n};\nvar defaultsKeys = Object.keys(defaults$8);\nvar emptyOpts = {};\n\nfunction Emitter() {\n var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : emptyOpts;\n var context = arguments.length > 1 ? arguments[1] : undefined;\n\n // micro-optimisation vs Object.assign() -- reduces Element instantiation time\n for (var i = 0; i < defaultsKeys.length; i++) {\n var key = defaultsKeys[i];\n this[key] = opts[key] || defaults$8[key];\n }\n\n this.context = context || this.context;\n this.listeners = [];\n this.emitting = 0;\n}\n\nvar p = Emitter.prototype;\n\nvar forEachEvent = function forEachEvent(self, handler, events, qualifier, callback, conf, confOverrides) {\n if (fn(qualifier)) {\n callback = qualifier;\n qualifier = null;\n }\n\n if (confOverrides) {\n if (conf == null) {\n conf = confOverrides;\n } else {\n conf = extend({}, conf, confOverrides);\n }\n }\n\n var eventList = array(events) ? events : events.split(/\\s+/);\n\n for (var i = 0; i < eventList.length; i++) {\n var evt = eventList[i];\n\n if (emptyString(evt)) {\n continue;\n }\n\n var match = evt.match(eventRegex); // type[.namespace]\n\n if (match) {\n var type = match[1];\n var namespace = match[2] ? match[2] : null;\n var ret = handler(self, evt, type, namespace, qualifier, callback, conf);\n\n if (ret === false) {\n break;\n } // allow exiting early\n\n }\n }\n};\n\nvar makeEventObj = function makeEventObj(self, obj) {\n self.addEventFields(self.context, obj);\n return new Event(obj.type, obj);\n};\n\nvar forEachEventObj = function forEachEventObj(self, handler, events) {\n if (event(events)) {\n handler(self, events);\n return;\n } else if (plainObject(events)) {\n handler(self, makeEventObj(self, events));\n return;\n }\n\n var eventList = array(events) ? events : events.split(/\\s+/);\n\n for (var i = 0; i < eventList.length; i++) {\n var evt = eventList[i];\n\n if (emptyString(evt)) {\n continue;\n }\n\n var match = evt.match(eventRegex); // type[.namespace]\n\n if (match) {\n var type = match[1];\n var namespace = match[2] ? match[2] : null;\n var eventObj = makeEventObj(self, {\n type: type,\n namespace: namespace,\n target: self.context\n });\n handler(self, eventObj);\n }\n }\n};\n\np.on = p.addListener = function (events, qualifier, callback, conf, confOverrides) {\n forEachEvent(this, function (self, event, type, namespace, qualifier, callback, conf) {\n if (fn(callback)) {\n self.listeners.push({\n event: event,\n // full event string\n callback: callback,\n // callback to run\n type: type,\n // the event type (e.g. 'click')\n namespace: namespace,\n // the event namespace (e.g. \".foo\")\n qualifier: qualifier,\n // a restriction on whether to match this emitter\n conf: conf // additional configuration\n\n });\n }\n }, events, qualifier, callback, conf, confOverrides);\n return this;\n};\n\np.one = function (events, qualifier, callback, conf) {\n return this.on(events, qualifier, callback, conf, {\n one: true\n });\n};\n\np.removeListener = p.off = function (events, qualifier, callback, conf) {\n var _this = this;\n\n if (this.emitting !== 0) {\n this.listeners = copyArray(this.listeners);\n }\n\n var listeners = this.listeners;\n\n var _loop = function _loop(i) {\n var listener = listeners[i];\n forEachEvent(_this, function (self, event, type, namespace, qualifier, callback\n /*, conf*/\n ) {\n if ((listener.type === type || events === '*') && (!namespace && listener.namespace !== '.*' || listener.namespace === namespace) && (!qualifier || self.qualifierCompare(listener.qualifier, qualifier)) && (!callback || listener.callback === callback)) {\n listeners.splice(i, 1);\n return false;\n }\n }, events, qualifier, callback, conf);\n };\n\n for (var i = listeners.length - 1; i >= 0; i--) {\n _loop(i);\n }\n\n return this;\n};\n\np.removeAllListeners = function () {\n return this.removeListener('*');\n};\n\np.emit = p.trigger = function (events, extraParams, manualCallback) {\n var listeners = this.listeners;\n var numListenersBeforeEmit = listeners.length;\n this.emitting++;\n\n if (!array(extraParams)) {\n extraParams = [extraParams];\n }\n\n forEachEventObj(this, function (self, eventObj) {\n if (manualCallback != null) {\n listeners = [{\n event: eventObj.event,\n type: eventObj.type,\n namespace: eventObj.namespace,\n callback: manualCallback\n }];\n numListenersBeforeEmit = listeners.length;\n }\n\n var _loop2 = function _loop2(i) {\n var listener = listeners[i];\n\n if (listener.type === eventObj.type && (!listener.namespace || listener.namespace === eventObj.namespace || listener.namespace === universalNamespace) && self.eventMatches(self.context, listener, eventObj)) {\n var args = [eventObj];\n\n if (extraParams != null) {\n push(args, extraParams);\n }\n\n self.beforeEmit(self.context, listener, eventObj);\n\n if (listener.conf && listener.conf.one) {\n self.listeners = self.listeners.filter(function (l) {\n return l !== listener;\n });\n }\n\n var context = self.callbackContext(self.context, listener, eventObj);\n var ret = listener.callback.apply(context, args);\n self.afterEmit(self.context, listener, eventObj);\n\n if (ret === false) {\n eventObj.stopPropagation();\n eventObj.preventDefault();\n }\n } // if listener matches\n\n };\n\n for (var i = 0; i < numListenersBeforeEmit; i++) {\n _loop2(i);\n } // for listener\n\n\n if (self.bubble(self.context) && !eventObj.isPropagationStopped()) {\n self.parent(self.context).emit(eventObj, extraParams);\n }\n }, events);\n this.emitting--;\n return this;\n};\n\nvar emitterOptions = {\n qualifierCompare: function qualifierCompare(selector1, selector2) {\n if (selector1 == null || selector2 == null) {\n return selector1 == null && selector2 == null;\n } else {\n return selector1.sameText(selector2);\n }\n },\n eventMatches: function eventMatches(ele, listener, eventObj) {\n var selector = listener.qualifier;\n\n if (selector != null) {\n return ele !== eventObj.target && element(eventObj.target) && selector.matches(eventObj.target);\n }\n\n return true;\n },\n addEventFields: function addEventFields(ele, evt) {\n evt.cy = ele.cy();\n evt.target = ele;\n },\n callbackContext: function callbackContext(ele, listener, eventObj) {\n return listener.qualifier != null ? eventObj.target : ele;\n },\n beforeEmit: function beforeEmit(context, listener\n /*, eventObj*/\n ) {\n if (listener.conf && listener.conf.once) {\n listener.conf.onceCollection.removeListener(listener.event, listener.qualifier, listener.callback);\n }\n },\n bubble: function bubble() {\n return true;\n },\n parent: function parent(ele) {\n return ele.isChild() ? ele.parent() : ele.cy();\n }\n};\n\nvar argSelector = function argSelector(arg) {\n if (string(arg)) {\n return new Selector(arg);\n } else {\n return arg;\n }\n};\n\nvar elesfn$l = {\n createEmitter: function createEmitter() {\n for (var i = 0; i < this.length; i++) {\n var ele = this[i];\n var _p = ele._private;\n\n if (!_p.emitter) {\n _p.emitter = new Emitter(emitterOptions, ele);\n }\n }\n\n return this;\n },\n emitter: function emitter() {\n return this._private.emitter;\n },\n on: function on(events, selector, callback) {\n var argSel = argSelector(selector);\n\n for (var i = 0; i < this.length; i++) {\n var ele = this[i];\n ele.emitter().on(events, argSel, callback);\n }\n\n return this;\n },\n removeListener: function removeListener(events, selector, callback) {\n var argSel = argSelector(selector);\n\n for (var i = 0; i < this.length; i++) {\n var ele = this[i];\n ele.emitter().removeListener(events, argSel, callback);\n }\n\n return this;\n },\n removeAllListeners: function removeAllListeners() {\n for (var i = 0; i < this.length; i++) {\n var ele = this[i];\n ele.emitter().removeAllListeners();\n }\n\n return this;\n },\n one: function one(events, selector, callback) {\n var argSel = argSelector(selector);\n\n for (var i = 0; i < this.length; i++) {\n var ele = this[i];\n ele.emitter().one(events, argSel, callback);\n }\n\n return this;\n },\n once: function once(events, selector, callback) {\n var argSel = argSelector(selector);\n\n for (var i = 0; i < this.length; i++) {\n var ele = this[i];\n ele.emitter().on(events, argSel, callback, {\n once: true,\n onceCollection: this\n });\n }\n },\n emit: function emit(events, extraParams) {\n for (var i = 0; i < this.length; i++) {\n var ele = this[i];\n ele.emitter().emit(events, extraParams);\n }\n\n return this;\n },\n emitAndNotify: function emitAndNotify(event, extraParams) {\n // for internal use only\n if (this.length === 0) {\n return;\n } // empty collections don't need to notify anything\n // notify renderer\n\n\n this.cy().notify(event, this);\n this.emit(event, extraParams);\n return this;\n }\n};\ndefine$3.eventAliasesOn(elesfn$l);\n\nvar elesfn$m = {\n nodes: function nodes(selector) {\n return this.filter(function (ele) {\n return ele.isNode();\n }).filter(selector);\n },\n edges: function edges(selector) {\n return this.filter(function (ele) {\n return ele.isEdge();\n }).filter(selector);\n },\n // internal helper to get nodes and edges as separate collections with single iteration over elements\n byGroup: function byGroup() {\n var nodes = this.spawn();\n var edges = this.spawn();\n\n for (var i = 0; i < this.length; i++) {\n var ele = this[i];\n\n if (ele.isNode()) {\n nodes.merge(ele);\n } else {\n edges.merge(ele);\n }\n }\n\n return {\n nodes: nodes,\n edges: edges\n };\n },\n filter: function filter(_filter, thisArg) {\n if (_filter === undefined) {\n // check this first b/c it's the most common/performant case\n return this;\n } else if (string(_filter) || elementOrCollection(_filter)) {\n return new Selector(_filter).filter(this);\n } else if (fn(_filter)) {\n var filterEles = this.spawn();\n var eles = this;\n\n for (var i = 0; i < eles.length; i++) {\n var ele = eles[i];\n var include = thisArg ? _filter.apply(thisArg, [ele, i, eles]) : _filter(ele, i, eles);\n\n if (include) {\n filterEles.merge(ele);\n }\n }\n\n return filterEles;\n }\n\n return this.spawn(); // if not handled by above, give 'em an empty collection\n },\n not: function not(toRemove) {\n if (!toRemove) {\n return this;\n } else {\n if (string(toRemove)) {\n toRemove = this.filter(toRemove);\n }\n\n var elements = [];\n var rMap = toRemove._private.map;\n\n for (var i = 0; i < this.length; i++) {\n var element = this[i];\n var remove = rMap.has(element.id());\n\n if (!remove) {\n elements.push(element);\n }\n }\n\n return this.spawn(elements);\n }\n },\n absoluteComplement: function absoluteComplement() {\n var cy = this.cy();\n return cy.mutableElements().not(this);\n },\n intersect: function intersect(other) {\n // if a selector is specified, then filter by it instead\n if (string(other)) {\n var selector = other;\n return this.filter(selector);\n }\n\n var elements = [];\n var col1 = this;\n var col2 = other;\n var col1Smaller = this.length < other.length;\n var map2 = col1Smaller ? col2._private.map : col1._private.map;\n var col = col1Smaller ? col1 : col2;\n\n for (var i = 0; i < col.length; i++) {\n var id = col[i]._private.data.id;\n var entry = map2.get(id);\n\n if (entry) {\n elements.push(entry.ele);\n }\n }\n\n return this.spawn(elements);\n },\n xor: function xor(other) {\n var cy = this._private.cy;\n\n if (string(other)) {\n other = cy.$(other);\n }\n\n var elements = [];\n var col1 = this;\n var col2 = other;\n\n var add = function add(col, other) {\n for (var i = 0; i < col.length; i++) {\n var ele = col[i];\n var id = ele._private.data.id;\n var inOther = other.hasElementWithId(id);\n\n if (!inOther) {\n elements.push(ele);\n }\n }\n };\n\n add(col1, col2);\n add(col2, col1);\n return this.spawn(elements);\n },\n diff: function diff(other) {\n var cy = this._private.cy;\n\n if (string(other)) {\n other = cy.$(other);\n }\n\n var left = [];\n var right = [];\n var both = [];\n var col1 = this;\n var col2 = other;\n\n var add = function add(col, other, retEles) {\n for (var i = 0; i < col.length; i++) {\n var ele = col[i];\n var id = ele._private.data.id;\n var inOther = other.hasElementWithId(id);\n\n if (inOther) {\n both.push(ele);\n } else {\n retEles.push(ele);\n }\n }\n };\n\n add(col1, col2, left);\n add(col2, col1, right);\n return {\n left: this.spawn(left, {\n unique: true\n }),\n right: this.spawn(right, {\n unique: true\n }),\n both: this.spawn(both, {\n unique: true\n })\n };\n },\n add: function add(toAdd) {\n var cy = this._private.cy;\n\n if (!toAdd) {\n return this;\n }\n\n if (string(toAdd)) {\n var selector = toAdd;\n toAdd = cy.mutableElements().filter(selector);\n }\n\n var elements = [];\n\n for (var i = 0; i < this.length; i++) {\n elements.push(this[i]);\n }\n\n var map = this._private.map;\n\n for (var _i = 0; _i < toAdd.length; _i++) {\n var add = !map.has(toAdd[_i].id());\n\n if (add) {\n elements.push(toAdd[_i]);\n }\n }\n\n return this.spawn(elements);\n },\n // in place merge on calling collection\n merge: function merge(toAdd) {\n var _p = this._private;\n var cy = _p.cy;\n\n if (!toAdd) {\n return this;\n }\n\n if (toAdd && string(toAdd)) {\n var selector = toAdd;\n toAdd = cy.mutableElements().filter(selector);\n }\n\n var map = _p.map;\n\n for (var i = 0; i < toAdd.length; i++) {\n var toAddEle = toAdd[i];\n var id = toAddEle._private.data.id;\n var add = !map.has(id);\n\n if (add) {\n var index = this.length++;\n this[index] = toAddEle;\n map.set(id, {\n ele: toAddEle,\n index: index\n });\n } else {\n // replace\n var _index = map.get(id).index;\n this[_index] = toAddEle;\n map.set(id, {\n ele: toAddEle,\n index: _index\n });\n }\n }\n\n return this; // chaining\n },\n unmergeAt: function unmergeAt(i) {\n var ele = this[i];\n var id = ele.id();\n var _p = this._private;\n var map = _p.map; // remove ele\n\n this[i] = undefined;\n map.delete(id);\n var unmergedLastEle = i === this.length - 1; // replace empty spot with last ele in collection\n\n if (this.length > 1 && !unmergedLastEle) {\n var lastEleI = this.length - 1;\n var lastEle = this[lastEleI];\n var lastEleId = lastEle._private.data.id;\n this[lastEleI] = undefined;\n this[i] = lastEle;\n map.set(lastEleId, {\n ele: lastEle,\n index: i\n });\n } // the collection is now 1 ele smaller\n\n\n this.length--;\n return this;\n },\n // remove single ele in place in calling collection\n unmergeOne: function unmergeOne(ele) {\n ele = ele[0];\n var _p = this._private;\n var id = ele._private.data.id;\n var map = _p.map;\n var entry = map.get(id);\n\n if (!entry) {\n return this; // no need to remove\n }\n\n var i = entry.index;\n this.unmergeAt(i);\n return this;\n },\n // remove eles in place on calling collection\n unmerge: function unmerge(toRemove) {\n var cy = this._private.cy;\n\n if (!toRemove) {\n return this;\n }\n\n if (toRemove && string(toRemove)) {\n var selector = toRemove;\n toRemove = cy.mutableElements().filter(selector);\n }\n\n for (var i = 0; i < toRemove.length; i++) {\n this.unmergeOne(toRemove[i]);\n }\n\n return this; // chaining\n },\n unmergeBy: function unmergeBy(toRmFn) {\n for (var i = this.length - 1; i >= 0; i--) {\n var ele = this[i];\n\n if (toRmFn(ele)) {\n this.unmergeAt(i);\n }\n }\n\n return this;\n },\n map: function map(mapFn, thisArg) {\n var arr = [];\n var eles = this;\n\n for (var i = 0; i < eles.length; i++) {\n var ele = eles[i];\n var ret = thisArg ? mapFn.apply(thisArg, [ele, i, eles]) : mapFn(ele, i, eles);\n arr.push(ret);\n }\n\n return arr;\n },\n reduce: function reduce(fn, initialValue) {\n var val = initialValue;\n var eles = this;\n\n for (var i = 0; i < eles.length; i++) {\n val = fn(val, eles[i], i, eles);\n }\n\n return val;\n },\n max: function max(valFn, thisArg) {\n var max = -Infinity;\n var maxEle;\n var eles = this;\n\n for (var i = 0; i < eles.length; i++) {\n var ele = eles[i];\n var val = thisArg ? valFn.apply(thisArg, [ele, i, eles]) : valFn(ele, i, eles);\n\n if (val > max) {\n max = val;\n maxEle = ele;\n }\n }\n\n return {\n value: max,\n ele: maxEle\n };\n },\n min: function min(valFn, thisArg) {\n var min = Infinity;\n var minEle;\n var eles = this;\n\n for (var i = 0; i < eles.length; i++) {\n var ele = eles[i];\n var val = thisArg ? valFn.apply(thisArg, [ele, i, eles]) : valFn(ele, i, eles);\n\n if (val < min) {\n min = val;\n minEle = ele;\n }\n }\n\n return {\n value: min,\n ele: minEle\n };\n }\n}; // aliases\n\nvar fn$5 = elesfn$m;\nfn$5['u'] = fn$5['|'] = fn$5['+'] = fn$5.union = fn$5.or = fn$5.add;\nfn$5['\\\\'] = fn$5['!'] = fn$5['-'] = fn$5.difference = fn$5.relativeComplement = fn$5.subtract = fn$5.not;\nfn$5['n'] = fn$5['&'] = fn$5['.'] = fn$5.and = fn$5.intersection = fn$5.intersect;\nfn$5['^'] = fn$5['(+)'] = fn$5['(-)'] = fn$5.symmetricDifference = fn$5.symdiff = fn$5.xor;\nfn$5.fnFilter = fn$5.filterFn = fn$5.stdFilter = fn$5.filter;\nfn$5.complement = fn$5.abscomp = fn$5.absoluteComplement;\n\nvar elesfn$n = {\n isNode: function isNode() {\n return this.group() === 'nodes';\n },\n isEdge: function isEdge() {\n return this.group() === 'edges';\n },\n isLoop: function isLoop() {\n return this.isEdge() && this.source()[0] === this.target()[0];\n },\n isSimple: function isSimple() {\n return this.isEdge() && this.source()[0] !== this.target()[0];\n },\n group: function group() {\n var ele = this[0];\n\n if (ele) {\n return ele._private.group;\n }\n }\n};\n\n/**\n * Elements are drawn in a specific order based on compound depth (low to high), the element type (nodes above edges),\n * and z-index (low to high). These styles affect how this applies:\n *\n * z-compound-depth: May be `bottom | orphan | auto | top`. The first drawn is `bottom`, then `orphan` which is the\n * same depth as the root of the compound graph, followed by the default value `auto` which draws in order from\n * root to leaves of the compound graph. The last drawn is `top`.\n * z-index-compare: May be `auto | manual`. The default value is `auto` which always draws edges under nodes.\n * `manual` ignores this convention and draws based on the `z-index` value setting.\n * z-index: An integer value that affects the relative draw order of elements. In general, an element with a higher\n * `z-index` will be drawn on top of an element with a lower `z-index`.\n */\n\nvar zIndexSort = function zIndexSort(a, b) {\n var cy = a.cy();\n var hasCompoundNodes = cy.hasCompoundNodes();\n\n function getDepth(ele) {\n var style = ele.pstyle('z-compound-depth');\n\n if (style.value === 'auto') {\n return hasCompoundNodes ? ele.zDepth() : 0;\n } else if (style.value === 'bottom') {\n return -1;\n } else if (style.value === 'top') {\n return MAX_INT;\n } // 'orphan'\n\n\n return 0;\n }\n\n var depthDiff = getDepth(a) - getDepth(b);\n\n if (depthDiff !== 0) {\n return depthDiff;\n }\n\n function getEleDepth(ele) {\n var style = ele.pstyle('z-index-compare');\n\n if (style.value === 'auto') {\n return ele.isNode() ? 1 : 0;\n } // 'manual'\n\n\n return 0;\n }\n\n var eleDiff = getEleDepth(a) - getEleDepth(b);\n\n if (eleDiff !== 0) {\n return eleDiff;\n }\n\n var zDiff = a.pstyle('z-index').value - b.pstyle('z-index').value;\n\n if (zDiff !== 0) {\n return zDiff;\n } // compare indices in the core (order added to graph w/ last on top)\n\n\n return a.poolIndex() - b.poolIndex();\n};\n\nvar elesfn$o = {\n forEach: function forEach(fn$1, thisArg) {\n if (fn(fn$1)) {\n var N = this.length;\n\n for (var i = 0; i < N; i++) {\n var ele = this[i];\n var ret = thisArg ? fn$1.apply(thisArg, [ele, i, this]) : fn$1(ele, i, this);\n\n if (ret === false) {\n break;\n } // exit each early on return false\n\n }\n }\n\n return this;\n },\n toArray: function toArray() {\n var array = [];\n\n for (var i = 0; i < this.length; i++) {\n array.push(this[i]);\n }\n\n return array;\n },\n slice: function slice(start, end) {\n var array = [];\n var thisSize = this.length;\n\n if (end == null) {\n end = thisSize;\n }\n\n if (start == null) {\n start = 0;\n }\n\n if (start < 0) {\n start = thisSize + start;\n }\n\n if (end < 0) {\n end = thisSize + end;\n }\n\n for (var i = start; i >= 0 && i < end && i < thisSize; i++) {\n array.push(this[i]);\n }\n\n return this.spawn(array);\n },\n size: function size() {\n return this.length;\n },\n eq: function eq(i) {\n return this[i] || this.spawn();\n },\n first: function first() {\n return this[0] || this.spawn();\n },\n last: function last() {\n return this[this.length - 1] || this.spawn();\n },\n empty: function empty() {\n return this.length === 0;\n },\n nonempty: function nonempty() {\n return !this.empty();\n },\n sort: function sort(sortFn) {\n if (!fn(sortFn)) {\n return this;\n }\n\n var sorted = this.toArray().sort(sortFn);\n return this.spawn(sorted);\n },\n sortByZIndex: function sortByZIndex() {\n return this.sort(zIndexSort);\n },\n zDepth: function zDepth() {\n var ele = this[0];\n\n if (!ele) {\n return undefined;\n } // let cy = ele.cy();\n\n\n var _p = ele._private;\n var group = _p.group;\n\n if (group === 'nodes') {\n var depth = _p.data.parent ? ele.parents().size() : 0;\n\n if (!ele.isParent()) {\n return MAX_INT - 1; // childless nodes always on top\n }\n\n return depth;\n } else {\n var src = _p.source;\n var tgt = _p.target;\n var srcDepth = src.zDepth();\n var tgtDepth = tgt.zDepth();\n return Math.max(srcDepth, tgtDepth, 0); // depth of deepest parent\n }\n }\n};\nelesfn$o.each = elesfn$o.forEach;\n\nvar getLayoutDimensionOptions = defaults({\n nodeDimensionsIncludeLabels: false\n});\nvar elesfn$p = {\n // Calculates and returns node dimensions { x, y } based on options given\n layoutDimensions: function layoutDimensions(options) {\n options = getLayoutDimensionOptions(options);\n\n if (options.nodeDimensionsIncludeLabels) {\n var bbDim = this.boundingBox();\n return {\n w: bbDim.w,\n h: bbDim.h\n };\n } else {\n return {\n w: this.outerWidth(),\n h: this.outerHeight()\n };\n }\n },\n // using standard layout options, apply position function (w/ or w/o animation)\n layoutPositions: function layoutPositions(layout, options, fn) {\n var nodes = this.nodes();\n var cy = this.cy();\n var layoutEles = options.eles; // nodes & edges\n\n var getMemoizeKey = function getMemoizeKey(node) {\n return node.id();\n };\n\n var fnMem = memoize(fn, getMemoizeKey); // memoized version of position function\n\n layout.emit({\n type: 'layoutstart',\n layout: layout\n });\n layout.animations = [];\n\n var calculateSpacing = function calculateSpacing(spacing, nodesBb, pos) {\n var center = {\n x: nodesBb.x1 + nodesBb.w / 2,\n y: nodesBb.y1 + nodesBb.h / 2\n };\n var spacingVector = {\n // scale from center of bounding box (not necessarily 0,0)\n x: (pos.x - center.x) * spacing,\n y: (pos.y - center.y) * spacing\n };\n return {\n x: center.x + spacingVector.x,\n y: center.y + spacingVector.y\n };\n };\n\n var useSpacingFactor = options.spacingFactor && options.spacingFactor !== 1;\n\n var spacingBb = function spacingBb() {\n if (!useSpacingFactor) {\n return null;\n }\n\n var bb = makeBoundingBox();\n\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n var pos = fnMem(node, i);\n expandBoundingBoxByPoint(bb, pos.x, pos.y);\n }\n\n return bb;\n };\n\n var bb = spacingBb();\n var getFinalPos = memoize(function (node, i) {\n var newPos = fnMem(node, i);\n\n if (useSpacingFactor) {\n var spacing = Math.abs(options.spacingFactor);\n newPos = calculateSpacing(spacing, bb, newPos);\n }\n\n if (options.transform != null) {\n newPos = options.transform(node, newPos);\n }\n\n return newPos;\n }, getMemoizeKey);\n\n if (options.animate) {\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n var newPos = getFinalPos(node, i);\n var animateNode = options.animateFilter == null || options.animateFilter(node, i);\n\n if (animateNode) {\n var ani = node.animation({\n position: newPos,\n duration: options.animationDuration,\n easing: options.animationEasing\n });\n layout.animations.push(ani);\n } else {\n node.position(newPos);\n }\n }\n\n if (options.fit) {\n var fitAni = cy.animation({\n fit: {\n boundingBox: layoutEles.boundingBoxAt(getFinalPos),\n padding: options.padding\n },\n duration: options.animationDuration,\n easing: options.animationEasing\n });\n layout.animations.push(fitAni);\n } else if (options.zoom !== undefined && options.pan !== undefined) {\n var zoomPanAni = cy.animation({\n zoom: options.zoom,\n pan: options.pan,\n duration: options.animationDuration,\n easing: options.animationEasing\n });\n layout.animations.push(zoomPanAni);\n }\n\n layout.animations.forEach(function (ani) {\n return ani.play();\n });\n layout.one('layoutready', options.ready);\n layout.emit({\n type: 'layoutready',\n layout: layout\n });\n Promise$1.all(layout.animations.map(function (ani) {\n return ani.promise();\n })).then(function () {\n layout.one('layoutstop', options.stop);\n layout.emit({\n type: 'layoutstop',\n layout: layout\n });\n });\n } else {\n nodes.positions(getFinalPos);\n\n if (options.fit) {\n cy.fit(options.eles, options.padding);\n }\n\n if (options.zoom != null) {\n cy.zoom(options.zoom);\n }\n\n if (options.pan) {\n cy.pan(options.pan);\n }\n\n layout.one('layoutready', options.ready);\n layout.emit({\n type: 'layoutready',\n layout: layout\n });\n layout.one('layoutstop', options.stop);\n layout.emit({\n type: 'layoutstop',\n layout: layout\n });\n }\n\n return this; // chaining\n },\n layout: function layout(options) {\n var cy = this.cy();\n return cy.makeLayout(extend({}, options, {\n eles: this\n }));\n }\n}; // aliases:\n\nelesfn$p.createLayout = elesfn$p.makeLayout = elesfn$p.layout;\n\nfunction styleCache(key, fn, ele) {\n var _p = ele._private;\n var cache = _p.styleCache = _p.styleCache || [];\n var val;\n\n if ((val = cache[key]) != null) {\n return val;\n } else {\n val = cache[key] = fn(ele);\n return val;\n }\n}\n\nfunction cacheStyleFunction(key, fn) {\n key = hashString(key);\n return function cachedStyleFunction(ele) {\n return styleCache(key, fn, ele);\n };\n}\n\nfunction cachePrototypeStyleFunction(key, fn) {\n key = hashString(key);\n\n var selfFn = function selfFn(ele) {\n return fn.call(ele);\n };\n\n return function cachedPrototypeStyleFunction() {\n var ele = this[0];\n\n if (ele) {\n return styleCache(key, selfFn, ele);\n }\n };\n}\n\nvar elesfn$q = {\n recalculateRenderedStyle: function recalculateRenderedStyle(useCache) {\n var cy = this.cy();\n var renderer = cy.renderer();\n var styleEnabled = cy.styleEnabled();\n\n if (renderer && styleEnabled) {\n renderer.recalculateRenderedStyle(this, useCache);\n }\n\n return this;\n },\n dirtyStyleCache: function dirtyStyleCache() {\n var cy = this.cy();\n\n var dirty = function dirty(ele) {\n return ele._private.styleCache = null;\n };\n\n if (cy.hasCompoundNodes()) {\n var eles;\n eles = this.spawnSelf().merge(this.descendants()).merge(this.parents());\n eles.merge(eles.connectedEdges());\n eles.forEach(dirty);\n } else {\n this.forEach(function (ele) {\n dirty(ele);\n ele.connectedEdges().forEach(dirty);\n });\n }\n\n return this;\n },\n // fully updates (recalculates) the style for the elements\n updateStyle: function updateStyle(notifyRenderer) {\n var cy = this._private.cy;\n\n if (!cy.styleEnabled()) {\n return this;\n }\n\n if (cy.batching()) {\n var bEles = cy._private.batchStyleEles;\n bEles.merge(this);\n return this; // chaining and exit early when batching\n }\n\n var hasCompounds = cy.hasCompoundNodes();\n var style = cy.style();\n var updatedEles = this;\n notifyRenderer = notifyRenderer || notifyRenderer === undefined ? true : false;\n\n if (hasCompounds) {\n // then add everything up and down for compound selector checks\n updatedEles = this.spawnSelf().merge(this.descendants()).merge(this.parents());\n }\n\n var changedEles = style.apply(updatedEles);\n\n if (notifyRenderer) {\n changedEles.emitAndNotify('style'); // let renderer know we changed style\n } else {\n changedEles.emit('style'); // just fire the event\n }\n\n return this; // chaining\n },\n // get the internal parsed style object for the specified property\n parsedStyle: function parsedStyle(property) {\n var includeNonDefault = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var ele = this[0];\n var cy = ele.cy();\n\n if (!cy.styleEnabled()) {\n return;\n }\n\n if (ele) {\n var overriddenStyle = ele._private.style[property];\n\n if (overriddenStyle != null) {\n return overriddenStyle;\n } else if (includeNonDefault) {\n return cy.style().getDefaultProperty(property);\n } else {\n return null;\n }\n }\n },\n numericStyle: function numericStyle(property) {\n var ele = this[0];\n\n if (!ele.cy().styleEnabled()) {\n return;\n }\n\n if (ele) {\n var pstyle = ele.pstyle(property);\n return pstyle.pfValue !== undefined ? pstyle.pfValue : pstyle.value;\n }\n },\n numericStyleUnits: function numericStyleUnits(property) {\n var ele = this[0];\n\n if (!ele.cy().styleEnabled()) {\n return;\n }\n\n if (ele) {\n return ele.pstyle(property).units;\n }\n },\n // get the specified css property as a rendered value (i.e. on-screen value)\n // or get the whole rendered style if no property specified (NB doesn't allow setting)\n renderedStyle: function renderedStyle(property) {\n var cy = this.cy();\n\n if (!cy.styleEnabled()) {\n return this;\n }\n\n var ele = this[0];\n\n if (ele) {\n return cy.style().getRenderedStyle(ele, property);\n }\n },\n // read the calculated css style of the element or override the style (via a bypass)\n style: function style(name, value) {\n var cy = this.cy();\n\n if (!cy.styleEnabled()) {\n return this;\n }\n\n var updateTransitions = false;\n var style = cy.style();\n\n if (plainObject(name)) {\n // then extend the bypass\n var props = name;\n style.applyBypass(this, props, updateTransitions);\n this.emitAndNotify('style'); // let the renderer know we've updated style\n } else if (string(name)) {\n if (value === undefined) {\n // then get the property from the style\n var ele = this[0];\n\n if (ele) {\n return style.getStylePropertyValue(ele, name);\n } else {\n // empty collection => can't get any value\n return;\n }\n } else {\n // then set the bypass with the property value\n style.applyBypass(this, name, value, updateTransitions);\n this.emitAndNotify('style'); // let the renderer know we've updated style\n }\n } else if (name === undefined) {\n var _ele = this[0];\n\n if (_ele) {\n return style.getRawStyle(_ele);\n } else {\n // empty collection => can't get any value\n return;\n }\n }\n\n return this; // chaining\n },\n removeStyle: function removeStyle(names) {\n var cy = this.cy();\n\n if (!cy.styleEnabled()) {\n return this;\n }\n\n var updateTransitions = false;\n var style = cy.style();\n var eles = this;\n\n if (names === undefined) {\n for (var i = 0; i < eles.length; i++) {\n var ele = eles[i];\n style.removeAllBypasses(ele, updateTransitions);\n }\n } else {\n names = names.split(/\\s+/);\n\n for (var _i = 0; _i < eles.length; _i++) {\n var _ele2 = eles[_i];\n style.removeBypasses(_ele2, names, updateTransitions);\n }\n }\n\n this.emitAndNotify('style'); // let the renderer know we've updated style\n\n return this; // chaining\n },\n show: function show() {\n this.css('display', 'element');\n return this; // chaining\n },\n hide: function hide() {\n this.css('display', 'none');\n return this; // chaining\n },\n effectiveOpacity: function effectiveOpacity() {\n var cy = this.cy();\n\n if (!cy.styleEnabled()) {\n return 1;\n }\n\n var hasCompoundNodes = cy.hasCompoundNodes();\n var ele = this[0];\n\n if (ele) {\n var _p = ele._private;\n var parentOpacity = ele.pstyle('opacity').value;\n\n if (!hasCompoundNodes) {\n return parentOpacity;\n }\n\n var parents = !_p.data.parent ? null : ele.parents();\n\n if (parents) {\n for (var i = 0; i < parents.length; i++) {\n var parent = parents[i];\n var opacity = parent.pstyle('opacity').value;\n parentOpacity = opacity * parentOpacity;\n }\n }\n\n return parentOpacity;\n }\n },\n transparent: function transparent() {\n var cy = this.cy();\n\n if (!cy.styleEnabled()) {\n return false;\n }\n\n var ele = this[0];\n var hasCompoundNodes = ele.cy().hasCompoundNodes();\n\n if (ele) {\n if (!hasCompoundNodes) {\n return ele.pstyle('opacity').value === 0;\n } else {\n return ele.effectiveOpacity() === 0;\n }\n }\n },\n backgrounding: function backgrounding() {\n var cy = this.cy();\n\n if (!cy.styleEnabled()) {\n return false;\n }\n\n var ele = this[0];\n return ele._private.backgrounding ? true : false;\n }\n};\n\nfunction checkCompound(ele, parentOk) {\n var _p = ele._private;\n var parents = _p.data.parent ? ele.parents() : null;\n\n if (parents) {\n for (var i = 0; i < parents.length; i++) {\n var parent = parents[i];\n\n if (!parentOk(parent)) {\n return false;\n }\n }\n }\n\n return true;\n}\n\nfunction defineDerivedStateFunction(specs) {\n var ok = specs.ok;\n var edgeOkViaNode = specs.edgeOkViaNode || specs.ok;\n var parentOk = specs.parentOk || specs.ok;\n return function () {\n var cy = this.cy();\n\n if (!cy.styleEnabled()) {\n return true;\n }\n\n var ele = this[0];\n var hasCompoundNodes = cy.hasCompoundNodes();\n\n if (ele) {\n var _p = ele._private;\n\n if (!ok(ele)) {\n return false;\n }\n\n if (ele.isNode()) {\n return !hasCompoundNodes || checkCompound(ele, parentOk);\n } else {\n var src = _p.source;\n var tgt = _p.target;\n return edgeOkViaNode(src) && (!hasCompoundNodes || checkCompound(src, edgeOkViaNode)) && (src === tgt || edgeOkViaNode(tgt) && (!hasCompoundNodes || checkCompound(tgt, edgeOkViaNode)));\n }\n }\n };\n}\n\nvar eleTakesUpSpace = cacheStyleFunction('eleTakesUpSpace', function (ele) {\n return ele.pstyle('display').value === 'element' && ele.width() !== 0 && (ele.isNode() ? ele.height() !== 0 : true);\n});\nelesfn$q.takesUpSpace = cachePrototypeStyleFunction('takesUpSpace', defineDerivedStateFunction({\n ok: eleTakesUpSpace\n}));\nvar eleInteractive = cacheStyleFunction('eleInteractive', function (ele) {\n return ele.pstyle('events').value === 'yes' && ele.pstyle('visibility').value === 'visible' && eleTakesUpSpace(ele);\n});\nvar parentInteractive = cacheStyleFunction('parentInteractive', function (parent) {\n return parent.pstyle('visibility').value === 'visible' && eleTakesUpSpace(parent);\n});\nelesfn$q.interactive = cachePrototypeStyleFunction('interactive', defineDerivedStateFunction({\n ok: eleInteractive,\n parentOk: parentInteractive,\n edgeOkViaNode: eleTakesUpSpace\n}));\n\nelesfn$q.noninteractive = function () {\n var ele = this[0];\n\n if (ele) {\n return !ele.interactive();\n }\n};\n\nvar eleVisible = cacheStyleFunction('eleVisible', function (ele) {\n return ele.pstyle('visibility').value === 'visible' && ele.pstyle('opacity').pfValue !== 0 && eleTakesUpSpace(ele);\n});\nvar edgeVisibleViaNode = eleTakesUpSpace;\nelesfn$q.visible = cachePrototypeStyleFunction('visible', defineDerivedStateFunction({\n ok: eleVisible,\n edgeOkViaNode: edgeVisibleViaNode\n}));\n\nelesfn$q.hidden = function () {\n var ele = this[0];\n\n if (ele) {\n return !ele.visible();\n }\n};\n\nelesfn$q.isBundledBezier = cachePrototypeStyleFunction('isBundledBezier', function () {\n if (!this.cy().styleEnabled()) {\n return false;\n }\n\n return !this.removed() && this.pstyle('curve-style').value === 'bezier' && this.takesUpSpace();\n});\nelesfn$q.bypass = elesfn$q.css = elesfn$q.style;\nelesfn$q.renderedCss = elesfn$q.renderedStyle;\nelesfn$q.removeBypass = elesfn$q.removeCss = elesfn$q.removeStyle;\nelesfn$q.pstyle = elesfn$q.parsedStyle;\n\nvar elesfn$r = {};\n\nfunction defineSwitchFunction(params) {\n return function () {\n var args = arguments;\n var changedEles = []; // e.g. cy.nodes().select( data, handler )\n\n if (args.length === 2) {\n var data = args[0];\n var handler = args[1];\n this.on(params.event, data, handler);\n } // e.g. cy.nodes().select( handler )\n else if (args.length === 1 && fn(args[0])) {\n var _handler = args[0];\n this.on(params.event, _handler);\n } // e.g. cy.nodes().select()\n // e.g. (private) cy.nodes().select(['tapselect'])\n else if (args.length === 0 || args.length === 1 && array(args[0])) {\n var addlEvents = args.length === 1 ? args[0] : null;\n\n for (var i = 0; i < this.length; i++) {\n var ele = this[i];\n var able = !params.ableField || ele._private[params.ableField];\n var changed = ele._private[params.field] != params.value;\n\n if (params.overrideAble) {\n var overrideAble = params.overrideAble(ele);\n\n if (overrideAble !== undefined) {\n able = overrideAble;\n\n if (!overrideAble) {\n return this;\n } // to save cycles assume not able for all on override\n\n }\n }\n\n if (able) {\n ele._private[params.field] = params.value;\n\n if (changed) {\n changedEles.push(ele);\n }\n }\n }\n\n var changedColl = this.spawn(changedEles);\n changedColl.updateStyle(); // change of state => possible change of style\n\n changedColl.emit(params.event);\n\n if (addlEvents) {\n changedColl.emit(addlEvents);\n }\n }\n\n return this;\n };\n}\n\nfunction defineSwitchSet(params) {\n elesfn$r[params.field] = function () {\n var ele = this[0];\n\n if (ele) {\n if (params.overrideField) {\n var val = params.overrideField(ele);\n\n if (val !== undefined) {\n return val;\n }\n }\n\n return ele._private[params.field];\n }\n };\n\n elesfn$r[params.on] = defineSwitchFunction({\n event: params.on,\n field: params.field,\n ableField: params.ableField,\n overrideAble: params.overrideAble,\n value: true\n });\n elesfn$r[params.off] = defineSwitchFunction({\n event: params.off,\n field: params.field,\n ableField: params.ableField,\n overrideAble: params.overrideAble,\n value: false\n });\n}\n\ndefineSwitchSet({\n field: 'locked',\n overrideField: function overrideField(ele) {\n return ele.cy().autolock() ? true : undefined;\n },\n on: 'lock',\n off: 'unlock'\n});\ndefineSwitchSet({\n field: 'grabbable',\n overrideField: function overrideField(ele) {\n return ele.cy().autoungrabify() || ele.pannable() ? false : undefined;\n },\n on: 'grabify',\n off: 'ungrabify'\n});\ndefineSwitchSet({\n field: 'selected',\n ableField: 'selectable',\n overrideAble: function overrideAble(ele) {\n return ele.cy().autounselectify() ? false : undefined;\n },\n on: 'select',\n off: 'unselect'\n});\ndefineSwitchSet({\n field: 'selectable',\n overrideField: function overrideField(ele) {\n return ele.cy().autounselectify() ? false : undefined;\n },\n on: 'selectify',\n off: 'unselectify'\n});\nelesfn$r.deselect = elesfn$r.unselect;\n\nelesfn$r.grabbed = function () {\n var ele = this[0];\n\n if (ele) {\n return ele._private.grabbed;\n }\n};\n\ndefineSwitchSet({\n field: 'active',\n on: 'activate',\n off: 'unactivate'\n});\ndefineSwitchSet({\n field: 'pannable',\n on: 'panify',\n off: 'unpanify'\n});\n\nelesfn$r.inactive = function () {\n var ele = this[0];\n\n if (ele) {\n return !ele._private.active;\n }\n};\n\nvar elesfn$s = {}; // DAG functions\n////////////////\n\nvar defineDagExtremity = function defineDagExtremity(params) {\n return function dagExtremityImpl(selector) {\n var eles = this;\n var ret = [];\n\n for (var i = 0; i < eles.length; i++) {\n var ele = eles[i];\n\n if (!ele.isNode()) {\n continue;\n }\n\n var disqualified = false;\n var edges = ele.connectedEdges();\n\n for (var j = 0; j < edges.length; j++) {\n var edge = edges[j];\n var src = edge.source();\n var tgt = edge.target();\n\n if (params.noIncomingEdges && tgt === ele && src !== ele || params.noOutgoingEdges && src === ele && tgt !== ele) {\n disqualified = true;\n break;\n }\n }\n\n if (!disqualified) {\n ret.push(ele);\n }\n }\n\n return this.spawn(ret, {\n unique: true\n }).filter(selector);\n };\n};\n\nvar defineDagOneHop = function defineDagOneHop(params) {\n return function (selector) {\n var eles = this;\n var oEles = [];\n\n for (var i = 0; i < eles.length; i++) {\n var ele = eles[i];\n\n if (!ele.isNode()) {\n continue;\n }\n\n var edges = ele.connectedEdges();\n\n for (var j = 0; j < edges.length; j++) {\n var edge = edges[j];\n var src = edge.source();\n var tgt = edge.target();\n\n if (params.outgoing && src === ele) {\n oEles.push(edge);\n oEles.push(tgt);\n } else if (params.incoming && tgt === ele) {\n oEles.push(edge);\n oEles.push(src);\n }\n }\n }\n\n return this.spawn(oEles, {\n unique: true\n }).filter(selector);\n };\n};\n\nvar defineDagAllHops = function defineDagAllHops(params) {\n return function (selector) {\n var eles = this;\n var sEles = [];\n var sElesIds = {};\n\n for (;;) {\n var next = params.outgoing ? eles.outgoers() : eles.incomers();\n\n if (next.length === 0) {\n break;\n } // done if none left\n\n\n var newNext = false;\n\n for (var i = 0; i < next.length; i++) {\n var n = next[i];\n var nid = n.id();\n\n if (!sElesIds[nid]) {\n sElesIds[nid] = true;\n sEles.push(n);\n newNext = true;\n }\n }\n\n if (!newNext) {\n break;\n } // done if touched all outgoers already\n\n\n eles = next;\n }\n\n return this.spawn(sEles, {\n unique: true\n }).filter(selector);\n };\n};\n\nelesfn$s.clearTraversalCache = function () {\n for (var i = 0; i < this.length; i++) {\n this[i]._private.traversalCache = null;\n }\n};\n\nextend(elesfn$s, {\n // get the root nodes in the DAG\n roots: defineDagExtremity({\n noIncomingEdges: true\n }),\n // get the leaf nodes in the DAG\n leaves: defineDagExtremity({\n noOutgoingEdges: true\n }),\n // normally called children in graph theory\n // these nodes =edges=> outgoing nodes\n outgoers: cache(defineDagOneHop({\n outgoing: true\n }), 'outgoers'),\n // aka DAG descendants\n successors: defineDagAllHops({\n outgoing: true\n }),\n // normally called parents in graph theory\n // these nodes <=edges= incoming nodes\n incomers: cache(defineDagOneHop({\n incoming: true\n }), 'incomers'),\n // aka DAG ancestors\n predecessors: defineDagAllHops({\n incoming: true\n })\n}); // Neighbourhood functions\n//////////////////////////\n\nextend(elesfn$s, {\n neighborhood: cache(function (selector) {\n var elements = [];\n var nodes = this.nodes();\n\n for (var i = 0; i < nodes.length; i++) {\n // for all nodes\n var node = nodes[i];\n var connectedEdges = node.connectedEdges(); // for each connected edge, add the edge and the other node\n\n for (var j = 0; j < connectedEdges.length; j++) {\n var edge = connectedEdges[j];\n var src = edge.source();\n var tgt = edge.target();\n var otherNode = node === src ? tgt : src; // need check in case of loop\n\n if (otherNode.length > 0) {\n elements.push(otherNode[0]); // add node 1 hop away\n } // add connected edge\n\n\n elements.push(edge[0]);\n }\n }\n\n return this.spawn(elements, {\n unique: true\n }).filter(selector);\n }, 'neighborhood'),\n closedNeighborhood: function closedNeighborhood(selector) {\n return this.neighborhood().add(this).filter(selector);\n },\n openNeighborhood: function openNeighborhood(selector) {\n return this.neighborhood(selector);\n }\n}); // aliases\n\nelesfn$s.neighbourhood = elesfn$s.neighborhood;\nelesfn$s.closedNeighbourhood = elesfn$s.closedNeighborhood;\nelesfn$s.openNeighbourhood = elesfn$s.openNeighborhood; // Edge functions\n/////////////////\n\nextend(elesfn$s, {\n source: cache(function sourceImpl(selector) {\n var ele = this[0];\n var src;\n\n if (ele) {\n src = ele._private.source || ele.cy().collection();\n }\n\n return src && selector ? src.filter(selector) : src;\n }, 'source'),\n target: cache(function targetImpl(selector) {\n var ele = this[0];\n var tgt;\n\n if (ele) {\n tgt = ele._private.target || ele.cy().collection();\n }\n\n return tgt && selector ? tgt.filter(selector) : tgt;\n }, 'target'),\n sources: defineSourceFunction({\n attr: 'source'\n }),\n targets: defineSourceFunction({\n attr: 'target'\n })\n});\n\nfunction defineSourceFunction(params) {\n return function sourceImpl(selector) {\n var sources = [];\n\n for (var i = 0; i < this.length; i++) {\n var ele = this[i];\n var src = ele._private[params.attr];\n\n if (src) {\n sources.push(src);\n }\n }\n\n return this.spawn(sources, {\n unique: true\n }).filter(selector);\n };\n}\n\nextend(elesfn$s, {\n edgesWith: cache(defineEdgesWithFunction(), 'edgesWith'),\n edgesTo: cache(defineEdgesWithFunction({\n thisIsSrc: true\n }), 'edgesTo')\n});\n\nfunction defineEdgesWithFunction(params) {\n return function edgesWithImpl(otherNodes) {\n var elements = [];\n var cy = this._private.cy;\n var p = params || {}; // get elements if a selector is specified\n\n if (string(otherNodes)) {\n otherNodes = cy.$(otherNodes);\n }\n\n for (var h = 0; h < otherNodes.length; h++) {\n var edges = otherNodes[h]._private.edges;\n\n for (var i = 0; i < edges.length; i++) {\n var edge = edges[i];\n var edgeData = edge._private.data;\n var thisToOther = this.hasElementWithId(edgeData.source) && otherNodes.hasElementWithId(edgeData.target);\n var otherToThis = otherNodes.hasElementWithId(edgeData.source) && this.hasElementWithId(edgeData.target);\n var edgeConnectsThisAndOther = thisToOther || otherToThis;\n\n if (!edgeConnectsThisAndOther) {\n continue;\n }\n\n if (p.thisIsSrc || p.thisIsTgt) {\n if (p.thisIsSrc && !thisToOther) {\n continue;\n }\n\n if (p.thisIsTgt && !otherToThis) {\n continue;\n }\n }\n\n elements.push(edge);\n }\n }\n\n return this.spawn(elements, {\n unique: true\n });\n };\n}\n\nextend(elesfn$s, {\n connectedEdges: cache(function (selector) {\n var retEles = [];\n var eles = this;\n\n for (var i = 0; i < eles.length; i++) {\n var node = eles[i];\n\n if (!node.isNode()) {\n continue;\n }\n\n var edges = node._private.edges;\n\n for (var j = 0; j < edges.length; j++) {\n var edge = edges[j];\n retEles.push(edge);\n }\n }\n\n return this.spawn(retEles, {\n unique: true\n }).filter(selector);\n }, 'connectedEdges'),\n connectedNodes: cache(function (selector) {\n var retEles = [];\n var eles = this;\n\n for (var i = 0; i < eles.length; i++) {\n var edge = eles[i];\n\n if (!edge.isEdge()) {\n continue;\n }\n\n retEles.push(edge.source()[0]);\n retEles.push(edge.target()[0]);\n }\n\n return this.spawn(retEles, {\n unique: true\n }).filter(selector);\n }, 'connectedNodes'),\n parallelEdges: cache(defineParallelEdgesFunction(), 'parallelEdges'),\n codirectedEdges: cache(defineParallelEdgesFunction({\n codirected: true\n }), 'codirectedEdges')\n});\n\nfunction defineParallelEdgesFunction(params) {\n var defaults = {\n codirected: false\n };\n params = extend({}, defaults, params);\n return function parallelEdgesImpl(selector) {\n // micro-optimised for renderer\n var elements = [];\n var edges = this.edges();\n var p = params; // look at all the edges in the collection\n\n for (var i = 0; i < edges.length; i++) {\n var edge1 = edges[i];\n var edge1_p = edge1._private;\n var src1 = edge1_p.source;\n var srcid1 = src1._private.data.id;\n var tgtid1 = edge1_p.data.target;\n var srcEdges1 = src1._private.edges; // look at edges connected to the src node of this edge\n\n for (var j = 0; j < srcEdges1.length; j++) {\n var edge2 = srcEdges1[j];\n var edge2data = edge2._private.data;\n var tgtid2 = edge2data.target;\n var srcid2 = edge2data.source;\n var codirected = tgtid2 === tgtid1 && srcid2 === srcid1;\n var oppdirected = srcid1 === tgtid2 && tgtid1 === srcid2;\n\n if (p.codirected && codirected || !p.codirected && (codirected || oppdirected)) {\n elements.push(edge2);\n }\n }\n }\n\n return this.spawn(elements, {\n unique: true\n }).filter(selector);\n };\n} // Misc functions\n/////////////////\n\n\nextend(elesfn$s, {\n components: function components(root) {\n var self = this;\n var cy = self.cy();\n var visited = cy.collection();\n var unvisited = root == null ? self.nodes() : root.nodes();\n var components = [];\n\n if (root != null && unvisited.empty()) {\n // root may contain only edges\n unvisited = root.sources(); // doesn't matter which node to use (undirected), so just use the source sides\n }\n\n var visitInComponent = function visitInComponent(node, component) {\n visited.merge(node);\n unvisited.unmerge(node);\n component.merge(node);\n };\n\n if (unvisited.empty()) {\n return self.spawn();\n }\n\n var _loop = function _loop() {\n // each iteration yields a component\n var cmpt = cy.collection();\n components.push(cmpt);\n var root = unvisited[0];\n visitInComponent(root, cmpt);\n self.bfs({\n directed: false,\n roots: root,\n visit: function visit(v) {\n return visitInComponent(v, cmpt);\n }\n });\n cmpt.forEach(function (node) {\n node.connectedEdges().forEach(function (e) {\n // connectedEdges() usually cached\n if (cmpt.has(e.source()) && cmpt.has(e.target())) {\n // has() is cheap\n cmpt.merge(e); // forEach() only considers nodes -- sets N at call time\n }\n });\n });\n };\n\n do {\n _loop();\n } while (unvisited.length > 0);\n\n return components;\n },\n component: function component() {\n var ele = this[0];\n return ele.cy().mutableElements().components(ele)[0];\n }\n});\nelesfn$s.componentsOf = elesfn$s.components;\n\nvar idFactory = {\n generate: function generate(cy, element, tryThisId) {\n var id = tryThisId != null ? tryThisId : uuid();\n\n while (cy.hasElementWithId(id)) {\n id = uuid();\n }\n\n return id;\n }\n}; // represents a set of nodes, edges, or both together\n\nvar Collection = function Collection(cy, elements, options) {\n if (cy === undefined || !core(cy)) {\n error('A collection must have a reference to the core');\n return;\n }\n\n var map = new Map$1();\n var createdElements = false;\n\n if (!elements) {\n elements = [];\n } else if (elements.length > 0 && plainObject(elements[0]) && !element(elements[0])) {\n createdElements = true; // make elements from json and restore all at once later\n\n var eles = [];\n var elesIds = new Set$1();\n\n for (var i = 0, l = elements.length; i < l; i++) {\n var json = elements[i];\n\n if (json.data == null) {\n json.data = {};\n }\n\n var _data = json.data; // make sure newly created elements have valid ids\n\n if (_data.id == null) {\n _data.id = idFactory.generate(cy, json);\n } else if (cy.hasElementWithId(_data.id) || elesIds.has(_data.id)) {\n continue; // can't create element if prior id already exists\n }\n\n var ele = new Element(cy, json, false);\n eles.push(ele);\n elesIds.add(_data.id);\n }\n\n elements = eles;\n }\n\n this.length = 0;\n\n for (var _i = 0, _l = elements.length; _i < _l; _i++) {\n var element$1 = elements[_i][0]; // [0] in case elements is an array of collections, rather than array of elements\n\n if (element$1 == null) {\n continue;\n }\n\n var id = element$1._private.data.id;\n\n if (options == null || options.unique && !map.has(id)) {\n map.set(id, {\n index: this.length,\n ele: element$1\n });\n this[this.length] = element$1;\n this.length++;\n }\n }\n\n this._private = {\n cy: cy,\n map: map\n }; // restore the elements if we created them from json\n\n if (createdElements) {\n this.restore();\n }\n}; // Functions\n////////////////////////////////////////////////////////////////////////////////////////////////////\n// keep the prototypes in sync (an element has the same functions as a collection)\n// and use elefn and elesfn as shorthands to the prototypes\n\n\nvar elesfn$t = Element.prototype = Collection.prototype;\n\nelesfn$t.instanceString = function () {\n return 'collection';\n};\n\nelesfn$t.spawn = function (cy, eles, opts) {\n if (!core(cy)) {\n // cy is optional\n opts = eles;\n eles = cy;\n cy = this.cy();\n }\n\n return new Collection(cy, eles, opts);\n};\n\nelesfn$t.spawnSelf = function () {\n return this.spawn(this);\n};\n\nelesfn$t.cy = function () {\n return this._private.cy;\n};\n\nelesfn$t.renderer = function () {\n return this._private.cy.renderer();\n};\n\nelesfn$t.element = function () {\n return this[0];\n};\n\nelesfn$t.collection = function () {\n if (collection(this)) {\n return this;\n } else {\n // an element\n return new Collection(this._private.cy, [this]);\n }\n};\n\nelesfn$t.unique = function () {\n return new Collection(this._private.cy, this, {\n unique: true\n });\n};\n\nelesfn$t.hasElementWithId = function (id) {\n id = '' + id; // id must be string\n\n return this._private.map.has(id);\n};\n\nelesfn$t.getElementById = function (id) {\n id = '' + id; // id must be string\n\n var cy = this._private.cy;\n\n var entry = this._private.map.get(id);\n\n return entry ? entry.ele : new Collection(cy); // get ele or empty collection\n};\n\nelesfn$t.$id = elesfn$t.getElementById;\n\nelesfn$t.poolIndex = function () {\n var cy = this._private.cy;\n var eles = cy._private.elements;\n var id = this[0]._private.data.id;\n return eles._private.map.get(id).index;\n};\n\nelesfn$t.indexOf = function (ele) {\n var id = ele[0]._private.data.id;\n return this._private.map.get(id).index;\n};\n\nelesfn$t.indexOfId = function (id) {\n id = '' + id; // id must be string\n\n return this._private.map.get(id).index;\n};\n\nelesfn$t.json = function (obj) {\n var ele = this.element();\n var cy = this.cy();\n\n if (ele == null && obj) {\n return this;\n } // can't set to no eles\n\n\n if (ele == null) {\n return undefined;\n } // can't get from no eles\n\n\n var p = ele._private;\n\n if (plainObject(obj)) {\n // set\n cy.startBatch();\n\n if (obj.data) {\n ele.data(obj.data);\n var _data2 = p.data;\n\n if (ele.isEdge()) {\n // source and target are immutable via data()\n var move = false;\n var spec = {};\n var src = obj.data.source;\n var tgt = obj.data.target;\n\n if (src != null && src != _data2.source) {\n spec.source = '' + src; // id must be string\n\n move = true;\n }\n\n if (tgt != null && tgt != _data2.target) {\n spec.target = '' + tgt; // id must be string\n\n move = true;\n }\n\n if (move) {\n ele = ele.move(spec);\n }\n } else {\n // parent is immutable via data()\n var parent = obj.data.parent;\n\n if ((parent != null || _data2.parent != null) && parent != _data2.parent) {\n if (parent === undefined) {\n // can't set undefined imperatively, so use null\n parent = null;\n }\n\n if (parent != null) {\n parent = '' + parent; // id must be string\n }\n\n ele = ele.move({\n parent: parent\n });\n }\n }\n }\n\n if (obj.position) {\n ele.position(obj.position);\n } // ignore group -- immutable\n\n\n var checkSwitch = function checkSwitch(k, trueFnName, falseFnName) {\n var obj_k = obj[k];\n\n if (obj_k != null && obj_k !== p[k]) {\n if (obj_k) {\n ele[trueFnName]();\n } else {\n ele[falseFnName]();\n }\n }\n };\n\n checkSwitch('removed', 'remove', 'restore');\n checkSwitch('selected', 'select', 'unselect');\n checkSwitch('selectable', 'selectify', 'unselectify');\n checkSwitch('locked', 'lock', 'unlock');\n checkSwitch('grabbable', 'grabify', 'ungrabify');\n checkSwitch('pannable', 'panify', 'unpanify');\n\n if (obj.classes != null) {\n ele.classes(obj.classes);\n }\n\n cy.endBatch();\n return this;\n } else if (obj === undefined) {\n // get\n var json = {\n data: copy(p.data),\n position: copy(p.position),\n group: p.group,\n removed: p.removed,\n selected: p.selected,\n selectable: p.selectable,\n locked: p.locked,\n grabbable: p.grabbable,\n pannable: p.pannable,\n classes: null\n };\n json.classes = '';\n var i = 0;\n p.classes.forEach(function (cls) {\n return json.classes += i++ === 0 ? cls : ' ' + cls;\n });\n return json;\n }\n};\n\nelesfn$t.jsons = function () {\n var jsons = [];\n\n for (var i = 0; i < this.length; i++) {\n var ele = this[i];\n var json = ele.json();\n jsons.push(json);\n }\n\n return jsons;\n};\n\nelesfn$t.clone = function () {\n var cy = this.cy();\n var elesArr = [];\n\n for (var i = 0; i < this.length; i++) {\n var ele = this[i];\n var json = ele.json();\n var clone = new Element(cy, json, false); // NB no restore\n\n elesArr.push(clone);\n }\n\n return new Collection(cy, elesArr);\n};\n\nelesfn$t.copy = elesfn$t.clone;\n\nelesfn$t.restore = function () {\n var notifyRenderer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n var addToPool = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var self = this;\n var cy = self.cy();\n var cy_p = cy._private; // create arrays of nodes and edges, since we need to\n // restore the nodes first\n\n var nodes = [];\n var edges = [];\n var elements;\n\n for (var _i2 = 0, l = self.length; _i2 < l; _i2++) {\n var ele = self[_i2];\n\n if (addToPool && !ele.removed()) {\n // don't need to handle this ele\n continue;\n } // keep nodes first in the array and edges after\n\n\n if (ele.isNode()) {\n // put to front of array if node\n nodes.push(ele);\n } else {\n // put to end of array if edge\n edges.push(ele);\n }\n }\n\n elements = nodes.concat(edges);\n var i;\n\n var removeFromElements = function removeFromElements() {\n elements.splice(i, 1);\n i--;\n }; // now, restore each element\n\n\n for (i = 0; i < elements.length; i++) {\n var _ele = elements[i];\n var _private = _ele._private;\n var _data3 = _private.data; // the traversal cache should start fresh when ele is added\n\n _ele.clearTraversalCache(); // set id and validate\n\n\n if (!addToPool && !_private.removed) ; else if (_data3.id === undefined) {\n _data3.id = idFactory.generate(cy, _ele);\n } else if (number(_data3.id)) {\n _data3.id = '' + _data3.id; // now it's a string\n } else if (emptyString(_data3.id) || !string(_data3.id)) {\n error('Can not create element with invalid string ID `' + _data3.id + '`'); // can't create element if it has empty string as id or non-string id\n\n removeFromElements();\n continue;\n } else if (cy.hasElementWithId(_data3.id)) {\n error('Can not create second element with ID `' + _data3.id + '`'); // can't create element if one already has that id\n\n removeFromElements();\n continue;\n }\n\n var id = _data3.id; // id is finalised, now let's keep a ref\n\n if (_ele.isNode()) {\n // extra checks for nodes\n var pos = _private.position; // make sure the nodes have a defined position\n\n if (pos.x == null) {\n pos.x = 0;\n }\n\n if (pos.y == null) {\n pos.y = 0;\n }\n }\n\n if (_ele.isEdge()) {\n // extra checks for edges\n var edge = _ele;\n var fields = ['source', 'target'];\n var fieldsLength = fields.length;\n var badSourceOrTarget = false;\n\n for (var j = 0; j < fieldsLength; j++) {\n var field = fields[j];\n var val = _data3[field];\n\n if (number(val)) {\n val = _data3[field] = '' + _data3[field]; // now string\n }\n\n if (val == null || val === '') {\n // can't create if source or target is not defined properly\n error('Can not create edge `' + id + '` with unspecified ' + field);\n badSourceOrTarget = true;\n } else if (!cy.hasElementWithId(val)) {\n // can't create edge if one of its nodes doesn't exist\n error('Can not create edge `' + id + '` with nonexistant ' + field + ' `' + val + '`');\n badSourceOrTarget = true;\n }\n }\n\n if (badSourceOrTarget) {\n removeFromElements();\n continue;\n } // can't create this\n\n\n var src = cy.getElementById(_data3.source);\n var tgt = cy.getElementById(_data3.target); // only one edge in node if loop\n\n if (src.same(tgt)) {\n src._private.edges.push(edge);\n } else {\n src._private.edges.push(edge);\n\n tgt._private.edges.push(edge);\n }\n\n edge._private.source = src;\n edge._private.target = tgt;\n } // if is edge\n // create mock ids / indexes maps for element so it can be used like collections\n\n\n _private.map = new Map$1();\n\n _private.map.set(id, {\n ele: _ele,\n index: 0\n });\n\n _private.removed = false;\n\n if (addToPool) {\n cy.addToPool(_ele);\n }\n } // for each element\n // do compound node sanity checks\n\n\n for (var _i3 = 0; _i3 < nodes.length; _i3++) {\n // each node\n var node = nodes[_i3];\n var _data4 = node._private.data;\n\n if (number(_data4.parent)) {\n // then automake string\n _data4.parent = '' + _data4.parent;\n }\n\n var parentId = _data4.parent;\n var specifiedParent = parentId != null;\n\n if (specifiedParent) {\n var parent = cy.getElementById(parentId);\n\n if (parent.empty()) {\n // non-existant parent; just remove it\n _data4.parent = undefined;\n } else {\n var selfAsParent = false;\n var ancestor = parent;\n\n while (!ancestor.empty()) {\n if (node.same(ancestor)) {\n // mark self as parent and remove from data\n selfAsParent = true;\n _data4.parent = undefined; // remove parent reference\n // exit or we loop forever\n\n break;\n }\n\n ancestor = ancestor.parent();\n }\n\n if (!selfAsParent) {\n // connect with children\n parent[0]._private.children.push(node);\n\n node._private.parent = parent[0]; // let the core know we have a compound graph\n\n cy_p.hasCompoundNodes = true;\n }\n } // else\n\n } // if specified parent\n\n } // for each node\n\n\n if (elements.length > 0) {\n var restored = new Collection(cy, elements);\n\n for (var _i4 = 0; _i4 < restored.length; _i4++) {\n var _ele2 = restored[_i4];\n\n if (_ele2.isNode()) {\n continue;\n } // adding an edge invalidates the traversal caches for the parallel edges\n\n\n _ele2.parallelEdges().clearTraversalCache(); // adding an edge invalidates the traversal cache for the connected nodes\n\n\n _ele2.source().clearTraversalCache();\n\n _ele2.target().clearTraversalCache();\n }\n\n var toUpdateStyle;\n\n if (cy_p.hasCompoundNodes) {\n toUpdateStyle = cy.collection().merge(restored).merge(restored.connectedNodes()).merge(restored.parent());\n } else {\n toUpdateStyle = restored;\n }\n\n toUpdateStyle.dirtyCompoundBoundsCache().dirtyBoundingBoxCache().updateStyle(notifyRenderer);\n\n if (notifyRenderer) {\n restored.emitAndNotify('add');\n } else if (addToPool) {\n restored.emit('add');\n }\n }\n\n return self; // chainability\n};\n\nelesfn$t.removed = function () {\n var ele = this[0];\n return ele && ele._private.removed;\n};\n\nelesfn$t.inside = function () {\n var ele = this[0];\n return ele && !ele._private.removed;\n};\n\nelesfn$t.remove = function () {\n var notifyRenderer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n var removeFromPool = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var self = this;\n var elesToRemove = [];\n var elesToRemoveIds = {};\n var cy = self._private.cy; // add connected edges\n\n function addConnectedEdges(node) {\n var edges = node._private.edges;\n\n for (var i = 0; i < edges.length; i++) {\n add(edges[i]);\n }\n } // add descendant nodes\n\n\n function addChildren(node) {\n var children = node._private.children;\n\n for (var i = 0; i < children.length; i++) {\n add(children[i]);\n }\n }\n\n function add(ele) {\n var alreadyAdded = elesToRemoveIds[ele.id()];\n\n if (removeFromPool && ele.removed() || alreadyAdded) {\n return;\n } else {\n elesToRemoveIds[ele.id()] = true;\n }\n\n if (ele.isNode()) {\n elesToRemove.push(ele); // nodes are removed last\n\n addConnectedEdges(ele);\n addChildren(ele);\n } else {\n elesToRemove.unshift(ele); // edges are removed first\n }\n } // make the list of elements to remove\n // (may be removing more than specified due to connected edges etc)\n\n\n for (var i = 0, l = self.length; i < l; i++) {\n var ele = self[i];\n add(ele);\n }\n\n function removeEdgeRef(node, edge) {\n var connectedEdges = node._private.edges;\n removeFromArray(connectedEdges, edge); // removing an edges invalidates the traversal cache for its nodes\n\n node.clearTraversalCache();\n }\n\n function removeParallelRef(pllEdge) {\n // removing an edge invalidates the traversal caches for the parallel edges\n pllEdge.clearTraversalCache();\n }\n\n var alteredParents = [];\n alteredParents.ids = {};\n\n function removeChildRef(parent, ele) {\n ele = ele[0];\n parent = parent[0];\n var children = parent._private.children;\n var pid = parent.id();\n removeFromArray(children, ele); // remove parent => child ref\n\n ele._private.parent = null; // remove child => parent ref\n\n if (!alteredParents.ids[pid]) {\n alteredParents.ids[pid] = true;\n alteredParents.push(parent);\n }\n }\n\n self.dirtyCompoundBoundsCache();\n\n if (removeFromPool) {\n cy.removeFromPool(elesToRemove); // remove from core pool\n }\n\n for (var _i5 = 0; _i5 < elesToRemove.length; _i5++) {\n var _ele3 = elesToRemove[_i5];\n\n if (_ele3.isEdge()) {\n // remove references to this edge in its connected nodes\n var src = _ele3.source()[0];\n\n var tgt = _ele3.target()[0];\n\n removeEdgeRef(src, _ele3);\n removeEdgeRef(tgt, _ele3);\n\n var pllEdges = _ele3.parallelEdges();\n\n for (var j = 0; j < pllEdges.length; j++) {\n var pllEdge = pllEdges[j];\n removeParallelRef(pllEdge);\n\n if (pllEdge.isBundledBezier()) {\n pllEdge.dirtyBoundingBoxCache();\n }\n }\n } else {\n // remove reference to parent\n var parent = _ele3.parent();\n\n if (parent.length !== 0) {\n removeChildRef(parent, _ele3);\n }\n }\n\n if (removeFromPool) {\n // mark as removed\n _ele3._private.removed = true;\n }\n } // check to see if we have a compound graph or not\n\n\n var elesStillInside = cy._private.elements;\n cy._private.hasCompoundNodes = false;\n\n for (var _i6 = 0; _i6 < elesStillInside.length; _i6++) {\n var _ele4 = elesStillInside[_i6];\n\n if (_ele4.isParent()) {\n cy._private.hasCompoundNodes = true;\n break;\n }\n }\n\n var removedElements = new Collection(this.cy(), elesToRemove);\n\n if (removedElements.size() > 0) {\n // must manually notify since trigger won't do this automatically once removed\n if (notifyRenderer) {\n removedElements.emitAndNotify('remove');\n } else if (removeFromPool) {\n removedElements.emit('remove');\n }\n } // the parents who were modified by the removal need their style updated\n\n\n for (var _i7 = 0; _i7 < alteredParents.length; _i7++) {\n var _ele5 = alteredParents[_i7];\n\n if (!removeFromPool || !_ele5.removed()) {\n _ele5.updateStyle();\n }\n }\n\n return removedElements;\n};\n\nelesfn$t.move = function (struct) {\n var cy = this._private.cy;\n var eles = this; // just clean up refs, caches, etc. in the same way as when removing and then restoring\n // (our calls to remove/restore do not remove from the graph or make events)\n\n var notifyRenderer = false;\n var modifyPool = false;\n\n var toString = function toString(id) {\n return id == null ? id : '' + id;\n }; // id must be string\n\n\n if (struct.source !== undefined || struct.target !== undefined) {\n var srcId = toString(struct.source);\n var tgtId = toString(struct.target);\n var srcExists = srcId != null && cy.hasElementWithId(srcId);\n var tgtExists = tgtId != null && cy.hasElementWithId(tgtId);\n\n if (srcExists || tgtExists) {\n cy.batch(function () {\n // avoid duplicate style updates\n eles.remove(notifyRenderer, modifyPool); // clean up refs etc.\n\n eles.emitAndNotify('moveout');\n\n for (var i = 0; i < eles.length; i++) {\n var ele = eles[i];\n var _data5 = ele._private.data;\n\n if (ele.isEdge()) {\n if (srcExists) {\n _data5.source = srcId;\n }\n\n if (tgtExists) {\n _data5.target = tgtId;\n }\n }\n }\n\n eles.restore(notifyRenderer, modifyPool); // make new refs, style, etc.\n });\n eles.emitAndNotify('move');\n }\n } else if (struct.parent !== undefined) {\n // move node to new parent\n var parentId = toString(struct.parent);\n var parentExists = parentId === null || cy.hasElementWithId(parentId);\n\n if (parentExists) {\n var pidToAssign = parentId === null ? undefined : parentId;\n cy.batch(function () {\n // avoid duplicate style updates\n var updated = eles.remove(notifyRenderer, modifyPool); // clean up refs etc.\n\n updated.emitAndNotify('moveout');\n\n for (var i = 0; i < eles.length; i++) {\n var ele = eles[i];\n var _data6 = ele._private.data;\n\n if (ele.isNode()) {\n _data6.parent = pidToAssign;\n }\n }\n\n updated.restore(notifyRenderer, modifyPool); // make new refs, style, etc.\n });\n eles.emitAndNotify('move');\n }\n }\n\n return this;\n};\n\n[elesfn$b, elesfn$c, elesfn$d, elesfn$e, elesfn$f, data$1, elesfn$h, dimensions, elesfn$l, elesfn$m, elesfn$n, elesfn$o, elesfn$p, elesfn$q, elesfn$r, elesfn$s].forEach(function (props) {\n extend(elesfn$t, props);\n});\n\nvar corefn = {\n add: function add(opts) {\n var elements;\n var cy = this; // add the elements\n\n if (elementOrCollection(opts)) {\n var eles = opts;\n\n if (eles._private.cy === cy) {\n // same instance => just restore\n elements = eles.restore();\n } else {\n // otherwise, copy from json\n var jsons = [];\n\n for (var i = 0; i < eles.length; i++) {\n var ele = eles[i];\n jsons.push(ele.json());\n }\n\n elements = new Collection(cy, jsons);\n }\n } // specify an array of options\n else if (array(opts)) {\n var _jsons = opts;\n elements = new Collection(cy, _jsons);\n } // specify via opts.nodes and opts.edges\n else if (plainObject(opts) && (array(opts.nodes) || array(opts.edges))) {\n var elesByGroup = opts;\n var _jsons2 = [];\n var grs = ['nodes', 'edges'];\n\n for (var _i = 0, il = grs.length; _i < il; _i++) {\n var group = grs[_i];\n var elesArray = elesByGroup[group];\n\n if (array(elesArray)) {\n for (var j = 0, jl = elesArray.length; j < jl; j++) {\n var json = extend({\n group: group\n }, elesArray[j]);\n\n _jsons2.push(json);\n }\n }\n }\n\n elements = new Collection(cy, _jsons2);\n } // specify options for one element\n else {\n var _json = opts;\n elements = new Element(cy, _json).collection();\n }\n\n return elements;\n },\n remove: function remove(collection) {\n if (elementOrCollection(collection)) ; else if (string(collection)) {\n var selector = collection;\n collection = this.$(selector);\n }\n\n return collection.remove();\n }\n};\n\n/* global Float32Array */\n\n/*! Bezier curve function generator. Copyright Gaetan Renaudeau. MIT License: http://en.wikipedia.org/wiki/MIT_License */\nfunction generateCubicBezier(mX1, mY1, mX2, mY2) {\n var NEWTON_ITERATIONS = 4,\n NEWTON_MIN_SLOPE = 0.001,\n SUBDIVISION_PRECISION = 0.0000001,\n SUBDIVISION_MAX_ITERATIONS = 10,\n kSplineTableSize = 11,\n kSampleStepSize = 1.0 / (kSplineTableSize - 1.0),\n float32ArraySupported = typeof Float32Array !== 'undefined';\n /* Must contain four arguments. */\n\n if (arguments.length !== 4) {\n return false;\n }\n /* Arguments must be numbers. */\n\n\n for (var i = 0; i < 4; ++i) {\n if (typeof arguments[i] !== \"number\" || isNaN(arguments[i]) || !isFinite(arguments[i])) {\n return false;\n }\n }\n /* X values must be in the [0, 1] range. */\n\n\n mX1 = Math.min(mX1, 1);\n mX2 = Math.min(mX2, 1);\n mX1 = Math.max(mX1, 0);\n mX2 = Math.max(mX2, 0);\n var mSampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);\n\n function A(aA1, aA2) {\n return 1.0 - 3.0 * aA2 + 3.0 * aA1;\n }\n\n function B(aA1, aA2) {\n return 3.0 * aA2 - 6.0 * aA1;\n }\n\n function C(aA1) {\n return 3.0 * aA1;\n }\n\n function calcBezier(aT, aA1, aA2) {\n return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT;\n }\n\n function getSlope(aT, aA1, aA2) {\n return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1);\n }\n\n function newtonRaphsonIterate(aX, aGuessT) {\n for (var _i = 0; _i < NEWTON_ITERATIONS; ++_i) {\n var currentSlope = getSlope(aGuessT, mX1, mX2);\n\n if (currentSlope === 0.0) {\n return aGuessT;\n }\n\n var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n aGuessT -= currentX / currentSlope;\n }\n\n return aGuessT;\n }\n\n function calcSampleValues() {\n for (var _i2 = 0; _i2 < kSplineTableSize; ++_i2) {\n mSampleValues[_i2] = calcBezier(_i2 * kSampleStepSize, mX1, mX2);\n }\n }\n\n function binarySubdivide(aX, aA, aB) {\n var currentX,\n currentT,\n i = 0;\n\n do {\n currentT = aA + (aB - aA) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - aX;\n\n if (currentX > 0.0) {\n aB = currentT;\n } else {\n aA = currentT;\n }\n } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);\n\n return currentT;\n }\n\n function getTForX(aX) {\n var intervalStart = 0.0,\n currentSample = 1,\n lastSample = kSplineTableSize - 1;\n\n for (; currentSample !== lastSample && mSampleValues[currentSample] <= aX; ++currentSample) {\n intervalStart += kSampleStepSize;\n }\n\n --currentSample;\n var dist = (aX - mSampleValues[currentSample]) / (mSampleValues[currentSample + 1] - mSampleValues[currentSample]),\n guessForT = intervalStart + dist * kSampleStepSize,\n initialSlope = getSlope(guessForT, mX1, mX2);\n\n if (initialSlope >= NEWTON_MIN_SLOPE) {\n return newtonRaphsonIterate(aX, guessForT);\n } else if (initialSlope === 0.0) {\n return guessForT;\n } else {\n return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize);\n }\n }\n\n var _precomputed = false;\n\n function precompute() {\n _precomputed = true;\n\n if (mX1 !== mY1 || mX2 !== mY2) {\n calcSampleValues();\n }\n }\n\n var f = function f(aX) {\n if (!_precomputed) {\n precompute();\n }\n\n if (mX1 === mY1 && mX2 === mY2) {\n return aX;\n }\n\n if (aX === 0) {\n return 0;\n }\n\n if (aX === 1) {\n return 1;\n }\n\n return calcBezier(getTForX(aX), mY1, mY2);\n };\n\n f.getControlPoints = function () {\n return [{\n x: mX1,\n y: mY1\n }, {\n x: mX2,\n y: mY2\n }];\n };\n\n var str = \"generateBezier(\" + [mX1, mY1, mX2, mY2] + \")\";\n\n f.toString = function () {\n return str;\n };\n\n return f;\n}\n\n/*! Runge-Kutta spring physics function generator. Adapted from Framer.js, copyright Koen Bok. MIT License: http://en.wikipedia.org/wiki/MIT_License */\n\n/* Given a tension, friction, and duration, a simulation at 60FPS will first run without a defined duration in order to calculate the full path. A second pass\n then adjusts the time delta -- using the relation between actual time and duration -- to calculate the path for the duration-constrained animation. */\nvar generateSpringRK4 = function () {\n function springAccelerationForState(state) {\n return -state.tension * state.x - state.friction * state.v;\n }\n\n function springEvaluateStateWithDerivative(initialState, dt, derivative) {\n var state = {\n x: initialState.x + derivative.dx * dt,\n v: initialState.v + derivative.dv * dt,\n tension: initialState.tension,\n friction: initialState.friction\n };\n return {\n dx: state.v,\n dv: springAccelerationForState(state)\n };\n }\n\n function springIntegrateState(state, dt) {\n var a = {\n dx: state.v,\n dv: springAccelerationForState(state)\n },\n b = springEvaluateStateWithDerivative(state, dt * 0.5, a),\n c = springEvaluateStateWithDerivative(state, dt * 0.5, b),\n d = springEvaluateStateWithDerivative(state, dt, c),\n dxdt = 1.0 / 6.0 * (a.dx + 2.0 * (b.dx + c.dx) + d.dx),\n dvdt = 1.0 / 6.0 * (a.dv + 2.0 * (b.dv + c.dv) + d.dv);\n state.x = state.x + dxdt * dt;\n state.v = state.v + dvdt * dt;\n return state;\n }\n\n return function springRK4Factory(tension, friction, duration) {\n var initState = {\n x: -1,\n v: 0,\n tension: null,\n friction: null\n },\n path = [0],\n time_lapsed = 0,\n tolerance = 1 / 10000,\n DT = 16 / 1000,\n have_duration,\n dt,\n last_state;\n tension = parseFloat(tension) || 500;\n friction = parseFloat(friction) || 20;\n duration = duration || null;\n initState.tension = tension;\n initState.friction = friction;\n have_duration = duration !== null;\n /* Calculate the actual time it takes for this animation to complete with the provided conditions. */\n\n if (have_duration) {\n /* Run the simulation without a duration. */\n time_lapsed = springRK4Factory(tension, friction);\n /* Compute the adjusted time delta. */\n\n dt = time_lapsed / duration * DT;\n } else {\n dt = DT;\n }\n\n for (;;) {\n /* Next/step function .*/\n last_state = springIntegrateState(last_state || initState, dt);\n /* Store the position. */\n\n path.push(1 + last_state.x);\n time_lapsed += 16;\n /* If the change threshold is reached, break. */\n\n if (!(Math.abs(last_state.x) > tolerance && Math.abs(last_state.v) > tolerance)) {\n break;\n }\n }\n /* If duration is not defined, return the actual time required for completing this animation. Otherwise, return a closure that holds the\n computed path and returns a snapshot of the position according to a given percentComplete. */\n\n\n return !have_duration ? time_lapsed : function (percentComplete) {\n return path[percentComplete * (path.length - 1) | 0];\n };\n };\n}();\n\nvar cubicBezier = function cubicBezier(t1, p1, t2, p2) {\n var bezier = generateCubicBezier(t1, p1, t2, p2);\n return function (start, end, percent) {\n return start + (end - start) * bezier(percent);\n };\n};\n\nvar easings = {\n 'linear': function linear(start, end, percent) {\n return start + (end - start) * percent;\n },\n // default easings\n 'ease': cubicBezier(0.25, 0.1, 0.25, 1),\n 'ease-in': cubicBezier(0.42, 0, 1, 1),\n 'ease-out': cubicBezier(0, 0, 0.58, 1),\n 'ease-in-out': cubicBezier(0.42, 0, 0.58, 1),\n // sine\n 'ease-in-sine': cubicBezier(0.47, 0, 0.745, 0.715),\n 'ease-out-sine': cubicBezier(0.39, 0.575, 0.565, 1),\n 'ease-in-out-sine': cubicBezier(0.445, 0.05, 0.55, 0.95),\n // quad\n 'ease-in-quad': cubicBezier(0.55, 0.085, 0.68, 0.53),\n 'ease-out-quad': cubicBezier(0.25, 0.46, 0.45, 0.94),\n 'ease-in-out-quad': cubicBezier(0.455, 0.03, 0.515, 0.955),\n // cubic\n 'ease-in-cubic': cubicBezier(0.55, 0.055, 0.675, 0.19),\n 'ease-out-cubic': cubicBezier(0.215, 0.61, 0.355, 1),\n 'ease-in-out-cubic': cubicBezier(0.645, 0.045, 0.355, 1),\n // quart\n 'ease-in-quart': cubicBezier(0.895, 0.03, 0.685, 0.22),\n 'ease-out-quart': cubicBezier(0.165, 0.84, 0.44, 1),\n 'ease-in-out-quart': cubicBezier(0.77, 0, 0.175, 1),\n // quint\n 'ease-in-quint': cubicBezier(0.755, 0.05, 0.855, 0.06),\n 'ease-out-quint': cubicBezier(0.23, 1, 0.32, 1),\n 'ease-in-out-quint': cubicBezier(0.86, 0, 0.07, 1),\n // expo\n 'ease-in-expo': cubicBezier(0.95, 0.05, 0.795, 0.035),\n 'ease-out-expo': cubicBezier(0.19, 1, 0.22, 1),\n 'ease-in-out-expo': cubicBezier(1, 0, 0, 1),\n // circ\n 'ease-in-circ': cubicBezier(0.6, 0.04, 0.98, 0.335),\n 'ease-out-circ': cubicBezier(0.075, 0.82, 0.165, 1),\n 'ease-in-out-circ': cubicBezier(0.785, 0.135, 0.15, 0.86),\n // user param easings...\n 'spring': function spring(tension, friction, duration) {\n if (duration === 0) {\n // can't get a spring w/ duration 0\n return easings.linear; // duration 0 => jump to end so impl doesn't matter\n }\n\n var spring = generateSpringRK4(tension, friction, duration);\n return function (start, end, percent) {\n return start + (end - start) * spring(percent);\n };\n },\n 'cubic-bezier': cubicBezier\n};\n\nfunction getEasedValue(type, start, end, percent, easingFn) {\n if (percent === 1) {\n return end;\n }\n\n var val = easingFn(start, end, percent);\n\n if (type == null) {\n return val;\n }\n\n if (type.roundValue || type.color) {\n val = Math.round(val);\n }\n\n if (type.min !== undefined) {\n val = Math.max(val, type.min);\n }\n\n if (type.max !== undefined) {\n val = Math.min(val, type.max);\n }\n\n return val;\n}\n\nfunction getValue(prop, spec) {\n if (prop.pfValue != null || prop.value != null) {\n if (prop.pfValue != null && (spec == null || spec.type.units !== '%')) {\n return prop.pfValue;\n } else {\n return prop.value;\n }\n } else {\n return prop;\n }\n}\n\nfunction ease(startProp, endProp, percent, easingFn, propSpec) {\n var type = propSpec != null ? propSpec.type : null;\n\n if (percent < 0) {\n percent = 0;\n } else if (percent > 1) {\n percent = 1;\n }\n\n var start = getValue(startProp, propSpec);\n var end = getValue(endProp, propSpec);\n\n if (number(start) && number(end)) {\n return getEasedValue(type, start, end, percent, easingFn);\n } else if (array(start) && array(end)) {\n var easedArr = [];\n\n for (var i = 0; i < end.length; i++) {\n var si = start[i];\n var ei = end[i];\n\n if (si != null && ei != null) {\n var val = getEasedValue(type, si, ei, percent, easingFn);\n easedArr.push(val);\n } else {\n easedArr.push(ei);\n }\n }\n\n return easedArr;\n }\n\n return undefined;\n}\n\nfunction step(self, ani, now, isCore) {\n var isEles = !isCore;\n var _p = self._private;\n var ani_p = ani._private;\n var pEasing = ani_p.easing;\n var startTime = ani_p.startTime;\n var cy = isCore ? self : self.cy();\n var style = cy.style();\n\n if (!ani_p.easingImpl) {\n if (pEasing == null) {\n // use default\n ani_p.easingImpl = easings['linear'];\n } else {\n // then define w/ name\n var easingVals;\n\n if (string(pEasing)) {\n var easingProp = style.parse('transition-timing-function', pEasing);\n easingVals = easingProp.value;\n } else {\n // then assume preparsed array\n easingVals = pEasing;\n }\n\n var name, args;\n\n if (string(easingVals)) {\n name = easingVals;\n args = [];\n } else {\n name = easingVals[1];\n args = easingVals.slice(2).map(function (n) {\n return +n;\n });\n }\n\n if (args.length > 0) {\n // create with args\n if (name === 'spring') {\n args.push(ani_p.duration); // need duration to generate spring\n }\n\n ani_p.easingImpl = easings[name].apply(null, args);\n } else {\n // static impl by name\n ani_p.easingImpl = easings[name];\n }\n }\n }\n\n var easing = ani_p.easingImpl;\n var percent;\n\n if (ani_p.duration === 0) {\n percent = 1;\n } else {\n percent = (now - startTime) / ani_p.duration;\n }\n\n if (ani_p.applying) {\n percent = ani_p.progress;\n }\n\n if (percent < 0) {\n percent = 0;\n } else if (percent > 1) {\n percent = 1;\n }\n\n if (ani_p.delay == null) {\n // then update\n var startPos = ani_p.startPosition;\n var endPos = ani_p.position;\n\n if (endPos && isEles && !self.locked()) {\n var newPos = {};\n\n if (valid(startPos.x, endPos.x)) {\n newPos.x = ease(startPos.x, endPos.x, percent, easing);\n }\n\n if (valid(startPos.y, endPos.y)) {\n newPos.y = ease(startPos.y, endPos.y, percent, easing);\n }\n\n self.position(newPos);\n }\n\n var startPan = ani_p.startPan;\n var endPan = ani_p.pan;\n var pan = _p.pan;\n var animatingPan = endPan != null && isCore;\n\n if (animatingPan) {\n if (valid(startPan.x, endPan.x)) {\n pan.x = ease(startPan.x, endPan.x, percent, easing);\n }\n\n if (valid(startPan.y, endPan.y)) {\n pan.y = ease(startPan.y, endPan.y, percent, easing);\n }\n\n self.emit('pan');\n }\n\n var startZoom = ani_p.startZoom;\n var endZoom = ani_p.zoom;\n var animatingZoom = endZoom != null && isCore;\n\n if (animatingZoom) {\n if (valid(startZoom, endZoom)) {\n _p.zoom = bound(_p.minZoom, ease(startZoom, endZoom, percent, easing), _p.maxZoom);\n }\n\n self.emit('zoom');\n }\n\n if (animatingPan || animatingZoom) {\n self.emit('viewport');\n }\n\n var props = ani_p.style;\n\n if (props && props.length > 0 && isEles) {\n for (var i = 0; i < props.length; i++) {\n var prop = props[i];\n var _name = prop.name;\n var end = prop;\n var start = ani_p.startStyle[_name];\n var propSpec = style.properties[start.name];\n var easedVal = ease(start, end, percent, easing, propSpec);\n style.overrideBypass(self, _name, easedVal);\n } // for props\n\n\n self.emit('style');\n } // if\n\n }\n\n ani_p.progress = percent;\n return percent;\n}\n\nfunction valid(start, end) {\n if (start == null || end == null) {\n return false;\n }\n\n if (number(start) && number(end)) {\n return true;\n } else if (start && end) {\n return true;\n }\n\n return false;\n}\n\nfunction startAnimation(self, ani, now, isCore) {\n var ani_p = ani._private;\n ani_p.started = true;\n ani_p.startTime = now - ani_p.progress * ani_p.duration;\n}\n\nfunction stepAll(now, cy) {\n var eles = cy._private.aniEles;\n var doneEles = [];\n\n function stepOne(ele, isCore) {\n var _p = ele._private;\n var current = _p.animation.current;\n var queue = _p.animation.queue;\n var ranAnis = false; // cancel all animations on display:none ele\n\n if (!isCore && ele.pstyle('display').value === 'none') {\n // put all current and queue animations in this tick's current list\n // and empty the lists for the element\n current = current.splice(0, current.length).concat(queue.splice(0, queue.length)); // stop all animations\n\n for (var i = 0; i < current.length; i++) {\n current[i].stop();\n }\n } // if nothing currently animating, get something from the queue\n\n\n if (current.length === 0) {\n var next = queue.shift();\n\n if (next) {\n current.push(next);\n }\n }\n\n var callbacks = function callbacks(_callbacks) {\n for (var j = _callbacks.length - 1; j >= 0; j--) {\n var cb = _callbacks[j];\n cb();\n }\n\n _callbacks.splice(0, _callbacks.length);\n }; // step and remove if done\n\n\n for (var _i = current.length - 1; _i >= 0; _i--) {\n var ani = current[_i];\n var ani_p = ani._private;\n\n if (ani_p.stopped) {\n current.splice(_i, 1);\n ani_p.hooked = false;\n ani_p.playing = false;\n ani_p.started = false;\n callbacks(ani_p.frames);\n continue;\n }\n\n if (!ani_p.playing && !ani_p.applying) {\n continue;\n } // an apply() while playing shouldn't do anything\n\n\n if (ani_p.playing && ani_p.applying) {\n ani_p.applying = false;\n }\n\n if (!ani_p.started) {\n startAnimation(ele, ani, now, isCore);\n }\n\n step(ele, ani, now, isCore);\n\n if (ani_p.applying) {\n ani_p.applying = false;\n }\n\n callbacks(ani_p.frames);\n\n if (ani_p.step != null) {\n ani_p.step(now);\n }\n\n if (ani.completed()) {\n current.splice(_i, 1);\n ani_p.hooked = false;\n ani_p.playing = false;\n ani_p.started = false;\n callbacks(ani_p.completes);\n }\n\n ranAnis = true;\n }\n\n if (!isCore && current.length === 0 && queue.length === 0) {\n doneEles.push(ele);\n }\n\n return ranAnis;\n } // stepElement\n // handle all eles\n\n\n var ranEleAni = false;\n\n for (var e = 0; e < eles.length; e++) {\n var ele = eles[e];\n var handledThisEle = stepOne(ele);\n ranEleAni = ranEleAni || handledThisEle;\n } // each element\n\n\n var ranCoreAni = stepOne(cy, true); // notify renderer\n\n if (ranEleAni || ranCoreAni) {\n if (eles.length > 0) {\n cy.notify('draw', eles);\n } else {\n cy.notify('draw');\n }\n } // remove elements from list of currently animating if its queues are empty\n\n\n eles.unmerge(doneEles);\n cy.emit('step');\n} // stepAll\n\nvar corefn$1 = {\n // pull in animation functions\n animate: define$3.animate(),\n animation: define$3.animation(),\n animated: define$3.animated(),\n clearQueue: define$3.clearQueue(),\n delay: define$3.delay(),\n delayAnimation: define$3.delayAnimation(),\n stop: define$3.stop(),\n addToAnimationPool: function addToAnimationPool(eles) {\n var cy = this;\n\n if (!cy.styleEnabled()) {\n return;\n } // save cycles when no style used\n\n\n cy._private.aniEles.merge(eles);\n },\n stopAnimationLoop: function stopAnimationLoop() {\n this._private.animationsRunning = false;\n },\n startAnimationLoop: function startAnimationLoop() {\n var cy = this;\n cy._private.animationsRunning = true;\n\n if (!cy.styleEnabled()) {\n return;\n } // save cycles when no style used\n // NB the animation loop will exec in headless environments if style enabled\n // and explicit cy.destroy() is necessary to stop the loop\n\n\n function headlessStep() {\n if (!cy._private.animationsRunning) {\n return;\n }\n\n requestAnimationFrame(function animationStep(now) {\n stepAll(now, cy);\n headlessStep();\n });\n }\n\n var renderer = cy.renderer();\n\n if (renderer && renderer.beforeRender) {\n // let the renderer schedule animations\n renderer.beforeRender(function rendererAnimationStep(willDraw, now) {\n stepAll(now, cy);\n }, renderer.beforeRenderPriorities.animations);\n } else {\n // manage the animation loop ourselves\n headlessStep(); // first call\n }\n }\n};\n\nvar emitterOptions$1 = {\n qualifierCompare: function qualifierCompare(selector1, selector2) {\n if (selector1 == null || selector2 == null) {\n return selector1 == null && selector2 == null;\n } else {\n return selector1.sameText(selector2);\n }\n },\n eventMatches: function eventMatches(cy, listener, eventObj) {\n var selector = listener.qualifier;\n\n if (selector != null) {\n return cy !== eventObj.target && element(eventObj.target) && selector.matches(eventObj.target);\n }\n\n return true;\n },\n addEventFields: function addEventFields(cy, evt) {\n evt.cy = cy;\n evt.target = cy;\n },\n callbackContext: function callbackContext(cy, listener, eventObj) {\n return listener.qualifier != null ? eventObj.target : cy;\n }\n};\n\nvar argSelector$1 = function argSelector(arg) {\n if (string(arg)) {\n return new Selector(arg);\n } else {\n return arg;\n }\n};\n\nvar elesfn$u = {\n createEmitter: function createEmitter() {\n var _p = this._private;\n\n if (!_p.emitter) {\n _p.emitter = new Emitter(emitterOptions$1, this);\n }\n\n return this;\n },\n emitter: function emitter() {\n return this._private.emitter;\n },\n on: function on(events, selector, callback) {\n this.emitter().on(events, argSelector$1(selector), callback);\n return this;\n },\n removeListener: function removeListener(events, selector, callback) {\n this.emitter().removeListener(events, argSelector$1(selector), callback);\n return this;\n },\n removeAllListeners: function removeAllListeners() {\n this.emitter().removeAllListeners();\n return this;\n },\n one: function one(events, selector, callback) {\n this.emitter().one(events, argSelector$1(selector), callback);\n return this;\n },\n once: function once(events, selector, callback) {\n this.emitter().one(events, argSelector$1(selector), callback);\n return this;\n },\n emit: function emit(events, extraParams) {\n this.emitter().emit(events, extraParams);\n return this;\n },\n emitAndNotify: function emitAndNotify(event, eles) {\n this.emit(event);\n this.notify(event, eles);\n return this;\n }\n};\ndefine$3.eventAliasesOn(elesfn$u);\n\nvar corefn$2 = {\n png: function png(options) {\n var renderer = this._private.renderer;\n options = options || {};\n return renderer.png(options);\n },\n jpg: function jpg(options) {\n var renderer = this._private.renderer;\n options = options || {};\n options.bg = options.bg || '#fff';\n return renderer.jpg(options);\n }\n};\ncorefn$2.jpeg = corefn$2.jpg;\n\nvar corefn$3 = {\n layout: function layout(options) {\n var cy = this;\n\n if (options == null) {\n error('Layout options must be specified to make a layout');\n return;\n }\n\n if (options.name == null) {\n error('A `name` must be specified to make a layout');\n return;\n }\n\n var name = options.name;\n var Layout = cy.extension('layout', name);\n\n if (Layout == null) {\n error('No such layout `' + name + '` found. Did you forget to import it and `cytoscape.use()` it?');\n return;\n }\n\n var eles;\n\n if (string(options.eles)) {\n eles = cy.$(options.eles);\n } else {\n eles = options.eles != null ? options.eles : cy.$();\n }\n\n var layout = new Layout(extend({}, options, {\n cy: cy,\n eles: eles\n }));\n return layout;\n }\n};\ncorefn$3.createLayout = corefn$3.makeLayout = corefn$3.layout;\n\nvar corefn$4 = {\n notify: function notify(eventName, eventEles) {\n var _p = this._private;\n\n if (this.batching()) {\n _p.batchNotifications = _p.batchNotifications || {};\n var eles = _p.batchNotifications[eventName] = _p.batchNotifications[eventName] || this.collection();\n\n if (eventEles != null) {\n eles.merge(eventEles);\n }\n\n return; // notifications are disabled during batching\n }\n\n if (!_p.notificationsEnabled) {\n return;\n } // exit on disabled\n\n\n var renderer = this.renderer(); // exit if destroy() called on core or renderer in between frames #1499 #1528\n\n if (this.destroyed() || !renderer) {\n return;\n }\n\n renderer.notify(eventName, eventEles);\n },\n notifications: function notifications(bool) {\n var p = this._private;\n\n if (bool === undefined) {\n return p.notificationsEnabled;\n } else {\n p.notificationsEnabled = bool ? true : false;\n }\n\n return this;\n },\n noNotifications: function noNotifications(callback) {\n this.notifications(false);\n callback();\n this.notifications(true);\n },\n batching: function batching() {\n return this._private.batchCount > 0;\n },\n startBatch: function startBatch() {\n var _p = this._private;\n\n if (_p.batchCount == null) {\n _p.batchCount = 0;\n }\n\n if (_p.batchCount === 0) {\n _p.batchStyleEles = this.collection();\n _p.batchNotifications = {};\n }\n\n _p.batchCount++;\n return this;\n },\n endBatch: function endBatch() {\n var _p = this._private;\n\n if (_p.batchCount === 0) {\n return this;\n }\n\n _p.batchCount--;\n\n if (_p.batchCount === 0) {\n // update style for dirty eles\n _p.batchStyleEles.updateStyle();\n\n var renderer = this.renderer(); // notify the renderer of queued eles and event types\n\n Object.keys(_p.batchNotifications).forEach(function (eventName) {\n var eles = _p.batchNotifications[eventName];\n\n if (eles.empty()) {\n renderer.notify(eventName);\n } else {\n renderer.notify(eventName, eles);\n }\n });\n }\n\n return this;\n },\n batch: function batch(callback) {\n this.startBatch();\n callback();\n this.endBatch();\n return this;\n },\n // for backwards compatibility\n batchData: function batchData(map) {\n var cy = this;\n return this.batch(function () {\n var ids = Object.keys(map);\n\n for (var i = 0; i < ids.length; i++) {\n var id = ids[i];\n var data = map[id];\n var ele = cy.getElementById(id);\n ele.data(data);\n }\n });\n }\n};\n\nvar rendererDefaults = defaults({\n hideEdgesOnViewport: false,\n textureOnViewport: false,\n motionBlur: false,\n motionBlurOpacity: 0.05,\n pixelRatio: undefined,\n desktopTapThreshold: 4,\n touchTapThreshold: 8,\n wheelSensitivity: 1,\n debug: false,\n showFps: false\n});\nvar corefn$5 = {\n renderTo: function renderTo(context, zoom, pan, pxRatio) {\n var r = this._private.renderer;\n r.renderTo(context, zoom, pan, pxRatio);\n return this;\n },\n renderer: function renderer() {\n return this._private.renderer;\n },\n forceRender: function forceRender() {\n this.notify('draw');\n return this;\n },\n resize: function resize() {\n this.invalidateSize();\n this.emitAndNotify('resize');\n return this;\n },\n initRenderer: function initRenderer(options) {\n var cy = this;\n var RendererProto = cy.extension('renderer', options.name);\n\n if (RendererProto == null) {\n error(\"Can not initialise: No such renderer `\".concat(options.name, \"` found. Did you forget to import it and `cytoscape.use()` it?\"));\n return;\n }\n\n if (options.wheelSensitivity !== undefined) {\n warn(\"You have set a custom wheel sensitivity. This will make your app zoom unnaturally when using mainstream mice. You should change this value from the default only if you can guarantee that all your users will use the same hardware and OS configuration as your current machine.\");\n }\n\n var rOpts = rendererDefaults(options);\n rOpts.cy = cy;\n cy._private.renderer = new RendererProto(rOpts);\n this.notify('init');\n },\n destroyRenderer: function destroyRenderer() {\n var cy = this;\n cy.notify('destroy'); // destroy the renderer\n\n var domEle = cy.container();\n\n if (domEle) {\n domEle._cyreg = null;\n\n while (domEle.childNodes.length > 0) {\n domEle.removeChild(domEle.childNodes[0]);\n }\n }\n\n cy._private.renderer = null; // to be extra safe, remove the ref\n\n cy.mutableElements().forEach(function (ele) {\n var _p = ele._private;\n _p.rscratch = {};\n _p.rstyle = {};\n _p.animation.current = [];\n _p.animation.queue = [];\n });\n },\n onRender: function onRender(fn) {\n return this.on('render', fn);\n },\n offRender: function offRender(fn) {\n return this.off('render', fn);\n }\n};\ncorefn$5.invalidateDimensions = corefn$5.resize;\n\nvar corefn$6 = {\n // get a collection\n // - empty collection on no args\n // - collection of elements in the graph on selector arg\n // - guarantee a returned collection when elements or collection specified\n collection: function collection(eles, opts) {\n if (string(eles)) {\n return this.$(eles);\n } else if (elementOrCollection(eles)) {\n return eles.collection();\n } else if (array(eles)) {\n return new Collection(this, eles, opts);\n }\n\n return new Collection(this);\n },\n nodes: function nodes(selector) {\n var nodes = this.$(function (ele) {\n return ele.isNode();\n });\n\n if (selector) {\n return nodes.filter(selector);\n }\n\n return nodes;\n },\n edges: function edges(selector) {\n var edges = this.$(function (ele) {\n return ele.isEdge();\n });\n\n if (selector) {\n return edges.filter(selector);\n }\n\n return edges;\n },\n // search the graph like jQuery\n $: function $(selector) {\n var eles = this._private.elements;\n\n if (selector) {\n return eles.filter(selector);\n } else {\n return eles.spawnSelf();\n }\n },\n mutableElements: function mutableElements() {\n return this._private.elements;\n }\n}; // aliases\n\ncorefn$6.elements = corefn$6.filter = corefn$6.$;\n\nvar styfn = {}; // keys for style blocks, e.g. ttfftt\n\nvar TRUE = 't';\nvar FALSE = 'f'; // (potentially expensive calculation)\n// apply the style to the element based on\n// - its bypass\n// - what selectors match it\n\nstyfn.apply = function (eles) {\n var self = this;\n var _p = self._private;\n var cy = _p.cy;\n var updatedEles = cy.collection();\n\n if (_p.newStyle) {\n // clear style caches\n _p.contextStyles = {};\n _p.propDiffs = {};\n self.cleanElements(eles, true);\n }\n\n for (var ie = 0; ie < eles.length; ie++) {\n var ele = eles[ie];\n var cxtMeta = self.getContextMeta(ele);\n\n if (cxtMeta.empty) {\n continue;\n }\n\n var cxtStyle = self.getContextStyle(cxtMeta);\n var app = self.applyContextStyle(cxtMeta, cxtStyle, ele);\n\n if (!_p.newStyle) {\n self.updateTransitions(ele, app.diffProps);\n }\n\n var hintsDiff = self.updateStyleHints(ele);\n\n if (hintsDiff) {\n updatedEles.merge(ele);\n }\n } // for elements\n\n\n _p.newStyle = false;\n return updatedEles;\n};\n\nstyfn.getPropertiesDiff = function (oldCxtKey, newCxtKey) {\n var self = this;\n var cache = self._private.propDiffs = self._private.propDiffs || {};\n var dualCxtKey = oldCxtKey + '-' + newCxtKey;\n var cachedVal = cache[dualCxtKey];\n\n if (cachedVal) {\n return cachedVal;\n }\n\n var diffProps = [];\n var addedProp = {};\n\n for (var i = 0; i < self.length; i++) {\n var cxt = self[i];\n var oldHasCxt = oldCxtKey[i] === TRUE;\n var newHasCxt = newCxtKey[i] === TRUE;\n var cxtHasDiffed = oldHasCxt !== newHasCxt;\n var cxtHasMappedProps = cxt.mappedProperties.length > 0;\n\n if (cxtHasDiffed || newHasCxt && cxtHasMappedProps) {\n var props = void 0;\n\n if (cxtHasDiffed && cxtHasMappedProps) {\n props = cxt.properties; // suffices b/c mappedProperties is a subset of properties\n } else if (cxtHasDiffed) {\n props = cxt.properties; // need to check them all\n } else if (cxtHasMappedProps) {\n props = cxt.mappedProperties; // only need to check mapped\n }\n\n for (var j = 0; j < props.length; j++) {\n var prop = props[j];\n var name = prop.name; // if a later context overrides this property, then the fact that this context has switched/diffed doesn't matter\n // (semi expensive check since it makes this function O(n^2) on context length, but worth it since overall result\n // is cached)\n\n var laterCxtOverrides = false;\n\n for (var k = i + 1; k < self.length; k++) {\n var laterCxt = self[k];\n var hasLaterCxt = newCxtKey[k] === TRUE;\n\n if (!hasLaterCxt) {\n continue;\n } // can't override unless the context is active\n\n\n laterCxtOverrides = laterCxt.properties[prop.name] != null;\n\n if (laterCxtOverrides) {\n break;\n } // exit early as long as one later context overrides\n\n }\n\n if (!addedProp[name] && !laterCxtOverrides) {\n addedProp[name] = true;\n diffProps.push(name);\n }\n } // for props\n\n } // if\n\n } // for contexts\n\n\n cache[dualCxtKey] = diffProps;\n return diffProps;\n};\n\nstyfn.getContextMeta = function (ele) {\n var self = this;\n var cxtKey = '';\n var diffProps;\n var prevKey = ele._private.styleCxtKey || '';\n\n if (self._private.newStyle) {\n prevKey = ''; // since we need to apply all style if a fresh stylesheet\n } // get the cxt key\n\n\n for (var i = 0; i < self.length; i++) {\n var context = self[i];\n var contextSelectorMatches = context.selector && context.selector.matches(ele); // NB: context.selector may be null for 'core'\n\n if (contextSelectorMatches) {\n cxtKey += TRUE;\n } else {\n cxtKey += FALSE;\n }\n } // for context\n\n\n diffProps = self.getPropertiesDiff(prevKey, cxtKey);\n ele._private.styleCxtKey = cxtKey;\n return {\n key: cxtKey,\n diffPropNames: diffProps,\n empty: diffProps.length === 0\n };\n}; // gets a computed ele style object based on matched contexts\n\n\nstyfn.getContextStyle = function (cxtMeta) {\n var cxtKey = cxtMeta.key;\n var self = this;\n var cxtStyles = this._private.contextStyles = this._private.contextStyles || {}; // if already computed style, returned cached copy\n\n if (cxtStyles[cxtKey]) {\n return cxtStyles[cxtKey];\n }\n\n var style = {\n _private: {\n key: cxtKey\n }\n };\n\n for (var i = 0; i < self.length; i++) {\n var cxt = self[i];\n var hasCxt = cxtKey[i] === TRUE;\n\n if (!hasCxt) {\n continue;\n }\n\n for (var j = 0; j < cxt.properties.length; j++) {\n var prop = cxt.properties[j];\n style[prop.name] = prop;\n }\n }\n\n cxtStyles[cxtKey] = style;\n return style;\n};\n\nstyfn.applyContextStyle = function (cxtMeta, cxtStyle, ele) {\n var self = this;\n var diffProps = cxtMeta.diffPropNames;\n var retDiffProps = {};\n var types = self.types;\n\n for (var i = 0; i < diffProps.length; i++) {\n var diffPropName = diffProps[i];\n var cxtProp = cxtStyle[diffPropName];\n var eleProp = ele.pstyle(diffPropName);\n\n if (!cxtProp) {\n // no context prop means delete\n if (!eleProp) {\n continue; // no existing prop means nothing needs to be removed\n // nb affects initial application on mapped values like control-point-distances\n } else if (eleProp.bypass) {\n cxtProp = {\n name: diffPropName,\n deleteBypassed: true\n };\n } else {\n cxtProp = {\n name: diffPropName,\n delete: true\n };\n }\n } // save cycles when the context prop doesn't need to be applied\n\n\n if (eleProp === cxtProp) {\n continue;\n } // save cycles when a mapped context prop doesn't need to be applied\n\n\n if (cxtProp.mapped === types.fn // context prop is function mapper\n && eleProp != null // some props can be null even by default (e.g. a prop that overrides another one)\n && eleProp.mapping != null // ele prop is a concrete value from from a mapper\n && eleProp.mapping.value === cxtProp.value // the current prop on the ele is a flat prop value for the function mapper\n ) {\n // NB don't write to cxtProp, as it's shared among eles (stored in stylesheet)\n var mapping = eleProp.mapping; // can write to mapping, as it's a per-ele copy\n\n var fnValue = mapping.fnValue = cxtProp.value(ele); // temporarily cache the value in case of a miss\n\n if (fnValue === mapping.prevFnValue) {\n continue;\n }\n }\n\n var retDiffProp = retDiffProps[diffPropName] = {\n prev: eleProp\n };\n self.applyParsedProperty(ele, cxtProp);\n retDiffProp.next = ele.pstyle(diffPropName);\n\n if (retDiffProp.next && retDiffProp.next.bypass) {\n retDiffProp.next = retDiffProp.next.bypassed;\n }\n }\n\n return {\n diffProps: retDiffProps\n };\n};\n\nstyfn.updateStyleHints = function (ele) {\n var _p = ele._private;\n var self = this;\n var propNames = self.propertyGroupNames;\n var propGrKeys = self.propertyGroupKeys;\n\n var propHash = function propHash(ele, propNames, seedKey) {\n return self.getPropertiesHash(ele, propNames, seedKey);\n };\n\n var oldStyleKey = _p.styleKey;\n\n if (ele.removed()) {\n return false;\n }\n\n var isNode = _p.group === 'nodes'; // get the style key hashes per prop group\n // but lazily -- only use non-default prop values to reduce the number of hashes\n //\n\n var overriddenStyles = ele._private.style;\n propNames = Object.keys(overriddenStyles);\n\n for (var i = 0; i < propGrKeys.length; i++) {\n var grKey = propGrKeys[i];\n _p.styleKeys[grKey] = 0;\n }\n\n var updateGrKey = function updateGrKey(val, grKey) {\n return _p.styleKeys[grKey] = hashInt(val, _p.styleKeys[grKey]);\n };\n\n var updateGrKeyWStr = function updateGrKeyWStr(strVal, grKey) {\n for (var j = 0; j < strVal.length; j++) {\n updateGrKey(strVal.charCodeAt(j), grKey);\n }\n }; // - hashing works on 32 bit ints b/c we use bitwise ops\n // - small numbers get cut off (e.g. 0.123 is seen as 0 by the hashing function)\n // - raise up small numbers so more significant digits are seen by hashing\n // - make small numbers negative to avoid collisions -- most style values are positive numbers\n // - works in practice and it's relatively cheap\n\n\n var cleanNum = function cleanNum(val) {\n return -128 < val && val < 128 && Math.floor(val) !== val ? -(val * 1024 | 0) : val;\n };\n\n for (var _i = 0; _i < propNames.length; _i++) {\n var name = propNames[_i];\n var parsedProp = overriddenStyles[name];\n\n if (parsedProp == null) {\n continue;\n }\n\n var propInfo = this.properties[name];\n var type = propInfo.type;\n var _grKey = propInfo.groupKey;\n var normalizedNumberVal = void 0;\n\n if (propInfo.hashOverride != null) {\n normalizedNumberVal = propInfo.hashOverride(ele, parsedProp);\n } else if (parsedProp.pfValue != null) {\n normalizedNumberVal = parsedProp.pfValue;\n } // might not be a number if it allows enums\n\n\n var numberVal = propInfo.enums == null ? parsedProp.value : null;\n var haveNormNum = normalizedNumberVal != null;\n var haveUnitedNum = numberVal != null;\n var haveNum = haveNormNum || haveUnitedNum;\n var units = parsedProp.units; // numbers are cheaper to hash than strings\n // 1 hash op vs n hash ops (for length n string)\n\n if (type.number && haveNum) {\n var v = haveNormNum ? normalizedNumberVal : numberVal;\n\n if (type.multiple) {\n for (var _i2 = 0; _i2 < v.length; _i2++) {\n updateGrKey(cleanNum(v[_i2]), _grKey);\n }\n } else {\n updateGrKey(cleanNum(v), _grKey);\n }\n\n if (!haveNormNum && units != null) {\n updateGrKeyWStr(units, _grKey);\n }\n } else {\n updateGrKeyWStr(parsedProp.strValue, _grKey);\n }\n } // overall style key\n //\n\n\n var hash = 0;\n\n for (var _i3 = 0; _i3 < propGrKeys.length; _i3++) {\n var _grKey2 = propGrKeys[_i3];\n var grHash = _p.styleKeys[_grKey2];\n hash = hashInt(grHash, hash);\n }\n\n _p.styleKey = hash; // label dims\n //\n\n var labelDimsKey = _p.labelDimsKey = _p.styleKeys.labelDimensions;\n _p.labelKey = propHash(ele, ['label'], labelDimsKey);\n _p.labelStyleKey = hashInt(_p.styleKeys.commonLabel, _p.labelKey);\n\n if (!isNode) {\n _p.sourceLabelKey = propHash(ele, ['source-label'], labelDimsKey);\n _p.sourceLabelStyleKey = hashInt(_p.styleKeys.commonLabel, _p.sourceLabelKey);\n _p.targetLabelKey = propHash(ele, ['target-label'], labelDimsKey);\n _p.targetLabelStyleKey = hashInt(_p.styleKeys.commonLabel, _p.targetLabelKey);\n } // node\n //\n\n\n if (isNode) {\n var _p$styleKeys = _p.styleKeys,\n nodeBody = _p$styleKeys.nodeBody,\n nodeBorder = _p$styleKeys.nodeBorder,\n backgroundImage = _p$styleKeys.backgroundImage,\n compound = _p$styleKeys.compound,\n pie = _p$styleKeys.pie;\n _p.nodeKey = hashIntsArray([nodeBorder, backgroundImage, compound, pie], nodeBody);\n _p.hasPie = pie != 0;\n }\n\n return oldStyleKey !== _p.styleKey;\n};\n\nstyfn.clearStyleHints = function (ele) {\n var _p = ele._private;\n _p.styleKeys = {};\n _p.styleKey = null;\n _p.labelKey = null;\n _p.labelStyleKey = null;\n _p.sourceLabelKey = null;\n _p.sourceLabelStyleKey = null;\n _p.targetLabelKey = null;\n _p.targetLabelStyleKey = null;\n _p.nodeKey = null;\n _p.hasPie = null;\n}; // apply a property to the style (for internal use)\n// returns whether application was successful\n//\n// now, this function flattens the property, and here's how:\n//\n// for parsedProp:{ bypass: true, deleteBypass: true }\n// no property is generated, instead the bypass property in the\n// element's style is replaced by what's pointed to by the `bypassed`\n// field in the bypass property (i.e. restoring the property the\n// bypass was overriding)\n//\n// for parsedProp:{ mapped: truthy }\n// the generated flattenedProp:{ mapping: prop }\n//\n// for parsedProp:{ bypass: true }\n// the generated flattenedProp:{ bypassed: parsedProp }\n\n\nstyfn.applyParsedProperty = function (ele, parsedProp) {\n var self = this;\n var prop = parsedProp;\n var style = ele._private.style;\n var flatProp;\n var types = self.types;\n var type = self.properties[prop.name].type;\n var propIsBypass = prop.bypass;\n var origProp = style[prop.name];\n var origPropIsBypass = origProp && origProp.bypass;\n var _p = ele._private;\n var flatPropMapping = 'mapping';\n\n var getVal = function getVal(p) {\n if (p == null) {\n return null;\n } else if (p.pfValue != null) {\n return p.pfValue;\n } else {\n return p.value;\n }\n };\n\n var checkTriggers = function checkTriggers() {\n var fromVal = getVal(origProp);\n var toVal = getVal(prop);\n self.checkTriggers(ele, prop.name, fromVal, toVal);\n }; // edge sanity checks to prevent the client from making serious mistakes\n\n\n if (parsedProp.name === 'curve-style' && ele.isEdge() && ( // loops must be bundled beziers\n parsedProp.value !== 'bezier' && ele.isLoop() || // edges connected to compound nodes can not be haystacks\n parsedProp.value === 'haystack' && (ele.source().isParent() || ele.target().isParent()))) {\n prop = parsedProp = this.parse(parsedProp.name, 'bezier', propIsBypass);\n }\n\n if (prop.delete) {\n // delete the property and use the default value on falsey value\n style[prop.name] = undefined;\n checkTriggers();\n return true;\n }\n\n if (prop.deleteBypassed) {\n // delete the property that the\n if (!origProp) {\n checkTriggers();\n return true; // can't delete if no prop\n } else if (origProp.bypass) {\n // delete bypassed\n origProp.bypassed = undefined;\n checkTriggers();\n return true;\n } else {\n return false; // we're unsuccessful deleting the bypassed\n }\n } // check if we need to delete the current bypass\n\n\n if (prop.deleteBypass) {\n // then this property is just here to indicate we need to delete\n if (!origProp) {\n checkTriggers();\n return true; // property is already not defined\n } else if (origProp.bypass) {\n // then replace the bypass property with the original\n // because the bypassed property was already applied (and therefore parsed), we can just replace it (no reapplying necessary)\n style[prop.name] = origProp.bypassed;\n checkTriggers();\n return true;\n } else {\n return false; // we're unsuccessful deleting the bypass\n }\n }\n\n var printMappingErr = function printMappingErr() {\n warn('Do not assign mappings to elements without corresponding data (i.e. ele `' + ele.id() + '` has no mapping for property `' + prop.name + '` with data field `' + prop.field + '`); try a `[' + prop.field + ']` selector to limit scope to elements with `' + prop.field + '` defined');\n }; // put the property in the style objects\n\n\n switch (prop.mapped) {\n // flatten the property if mapped\n case types.mapData:\n {\n // flatten the field (e.g. data.foo.bar)\n var fields = prop.field.split('.');\n var fieldVal = _p.data;\n\n for (var i = 0; i < fields.length && fieldVal; i++) {\n var field = fields[i];\n fieldVal = fieldVal[field];\n }\n\n if (fieldVal == null) {\n printMappingErr();\n return false;\n }\n\n var percent;\n\n if (!number(fieldVal)) {\n // then don't apply and fall back on the existing style\n warn('Do not use continuous mappers without specifying numeric data (i.e. `' + prop.field + ': ' + fieldVal + '` for `' + ele.id() + '` is non-numeric)');\n return false;\n } else {\n var fieldWidth = prop.fieldMax - prop.fieldMin;\n\n if (fieldWidth === 0) {\n // safety check -- not strictly necessary as no props of zero range should be passed here\n percent = 0;\n } else {\n percent = (fieldVal - prop.fieldMin) / fieldWidth;\n }\n } // make sure to bound percent value\n\n\n if (percent < 0) {\n percent = 0;\n } else if (percent > 1) {\n percent = 1;\n }\n\n if (type.color) {\n var r1 = prop.valueMin[0];\n var r2 = prop.valueMax[0];\n var g1 = prop.valueMin[1];\n var g2 = prop.valueMax[1];\n var b1 = prop.valueMin[2];\n var b2 = prop.valueMax[2];\n var a1 = prop.valueMin[3] == null ? 1 : prop.valueMin[3];\n var a2 = prop.valueMax[3] == null ? 1 : prop.valueMax[3];\n var clr = [Math.round(r1 + (r2 - r1) * percent), Math.round(g1 + (g2 - g1) * percent), Math.round(b1 + (b2 - b1) * percent), Math.round(a1 + (a2 - a1) * percent)];\n flatProp = {\n // colours are simple, so just create the flat property instead of expensive string parsing\n bypass: prop.bypass,\n // we're a bypass if the mapping property is a bypass\n name: prop.name,\n value: clr,\n strValue: 'rgb(' + clr[0] + ', ' + clr[1] + ', ' + clr[2] + ')'\n };\n } else if (type.number) {\n var calcValue = prop.valueMin + (prop.valueMax - prop.valueMin) * percent;\n flatProp = this.parse(prop.name, calcValue, prop.bypass, flatPropMapping);\n } else {\n return false; // can only map to colours and numbers\n }\n\n if (!flatProp) {\n // if we can't flatten the property, then don't apply the property and fall back on the existing style\n printMappingErr();\n return false;\n }\n\n flatProp.mapping = prop; // keep a reference to the mapping\n\n prop = flatProp; // the flattened (mapped) property is the one we want\n\n break;\n }\n // direct mapping\n\n case types.data:\n {\n // flatten the field (e.g. data.foo.bar)\n var _fields = prop.field.split('.');\n\n var _fieldVal = _p.data;\n\n for (var _i4 = 0; _i4 < _fields.length && _fieldVal; _i4++) {\n var _field = _fields[_i4];\n _fieldVal = _fieldVal[_field];\n }\n\n if (_fieldVal != null) {\n flatProp = this.parse(prop.name, _fieldVal, prop.bypass, flatPropMapping);\n }\n\n if (!flatProp) {\n // if we can't flatten the property, then don't apply and fall back on the existing style\n printMappingErr();\n return false;\n }\n\n flatProp.mapping = prop; // keep a reference to the mapping\n\n prop = flatProp; // the flattened (mapped) property is the one we want\n\n break;\n }\n\n case types.fn:\n {\n var fn = prop.value;\n var fnRetVal = prop.fnValue != null ? prop.fnValue : fn(ele); // check for cached value before calling function\n\n prop.prevFnValue = fnRetVal;\n\n if (fnRetVal == null) {\n warn('Custom function mappers may not return null (i.e. `' + prop.name + '` for ele `' + ele.id() + '` is null)');\n return false;\n }\n\n flatProp = this.parse(prop.name, fnRetVal, prop.bypass, flatPropMapping);\n\n if (!flatProp) {\n warn('Custom function mappers may not return invalid values for the property type (i.e. `' + prop.name + '` for ele `' + ele.id() + '` is invalid)');\n return false;\n }\n\n flatProp.mapping = copy(prop); // keep a reference to the mapping\n\n prop = flatProp; // the flattened (mapped) property is the one we want\n\n break;\n }\n\n case undefined:\n break;\n // just set the property\n\n default:\n return false;\n // not a valid mapping\n } // if the property is a bypass property, then link the resultant property to the original one\n\n\n if (propIsBypass) {\n if (origPropIsBypass) {\n // then this bypass overrides the existing one\n prop.bypassed = origProp.bypassed; // steal bypassed prop from old bypass\n } else {\n // then link the orig prop to the new bypass\n prop.bypassed = origProp;\n }\n\n style[prop.name] = prop; // and set\n } else {\n // prop is not bypass\n if (origPropIsBypass) {\n // then keep the orig prop (since it's a bypass) and link to the new prop\n origProp.bypassed = prop;\n } else {\n // then just replace the old prop with the new one\n style[prop.name] = prop;\n }\n }\n\n checkTriggers();\n return true;\n};\n\nstyfn.cleanElements = function (eles, keepBypasses) {\n for (var i = 0; i < eles.length; i++) {\n var ele = eles[i];\n this.clearStyleHints(ele);\n ele.dirtyCompoundBoundsCache();\n ele.dirtyBoundingBoxCache();\n\n if (!keepBypasses) {\n ele._private.style = {};\n } else {\n var style = ele._private.style;\n var propNames = Object.keys(style);\n\n for (var j = 0; j < propNames.length; j++) {\n var propName = propNames[j];\n var eleProp = style[propName];\n\n if (eleProp != null) {\n if (eleProp.bypass) {\n eleProp.bypassed = null;\n } else {\n style[propName] = null;\n }\n }\n }\n }\n }\n}; // updates the visual style for all elements (useful for manual style modification after init)\n\n\nstyfn.update = function () {\n var cy = this._private.cy;\n var eles = cy.mutableElements();\n eles.updateStyle();\n}; // diffProps : { name => { prev, next } }\n\n\nstyfn.updateTransitions = function (ele, diffProps) {\n var self = this;\n var _p = ele._private;\n var props = ele.pstyle('transition-property').value;\n var duration = ele.pstyle('transition-duration').pfValue;\n var delay = ele.pstyle('transition-delay').pfValue;\n\n if (props.length > 0 && duration > 0) {\n var style = {}; // build up the style to animate towards\n\n var anyPrev = false;\n\n for (var i = 0; i < props.length; i++) {\n var prop = props[i];\n var styProp = ele.pstyle(prop);\n var diffProp = diffProps[prop];\n\n if (!diffProp) {\n continue;\n }\n\n var prevProp = diffProp.prev;\n var fromProp = prevProp;\n var toProp = diffProp.next != null ? diffProp.next : styProp;\n var diff = false;\n var initVal = void 0;\n var initDt = 0.000001; // delta time % value for initVal (allows animating out of init zero opacity)\n\n if (!fromProp) {\n continue;\n } // consider px values\n\n\n if (number(fromProp.pfValue) && number(toProp.pfValue)) {\n diff = toProp.pfValue - fromProp.pfValue; // nonzero is truthy\n\n initVal = fromProp.pfValue + initDt * diff; // consider numerical values\n } else if (number(fromProp.value) && number(toProp.value)) {\n diff = toProp.value - fromProp.value; // nonzero is truthy\n\n initVal = fromProp.value + initDt * diff; // consider colour values\n } else if (array(fromProp.value) && array(toProp.value)) {\n diff = fromProp.value[0] !== toProp.value[0] || fromProp.value[1] !== toProp.value[1] || fromProp.value[2] !== toProp.value[2];\n initVal = fromProp.strValue;\n } // the previous value is good for an animation only if it's different\n\n\n if (diff) {\n style[prop] = toProp.strValue; // to val\n\n this.applyBypass(ele, prop, initVal); // from val\n\n anyPrev = true;\n }\n } // end if props allow ani\n // can't transition if there's nothing previous to transition from\n\n\n if (!anyPrev) {\n return;\n }\n\n _p.transitioning = true;\n new Promise$1(function (resolve) {\n if (delay > 0) {\n ele.delayAnimation(delay).play().promise().then(resolve);\n } else {\n resolve();\n }\n }).then(function () {\n return ele.animation({\n style: style,\n duration: duration,\n easing: ele.pstyle('transition-timing-function').value,\n queue: false\n }).play().promise();\n }).then(function () {\n // if( !isBypass ){\n self.removeBypasses(ele, props);\n ele.emitAndNotify('style'); // }\n\n _p.transitioning = false;\n });\n } else if (_p.transitioning) {\n this.removeBypasses(ele, props);\n ele.emitAndNotify('style');\n _p.transitioning = false;\n }\n};\n\nstyfn.checkTrigger = function (ele, name, fromValue, toValue, getTrigger, onTrigger) {\n var prop = this.properties[name];\n var triggerCheck = getTrigger(prop);\n\n if (triggerCheck != null && triggerCheck(fromValue, toValue)) {\n onTrigger(prop);\n }\n};\n\nstyfn.checkZOrderTrigger = function (ele, name, fromValue, toValue) {\n var _this = this;\n\n this.checkTrigger(ele, name, fromValue, toValue, function (prop) {\n return prop.triggersZOrder;\n }, function () {\n _this._private.cy.notify('zorder', ele);\n });\n};\n\nstyfn.checkBoundsTrigger = function (ele, name, fromValue, toValue) {\n this.checkTrigger(ele, name, fromValue, toValue, function (prop) {\n return prop.triggersBounds;\n }, function (prop) {\n ele.dirtyCompoundBoundsCache();\n ele.dirtyBoundingBoxCache(); // if the prop change makes the bb of pll bezier edges invalid,\n // then dirty the pll edge bb cache as well\n\n if ( // only for beziers -- so performance of other edges isn't affected\n (ele.pstyle('curve-style').value === 'bezier' // already a bezier\n // was just now changed to or from a bezier:\n || name === 'curve-style' && (fromValue === 'bezier' || toValue === 'bezier')) && prop.triggersBoundsOfParallelBeziers) {\n ele.parallelEdges().forEach(function (pllEdge) {\n if (pllEdge.isBundledBezier()) {\n pllEdge.dirtyBoundingBoxCache();\n }\n });\n }\n });\n};\n\nstyfn.checkTriggers = function (ele, name, fromValue, toValue) {\n ele.dirtyStyleCache();\n this.checkZOrderTrigger(ele, name, fromValue, toValue);\n this.checkBoundsTrigger(ele, name, fromValue, toValue);\n};\n\nvar styfn$1 = {}; // bypasses are applied to an existing style on an element, and just tacked on temporarily\n// returns true iff application was successful for at least 1 specified property\n\nstyfn$1.applyBypass = function (eles, name, value, updateTransitions) {\n var self = this;\n var props = [];\n var isBypass = true; // put all the properties (can specify one or many) in an array after parsing them\n\n if (name === '*' || name === '**') {\n // apply to all property names\n if (value !== undefined) {\n for (var i = 0; i < self.properties.length; i++) {\n var prop = self.properties[i];\n var _name = prop.name;\n var parsedProp = this.parse(_name, value, true);\n\n if (parsedProp) {\n props.push(parsedProp);\n }\n }\n }\n } else if (string(name)) {\n // then parse the single property\n var _parsedProp = this.parse(name, value, true);\n\n if (_parsedProp) {\n props.push(_parsedProp);\n }\n } else if (plainObject(name)) {\n // then parse each property\n var specifiedProps = name;\n updateTransitions = value;\n var names = Object.keys(specifiedProps);\n\n for (var _i = 0; _i < names.length; _i++) {\n var _name2 = names[_i];\n var _value = specifiedProps[_name2];\n\n if (_value === undefined) {\n // try camel case name too\n _value = specifiedProps[dash2camel(_name2)];\n }\n\n if (_value !== undefined) {\n var _parsedProp2 = this.parse(_name2, _value, true);\n\n if (_parsedProp2) {\n props.push(_parsedProp2);\n }\n }\n }\n } else {\n // can't do anything without well defined properties\n return false;\n } // we've failed if there are no valid properties\n\n\n if (props.length === 0) {\n return false;\n } // now, apply the bypass properties on the elements\n\n\n var ret = false; // return true if at least one succesful bypass applied\n\n for (var _i2 = 0; _i2 < eles.length; _i2++) {\n // for each ele\n var ele = eles[_i2];\n var diffProps = {};\n var diffProp = void 0;\n\n for (var j = 0; j < props.length; j++) {\n // for each prop\n var _prop = props[j];\n\n if (updateTransitions) {\n var prevProp = ele.pstyle(_prop.name);\n diffProp = diffProps[_prop.name] = {\n prev: prevProp\n };\n }\n\n ret = this.applyParsedProperty(ele, _prop) || ret;\n\n if (updateTransitions) {\n diffProp.next = ele.pstyle(_prop.name);\n }\n } // for props\n\n\n if (ret) {\n this.updateStyleHints(ele);\n }\n\n if (updateTransitions) {\n this.updateTransitions(ele, diffProps, isBypass);\n }\n } // for eles\n\n\n return ret;\n}; // only useful in specific cases like animation\n\n\nstyfn$1.overrideBypass = function (eles, name, value) {\n name = camel2dash(name);\n\n for (var i = 0; i < eles.length; i++) {\n var ele = eles[i];\n var prop = ele._private.style[name];\n var type = this.properties[name].type;\n var isColor = type.color;\n var isMulti = type.mutiple;\n var oldValue = !prop ? null : prop.pfValue != null ? prop.pfValue : prop.value;\n\n if (!prop || !prop.bypass) {\n // need a bypass if one doesn't exist\n this.applyBypass(ele, name, value);\n } else {\n prop.value = value;\n\n if (prop.pfValue != null) {\n prop.pfValue = value;\n }\n\n if (isColor) {\n prop.strValue = 'rgb(' + value.join(',') + ')';\n } else if (isMulti) {\n prop.strValue = value.join(' ');\n } else {\n prop.strValue = '' + value;\n }\n\n this.updateStyleHints(ele);\n }\n\n this.checkTriggers(ele, name, oldValue, value);\n }\n};\n\nstyfn$1.removeAllBypasses = function (eles, updateTransitions) {\n return this.removeBypasses(eles, this.propertyNames, updateTransitions);\n};\n\nstyfn$1.removeBypasses = function (eles, props, updateTransitions) {\n var isBypass = true;\n\n for (var j = 0; j < eles.length; j++) {\n var ele = eles[j];\n var diffProps = {};\n\n for (var i = 0; i < props.length; i++) {\n var name = props[i];\n var prop = this.properties[name];\n var prevProp = ele.pstyle(prop.name);\n\n if (!prevProp || !prevProp.bypass) {\n // if a bypass doesn't exist for the prop, nothing needs to be removed\n continue;\n }\n\n var value = ''; // empty => remove bypass\n\n var parsedProp = this.parse(name, value, true);\n var diffProp = diffProps[prop.name] = {\n prev: prevProp\n };\n this.applyParsedProperty(ele, parsedProp);\n diffProp.next = ele.pstyle(prop.name);\n } // for props\n\n\n this.updateStyleHints(ele);\n\n if (updateTransitions) {\n this.updateTransitions(ele, diffProps, isBypass);\n }\n } // for eles\n\n};\n\nvar styfn$2 = {}; // gets what an em size corresponds to in pixels relative to a dom element\n\nstyfn$2.getEmSizeInPixels = function () {\n var px = this.containerCss('font-size');\n\n if (px != null) {\n return parseFloat(px);\n } else {\n return 1; // for headless\n }\n}; // gets css property from the core container\n\n\nstyfn$2.containerCss = function (propName) {\n var cy = this._private.cy;\n var domElement = cy.container();\n\n if (window$1 && domElement && window$1.getComputedStyle) {\n return window$1.getComputedStyle(domElement).getPropertyValue(propName);\n }\n};\n\nvar styfn$3 = {}; // gets the rendered style for an element\n\nstyfn$3.getRenderedStyle = function (ele, prop) {\n if (prop) {\n return this.getStylePropertyValue(ele, prop, true);\n } else {\n return this.getRawStyle(ele, true);\n }\n}; // gets the raw style for an element\n\n\nstyfn$3.getRawStyle = function (ele, isRenderedVal) {\n var self = this;\n ele = ele[0]; // insure it's an element\n\n if (ele) {\n var rstyle = {};\n\n for (var i = 0; i < self.properties.length; i++) {\n var prop = self.properties[i];\n var val = self.getStylePropertyValue(ele, prop.name, isRenderedVal);\n\n if (val != null) {\n rstyle[prop.name] = val;\n rstyle[dash2camel(prop.name)] = val;\n }\n }\n\n return rstyle;\n }\n};\n\nstyfn$3.getIndexedStyle = function (ele, property, subproperty, index) {\n var pstyle = ele.pstyle(property)[subproperty][index];\n return pstyle != null ? pstyle : ele.cy().style().getDefaultProperty(property)[subproperty][0];\n};\n\nstyfn$3.getStylePropertyValue = function (ele, propName, isRenderedVal) {\n var self = this;\n ele = ele[0]; // insure it's an element\n\n if (ele) {\n var prop = self.properties[propName];\n\n if (prop.alias) {\n prop = prop.pointsTo;\n }\n\n var type = prop.type;\n var styleProp = ele.pstyle(prop.name);\n\n if (styleProp) {\n var value = styleProp.value,\n units = styleProp.units,\n strValue = styleProp.strValue;\n\n if (isRenderedVal && type.number && value != null && number(value)) {\n var zoom = ele.cy().zoom();\n\n var getRenderedValue = function getRenderedValue(val) {\n return val * zoom;\n };\n\n var getValueStringWithUnits = function getValueStringWithUnits(val, units) {\n return getRenderedValue(val) + units;\n };\n\n var isArrayValue = array(value);\n var haveUnits = isArrayValue ? units.every(function (u) {\n return u != null;\n }) : units != null;\n\n if (haveUnits) {\n if (isArrayValue) {\n return value.map(function (v, i) {\n return getValueStringWithUnits(v, units[i]);\n }).join(' ');\n } else {\n return getValueStringWithUnits(value, units);\n }\n } else {\n if (isArrayValue) {\n return value.map(function (v) {\n return string(v) ? v : '' + getRenderedValue(v);\n }).join(' ');\n } else {\n return '' + getRenderedValue(value);\n }\n }\n } else if (strValue != null) {\n return strValue;\n }\n }\n\n return null;\n }\n};\n\nstyfn$3.getAnimationStartStyle = function (ele, aniProps) {\n var rstyle = {};\n\n for (var i = 0; i < aniProps.length; i++) {\n var aniProp = aniProps[i];\n var name = aniProp.name;\n var styleProp = ele.pstyle(name);\n\n if (styleProp !== undefined) {\n // then make a prop of it\n if (plainObject(styleProp)) {\n styleProp = this.parse(name, styleProp.strValue);\n } else {\n styleProp = this.parse(name, styleProp);\n }\n }\n\n if (styleProp) {\n rstyle[name] = styleProp;\n }\n }\n\n return rstyle;\n};\n\nstyfn$3.getPropsList = function (propsObj) {\n var self = this;\n var rstyle = [];\n var style = propsObj;\n var props = self.properties;\n\n if (style) {\n var names = Object.keys(style);\n\n for (var i = 0; i < names.length; i++) {\n var name = names[i];\n var val = style[name];\n var prop = props[name] || props[camel2dash(name)];\n var styleProp = this.parse(prop.name, val);\n\n if (styleProp) {\n rstyle.push(styleProp);\n }\n }\n }\n\n return rstyle;\n};\n\nstyfn$3.getNonDefaultPropertiesHash = function (ele, propNames, seed) {\n var hash = seed;\n var name, val, strVal, chVal;\n var i, j;\n\n for (i = 0; i < propNames.length; i++) {\n name = propNames[i];\n val = ele.pstyle(name, false);\n\n if (val == null) {\n continue;\n } else if (val.pfValue != null) {\n hash = hashInt(chVal, hash);\n } else {\n strVal = val.strValue;\n\n for (j = 0; j < strVal.length; j++) {\n chVal = strVal.charCodeAt(j);\n hash = hashInt(chVal, hash);\n }\n }\n }\n\n return hash;\n};\n\nstyfn$3.getPropertiesHash = styfn$3.getNonDefaultPropertiesHash;\n\nvar styfn$4 = {};\n\nstyfn$4.appendFromJson = function (json) {\n var style = this;\n\n for (var i = 0; i < json.length; i++) {\n var context = json[i];\n var selector = context.selector;\n var props = context.style || context.css;\n var names = Object.keys(props);\n style.selector(selector); // apply selector\n\n for (var j = 0; j < names.length; j++) {\n var name = names[j];\n var value = props[name];\n style.css(name, value); // apply property\n }\n }\n\n return style;\n}; // accessible cy.style() function\n\n\nstyfn$4.fromJson = function (json) {\n var style = this;\n style.resetToDefault();\n style.appendFromJson(json);\n return style;\n}; // get json from cy.style() api\n\n\nstyfn$4.json = function () {\n var json = [];\n\n for (var i = this.defaultLength; i < this.length; i++) {\n var cxt = this[i];\n var selector = cxt.selector;\n var props = cxt.properties;\n var css = {};\n\n for (var j = 0; j < props.length; j++) {\n var prop = props[j];\n css[prop.name] = prop.strValue;\n }\n\n json.push({\n selector: !selector ? 'core' : selector.toString(),\n style: css\n });\n }\n\n return json;\n};\n\nvar styfn$5 = {};\n\nstyfn$5.appendFromString = function (string) {\n var self = this;\n var style = this;\n var remaining = '' + string;\n var selAndBlockStr;\n var blockRem;\n var propAndValStr; // remove comments from the style string\n\n remaining = remaining.replace(/[/][*](\\s|.)+?[*][/]/g, '');\n\n function removeSelAndBlockFromRemaining() {\n // remove the parsed selector and block from the remaining text to parse\n if (remaining.length > selAndBlockStr.length) {\n remaining = remaining.substr(selAndBlockStr.length);\n } else {\n remaining = '';\n }\n }\n\n function removePropAndValFromRem() {\n // remove the parsed property and value from the remaining block text to parse\n if (blockRem.length > propAndValStr.length) {\n blockRem = blockRem.substr(propAndValStr.length);\n } else {\n blockRem = '';\n }\n }\n\n for (;;) {\n var nothingLeftToParse = remaining.match(/^\\s*$/);\n\n if (nothingLeftToParse) {\n break;\n }\n\n var selAndBlock = remaining.match(/^\\s*((?:.|\\s)+?)\\s*\\{((?:.|\\s)+?)\\}/);\n\n if (!selAndBlock) {\n warn('Halting stylesheet parsing: String stylesheet contains more to parse but no selector and block found in: ' + remaining);\n break;\n }\n\n selAndBlockStr = selAndBlock[0]; // parse the selector\n\n var selectorStr = selAndBlock[1];\n\n if (selectorStr !== 'core') {\n var selector = new Selector(selectorStr);\n\n if (selector.invalid) {\n warn('Skipping parsing of block: Invalid selector found in string stylesheet: ' + selectorStr); // skip this selector and block\n\n removeSelAndBlockFromRemaining();\n continue;\n }\n } // parse the block of properties and values\n\n\n var blockStr = selAndBlock[2];\n var invalidBlock = false;\n blockRem = blockStr;\n var props = [];\n\n for (;;) {\n var _nothingLeftToParse = blockRem.match(/^\\s*$/);\n\n if (_nothingLeftToParse) {\n break;\n }\n\n var propAndVal = blockRem.match(/^\\s*(.+?)\\s*:\\s*(.+?)\\s*;/);\n\n if (!propAndVal) {\n warn('Skipping parsing of block: Invalid formatting of style property and value definitions found in:' + blockStr);\n invalidBlock = true;\n break;\n }\n\n propAndValStr = propAndVal[0];\n var propStr = propAndVal[1];\n var valStr = propAndVal[2];\n var prop = self.properties[propStr];\n\n if (!prop) {\n warn('Skipping property: Invalid property name in: ' + propAndValStr); // skip this property in the block\n\n removePropAndValFromRem();\n continue;\n }\n\n var parsedProp = style.parse(propStr, valStr);\n\n if (!parsedProp) {\n warn('Skipping property: Invalid property definition in: ' + propAndValStr); // skip this property in the block\n\n removePropAndValFromRem();\n continue;\n }\n\n props.push({\n name: propStr,\n val: valStr\n });\n removePropAndValFromRem();\n }\n\n if (invalidBlock) {\n removeSelAndBlockFromRemaining();\n break;\n } // put the parsed block in the style\n\n\n style.selector(selectorStr);\n\n for (var i = 0; i < props.length; i++) {\n var _prop = props[i];\n style.css(_prop.name, _prop.val);\n }\n\n removeSelAndBlockFromRemaining();\n }\n\n return style;\n};\n\nstyfn$5.fromString = function (string) {\n var style = this;\n style.resetToDefault();\n style.appendFromString(string);\n return style;\n};\n\nvar styfn$6 = {};\n\n(function () {\n var number = number$1;\n var rgba = rgbaNoBackRefs;\n var hsla = hslaNoBackRefs;\n var hex3$1 = hex3;\n var hex6$1 = hex6;\n\n var data = function data(prefix) {\n return '^' + prefix + '\\\\s*\\\\(\\\\s*([\\\\w\\\\.]+)\\\\s*\\\\)$';\n };\n\n var mapData = function mapData(prefix) {\n var mapArg = number + '|\\\\w+|' + rgba + '|' + hsla + '|' + hex3$1 + '|' + hex6$1;\n return '^' + prefix + '\\\\s*\\\\(([\\\\w\\\\.]+)\\\\s*\\\\,\\\\s*(' + number + ')\\\\s*\\\\,\\\\s*(' + number + ')\\\\s*,\\\\s*(' + mapArg + ')\\\\s*\\\\,\\\\s*(' + mapArg + ')\\\\)$';\n };\n\n var urlRegexes = ['^url\\\\s*\\\\(\\\\s*[\\'\"]?(.+?)[\\'\"]?\\\\s*\\\\)$', '^(none)$', '^(.+)$']; // each visual style property has a type and needs to be validated according to it\n\n styfn$6.types = {\n time: {\n number: true,\n min: 0,\n units: 's|ms',\n implicitUnits: 'ms'\n },\n percent: {\n number: true,\n min: 0,\n max: 100,\n units: '%',\n implicitUnits: '%'\n },\n percentages: {\n number: true,\n min: 0,\n max: 100,\n units: '%',\n implicitUnits: '%',\n multiple: true\n },\n zeroOneNumber: {\n number: true,\n min: 0,\n max: 1,\n unitless: true\n },\n zeroOneNumbers: {\n number: true,\n min: 0,\n max: 1,\n unitless: true,\n multiple: true\n },\n nOneOneNumber: {\n number: true,\n min: -1,\n max: 1,\n unitless: true\n },\n nonNegativeInt: {\n number: true,\n min: 0,\n integer: true,\n unitless: true\n },\n position: {\n enums: ['parent', 'origin']\n },\n nodeSize: {\n number: true,\n min: 0,\n enums: ['label']\n },\n number: {\n number: true,\n unitless: true\n },\n numbers: {\n number: true,\n unitless: true,\n multiple: true\n },\n positiveNumber: {\n number: true,\n unitless: true,\n min: 0,\n strictMin: true\n },\n size: {\n number: true,\n min: 0\n },\n bidirectionalSize: {\n number: true\n },\n // allows negative\n bidirectionalSizes: {\n number: true,\n multiple: true\n },\n // allows negative\n sizeMaybePercent: {\n number: true,\n min: 0,\n allowPercent: true\n },\n axisDirection: {\n enums: ['horizontal', 'leftward', 'rightward', 'vertical', 'upward', 'downward', 'auto']\n },\n paddingRelativeTo: {\n enums: ['width', 'height', 'average', 'min', 'max']\n },\n bgWH: {\n number: true,\n min: 0,\n allowPercent: true,\n enums: ['auto'],\n multiple: true\n },\n bgPos: {\n number: true,\n allowPercent: true,\n multiple: true\n },\n bgRelativeTo: {\n enums: ['inner', 'include-padding'],\n multiple: true\n },\n bgRepeat: {\n enums: ['repeat', 'repeat-x', 'repeat-y', 'no-repeat'],\n multiple: true\n },\n bgFit: {\n enums: ['none', 'contain', 'cover'],\n multiple: true\n },\n bgCrossOrigin: {\n enums: ['anonymous', 'use-credentials'],\n multiple: true\n },\n bgClip: {\n enums: ['none', 'node']\n },\n color: {\n color: true\n },\n colors: {\n color: true,\n multiple: true\n },\n fill: {\n enums: ['solid', 'linear-gradient', 'radial-gradient']\n },\n bool: {\n enums: ['yes', 'no']\n },\n lineStyle: {\n enums: ['solid', 'dotted', 'dashed']\n },\n lineCap: {\n enums: ['butt', 'round', 'square']\n },\n borderStyle: {\n enums: ['solid', 'dotted', 'dashed', 'double']\n },\n curveStyle: {\n enums: ['bezier', 'unbundled-bezier', 'haystack', 'segments', 'straight', 'taxi']\n },\n fontFamily: {\n regex: '^([\\\\w- \\\\\"]+(?:\\\\s*,\\\\s*[\\\\w- \\\\\"]+)*)$'\n },\n fontStyle: {\n enums: ['italic', 'normal', 'oblique']\n },\n fontWeight: {\n enums: ['normal', 'bold', 'bolder', 'lighter', '100', '200', '300', '400', '500', '600', '800', '900', 100, 200, 300, 400, 500, 600, 700, 800, 900]\n },\n textDecoration: {\n enums: ['none', 'underline', 'overline', 'line-through']\n },\n textTransform: {\n enums: ['none', 'uppercase', 'lowercase']\n },\n textWrap: {\n enums: ['none', 'wrap', 'ellipsis']\n },\n textOverflowWrap: {\n enums: ['whitespace', 'anywhere']\n },\n textBackgroundShape: {\n enums: ['rectangle', 'roundrectangle', 'round-rectangle']\n },\n nodeShape: {\n enums: ['rectangle', 'roundrectangle', 'round-rectangle', 'cutrectangle', 'cut-rectangle', 'bottomroundrectangle', 'bottom-round-rectangle', 'barrel', 'ellipse', 'triangle', 'square', 'pentagon', 'hexagon', 'concavehexagon', 'concave-hexagon', 'heptagon', 'octagon', 'tag', 'star', 'diamond', 'vee', 'rhomboid', 'polygon']\n },\n compoundIncludeLabels: {\n enums: ['include', 'exclude']\n },\n arrowShape: {\n enums: ['tee', 'triangle', 'triangle-tee', 'triangle-cross', 'triangle-backcurve', 'vee', 'square', 'circle', 'diamond', 'chevron', 'none']\n },\n arrowFill: {\n enums: ['filled', 'hollow']\n },\n display: {\n enums: ['element', 'none']\n },\n visibility: {\n enums: ['hidden', 'visible']\n },\n zCompoundDepth: {\n enums: ['bottom', 'orphan', 'auto', 'top']\n },\n zIndexCompare: {\n enums: ['auto', 'manual']\n },\n valign: {\n enums: ['top', 'center', 'bottom']\n },\n halign: {\n enums: ['left', 'center', 'right']\n },\n justification: {\n enums: ['left', 'center', 'right', 'auto']\n },\n text: {\n string: true\n },\n data: {\n mapping: true,\n regex: data('data')\n },\n layoutData: {\n mapping: true,\n regex: data('layoutData')\n },\n scratch: {\n mapping: true,\n regex: data('scratch')\n },\n mapData: {\n mapping: true,\n regex: mapData('mapData')\n },\n mapLayoutData: {\n mapping: true,\n regex: mapData('mapLayoutData')\n },\n mapScratch: {\n mapping: true,\n regex: mapData('mapScratch')\n },\n fn: {\n mapping: true,\n fn: true\n },\n url: {\n regexes: urlRegexes,\n singleRegexMatchValue: true\n },\n urls: {\n regexes: urlRegexes,\n singleRegexMatchValue: true,\n multiple: true\n },\n propList: {\n propList: true\n },\n angle: {\n number: true,\n units: 'deg|rad',\n implicitUnits: 'rad'\n },\n textRotation: {\n number: true,\n units: 'deg|rad',\n implicitUnits: 'rad',\n enums: ['none', 'autorotate']\n },\n polygonPointList: {\n number: true,\n multiple: true,\n evenMultiple: true,\n min: -1,\n max: 1,\n unitless: true\n },\n edgeDistances: {\n enums: ['intersection', 'node-position']\n },\n edgeEndpoint: {\n number: true,\n multiple: true,\n units: '%|px|em|deg|rad',\n implicitUnits: 'px',\n enums: ['inside-to-node', 'outside-to-node', 'outside-to-node-or-label', 'outside-to-line', 'outside-to-line-or-label'],\n singleEnum: true,\n validate: function validate(valArr, unitsArr) {\n switch (valArr.length) {\n case 2:\n // can be % or px only\n return unitsArr[0] !== 'deg' && unitsArr[0] !== 'rad' && unitsArr[1] !== 'deg' && unitsArr[1] !== 'rad';\n\n case 1:\n // can be enum, deg, or rad only\n return string(valArr[0]) || unitsArr[0] === 'deg' || unitsArr[0] === 'rad';\n\n default:\n return false;\n }\n }\n },\n easing: {\n regexes: ['^(spring)\\\\s*\\\\(\\\\s*(' + number + ')\\\\s*,\\\\s*(' + number + ')\\\\s*\\\\)$', '^(cubic-bezier)\\\\s*\\\\(\\\\s*(' + number + ')\\\\s*,\\\\s*(' + number + ')\\\\s*,\\\\s*(' + number + ')\\\\s*,\\\\s*(' + number + ')\\\\s*\\\\)$'],\n enums: ['linear', 'ease', 'ease-in', 'ease-out', 'ease-in-out', 'ease-in-sine', 'ease-out-sine', 'ease-in-out-sine', 'ease-in-quad', 'ease-out-quad', 'ease-in-out-quad', 'ease-in-cubic', 'ease-out-cubic', 'ease-in-out-cubic', 'ease-in-quart', 'ease-out-quart', 'ease-in-out-quart', 'ease-in-quint', 'ease-out-quint', 'ease-in-out-quint', 'ease-in-expo', 'ease-out-expo', 'ease-in-out-expo', 'ease-in-circ', 'ease-out-circ', 'ease-in-out-circ']\n },\n gradientDirection: {\n enums: ['to-bottom', 'to-top', 'to-left', 'to-right', 'to-bottom-right', 'to-bottom-left', 'to-top-right', 'to-top-left', 'to-right-bottom', 'to-left-bottom', 'to-right-top', 'to-left-top']\n }\n };\n var diff = {\n zeroNonZero: function zeroNonZero(val1, val2) {\n if ((val1 == null || val2 == null) && val1 !== val2) {\n return true; // null cases could represent any value\n }\n\n if (val1 == 0 && val2 != 0) {\n return true;\n } else if (val1 != 0 && val2 == 0) {\n return true;\n } else {\n return false;\n }\n },\n any: function any(val1, val2) {\n return val1 != val2;\n }\n }; // define visual style properties\n //\n // - n.b. adding a new group of props may require updates to updateStyleHints()\n // - adding new props to an existing group gets handled automatically\n\n var t = styfn$6.types;\n var mainLabel = [{\n name: 'label',\n type: t.text,\n triggersBounds: diff.any\n }, {\n name: 'text-rotation',\n type: t.textRotation,\n triggersBounds: diff.any\n }, {\n name: 'text-margin-x',\n type: t.bidirectionalSize,\n triggersBounds: diff.any\n }, {\n name: 'text-margin-y',\n type: t.bidirectionalSize,\n triggersBounds: diff.any\n }];\n var sourceLabel = [{\n name: 'source-label',\n type: t.text,\n triggersBounds: diff.any\n }, {\n name: 'source-text-rotation',\n type: t.textRotation,\n triggersBounds: diff.any\n }, {\n name: 'source-text-margin-x',\n type: t.bidirectionalSize,\n triggersBounds: diff.any\n }, {\n name: 'source-text-margin-y',\n type: t.bidirectionalSize,\n triggersBounds: diff.any\n }, {\n name: 'source-text-offset',\n type: t.size,\n triggersBounds: diff.any\n }];\n var targetLabel = [{\n name: 'target-label',\n type: t.text,\n triggersBounds: diff.any\n }, {\n name: 'target-text-rotation',\n type: t.textRotation,\n triggersBounds: diff.any\n }, {\n name: 'target-text-margin-x',\n type: t.bidirectionalSize,\n triggersBounds: diff.any\n }, {\n name: 'target-text-margin-y',\n type: t.bidirectionalSize,\n triggersBounds: diff.any\n }, {\n name: 'target-text-offset',\n type: t.size,\n triggersBounds: diff.any\n }];\n var labelDimensions = [{\n name: 'font-family',\n type: t.fontFamily,\n triggersBounds: diff.any\n }, {\n name: 'font-style',\n type: t.fontStyle,\n triggersBounds: diff.any\n }, {\n name: 'font-weight',\n type: t.fontWeight,\n triggersBounds: diff.any\n }, {\n name: 'font-size',\n type: t.size,\n triggersBounds: diff.any\n }, {\n name: 'text-transform',\n type: t.textTransform,\n triggersBounds: diff.any\n }, {\n name: 'text-wrap',\n type: t.textWrap,\n triggersBounds: diff.any\n }, {\n name: 'text-overflow-wrap',\n type: t.textOverflowWrap,\n triggersBounds: diff.any\n }, {\n name: 'text-max-width',\n type: t.size,\n triggersBounds: diff.any\n }, {\n name: 'text-outline-width',\n type: t.size,\n triggersBounds: diff.any\n }, {\n name: 'line-height',\n type: t.positiveNumber,\n triggersBounds: diff.any\n }];\n var commonLabel = [{\n name: 'text-valign',\n type: t.valign,\n triggersBounds: diff.any\n }, {\n name: 'text-halign',\n type: t.halign,\n triggersBounds: diff.any\n }, {\n name: 'color',\n type: t.color\n }, {\n name: 'text-outline-color',\n type: t.color\n }, {\n name: 'text-outline-opacity',\n type: t.zeroOneNumber\n }, {\n name: 'text-background-color',\n type: t.color\n }, {\n name: 'text-background-opacity',\n type: t.zeroOneNumber\n }, {\n name: 'text-background-padding',\n type: t.size,\n triggersBounds: diff.any\n }, {\n name: 'text-border-opacity',\n type: t.zeroOneNumber\n }, {\n name: 'text-border-color',\n type: t.color\n }, {\n name: 'text-border-width',\n type: t.size,\n triggersBounds: diff.any\n }, {\n name: 'text-border-style',\n type: t.borderStyle,\n triggersBounds: diff.any\n }, {\n name: 'text-background-shape',\n type: t.textBackgroundShape,\n triggersBounds: diff.any\n }, {\n name: 'text-justification',\n type: t.justification\n }];\n var behavior = [{\n name: 'events',\n type: t.bool\n }, {\n name: 'text-events',\n type: t.bool\n }];\n var visibility = [{\n name: 'display',\n type: t.display,\n triggersZOrder: diff.any,\n triggersBounds: diff.any,\n triggersBoundsOfParallelBeziers: true\n }, {\n name: 'visibility',\n type: t.visibility,\n triggersZOrder: diff.any\n }, {\n name: 'opacity',\n type: t.zeroOneNumber,\n triggersZOrder: diff.zeroNonZero\n }, {\n name: 'text-opacity',\n type: t.zeroOneNumber\n }, {\n name: 'min-zoomed-font-size',\n type: t.size\n }, {\n name: 'z-compound-depth',\n type: t.zCompoundDepth,\n triggersZOrder: diff.any\n }, {\n name: 'z-index-compare',\n type: t.zIndexCompare,\n triggersZOrder: diff.any\n }, {\n name: 'z-index',\n type: t.nonNegativeInt,\n triggersZOrder: diff.any\n }];\n var overlay = [{\n name: 'overlay-padding',\n type: t.size,\n triggersBounds: diff.any\n }, {\n name: 'overlay-color',\n type: t.color\n }, {\n name: 'overlay-opacity',\n type: t.zeroOneNumber,\n triggersBounds: diff.zeroNonZero\n }];\n var transition = [{\n name: 'transition-property',\n type: t.propList\n }, {\n name: 'transition-duration',\n type: t.time\n }, {\n name: 'transition-delay',\n type: t.time\n }, {\n name: 'transition-timing-function',\n type: t.easing\n }];\n\n var nodeSizeHashOverride = function nodeSizeHashOverride(ele, parsedProp) {\n if (parsedProp.value === 'label') {\n return -ele.poolIndex(); // no hash key hits is using label size (hitrate for perf probably low anyway)\n } else {\n return parsedProp.pfValue;\n }\n };\n\n var nodeBody = [{\n name: 'height',\n type: t.nodeSize,\n triggersBounds: diff.any,\n hashOverride: nodeSizeHashOverride\n }, {\n name: 'width',\n type: t.nodeSize,\n triggersBounds: diff.any,\n hashOverride: nodeSizeHashOverride\n }, {\n name: 'shape',\n type: t.nodeShape,\n triggersBounds: diff.any\n }, {\n name: 'shape-polygon-points',\n type: t.polygonPointList,\n triggersBounds: diff.any\n }, {\n name: 'background-color',\n type: t.color\n }, {\n name: 'background-fill',\n type: t.fill\n }, {\n name: 'background-opacity',\n type: t.zeroOneNumber\n }, {\n name: 'background-blacken',\n type: t.nOneOneNumber\n }, {\n name: 'background-gradient-stop-colors',\n type: t.colors\n }, {\n name: 'background-gradient-stop-positions',\n type: t.percentages\n }, {\n name: 'background-gradient-direction',\n type: t.gradientDirection\n }, {\n name: 'padding',\n type: t.sizeMaybePercent,\n triggersBounds: diff.any\n }, {\n name: 'padding-relative-to',\n type: t.paddingRelativeTo,\n triggersBounds: diff.any\n }, {\n name: 'bounds-expansion',\n type: t.size,\n triggersBounds: diff.any\n }];\n var nodeBorder = [{\n name: 'border-color',\n type: t.color\n }, {\n name: 'border-opacity',\n type: t.zeroOneNumber\n }, {\n name: 'border-width',\n type: t.size,\n triggersBounds: diff.any\n }, {\n name: 'border-style',\n type: t.borderStyle\n }];\n var backgroundImage = [{\n name: 'background-image',\n type: t.urls\n }, {\n name: 'background-image-crossorigin',\n type: t.bgCrossOrigin\n }, {\n name: 'background-image-opacity',\n type: t.zeroOneNumbers\n }, {\n name: 'background-position-x',\n type: t.bgPos\n }, {\n name: 'background-position-y',\n type: t.bgPos\n }, {\n name: 'background-width-relative-to',\n type: t.bgRelativeTo\n }, {\n name: 'background-height-relative-to',\n type: t.bgRelativeTo\n }, {\n name: 'background-repeat',\n type: t.bgRepeat\n }, {\n name: 'background-fit',\n type: t.bgFit\n }, {\n name: 'background-clip',\n type: t.bgClip\n }, {\n name: 'background-width',\n type: t.bgWH\n }, {\n name: 'background-height',\n type: t.bgWH\n }, {\n name: 'background-offset-x',\n type: t.bgPos\n }, {\n name: 'background-offset-y',\n type: t.bgPos\n }];\n var compound = [{\n name: 'position',\n type: t.position,\n triggersBounds: diff.any\n }, {\n name: 'compound-sizing-wrt-labels',\n type: t.compoundIncludeLabels,\n triggersBounds: diff.any\n }, {\n name: 'min-width',\n type: t.size,\n triggersBounds: diff.any\n }, {\n name: 'min-width-bias-left',\n type: t.sizeMaybePercent,\n triggersBounds: diff.any\n }, {\n name: 'min-width-bias-right',\n type: t.sizeMaybePercent,\n triggersBounds: diff.any\n }, {\n name: 'min-height',\n type: t.size,\n triggersBounds: diff.any\n }, {\n name: 'min-height-bias-top',\n type: t.sizeMaybePercent,\n triggersBounds: diff.any\n }, {\n name: 'min-height-bias-bottom',\n type: t.sizeMaybePercent,\n triggersBounds: diff.any\n }];\n var edgeLine = [{\n name: 'line-style',\n type: t.lineStyle\n }, {\n name: 'line-color',\n type: t.color\n }, {\n name: 'line-fill',\n type: t.fill\n }, {\n name: 'line-cap',\n type: t.lineCap\n }, {\n name: 'line-dash-pattern',\n type: t.numbers\n }, {\n name: 'line-dash-offset',\n type: t.number\n }, {\n name: 'line-gradient-stop-colors',\n type: t.colors\n }, {\n name: 'line-gradient-stop-positions',\n type: t.percentages\n }, {\n name: 'curve-style',\n type: t.curveStyle,\n triggersBounds: diff.any,\n triggersBoundsOfParallelBeziers: true\n }, {\n name: 'haystack-radius',\n type: t.zeroOneNumber,\n triggersBounds: diff.any\n }, {\n name: 'source-endpoint',\n type: t.edgeEndpoint,\n triggersBounds: diff.any\n }, {\n name: 'target-endpoint',\n type: t.edgeEndpoint,\n triggersBounds: diff.any\n }, {\n name: 'control-point-step-size',\n type: t.size,\n triggersBounds: diff.any\n }, {\n name: 'control-point-distances',\n type: t.bidirectionalSizes,\n triggersBounds: diff.any\n }, {\n name: 'control-point-weights',\n type: t.numbers,\n triggersBounds: diff.any\n }, {\n name: 'segment-distances',\n type: t.bidirectionalSizes,\n triggersBounds: diff.any\n }, {\n name: 'segment-weights',\n type: t.numbers,\n triggersBounds: diff.any\n }, {\n name: 'taxi-turn',\n type: t.sizeMaybePercent,\n triggersBounds: diff.any\n }, {\n name: 'taxi-turn-min-distance',\n type: t.size,\n triggersBounds: diff.any\n }, {\n name: 'taxi-direction',\n type: t.axisDirection,\n triggersBounds: diff.any\n }, {\n name: 'edge-distances',\n type: t.edgeDistances,\n triggersBounds: diff.any\n }, {\n name: 'arrow-scale',\n type: t.positiveNumber,\n triggersBounds: diff.any\n }, {\n name: 'loop-direction',\n type: t.angle,\n triggersBounds: diff.any\n }, {\n name: 'loop-sweep',\n type: t.angle,\n triggersBounds: diff.any\n }, {\n name: 'source-distance-from-node',\n type: t.size,\n triggersBounds: diff.any\n }, {\n name: 'target-distance-from-node',\n type: t.size,\n triggersBounds: diff.any\n }];\n var ghost = [{\n name: 'ghost',\n type: t.bool,\n triggersBounds: diff.any\n }, {\n name: 'ghost-offset-x',\n type: t.bidirectionalSize,\n triggersBounds: diff.any\n }, {\n name: 'ghost-offset-y',\n type: t.bidirectionalSize,\n triggersBounds: diff.any\n }, {\n name: 'ghost-opacity',\n type: t.zeroOneNumber\n }];\n var core = [{\n name: 'selection-box-color',\n type: t.color\n }, {\n name: 'selection-box-opacity',\n type: t.zeroOneNumber\n }, {\n name: 'selection-box-border-color',\n type: t.color\n }, {\n name: 'selection-box-border-width',\n type: t.size\n }, {\n name: 'active-bg-color',\n type: t.color\n }, {\n name: 'active-bg-opacity',\n type: t.zeroOneNumber\n }, {\n name: 'active-bg-size',\n type: t.size\n }, {\n name: 'outside-texture-bg-color',\n type: t.color\n }, {\n name: 'outside-texture-bg-opacity',\n type: t.zeroOneNumber\n }]; // pie backgrounds for nodes\n\n var pie = [];\n styfn$6.pieBackgroundN = 16; // because the pie properties are numbered, give access to a constant N (for renderer use)\n\n pie.push({\n name: 'pie-size',\n type: t.sizeMaybePercent\n });\n\n for (var i = 1; i <= styfn$6.pieBackgroundN; i++) {\n pie.push({\n name: 'pie-' + i + '-background-color',\n type: t.color\n });\n pie.push({\n name: 'pie-' + i + '-background-size',\n type: t.percent\n });\n pie.push({\n name: 'pie-' + i + '-background-opacity',\n type: t.zeroOneNumber\n });\n } // edge arrows\n\n\n var edgeArrow = [];\n var arrowPrefixes = styfn$6.arrowPrefixes = ['source', 'mid-source', 'target', 'mid-target'];\n [{\n name: 'arrow-shape',\n type: t.arrowShape,\n triggersBounds: diff.any\n }, {\n name: 'arrow-color',\n type: t.color\n }, {\n name: 'arrow-fill',\n type: t.arrowFill\n }].forEach(function (prop) {\n arrowPrefixes.forEach(function (prefix) {\n var name = prefix + '-' + prop.name;\n var type = prop.type,\n triggersBounds = prop.triggersBounds;\n edgeArrow.push({\n name: name,\n type: type,\n triggersBounds: triggersBounds\n });\n });\n }, {});\n var props = styfn$6.properties = [].concat(behavior, transition, visibility, overlay, ghost, commonLabel, labelDimensions, mainLabel, sourceLabel, targetLabel, nodeBody, nodeBorder, backgroundImage, pie, compound, edgeLine, edgeArrow, core);\n var propGroups = styfn$6.propertyGroups = {\n // common to all eles\n behavior: behavior,\n transition: transition,\n visibility: visibility,\n overlay: overlay,\n ghost: ghost,\n // labels\n commonLabel: commonLabel,\n labelDimensions: labelDimensions,\n mainLabel: mainLabel,\n sourceLabel: sourceLabel,\n targetLabel: targetLabel,\n // node props\n nodeBody: nodeBody,\n nodeBorder: nodeBorder,\n backgroundImage: backgroundImage,\n pie: pie,\n compound: compound,\n // edge props\n edgeLine: edgeLine,\n edgeArrow: edgeArrow,\n core: core\n };\n var propGroupNames = styfn$6.propertyGroupNames = {};\n var propGroupKeys = styfn$6.propertyGroupKeys = Object.keys(propGroups);\n propGroupKeys.forEach(function (key) {\n propGroupNames[key] = propGroups[key].map(function (prop) {\n return prop.name;\n });\n propGroups[key].forEach(function (prop) {\n return prop.groupKey = key;\n });\n }); // define aliases\n\n var aliases = styfn$6.aliases = [{\n name: 'content',\n pointsTo: 'label'\n }, {\n name: 'control-point-distance',\n pointsTo: 'control-point-distances'\n }, {\n name: 'control-point-weight',\n pointsTo: 'control-point-weights'\n }, {\n name: 'edge-text-rotation',\n pointsTo: 'text-rotation'\n }, {\n name: 'padding-left',\n pointsTo: 'padding'\n }, {\n name: 'padding-right',\n pointsTo: 'padding'\n }, {\n name: 'padding-top',\n pointsTo: 'padding'\n }, {\n name: 'padding-bottom',\n pointsTo: 'padding'\n }]; // list of property names\n\n styfn$6.propertyNames = props.map(function (p) {\n return p.name;\n }); // allow access of properties by name ( e.g. style.properties.height )\n\n for (var _i = 0; _i < props.length; _i++) {\n var prop = props[_i];\n props[prop.name] = prop; // allow lookup by name\n } // map aliases\n\n\n for (var _i2 = 0; _i2 < aliases.length; _i2++) {\n var alias = aliases[_i2];\n var pointsToProp = props[alias.pointsTo];\n var aliasProp = {\n name: alias.name,\n alias: true,\n pointsTo: pointsToProp\n }; // add alias prop for parsing\n\n props.push(aliasProp);\n props[alias.name] = aliasProp; // allow lookup by name\n }\n})();\n\nstyfn$6.getDefaultProperty = function (name) {\n return this.getDefaultProperties()[name];\n};\n\nstyfn$6.getDefaultProperties = function () {\n var _p = this._private;\n\n if (_p.defaultProperties != null) {\n return _p.defaultProperties;\n }\n\n var rawProps = extend({\n // core props\n 'selection-box-color': '#ddd',\n 'selection-box-opacity': 0.65,\n 'selection-box-border-color': '#aaa',\n 'selection-box-border-width': 1,\n 'active-bg-color': 'black',\n 'active-bg-opacity': 0.15,\n 'active-bg-size': 30,\n 'outside-texture-bg-color': '#000',\n 'outside-texture-bg-opacity': 0.125,\n // common node/edge props\n 'events': 'yes',\n 'text-events': 'no',\n 'text-valign': 'top',\n 'text-halign': 'center',\n 'text-justification': 'auto',\n 'line-height': 1,\n 'color': '#000',\n 'text-outline-color': '#000',\n 'text-outline-width': 0,\n 'text-outline-opacity': 1,\n 'text-opacity': 1,\n 'text-decoration': 'none',\n 'text-transform': 'none',\n 'text-wrap': 'none',\n 'text-overflow-wrap': 'whitespace',\n 'text-max-width': 9999,\n 'text-background-color': '#000',\n 'text-background-opacity': 0,\n 'text-background-shape': 'rectangle',\n 'text-background-padding': 0,\n 'text-border-opacity': 0,\n 'text-border-width': 0,\n 'text-border-style': 'solid',\n 'text-border-color': '#000',\n 'font-family': 'Helvetica Neue, Helvetica, sans-serif',\n 'font-style': 'normal',\n 'font-weight': 'normal',\n 'font-size': 16,\n 'min-zoomed-font-size': 0,\n 'text-rotation': 'none',\n 'source-text-rotation': 'none',\n 'target-text-rotation': 'none',\n 'visibility': 'visible',\n 'display': 'element',\n 'opacity': 1,\n 'z-compound-depth': 'auto',\n 'z-index-compare': 'auto',\n 'z-index': 0,\n 'label': '',\n 'text-margin-x': 0,\n 'text-margin-y': 0,\n 'source-label': '',\n 'source-text-offset': 0,\n 'source-text-margin-x': 0,\n 'source-text-margin-y': 0,\n 'target-label': '',\n 'target-text-offset': 0,\n 'target-text-margin-x': 0,\n 'target-text-margin-y': 0,\n 'overlay-opacity': 0,\n 'overlay-color': '#000',\n 'overlay-padding': 10,\n 'transition-property': 'none',\n 'transition-duration': 0,\n 'transition-delay': 0,\n 'transition-timing-function': 'linear',\n // node props\n 'background-blacken': 0,\n 'background-color': '#999',\n 'background-fill': 'solid',\n 'background-opacity': 1,\n 'background-image': 'none',\n 'background-image-crossorigin': 'anonymous',\n 'background-image-opacity': 1,\n 'background-position-x': '50%',\n 'background-position-y': '50%',\n 'background-offset-x': 0,\n 'background-offset-y': 0,\n 'background-width-relative-to': 'include-padding',\n 'background-height-relative-to': 'include-padding',\n 'background-repeat': 'no-repeat',\n 'background-fit': 'none',\n 'background-clip': 'node',\n 'background-width': 'auto',\n 'background-height': 'auto',\n 'border-color': '#000',\n 'border-opacity': 1,\n 'border-width': 0,\n 'border-style': 'solid',\n 'height': 30,\n 'width': 30,\n 'shape': 'ellipse',\n 'shape-polygon-points': '-1, -1, 1, -1, 1, 1, -1, 1',\n 'bounds-expansion': 0,\n // node gradient\n 'background-gradient-direction': 'to-bottom',\n 'background-gradient-stop-colors': '#999',\n 'background-gradient-stop-positions': '0%',\n // ghost props\n 'ghost': 'no',\n 'ghost-offset-y': 0,\n 'ghost-offset-x': 0,\n 'ghost-opacity': 0,\n // compound props\n 'padding': 0,\n 'padding-relative-to': 'width',\n 'position': 'origin',\n 'compound-sizing-wrt-labels': 'include',\n 'min-width': 0,\n 'min-width-bias-left': 0,\n 'min-width-bias-right': 0,\n 'min-height': 0,\n 'min-height-bias-top': 0,\n 'min-height-bias-bottom': 0\n }, {\n // node pie bg\n 'pie-size': '100%'\n }, [{\n name: 'pie-{{i}}-background-color',\n value: 'black'\n }, {\n name: 'pie-{{i}}-background-size',\n value: '0%'\n }, {\n name: 'pie-{{i}}-background-opacity',\n value: 1\n }].reduce(function (css, prop) {\n for (var i = 1; i <= styfn$6.pieBackgroundN; i++) {\n var name = prop.name.replace('{{i}}', i);\n var val = prop.value;\n css[name] = val;\n }\n\n return css;\n }, {}), {\n // edge props\n 'line-style': 'solid',\n 'line-color': '#999',\n 'line-fill': 'solid',\n 'line-cap': 'butt',\n 'line-gradient-stop-colors': '#999',\n 'line-gradient-stop-positions': '0%',\n 'control-point-step-size': 40,\n 'control-point-weights': 0.5,\n 'segment-weights': 0.5,\n 'segment-distances': 20,\n 'taxi-turn': '50%',\n 'taxi-turn-min-distance': 10,\n 'taxi-direction': 'auto',\n 'edge-distances': 'intersection',\n 'curve-style': 'haystack',\n 'haystack-radius': 0,\n 'arrow-scale': 1,\n 'loop-direction': '-45deg',\n 'loop-sweep': '-90deg',\n 'source-distance-from-node': 0,\n 'target-distance-from-node': 0,\n 'source-endpoint': 'outside-to-node',\n 'target-endpoint': 'outside-to-node',\n 'line-dash-pattern': [6, 3],\n 'line-dash-offset': 0\n }, [{\n name: 'arrow-shape',\n value: 'none'\n }, {\n name: 'arrow-color',\n value: '#999'\n }, {\n name: 'arrow-fill',\n value: 'filled'\n }].reduce(function (css, prop) {\n styfn$6.arrowPrefixes.forEach(function (prefix) {\n var name = prefix + '-' + prop.name;\n var val = prop.value;\n css[name] = val;\n });\n return css;\n }, {}));\n var parsedProps = {};\n\n for (var i = 0; i < this.properties.length; i++) {\n var prop = this.properties[i];\n\n if (prop.pointsTo) {\n continue;\n }\n\n var name = prop.name;\n var val = rawProps[name];\n var parsedProp = this.parse(name, val);\n parsedProps[name] = parsedProp;\n }\n\n _p.defaultProperties = parsedProps;\n return _p.defaultProperties;\n};\n\nstyfn$6.addDefaultStylesheet = function () {\n this.selector(':parent').css({\n 'shape': 'rectangle',\n 'padding': 10,\n 'background-color': '#eee',\n 'border-color': '#ccc',\n 'border-width': 1\n }).selector('edge').css({\n 'width': 3\n }).selector(':loop').css({\n 'curve-style': 'bezier'\n }).selector('edge:compound').css({\n 'curve-style': 'bezier',\n 'source-endpoint': 'outside-to-line',\n 'target-endpoint': 'outside-to-line'\n }).selector(':selected').css({\n 'background-color': '#0169D9',\n 'line-color': '#0169D9',\n 'source-arrow-color': '#0169D9',\n 'target-arrow-color': '#0169D9',\n 'mid-source-arrow-color': '#0169D9',\n 'mid-target-arrow-color': '#0169D9'\n }).selector(':parent:selected').css({\n 'background-color': '#CCE1F9',\n 'border-color': '#aec8e5'\n }).selector(':active').css({\n 'overlay-color': 'black',\n 'overlay-padding': 10,\n 'overlay-opacity': 0.25\n });\n this.defaultLength = this.length;\n};\n\nvar styfn$7 = {}; // a caching layer for property parsing\n\nstyfn$7.parse = function (name, value, propIsBypass, propIsFlat) {\n var self = this; // function values can't be cached in all cases, and there isn't much benefit of caching them anyway\n\n if (fn(value)) {\n return self.parseImplWarn(name, value, propIsBypass, propIsFlat);\n }\n\n var flatKey = propIsFlat === 'mapping' || propIsFlat === true || propIsFlat === false || propIsFlat == null ? 'dontcare' : propIsFlat;\n var bypassKey = propIsBypass ? 't' : 'f';\n var valueKey = '' + value;\n var argHash = hashStrings(name, valueKey, bypassKey, flatKey);\n var propCache = self.propCache = self.propCache || [];\n var ret;\n\n if (!(ret = propCache[argHash])) {\n ret = propCache[argHash] = self.parseImplWarn(name, value, propIsBypass, propIsFlat);\n } // - bypasses can't be shared b/c the value can be changed by animations or otherwise overridden\n // - mappings can't be shared b/c mappings are per-element\n\n\n if (propIsBypass || propIsFlat === 'mapping') {\n // need a copy since props are mutated later in their lifecycles\n ret = copy(ret);\n\n if (ret) {\n ret.value = copy(ret.value); // because it could be an array, e.g. colour\n }\n }\n\n return ret;\n};\n\nstyfn$7.parseImplWarn = function (name, value, propIsBypass, propIsFlat) {\n var prop = this.parseImpl(name, value, propIsBypass, propIsFlat);\n\n if (!prop && value != null) {\n warn(\"The style property `\".concat(name, \": \").concat(value, \"` is invalid\"));\n }\n\n return prop;\n}; // parse a property; return null on invalid; return parsed property otherwise\n// fields :\n// - name : the name of the property\n// - value : the parsed, native-typed value of the property\n// - strValue : a string value that represents the property value in valid css\n// - bypass : true iff the property is a bypass property\n\n\nstyfn$7.parseImpl = function (name, value, propIsBypass, propIsFlat) {\n var self = this;\n name = camel2dash(name); // make sure the property name is in dash form (e.g. 'property-name' not 'propertyName')\n\n var property = self.properties[name];\n var passedValue = value;\n var types = self.types;\n\n if (!property) {\n return null;\n } // return null on property of unknown name\n\n\n if (value === undefined) {\n return null;\n } // can't assign undefined\n // the property may be an alias\n\n\n if (property.alias) {\n property = property.pointsTo;\n name = property.name;\n }\n\n var valueIsString = string(value);\n\n if (valueIsString) {\n // trim the value to make parsing easier\n value = value.trim();\n }\n\n var type = property.type;\n\n if (!type) {\n return null;\n } // no type, no luck\n // check if bypass is null or empty string (i.e. indication to delete bypass property)\n\n\n if (propIsBypass && (value === '' || value === null)) {\n return {\n name: name,\n value: value,\n bypass: true,\n deleteBypass: true\n };\n } // check if value is a function used as a mapper\n\n\n if (fn(value)) {\n return {\n name: name,\n value: value,\n strValue: 'fn',\n mapped: types.fn,\n bypass: propIsBypass\n };\n } // check if value is mapped\n\n\n var data, mapData;\n\n if (!valueIsString || propIsFlat || value.length < 7 || value[1] !== 'a') ; else if (value.length >= 7 && value[0] === 'd' && (data = new RegExp(types.data.regex).exec(value))) {\n if (propIsBypass) {\n return false;\n } // mappers not allowed in bypass\n\n\n var mapped = types.data;\n return {\n name: name,\n value: data,\n strValue: '' + value,\n mapped: mapped,\n field: data[1],\n bypass: propIsBypass\n };\n } else if (value.length >= 10 && value[0] === 'm' && (mapData = new RegExp(types.mapData.regex).exec(value))) {\n if (propIsBypass) {\n return false;\n } // mappers not allowed in bypass\n\n\n if (type.multiple) {\n return false;\n } // impossible to map to num\n\n\n var _mapped = types.mapData; // we can map only if the type is a colour or a number\n\n if (!(type.color || type.number)) {\n return false;\n }\n\n var valueMin = this.parse(name, mapData[4]); // parse to validate\n\n if (!valueMin || valueMin.mapped) {\n return false;\n } // can't be invalid or mapped\n\n\n var valueMax = this.parse(name, mapData[5]); // parse to validate\n\n if (!valueMax || valueMax.mapped) {\n return false;\n } // can't be invalid or mapped\n // check if valueMin and valueMax are the same\n\n\n if (valueMin.pfValue === valueMax.pfValue || valueMin.strValue === valueMax.strValue) {\n warn('`' + name + ': ' + value + '` is not a valid mapper because the output range is zero; converting to `' + name + ': ' + valueMin.strValue + '`');\n return this.parse(name, valueMin.strValue); // can't make much of a mapper without a range\n } else if (type.color) {\n var c1 = valueMin.value;\n var c2 = valueMax.value;\n var same = c1[0] === c2[0] // red\n && c1[1] === c2[1] // green\n && c1[2] === c2[2] // blue\n && ( // optional alpha\n c1[3] === c2[3] // same alpha outright\n || (c1[3] == null || c1[3] === 1) && ( // full opacity for colour 1?\n c2[3] == null || c2[3] === 1) // full opacity for colour 2?\n );\n\n if (same) {\n return false;\n } // can't make a mapper without a range\n\n }\n\n return {\n name: name,\n value: mapData,\n strValue: '' + value,\n mapped: _mapped,\n field: mapData[1],\n fieldMin: parseFloat(mapData[2]),\n // min & max are numeric\n fieldMax: parseFloat(mapData[3]),\n valueMin: valueMin.value,\n valueMax: valueMax.value,\n bypass: propIsBypass\n };\n }\n\n if (type.multiple && propIsFlat !== 'multiple') {\n var vals;\n\n if (valueIsString) {\n vals = value.split(/\\s+/);\n } else if (array(value)) {\n vals = value;\n } else {\n vals = [value];\n }\n\n if (type.evenMultiple && vals.length % 2 !== 0) {\n return null;\n }\n\n var valArr = [];\n var unitsArr = [];\n var pfValArr = [];\n var strVal = '';\n var hasEnum = false;\n\n for (var i = 0; i < vals.length; i++) {\n var p = self.parse(name, vals[i], propIsBypass, 'multiple');\n hasEnum = hasEnum || string(p.value);\n valArr.push(p.value);\n pfValArr.push(p.pfValue != null ? p.pfValue : p.value);\n unitsArr.push(p.units);\n strVal += (i > 0 ? ' ' : '') + p.strValue;\n }\n\n if (type.validate && !type.validate(valArr, unitsArr)) {\n return null;\n }\n\n if (type.singleEnum && hasEnum) {\n if (valArr.length === 1 && string(valArr[0])) {\n return {\n name: name,\n value: valArr[0],\n strValue: valArr[0],\n bypass: propIsBypass\n };\n } else {\n return null;\n }\n }\n\n return {\n name: name,\n value: valArr,\n pfValue: pfValArr,\n strValue: strVal,\n bypass: propIsBypass,\n units: unitsArr\n };\n } // several types also allow enums\n\n\n var checkEnums = function checkEnums() {\n for (var _i = 0; _i < type.enums.length; _i++) {\n var en = type.enums[_i];\n\n if (en === value) {\n return {\n name: name,\n value: value,\n strValue: '' + value,\n bypass: propIsBypass\n };\n }\n }\n\n return null;\n }; // check the type and return the appropriate object\n\n\n if (type.number) {\n var units;\n var implicitUnits = 'px'; // not set => px\n\n if (type.units) {\n // use specified units if set\n units = type.units;\n }\n\n if (type.implicitUnits) {\n implicitUnits = type.implicitUnits;\n }\n\n if (!type.unitless) {\n if (valueIsString) {\n var unitsRegex = 'px|em' + (type.allowPercent ? '|\\\\%' : '');\n\n if (units) {\n unitsRegex = units;\n } // only allow explicit units if so set\n\n\n var match = value.match('^(' + number$1 + ')(' + unitsRegex + ')?' + '$');\n\n if (match) {\n value = match[1];\n units = match[2] || implicitUnits;\n }\n } else if (!units || type.implicitUnits) {\n units = implicitUnits; // implicitly px if unspecified\n }\n }\n\n value = parseFloat(value); // if not a number and enums not allowed, then the value is invalid\n\n if (isNaN(value) && type.enums === undefined) {\n return null;\n } // check if this number type also accepts special keywords in place of numbers\n // (i.e. `left`, `auto`, etc)\n\n\n if (isNaN(value) && type.enums !== undefined) {\n value = passedValue;\n return checkEnums();\n } // check if value must be an integer\n\n\n if (type.integer && !integer(value)) {\n return null;\n } // check value is within range\n\n\n if (type.min !== undefined && (value < type.min || type.strictMin && value === type.min) || type.max !== undefined && (value > type.max || type.strictMax && value === type.max)) {\n return null;\n }\n\n var ret = {\n name: name,\n value: value,\n strValue: '' + value + (units ? units : ''),\n units: units,\n bypass: propIsBypass\n }; // normalise value in pixels\n\n if (type.unitless || units !== 'px' && units !== 'em') {\n ret.pfValue = value;\n } else {\n ret.pfValue = units === 'px' || !units ? value : this.getEmSizeInPixels() * value;\n } // normalise value in ms\n\n\n if (units === 'ms' || units === 's') {\n ret.pfValue = units === 'ms' ? value : 1000 * value;\n } // normalise value in rad\n\n\n if (units === 'deg' || units === 'rad') {\n ret.pfValue = units === 'rad' ? value : deg2rad(value);\n } // normalize value in %\n\n\n if (units === '%') {\n ret.pfValue = value / 100;\n }\n\n return ret;\n } else if (type.propList) {\n var props = [];\n var propsStr = '' + value;\n\n if (propsStr === 'none') ; else {\n // go over each prop\n var propsSplit = propsStr.split(/\\s*,\\s*|\\s+/);\n\n for (var _i2 = 0; _i2 < propsSplit.length; _i2++) {\n var propName = propsSplit[_i2].trim();\n\n if (self.properties[propName]) {\n props.push(propName);\n } else {\n warn('`' + propName + '` is not a valid property name');\n }\n }\n\n if (props.length === 0) {\n return null;\n }\n }\n\n return {\n name: name,\n value: props,\n strValue: props.length === 0 ? 'none' : props.join(' '),\n bypass: propIsBypass\n };\n } else if (type.color) {\n var tuple = color2tuple(value);\n\n if (!tuple) {\n return null;\n }\n\n return {\n name: name,\n value: tuple,\n pfValue: tuple,\n strValue: 'rgb(' + tuple[0] + ',' + tuple[1] + ',' + tuple[2] + ')',\n // n.b. no spaces b/c of multiple support\n bypass: propIsBypass\n };\n } else if (type.regex || type.regexes) {\n // first check enums\n if (type.enums) {\n var enumProp = checkEnums();\n\n if (enumProp) {\n return enumProp;\n }\n }\n\n var regexes = type.regexes ? type.regexes : [type.regex];\n\n for (var _i3 = 0; _i3 < regexes.length; _i3++) {\n var regex = new RegExp(regexes[_i3]); // make a regex from the type string\n\n var m = regex.exec(value);\n\n if (m) {\n // regex matches\n return {\n name: name,\n value: type.singleRegexMatchValue ? m[1] : m,\n strValue: '' + value,\n bypass: propIsBypass\n };\n }\n }\n\n return null; // didn't match any\n } else if (type.string) {\n // just return\n return {\n name: name,\n value: '' + value,\n strValue: '' + value,\n bypass: propIsBypass\n };\n } else if (type.enums) {\n // check enums last because it's a combo type in others\n return checkEnums();\n } else {\n return null; // not a type we can handle\n }\n};\n\nvar Style = function Style(cy) {\n if (!(this instanceof Style)) {\n return new Style(cy);\n }\n\n if (!core(cy)) {\n error('A style must have a core reference');\n return;\n }\n\n this._private = {\n cy: cy,\n coreStyle: {}\n };\n this.length = 0;\n this.resetToDefault();\n};\n\nvar styfn$8 = Style.prototype;\n\nstyfn$8.instanceString = function () {\n return 'style';\n}; // remove all contexts\n\n\nstyfn$8.clear = function () {\n for (var i = 0; i < this.length; i++) {\n this[i] = undefined;\n }\n\n this.length = 0;\n var _p = this._private;\n _p.newStyle = true;\n return this; // chaining\n};\n\nstyfn$8.resetToDefault = function () {\n this.clear();\n this.addDefaultStylesheet();\n return this;\n}; // builds a style object for the 'core' selector\n\n\nstyfn$8.core = function (propName) {\n return this._private.coreStyle[propName] || this.getDefaultProperty(propName);\n}; // create a new context from the specified selector string and switch to that context\n\n\nstyfn$8.selector = function (selectorStr) {\n // 'core' is a special case and does not need a selector\n var selector = selectorStr === 'core' ? null : new Selector(selectorStr);\n var i = this.length++; // new context means new index\n\n this[i] = {\n selector: selector,\n properties: [],\n mappedProperties: [],\n index: i\n };\n return this; // chaining\n}; // add one or many css rules to the current context\n\n\nstyfn$8.css = function () {\n var self = this;\n var args = arguments;\n\n if (args.length === 1) {\n var map = args[0];\n\n for (var i = 0; i < self.properties.length; i++) {\n var prop = self.properties[i];\n var mapVal = map[prop.name];\n\n if (mapVal === undefined) {\n mapVal = map[dash2camel(prop.name)];\n }\n\n if (mapVal !== undefined) {\n this.cssRule(prop.name, mapVal);\n }\n }\n } else if (args.length === 2) {\n this.cssRule(args[0], args[1]);\n } // do nothing if args are invalid\n\n\n return this; // chaining\n};\n\nstyfn$8.style = styfn$8.css; // add a single css rule to the current context\n\nstyfn$8.cssRule = function (name, value) {\n // name-value pair\n var property = this.parse(name, value); // add property to current context if valid\n\n if (property) {\n var i = this.length - 1;\n this[i].properties.push(property);\n this[i].properties[property.name] = property; // allow access by name as well\n\n if (property.name.match(/pie-(\\d+)-background-size/) && property.value) {\n this._private.hasPie = true;\n }\n\n if (property.mapped) {\n this[i].mappedProperties.push(property);\n } // add to core style if necessary\n\n\n var currentSelectorIsCore = !this[i].selector;\n\n if (currentSelectorIsCore) {\n this._private.coreStyle[property.name] = property;\n }\n }\n\n return this; // chaining\n};\n\nstyfn$8.append = function (style) {\n if (stylesheet(style)) {\n style.appendToStyle(this);\n } else if (array(style)) {\n this.appendFromJson(style);\n } else if (string(style)) {\n this.appendFromString(style);\n } // you probably wouldn't want to append a Style, since you'd duplicate the default parts\n\n\n return this;\n}; // static function\n\n\nStyle.fromJson = function (cy, json) {\n var style = new Style(cy);\n style.fromJson(json);\n return style;\n};\n\nStyle.fromString = function (cy, string) {\n return new Style(cy).fromString(string);\n};\n\n[styfn, styfn$1, styfn$2, styfn$3, styfn$4, styfn$5, styfn$6, styfn$7].forEach(function (props) {\n extend(styfn$8, props);\n});\nStyle.types = styfn$8.types;\nStyle.properties = styfn$8.properties;\nStyle.propertyGroups = styfn$8.propertyGroups;\nStyle.propertyGroupNames = styfn$8.propertyGroupNames;\nStyle.propertyGroupKeys = styfn$8.propertyGroupKeys;\n\nvar corefn$7 = {\n style: function style(newStyle) {\n if (newStyle) {\n var s = this.setStyle(newStyle);\n s.update();\n }\n\n return this._private.style;\n },\n setStyle: function setStyle(style) {\n var _p = this._private;\n\n if (stylesheet(style)) {\n _p.style = style.generateStyle(this);\n } else if (array(style)) {\n _p.style = Style.fromJson(this, style);\n } else if (string(style)) {\n _p.style = Style.fromString(this, style);\n } else {\n _p.style = Style(this);\n }\n\n return _p.style;\n }\n};\n\nvar defaultSelectionType = 'single';\nvar corefn$8 = {\n autolock: function autolock(bool) {\n if (bool !== undefined) {\n this._private.autolock = bool ? true : false;\n } else {\n return this._private.autolock;\n }\n\n return this; // chaining\n },\n autoungrabify: function autoungrabify(bool) {\n if (bool !== undefined) {\n this._private.autoungrabify = bool ? true : false;\n } else {\n return this._private.autoungrabify;\n }\n\n return this; // chaining\n },\n autounselectify: function autounselectify(bool) {\n if (bool !== undefined) {\n this._private.autounselectify = bool ? true : false;\n } else {\n return this._private.autounselectify;\n }\n\n return this; // chaining\n },\n selectionType: function selectionType(selType) {\n var _p = this._private;\n\n if (_p.selectionType == null) {\n _p.selectionType = defaultSelectionType;\n }\n\n if (selType !== undefined) {\n if (selType === 'additive' || selType === 'single') {\n _p.selectionType = selType;\n }\n } else {\n return _p.selectionType;\n }\n\n return this;\n },\n panningEnabled: function panningEnabled(bool) {\n if (bool !== undefined) {\n this._private.panningEnabled = bool ? true : false;\n } else {\n return this._private.panningEnabled;\n }\n\n return this; // chaining\n },\n userPanningEnabled: function userPanningEnabled(bool) {\n if (bool !== undefined) {\n this._private.userPanningEnabled = bool ? true : false;\n } else {\n return this._private.userPanningEnabled;\n }\n\n return this; // chaining\n },\n zoomingEnabled: function zoomingEnabled(bool) {\n if (bool !== undefined) {\n this._private.zoomingEnabled = bool ? true : false;\n } else {\n return this._private.zoomingEnabled;\n }\n\n return this; // chaining\n },\n userZoomingEnabled: function userZoomingEnabled(bool) {\n if (bool !== undefined) {\n this._private.userZoomingEnabled = bool ? true : false;\n } else {\n return this._private.userZoomingEnabled;\n }\n\n return this; // chaining\n },\n boxSelectionEnabled: function boxSelectionEnabled(bool) {\n if (bool !== undefined) {\n this._private.boxSelectionEnabled = bool ? true : false;\n } else {\n return this._private.boxSelectionEnabled;\n }\n\n return this; // chaining\n },\n pan: function pan() {\n var args = arguments;\n var pan = this._private.pan;\n var dim, val, dims, x, y;\n\n switch (args.length) {\n case 0:\n // .pan()\n return pan;\n\n case 1:\n if (string(args[0])) {\n // .pan('x')\n dim = args[0];\n return pan[dim];\n } else if (plainObject(args[0])) {\n // .pan({ x: 0, y: 100 })\n if (!this._private.panningEnabled) {\n return this;\n }\n\n dims = args[0];\n x = dims.x;\n y = dims.y;\n\n if (number(x)) {\n pan.x = x;\n }\n\n if (number(y)) {\n pan.y = y;\n }\n\n this.emit('pan viewport');\n }\n\n break;\n\n case 2:\n // .pan('x', 100)\n if (!this._private.panningEnabled) {\n return this;\n }\n\n dim = args[0];\n val = args[1];\n\n if ((dim === 'x' || dim === 'y') && number(val)) {\n pan[dim] = val;\n }\n\n this.emit('pan viewport');\n break;\n\n default:\n break;\n // invalid\n }\n\n this.notify('viewport');\n return this; // chaining\n },\n panBy: function panBy(arg0, arg1) {\n var args = arguments;\n var pan = this._private.pan;\n var dim, val, dims, x, y;\n\n if (!this._private.panningEnabled) {\n return this;\n }\n\n switch (args.length) {\n case 1:\n if (plainObject(arg0)) {\n // .panBy({ x: 0, y: 100 })\n dims = args[0];\n x = dims.x;\n y = dims.y;\n\n if (number(x)) {\n pan.x += x;\n }\n\n if (number(y)) {\n pan.y += y;\n }\n\n this.emit('pan viewport');\n }\n\n break;\n\n case 2:\n // .panBy('x', 100)\n dim = arg0;\n val = arg1;\n\n if ((dim === 'x' || dim === 'y') && number(val)) {\n pan[dim] += val;\n }\n\n this.emit('pan viewport');\n break;\n\n default:\n break;\n // invalid\n }\n\n this.notify('viewport');\n return this; // chaining\n },\n fit: function fit(elements, padding) {\n var viewportState = this.getFitViewport(elements, padding);\n\n if (viewportState) {\n var _p = this._private;\n _p.zoom = viewportState.zoom;\n _p.pan = viewportState.pan;\n this.emit('pan zoom viewport');\n this.notify('viewport');\n }\n\n return this; // chaining\n },\n getFitViewport: function getFitViewport(elements, padding) {\n if (number(elements) && padding === undefined) {\n // elements is optional\n padding = elements;\n elements = undefined;\n }\n\n if (!this._private.panningEnabled || !this._private.zoomingEnabled) {\n return;\n }\n\n var bb;\n\n if (string(elements)) {\n var sel = elements;\n elements = this.$(sel);\n } else if (boundingBox(elements)) {\n // assume bb\n var bbe = elements;\n bb = {\n x1: bbe.x1,\n y1: bbe.y1,\n x2: bbe.x2,\n y2: bbe.y2\n };\n bb.w = bb.x2 - bb.x1;\n bb.h = bb.y2 - bb.y1;\n } else if (!elementOrCollection(elements)) {\n elements = this.mutableElements();\n }\n\n if (elementOrCollection(elements) && elements.empty()) {\n return;\n } // can't fit to nothing\n\n\n bb = bb || elements.boundingBox();\n var w = this.width();\n var h = this.height();\n var zoom;\n padding = number(padding) ? padding : 0;\n\n if (!isNaN(w) && !isNaN(h) && w > 0 && h > 0 && !isNaN(bb.w) && !isNaN(bb.h) && bb.w > 0 && bb.h > 0) {\n zoom = Math.min((w - 2 * padding) / bb.w, (h - 2 * padding) / bb.h); // crop zoom\n\n zoom = zoom > this._private.maxZoom ? this._private.maxZoom : zoom;\n zoom = zoom < this._private.minZoom ? this._private.minZoom : zoom;\n var pan = {\n // now pan to middle\n x: (w - zoom * (bb.x1 + bb.x2)) / 2,\n y: (h - zoom * (bb.y1 + bb.y2)) / 2\n };\n return {\n zoom: zoom,\n pan: pan\n };\n }\n\n return;\n },\n zoomRange: function zoomRange(min, max) {\n var _p = this._private;\n\n if (max == null) {\n var opts = min;\n min = opts.min;\n max = opts.max;\n }\n\n if (number(min) && number(max) && min <= max) {\n _p.minZoom = min;\n _p.maxZoom = max;\n } else if (number(min) && max === undefined && min <= _p.maxZoom) {\n _p.minZoom = min;\n } else if (number(max) && min === undefined && max >= _p.minZoom) {\n _p.maxZoom = max;\n }\n\n return this;\n },\n minZoom: function minZoom(zoom) {\n if (zoom === undefined) {\n return this._private.minZoom;\n } else {\n return this.zoomRange({\n min: zoom\n });\n }\n },\n maxZoom: function maxZoom(zoom) {\n if (zoom === undefined) {\n return this._private.maxZoom;\n } else {\n return this.zoomRange({\n max: zoom\n });\n }\n },\n getZoomedViewport: function getZoomedViewport(params) {\n var _p = this._private;\n var currentPan = _p.pan;\n var currentZoom = _p.zoom;\n var pos; // in rendered px\n\n var zoom;\n var bail = false;\n\n if (!_p.zoomingEnabled) {\n // zooming disabled\n bail = true;\n }\n\n if (number(params)) {\n // then set the zoom\n zoom = params;\n } else if (plainObject(params)) {\n // then zoom about a point\n zoom = params.level;\n\n if (params.position != null) {\n pos = modelToRenderedPosition(params.position, currentZoom, currentPan);\n } else if (params.renderedPosition != null) {\n pos = params.renderedPosition;\n }\n\n if (pos != null && !_p.panningEnabled) {\n // panning disabled\n bail = true;\n }\n } // crop zoom\n\n\n zoom = zoom > _p.maxZoom ? _p.maxZoom : zoom;\n zoom = zoom < _p.minZoom ? _p.minZoom : zoom; // can't zoom with invalid params\n\n if (bail || !number(zoom) || zoom === currentZoom || pos != null && (!number(pos.x) || !number(pos.y))) {\n return null;\n }\n\n if (pos != null) {\n // set zoom about position\n var pan1 = currentPan;\n var zoom1 = currentZoom;\n var zoom2 = zoom;\n var pan2 = {\n x: -zoom2 / zoom1 * (pos.x - pan1.x) + pos.x,\n y: -zoom2 / zoom1 * (pos.y - pan1.y) + pos.y\n };\n return {\n zoomed: true,\n panned: true,\n zoom: zoom2,\n pan: pan2\n };\n } else {\n // just set the zoom\n return {\n zoomed: true,\n panned: false,\n zoom: zoom,\n pan: currentPan\n };\n }\n },\n zoom: function zoom(params) {\n if (params === undefined) {\n // get\n return this._private.zoom;\n } else {\n // set\n var vp = this.getZoomedViewport(params);\n var _p = this._private;\n\n if (vp == null || !vp.zoomed) {\n return this;\n }\n\n _p.zoom = vp.zoom;\n\n if (vp.panned) {\n _p.pan.x = vp.pan.x;\n _p.pan.y = vp.pan.y;\n }\n\n this.emit('zoom' + (vp.panned ? ' pan' : '') + ' viewport');\n this.notify('viewport');\n return this; // chaining\n }\n },\n viewport: function viewport(opts) {\n var _p = this._private;\n var zoomDefd = true;\n var panDefd = true;\n var events = []; // to trigger\n\n var zoomFailed = false;\n var panFailed = false;\n\n if (!opts) {\n return this;\n }\n\n if (!number(opts.zoom)) {\n zoomDefd = false;\n }\n\n if (!plainObject(opts.pan)) {\n panDefd = false;\n }\n\n if (!zoomDefd && !panDefd) {\n return this;\n }\n\n if (zoomDefd) {\n var z = opts.zoom;\n\n if (z < _p.minZoom || z > _p.maxZoom || !_p.zoomingEnabled) {\n zoomFailed = true;\n } else {\n _p.zoom = z;\n events.push('zoom');\n }\n }\n\n if (panDefd && (!zoomFailed || !opts.cancelOnFailedZoom) && _p.panningEnabled) {\n var p = opts.pan;\n\n if (number(p.x)) {\n _p.pan.x = p.x;\n panFailed = false;\n }\n\n if (number(p.y)) {\n _p.pan.y = p.y;\n panFailed = false;\n }\n\n if (!panFailed) {\n events.push('pan');\n }\n }\n\n if (events.length > 0) {\n events.push('viewport');\n this.emit(events.join(' '));\n this.notify('viewport');\n }\n\n return this; // chaining\n },\n center: function center(elements) {\n var pan = this.getCenterPan(elements);\n\n if (pan) {\n this._private.pan = pan;\n this.emit('pan viewport');\n this.notify('viewport');\n }\n\n return this; // chaining\n },\n getCenterPan: function getCenterPan(elements, zoom) {\n if (!this._private.panningEnabled) {\n return;\n }\n\n if (string(elements)) {\n var selector = elements;\n elements = this.mutableElements().filter(selector);\n } else if (!elementOrCollection(elements)) {\n elements = this.mutableElements();\n }\n\n if (elements.length === 0) {\n return;\n } // can't centre pan to nothing\n\n\n var bb = elements.boundingBox();\n var w = this.width();\n var h = this.height();\n zoom = zoom === undefined ? this._private.zoom : zoom;\n var pan = {\n // middle\n x: (w - zoom * (bb.x1 + bb.x2)) / 2,\n y: (h - zoom * (bb.y1 + bb.y2)) / 2\n };\n return pan;\n },\n reset: function reset() {\n if (!this._private.panningEnabled || !this._private.zoomingEnabled) {\n return this;\n }\n\n this.viewport({\n pan: {\n x: 0,\n y: 0\n },\n zoom: 1\n });\n return this; // chaining\n },\n invalidateSize: function invalidateSize() {\n this._private.sizeCache = null;\n },\n size: function size() {\n var _p = this._private;\n var container = _p.container;\n return _p.sizeCache = _p.sizeCache || (container ? function () {\n var style = window$1.getComputedStyle(container);\n\n var val = function val(name) {\n return parseFloat(style.getPropertyValue(name));\n };\n\n return {\n width: container.clientWidth - val('padding-left') - val('padding-right'),\n height: container.clientHeight - val('padding-top') - val('padding-bottom')\n };\n }() : {\n // fallback if no container (not 0 b/c can be used for dividing etc)\n width: 1,\n height: 1\n });\n },\n width: function width() {\n return this.size().width;\n },\n height: function height() {\n return this.size().height;\n },\n extent: function extent() {\n var pan = this._private.pan;\n var zoom = this._private.zoom;\n var rb = this.renderedExtent();\n var b = {\n x1: (rb.x1 - pan.x) / zoom,\n x2: (rb.x2 - pan.x) / zoom,\n y1: (rb.y1 - pan.y) / zoom,\n y2: (rb.y2 - pan.y) / zoom\n };\n b.w = b.x2 - b.x1;\n b.h = b.y2 - b.y1;\n return b;\n },\n renderedExtent: function renderedExtent() {\n var width = this.width();\n var height = this.height();\n return {\n x1: 0,\n y1: 0,\n x2: width,\n y2: height,\n w: width,\n h: height\n };\n }\n}; // aliases\n\ncorefn$8.centre = corefn$8.center; // backwards compatibility\n\ncorefn$8.autolockNodes = corefn$8.autolock;\ncorefn$8.autoungrabifyNodes = corefn$8.autoungrabify;\n\nvar fn$6 = {\n data: define$3.data({\n field: 'data',\n bindingEvent: 'data',\n allowBinding: true,\n allowSetting: true,\n settingEvent: 'data',\n settingTriggersEvent: true,\n triggerFnName: 'trigger',\n allowGetting: true\n }),\n removeData: define$3.removeData({\n field: 'data',\n event: 'data',\n triggerFnName: 'trigger',\n triggerEvent: true\n }),\n scratch: define$3.data({\n field: 'scratch',\n bindingEvent: 'scratch',\n allowBinding: true,\n allowSetting: true,\n settingEvent: 'scratch',\n settingTriggersEvent: true,\n triggerFnName: 'trigger',\n allowGetting: true\n }),\n removeScratch: define$3.removeData({\n field: 'scratch',\n event: 'scratch',\n triggerFnName: 'trigger',\n triggerEvent: true\n })\n}; // aliases\n\nfn$6.attr = fn$6.data;\nfn$6.removeAttr = fn$6.removeData;\n\nvar Core = function Core(opts) {\n var cy = this;\n opts = extend({}, opts);\n var container = opts.container; // allow for passing a wrapped jquery object\n // e.g. cytoscape({ container: $('#cy') })\n\n if (container && !htmlElement(container) && htmlElement(container[0])) {\n container = container[0];\n }\n\n var reg = container ? container._cyreg : null; // e.g. already registered some info (e.g. readies) via jquery\n\n reg = reg || {};\n\n if (reg && reg.cy) {\n reg.cy.destroy();\n reg = {}; // old instance => replace reg completely\n }\n\n var readies = reg.readies = reg.readies || [];\n\n if (container) {\n container._cyreg = reg;\n } // make sure container assoc'd reg points to this cy\n\n\n reg.cy = cy;\n var head = window$1 !== undefined && container !== undefined && !opts.headless;\n var options = opts;\n options.layout = extend({\n name: head ? 'grid' : 'null'\n }, options.layout);\n options.renderer = extend({\n name: head ? 'canvas' : 'null'\n }, options.renderer);\n\n var defVal = function defVal(def, val, altVal) {\n if (val !== undefined) {\n return val;\n } else if (altVal !== undefined) {\n return altVal;\n } else {\n return def;\n }\n };\n\n var _p = this._private = {\n container: container,\n // html dom ele container\n ready: false,\n // whether ready has been triggered\n options: options,\n // cached options\n elements: new Collection(this),\n // elements in the graph\n listeners: [],\n // list of listeners\n aniEles: new Collection(this),\n // elements being animated\n data: {},\n // data for the core\n scratch: {},\n // scratch object for core\n layout: null,\n renderer: null,\n destroyed: false,\n // whether destroy was called\n notificationsEnabled: true,\n // whether notifications are sent to the renderer\n minZoom: 1e-50,\n maxZoom: 1e50,\n zoomingEnabled: defVal(true, options.zoomingEnabled),\n userZoomingEnabled: defVal(true, options.userZoomingEnabled),\n panningEnabled: defVal(true, options.panningEnabled),\n userPanningEnabled: defVal(true, options.userPanningEnabled),\n boxSelectionEnabled: defVal(true, options.boxSelectionEnabled),\n autolock: defVal(false, options.autolock, options.autolockNodes),\n autoungrabify: defVal(false, options.autoungrabify, options.autoungrabifyNodes),\n autounselectify: defVal(false, options.autounselectify),\n styleEnabled: options.styleEnabled === undefined ? head : options.styleEnabled,\n zoom: number(options.zoom) ? options.zoom : 1,\n pan: {\n x: plainObject(options.pan) && number(options.pan.x) ? options.pan.x : 0,\n y: plainObject(options.pan) && number(options.pan.y) ? options.pan.y : 0\n },\n animation: {\n // object for currently-running animations\n current: [],\n queue: []\n },\n hasCompoundNodes: false\n };\n\n this.createEmitter(); // set selection type\n\n this.selectionType(options.selectionType); // init zoom bounds\n\n this.zoomRange({\n min: options.minZoom,\n max: options.maxZoom\n });\n\n var loadExtData = function loadExtData(extData, next) {\n var anyIsPromise = extData.some(promise);\n\n if (anyIsPromise) {\n return Promise$1.all(extData).then(next); // load all data asynchronously, then exec rest of init\n } else {\n next(extData); // exec synchronously for convenience\n }\n }; // start with the default stylesheet so we have something before loading an external stylesheet\n\n\n if (_p.styleEnabled) {\n cy.setStyle([]);\n } // create the renderer\n\n\n var rendererOptions = extend({}, options, options.renderer); // allow rendering hints in top level options\n\n cy.initRenderer(rendererOptions);\n\n var setElesAndLayout = function setElesAndLayout(elements, onload, ondone) {\n cy.notifications(false); // remove old elements\n\n var oldEles = cy.mutableElements();\n\n if (oldEles.length > 0) {\n oldEles.remove();\n }\n\n if (elements != null) {\n if (plainObject(elements) || array(elements)) {\n cy.add(elements);\n }\n }\n\n cy.one('layoutready', function (e) {\n cy.notifications(true);\n cy.emit(e); // we missed this event by turning notifications off, so pass it on\n\n cy.one('load', onload);\n cy.emitAndNotify('load');\n }).one('layoutstop', function () {\n cy.one('done', ondone);\n cy.emit('done');\n });\n var layoutOpts = extend({}, cy._private.options.layout);\n layoutOpts.eles = cy.elements();\n cy.layout(layoutOpts).run();\n };\n\n loadExtData([options.style, options.elements], function (thens) {\n var initStyle = thens[0];\n var initEles = thens[1]; // init style\n\n if (_p.styleEnabled) {\n cy.style().append(initStyle);\n } // initial load\n\n\n setElesAndLayout(initEles, function () {\n // onready\n cy.startAnimationLoop();\n _p.ready = true; // if a ready callback is specified as an option, the bind it\n\n if (fn(options.ready)) {\n cy.on('ready', options.ready);\n } // bind all the ready handlers registered before creating this instance\n\n\n for (var i = 0; i < readies.length; i++) {\n var fn$1 = readies[i];\n cy.on('ready', fn$1);\n }\n\n if (reg) {\n reg.readies = [];\n } // clear b/c we've bound them all and don't want to keep it around in case a new core uses the same div etc\n\n\n cy.emit('ready');\n }, options.done);\n });\n};\n\nvar corefn$9 = Core.prototype; // short alias\n\nextend(corefn$9, {\n instanceString: function instanceString() {\n return 'core';\n },\n isReady: function isReady() {\n return this._private.ready;\n },\n destroyed: function destroyed() {\n return this._private.destroyed;\n },\n ready: function ready(fn) {\n if (this.isReady()) {\n this.emitter().emit('ready', [], fn); // just calls fn as though triggered via ready event\n } else {\n this.on('ready', fn);\n }\n\n return this;\n },\n destroy: function destroy() {\n var cy = this;\n if (cy.destroyed()) return;\n cy.stopAnimationLoop();\n cy.destroyRenderer();\n this.emit('destroy');\n cy._private.destroyed = true;\n return cy;\n },\n hasElementWithId: function hasElementWithId(id) {\n return this._private.elements.hasElementWithId(id);\n },\n getElementById: function getElementById(id) {\n return this._private.elements.getElementById(id);\n },\n hasCompoundNodes: function hasCompoundNodes() {\n return this._private.hasCompoundNodes;\n },\n headless: function headless() {\n return this._private.renderer.isHeadless();\n },\n styleEnabled: function styleEnabled() {\n return this._private.styleEnabled;\n },\n addToPool: function addToPool(eles) {\n this._private.elements.merge(eles);\n\n return this; // chaining\n },\n removeFromPool: function removeFromPool(eles) {\n this._private.elements.unmerge(eles);\n\n return this;\n },\n container: function container() {\n return this._private.container || null;\n },\n mount: function mount(container) {\n if (container == null) {\n return;\n }\n\n var cy = this;\n var _p = cy._private;\n var options = _p.options;\n\n if (!htmlElement(container) && htmlElement(container[0])) {\n container = container[0];\n }\n\n cy.stopAnimationLoop();\n cy.destroyRenderer();\n _p.container = container;\n _p.styleEnabled = true;\n cy.invalidateSize();\n cy.initRenderer(extend({}, options, options.renderer, {\n // allow custom renderer name to be re-used, otherwise use canvas\n name: options.renderer.name === 'null' ? 'canvas' : options.renderer.name\n }));\n cy.startAnimationLoop();\n cy.style(options.style);\n cy.emit('mount');\n return cy;\n },\n unmount: function unmount() {\n var cy = this;\n cy.stopAnimationLoop();\n cy.destroyRenderer();\n cy.initRenderer({\n name: 'null'\n });\n cy.emit('unmount');\n return cy;\n },\n options: function options() {\n return copy(this._private.options);\n },\n json: function json(obj) {\n var cy = this;\n var _p = cy._private;\n var eles = cy.mutableElements();\n\n var getFreshRef = function getFreshRef(ele) {\n return cy.getElementById(ele.id());\n };\n\n if (plainObject(obj)) {\n // set\n cy.startBatch();\n\n if (obj.elements) {\n var idInJson = {};\n\n var updateEles = function updateEles(jsons, gr) {\n var toAdd = [];\n var toMod = [];\n\n for (var i = 0; i < jsons.length; i++) {\n var json = jsons[i];\n var id = '' + json.data.id; // id must be string\n\n var ele = cy.getElementById(id);\n idInJson[id] = true;\n\n if (ele.length !== 0) {\n // existing element should be updated\n toMod.push({\n ele: ele,\n json: json\n });\n } else {\n // otherwise should be added\n if (gr) {\n json.group = gr;\n toAdd.push(json);\n } else {\n toAdd.push(json);\n }\n }\n }\n\n cy.add(toAdd);\n\n for (var _i = 0; _i < toMod.length; _i++) {\n var _toMod$_i = toMod[_i],\n _ele = _toMod$_i.ele,\n _json = _toMod$_i.json;\n\n _ele.json(_json);\n }\n };\n\n if (array(obj.elements)) {\n // elements: []\n updateEles(obj.elements);\n } else {\n // elements: { nodes: [], edges: [] }\n var grs = ['nodes', 'edges'];\n\n for (var i = 0; i < grs.length; i++) {\n var gr = grs[i];\n var elements = obj.elements[gr];\n\n if (array(elements)) {\n updateEles(elements, gr);\n }\n }\n }\n\n var parentsToRemove = cy.collection();\n eles.filter(function (ele) {\n return !idInJson[ele.id()];\n }).forEach(function (ele) {\n if (ele.isParent()) {\n parentsToRemove.merge(ele);\n } else {\n ele.remove();\n }\n }); // so that children are not removed w/parent\n\n parentsToRemove.forEach(function (ele) {\n return ele.children().move({\n parent: null\n });\n }); // intermediate parents may be moved by prior line, so make sure we remove by fresh refs\n\n parentsToRemove.forEach(function (ele) {\n return getFreshRef(ele).remove();\n });\n }\n\n if (obj.style) {\n cy.style(obj.style);\n }\n\n if (obj.zoom != null && obj.zoom !== _p.zoom) {\n cy.zoom(obj.zoom);\n }\n\n if (obj.pan) {\n if (obj.pan.x !== _p.pan.x || obj.pan.y !== _p.pan.y) {\n cy.pan(obj.pan);\n }\n }\n\n if (obj.data) {\n cy.data(obj.data);\n }\n\n var fields = ['minZoom', 'maxZoom', 'zoomingEnabled', 'userZoomingEnabled', 'panningEnabled', 'userPanningEnabled', 'boxSelectionEnabled', 'autolock', 'autoungrabify', 'autounselectify'];\n\n for (var _i2 = 0; _i2 < fields.length; _i2++) {\n var f = fields[_i2];\n\n if (obj[f] != null) {\n cy[f](obj[f]);\n }\n }\n\n cy.endBatch();\n return this; // chaining\n } else {\n // get\n var flat = !!obj;\n var json = {};\n\n if (flat) {\n json.elements = this.elements().map(function (ele) {\n return ele.json();\n });\n } else {\n json.elements = {};\n eles.forEach(function (ele) {\n var group = ele.group();\n\n if (!json.elements[group]) {\n json.elements[group] = [];\n }\n\n json.elements[group].push(ele.json());\n });\n }\n\n if (this._private.styleEnabled) {\n json.style = cy.style().json();\n }\n\n json.data = copy(cy.data());\n var options = _p.options;\n json.zoomingEnabled = _p.zoomingEnabled;\n json.userZoomingEnabled = _p.userZoomingEnabled;\n json.zoom = _p.zoom;\n json.minZoom = _p.minZoom;\n json.maxZoom = _p.maxZoom;\n json.panningEnabled = _p.panningEnabled;\n json.userPanningEnabled = _p.userPanningEnabled;\n json.pan = copy(_p.pan);\n json.boxSelectionEnabled = _p.boxSelectionEnabled;\n json.renderer = copy(options.renderer);\n json.hideEdgesOnViewport = options.hideEdgesOnViewport;\n json.textureOnViewport = options.textureOnViewport;\n json.wheelSensitivity = options.wheelSensitivity;\n json.motionBlur = options.motionBlur;\n return json;\n }\n }\n});\ncorefn$9.$id = corefn$9.getElementById;\n[corefn, corefn$1, elesfn$u, corefn$2, corefn$3, corefn$4, corefn$5, corefn$6, corefn$7, corefn$8, fn$6].forEach(function (props) {\n extend(corefn$9, props);\n});\n\n/* eslint-disable no-unused-vars */\n\nvar defaults$9 = {\n fit: true,\n // whether to fit the viewport to the graph\n directed: false,\n // whether the tree is directed downwards (or edges can point in any direction if false)\n padding: 30,\n // padding on fit\n circle: false,\n // put depths in concentric circles if true, put depths top down if false\n grid: false,\n // whether to create an even grid into which the DAG is placed (circle:false only)\n spacingFactor: 1.75,\n // positive spacing factor, larger => more space between nodes (N.B. n/a if causes overlap)\n boundingBox: undefined,\n // constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h }\n avoidOverlap: true,\n // prevents node overlap, may overflow boundingBox if not enough space\n nodeDimensionsIncludeLabels: false,\n // Excludes the label when calculating node bounding boxes for the layout algorithm\n roots: undefined,\n // the roots of the trees\n maximal: false,\n // whether to shift nodes down their natural BFS depths in order to avoid upwards edges (DAGS only)\n animate: false,\n // whether to transition the node positions\n animationDuration: 500,\n // duration of animation in ms if enabled\n animationEasing: undefined,\n // easing of animation if enabled,\n animateFilter: function animateFilter(node, i) {\n return true;\n },\n // a function that determines whether the node should be animated. All nodes animated by default on animate enabled. Non-animated nodes are positioned immediately when the layout starts\n ready: undefined,\n // callback on layoutready\n stop: undefined,\n // callback on layoutstop\n transform: function transform(node, position) {\n return position;\n } // transform a given node position. Useful for changing flow direction in discrete layouts\n\n};\n/* eslint-enable */\n\nvar getInfo = function getInfo(ele) {\n return ele.scratch('breadthfirst');\n};\n\nvar setInfo = function setInfo(ele, obj) {\n return ele.scratch('breadthfirst', obj);\n};\n\nfunction BreadthFirstLayout(options) {\n this.options = extend({}, defaults$9, options);\n}\n\nBreadthFirstLayout.prototype.run = function () {\n var params = this.options;\n var options = params;\n var cy = params.cy;\n var eles = options.eles;\n var nodes = eles.nodes().filter(function (n) {\n return !n.isParent();\n });\n var graph = eles;\n var directed = options.directed;\n var maximal = options.maximal || options.maximalAdjustments > 0; // maximalAdjustments for compat. w/ old code\n\n var bb = makeBoundingBox(options.boundingBox ? options.boundingBox : {\n x1: 0,\n y1: 0,\n w: cy.width(),\n h: cy.height()\n });\n var roots;\n\n if (elementOrCollection(options.roots)) {\n roots = options.roots;\n } else if (array(options.roots)) {\n var rootsArray = [];\n\n for (var i = 0; i < options.roots.length; i++) {\n var id = options.roots[i];\n var ele = cy.getElementById(id);\n rootsArray.push(ele);\n }\n\n roots = cy.collection(rootsArray);\n } else if (string(options.roots)) {\n roots = cy.$(options.roots);\n } else {\n if (directed) {\n roots = nodes.roots();\n } else {\n var components = eles.components();\n roots = cy.collection();\n\n var _loop = function _loop(_i) {\n var comp = components[_i];\n var maxDegree = comp.maxDegree(false);\n var compRoots = comp.filter(function (ele) {\n return ele.degree(false) === maxDegree;\n });\n roots = roots.add(compRoots);\n };\n\n for (var _i = 0; _i < components.length; _i++) {\n _loop(_i);\n }\n }\n }\n\n var depths = [];\n var foundByBfs = {};\n\n var addToDepth = function addToDepth(ele, d) {\n if (depths[d] == null) {\n depths[d] = [];\n }\n\n var i = depths[d].length;\n depths[d].push(ele);\n setInfo(ele, {\n index: i,\n depth: d\n });\n };\n\n var changeDepth = function changeDepth(ele, newDepth) {\n var _getInfo = getInfo(ele),\n depth = _getInfo.depth,\n index = _getInfo.index;\n\n depths[depth][index] = null;\n addToDepth(ele, newDepth);\n }; // find the depths of the nodes\n\n\n graph.bfs({\n roots: roots,\n directed: options.directed,\n visit: function visit(node, edge, pNode, i, depth) {\n var ele = node[0];\n var id = ele.id();\n addToDepth(ele, depth);\n foundByBfs[id] = true;\n }\n }); // check for nodes not found by bfs\n\n var orphanNodes = [];\n\n for (var _i2 = 0; _i2 < nodes.length; _i2++) {\n var _ele = nodes[_i2];\n\n if (foundByBfs[_ele.id()]) {\n continue;\n } else {\n orphanNodes.push(_ele);\n }\n } // assign the nodes a depth and index\n\n\n var assignDepthsAt = function assignDepthsAt(i) {\n var eles = depths[i];\n\n for (var j = 0; j < eles.length; j++) {\n var _ele2 = eles[j];\n\n if (_ele2 == null) {\n eles.splice(j, 1);\n j--;\n continue;\n }\n\n setInfo(_ele2, {\n depth: i,\n index: j\n });\n }\n };\n\n var assignDepths = function assignDepths() {\n for (var _i3 = 0; _i3 < depths.length; _i3++) {\n assignDepthsAt(_i3);\n }\n };\n\n var adjustMaximally = function adjustMaximally(ele, shifted) {\n var eInfo = getInfo(ele);\n var incomers = ele.incomers().filter(function (el) {\n return el.isNode() && eles.has(el);\n });\n var maxDepth = -1;\n var id = ele.id();\n\n for (var k = 0; k < incomers.length; k++) {\n var incmr = incomers[k];\n var iInfo = getInfo(incmr);\n maxDepth = Math.max(maxDepth, iInfo.depth);\n }\n\n if (eInfo.depth <= maxDepth) {\n if (shifted[id]) {\n return null;\n }\n\n changeDepth(ele, maxDepth + 1);\n shifted[id] = true;\n return true;\n }\n\n return false;\n }; // for the directed case, try to make the edges all go down (i.e. depth i => depth i + 1)\n\n\n if (directed && maximal) {\n var Q = [];\n var shifted = {};\n\n var enqueue = function enqueue(n) {\n return Q.push(n);\n };\n\n var dequeue = function dequeue() {\n return Q.shift();\n };\n\n nodes.forEach(function (n) {\n return Q.push(n);\n });\n\n while (Q.length > 0) {\n var _ele3 = dequeue();\n\n var didShift = adjustMaximally(_ele3, shifted);\n\n if (didShift) {\n _ele3.outgoers().filter(function (el) {\n return el.isNode() && eles.has(el);\n }).forEach(enqueue);\n } else if (didShift === null) {\n warn('Detected double maximal shift for node `' + _ele3.id() + '`. Bailing maximal adjustment due to cycle. Use `options.maximal: true` only on DAGs.');\n break; // exit on failure\n }\n }\n }\n\n assignDepths(); // clear holes\n // find min distance we need to leave between nodes\n\n var minDistance = 0;\n\n if (options.avoidOverlap) {\n for (var _i4 = 0; _i4 < nodes.length; _i4++) {\n var n = nodes[_i4];\n var nbb = n.layoutDimensions(options);\n var w = nbb.w;\n var h = nbb.h;\n minDistance = Math.max(minDistance, w, h);\n }\n } // get the weighted percent for an element based on its connectivity to other levels\n\n\n var cachedWeightedPercent = {};\n\n var getWeightedPercent = function getWeightedPercent(ele) {\n if (cachedWeightedPercent[ele.id()]) {\n return cachedWeightedPercent[ele.id()];\n }\n\n var eleDepth = getInfo(ele).depth;\n var neighbors = ele.neighborhood();\n var percent = 0;\n var samples = 0;\n\n for (var _i5 = 0; _i5 < neighbors.length; _i5++) {\n var neighbor = neighbors[_i5];\n\n if (neighbor.isEdge() || neighbor.isParent() || !nodes.has(neighbor)) {\n continue;\n }\n\n var bf = getInfo(neighbor);\n var index = bf.index;\n var depth = bf.depth; // unassigned neighbours shouldn't affect the ordering\n\n if (index == null || depth == null) {\n continue;\n }\n\n var nDepth = depths[depth].length;\n\n if (depth < eleDepth) {\n // only get influenced by elements above\n percent += index / (nDepth - 1);\n samples++;\n }\n }\n\n samples = Math.max(1, samples);\n percent = percent / samples;\n\n if (samples === 0) {\n // put lone nodes at the start\n percent = 0;\n }\n\n cachedWeightedPercent[ele.id()] = percent;\n return percent;\n }; // rearrange the indices in each depth level based on connectivity\n\n\n var sortFn = function sortFn(a, b) {\n var apct = getWeightedPercent(a);\n var bpct = getWeightedPercent(b);\n var diff = apct - bpct;\n\n if (diff === 0) {\n return ascending(a.id(), b.id()); // make sure sort doesn't have don't-care comparisons\n } else {\n return diff;\n }\n }; // sort each level to make connected nodes closer\n\n\n for (var _i6 = 0; _i6 < depths.length; _i6++) {\n depths[_i6].sort(sortFn);\n\n assignDepthsAt(_i6);\n } // assign orphan nodes to a new top-level depth\n\n\n var orphanDepth = [];\n\n for (var _i7 = 0; _i7 < orphanNodes.length; _i7++) {\n orphanDepth.push(orphanNodes[_i7]);\n }\n\n depths.unshift(orphanDepth);\n assignDepths();\n var biggestDepthSize = 0;\n\n for (var _i8 = 0; _i8 < depths.length; _i8++) {\n biggestDepthSize = Math.max(depths[_i8].length, biggestDepthSize);\n }\n\n var center = {\n x: bb.x1 + bb.w / 2,\n y: bb.x1 + bb.h / 2\n };\n var maxDepthSize = depths.reduce(function (max, eles) {\n return Math.max(max, eles.length);\n }, 0);\n\n var getPosition = function getPosition(ele) {\n var _getInfo2 = getInfo(ele),\n depth = _getInfo2.depth,\n index = _getInfo2.index;\n\n var depthSize = depths[depth].length;\n var distanceX = Math.max(bb.w / ((options.grid ? maxDepthSize : depthSize) + 1), minDistance);\n var distanceY = Math.max(bb.h / (depths.length + 1), minDistance);\n var radiusStepSize = Math.min(bb.w / 2 / depths.length, bb.h / 2 / depths.length);\n radiusStepSize = Math.max(radiusStepSize, minDistance);\n\n if (!options.circle) {\n var epos = {\n x: center.x + (index + 1 - (depthSize + 1) / 2) * distanceX,\n y: (depth + 1) * distanceY\n };\n return epos;\n } else {\n var radius = radiusStepSize * depth + radiusStepSize - (depths.length > 0 && depths[0].length <= 3 ? radiusStepSize / 2 : 0);\n var theta = 2 * Math.PI / depths[depth].length * index;\n\n if (depth === 0 && depths[0].length === 1) {\n radius = 1;\n }\n\n return {\n x: center.x + radius * Math.cos(theta),\n y: center.y + radius * Math.sin(theta)\n };\n }\n };\n\n nodes.layoutPositions(this, options, getPosition);\n return this; // chaining\n};\n\nvar defaults$a = {\n fit: true,\n // whether to fit the viewport to the graph\n padding: 30,\n // the padding on fit\n boundingBox: undefined,\n // constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h }\n avoidOverlap: true,\n // prevents node overlap, may overflow boundingBox and radius if not enough space\n nodeDimensionsIncludeLabels: false,\n // Excludes the label when calculating node bounding boxes for the layout algorithm\n spacingFactor: undefined,\n // Applies a multiplicative factor (>0) to expand or compress the overall area that the nodes take up\n radius: undefined,\n // the radius of the circle\n startAngle: 3 / 2 * Math.PI,\n // where nodes start in radians\n sweep: undefined,\n // how many radians should be between the first and last node (defaults to full circle)\n clockwise: true,\n // whether the layout should go clockwise (true) or counterclockwise/anticlockwise (false)\n sort: undefined,\n // a sorting function to order the nodes; e.g. function(a, b){ return a.data('weight') - b.data('weight') }\n animate: false,\n // whether to transition the node positions\n animationDuration: 500,\n // duration of animation in ms if enabled\n animationEasing: undefined,\n // easing of animation if enabled\n animateFilter: function animateFilter(node, i) {\n return true;\n },\n // a function that determines whether the node should be animated. All nodes animated by default on animate enabled. Non-animated nodes are positioned immediately when the layout starts\n ready: undefined,\n // callback on layoutready\n stop: undefined,\n // callback on layoutstop\n transform: function transform(node, position) {\n return position;\n } // transform a given node position. Useful for changing flow direction in discrete layouts \n\n};\n\nfunction CircleLayout(options) {\n this.options = extend({}, defaults$a, options);\n}\n\nCircleLayout.prototype.run = function () {\n var params = this.options;\n var options = params;\n var cy = params.cy;\n var eles = options.eles;\n var clockwise = options.counterclockwise !== undefined ? !options.counterclockwise : options.clockwise;\n var nodes = eles.nodes().not(':parent');\n\n if (options.sort) {\n nodes = nodes.sort(options.sort);\n }\n\n var bb = makeBoundingBox(options.boundingBox ? options.boundingBox : {\n x1: 0,\n y1: 0,\n w: cy.width(),\n h: cy.height()\n });\n var center = {\n x: bb.x1 + bb.w / 2,\n y: bb.y1 + bb.h / 2\n };\n var sweep = options.sweep === undefined ? 2 * Math.PI - 2 * Math.PI / nodes.length : options.sweep;\n var dTheta = sweep / Math.max(1, nodes.length - 1);\n var r;\n var minDistance = 0;\n\n for (var i = 0; i < nodes.length; i++) {\n var n = nodes[i];\n var nbb = n.layoutDimensions(options);\n var w = nbb.w;\n var h = nbb.h;\n minDistance = Math.max(minDistance, w, h);\n }\n\n if (number(options.radius)) {\n r = options.radius;\n } else if (nodes.length <= 1) {\n r = 0;\n } else {\n r = Math.min(bb.h, bb.w) / 2 - minDistance;\n } // calculate the radius\n\n\n if (nodes.length > 1 && options.avoidOverlap) {\n // but only if more than one node (can't overlap)\n minDistance *= 1.75; // just to have some nice spacing\n\n var dcos = Math.cos(dTheta) - Math.cos(0);\n var dsin = Math.sin(dTheta) - Math.sin(0);\n var rMin = Math.sqrt(minDistance * minDistance / (dcos * dcos + dsin * dsin)); // s.t. no nodes overlapping\n\n r = Math.max(rMin, r);\n }\n\n var getPos = function getPos(ele, i) {\n var theta = options.startAngle + i * dTheta * (clockwise ? 1 : -1);\n var rx = r * Math.cos(theta);\n var ry = r * Math.sin(theta);\n var pos = {\n x: center.x + rx,\n y: center.y + ry\n };\n return pos;\n };\n\n nodes.layoutPositions(this, options, getPos);\n return this; // chaining\n};\n\nvar defaults$b = {\n fit: true,\n // whether to fit the viewport to the graph\n padding: 30,\n // the padding on fit\n startAngle: 3 / 2 * Math.PI,\n // where nodes start in radians\n sweep: undefined,\n // how many radians should be between the first and last node (defaults to full circle)\n clockwise: true,\n // whether the layout should go clockwise (true) or counterclockwise/anticlockwise (false)\n equidistant: false,\n // whether levels have an equal radial distance betwen them, may cause bounding box overflow\n minNodeSpacing: 10,\n // min spacing between outside of nodes (used for radius adjustment)\n boundingBox: undefined,\n // constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h }\n avoidOverlap: true,\n // prevents node overlap, may overflow boundingBox if not enough space\n nodeDimensionsIncludeLabels: false,\n // Excludes the label when calculating node bounding boxes for the layout algorithm\n height: undefined,\n // height of layout area (overrides container height)\n width: undefined,\n // width of layout area (overrides container width)\n spacingFactor: undefined,\n // Applies a multiplicative factor (>0) to expand or compress the overall area that the nodes take up\n concentric: function concentric(node) {\n // returns numeric value for each node, placing higher nodes in levels towards the centre\n return node.degree();\n },\n levelWidth: function levelWidth(nodes) {\n // the letiation of concentric values in each level\n return nodes.maxDegree() / 4;\n },\n animate: false,\n // whether to transition the node positions\n animationDuration: 500,\n // duration of animation in ms if enabled\n animationEasing: undefined,\n // easing of animation if enabled\n animateFilter: function animateFilter(node, i) {\n return true;\n },\n // a function that determines whether the node should be animated. All nodes animated by default on animate enabled. Non-animated nodes are positioned immediately when the layout starts\n ready: undefined,\n // callback on layoutready\n stop: undefined,\n // callback on layoutstop\n transform: function transform(node, position) {\n return position;\n } // transform a given node position. Useful for changing flow direction in discrete layouts\n\n};\n\nfunction ConcentricLayout(options) {\n this.options = extend({}, defaults$b, options);\n}\n\nConcentricLayout.prototype.run = function () {\n var params = this.options;\n var options = params;\n var clockwise = options.counterclockwise !== undefined ? !options.counterclockwise : options.clockwise;\n var cy = params.cy;\n var eles = options.eles;\n var nodes = eles.nodes().not(':parent');\n var bb = makeBoundingBox(options.boundingBox ? options.boundingBox : {\n x1: 0,\n y1: 0,\n w: cy.width(),\n h: cy.height()\n });\n var center = {\n x: bb.x1 + bb.w / 2,\n y: bb.y1 + bb.h / 2\n };\n var nodeValues = []; // { node, value }\n\n var maxNodeSize = 0;\n\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n var value = void 0; // calculate the node value\n\n value = options.concentric(node);\n nodeValues.push({\n value: value,\n node: node\n }); // for style mapping\n\n node._private.scratch.concentric = value;\n } // in case we used the `concentric` in style\n\n\n nodes.updateStyle(); // calculate max size now based on potentially updated mappers\n\n for (var _i = 0; _i < nodes.length; _i++) {\n var _node = nodes[_i];\n\n var nbb = _node.layoutDimensions(options);\n\n maxNodeSize = Math.max(maxNodeSize, nbb.w, nbb.h);\n } // sort node values in descreasing order\n\n\n nodeValues.sort(function (a, b) {\n return b.value - a.value;\n });\n var levelWidth = options.levelWidth(nodes); // put the values into levels\n\n var levels = [[]];\n var currentLevel = levels[0];\n\n for (var _i2 = 0; _i2 < nodeValues.length; _i2++) {\n var val = nodeValues[_i2];\n\n if (currentLevel.length > 0) {\n var diff = Math.abs(currentLevel[0].value - val.value);\n\n if (diff >= levelWidth) {\n currentLevel = [];\n levels.push(currentLevel);\n }\n }\n\n currentLevel.push(val);\n } // create positions from levels\n\n\n var minDist = maxNodeSize + options.minNodeSpacing; // min dist between nodes\n\n if (!options.avoidOverlap) {\n // then strictly constrain to bb\n var firstLvlHasMulti = levels.length > 0 && levels[0].length > 1;\n var maxR = Math.min(bb.w, bb.h) / 2 - minDist;\n var rStep = maxR / (levels.length + firstLvlHasMulti ? 1 : 0);\n minDist = Math.min(minDist, rStep);\n } // find the metrics for each level\n\n\n var r = 0;\n\n for (var _i3 = 0; _i3 < levels.length; _i3++) {\n var level = levels[_i3];\n var sweep = options.sweep === undefined ? 2 * Math.PI - 2 * Math.PI / level.length : options.sweep;\n var dTheta = level.dTheta = sweep / Math.max(1, level.length - 1); // calculate the radius\n\n if (level.length > 1 && options.avoidOverlap) {\n // but only if more than one node (can't overlap)\n var dcos = Math.cos(dTheta) - Math.cos(0);\n var dsin = Math.sin(dTheta) - Math.sin(0);\n var rMin = Math.sqrt(minDist * minDist / (dcos * dcos + dsin * dsin)); // s.t. no nodes overlapping\n\n r = Math.max(rMin, r);\n }\n\n level.r = r;\n r += minDist;\n }\n\n if (options.equidistant) {\n var rDeltaMax = 0;\n var _r = 0;\n\n for (var _i4 = 0; _i4 < levels.length; _i4++) {\n var _level = levels[_i4];\n var rDelta = _level.r - _r;\n rDeltaMax = Math.max(rDeltaMax, rDelta);\n }\n\n _r = 0;\n\n for (var _i5 = 0; _i5 < levels.length; _i5++) {\n var _level2 = levels[_i5];\n\n if (_i5 === 0) {\n _r = _level2.r;\n }\n\n _level2.r = _r;\n _r += rDeltaMax;\n }\n } // calculate the node positions\n\n\n var pos = {}; // id => position\n\n for (var _i6 = 0; _i6 < levels.length; _i6++) {\n var _level3 = levels[_i6];\n var _dTheta = _level3.dTheta;\n var _r2 = _level3.r;\n\n for (var j = 0; j < _level3.length; j++) {\n var _val = _level3[j];\n var theta = options.startAngle + (clockwise ? 1 : -1) * _dTheta * j;\n var p = {\n x: center.x + _r2 * Math.cos(theta),\n y: center.y + _r2 * Math.sin(theta)\n };\n pos[_val.node.id()] = p;\n }\n } // position the nodes\n\n\n nodes.layoutPositions(this, options, function (ele) {\n var id = ele.id();\n return pos[id];\n });\n return this; // chaining\n};\n\n/*\nThe CoSE layout was written by Gerardo Huck.\nhttps://www.linkedin.com/in/gerardohuck/\n\nBased on the following article:\nhttp://dl.acm.org/citation.cfm?id=1498047\n\nModifications tracked on Github.\n*/\nvar DEBUG;\n/**\n * @brief : default layout options\n */\n\nvar defaults$c = {\n // Called on `layoutready`\n ready: function ready() {},\n // Called on `layoutstop`\n stop: function stop() {},\n // Whether to animate while running the layout\n // true : Animate continuously as the layout is running\n // false : Just show the end result\n // 'end' : Animate with the end result, from the initial positions to the end positions\n animate: true,\n // Easing of the animation for animate:'end'\n animationEasing: undefined,\n // The duration of the animation for animate:'end'\n animationDuration: undefined,\n // A function that determines whether the node should be animated\n // All nodes animated by default on animate enabled\n // Non-animated nodes are positioned immediately when the layout starts\n animateFilter: function animateFilter(node, i) {\n return true;\n },\n // The layout animates only after this many milliseconds for animate:true\n // (prevents flashing on fast runs)\n animationThreshold: 250,\n // Number of iterations between consecutive screen positions update\n refresh: 20,\n // Whether to fit the network view after when done\n fit: true,\n // Padding on fit\n padding: 30,\n // Constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h }\n boundingBox: undefined,\n // Excludes the label when calculating node bounding boxes for the layout algorithm\n nodeDimensionsIncludeLabels: false,\n // Randomize the initial positions of the nodes (true) or use existing positions (false)\n randomize: false,\n // Extra spacing between components in non-compound graphs\n componentSpacing: 40,\n // Node repulsion (non overlapping) multiplier\n nodeRepulsion: function nodeRepulsion(node) {\n return 2048;\n },\n // Node repulsion (overlapping) multiplier\n nodeOverlap: 4,\n // Ideal edge (non nested) length\n idealEdgeLength: function idealEdgeLength(edge) {\n return 32;\n },\n // Divisor to compute edge forces\n edgeElasticity: function edgeElasticity(edge) {\n return 32;\n },\n // Nesting factor (multiplier) to compute ideal edge length for nested edges\n nestingFactor: 1.2,\n // Gravity force (constant)\n gravity: 1,\n // Maximum number of iterations to perform\n numIter: 1000,\n // Initial temperature (maximum node displacement)\n initialTemp: 1000,\n // Cooling factor (how the temperature is reduced between consecutive iterations\n coolingFactor: 0.99,\n // Lower temperature threshold (below this point the layout will end)\n minTemp: 1.0\n};\n/**\n * @brief : constructor\n * @arg options : object containing layout options\n */\n\nfunction CoseLayout(options) {\n this.options = extend({}, defaults$c, options);\n this.options.layout = this;\n}\n/**\n * @brief : runs the layout\n */\n\n\nCoseLayout.prototype.run = function () {\n var options = this.options;\n var cy = options.cy;\n var layout = this;\n layout.stopped = false;\n\n if (options.animate === true || options.animate === false) {\n layout.emit({\n type: 'layoutstart',\n layout: layout\n });\n } // Set DEBUG - Global variable\n\n\n if (true === options.debug) {\n DEBUG = true;\n } else {\n DEBUG = false;\n } // Initialize layout info\n\n\n var layoutInfo = createLayoutInfo(cy, layout, options); // Show LayoutInfo contents if debugging\n\n if (DEBUG) {\n printLayoutInfo(layoutInfo);\n } // If required, randomize node positions\n\n\n if (options.randomize) {\n randomizePositions(layoutInfo, cy);\n }\n\n var startTime = performanceNow();\n\n var refresh = function refresh() {\n refreshPositions(layoutInfo, cy, options); // Fit the graph if necessary\n\n if (true === options.fit) {\n cy.fit(options.padding);\n }\n };\n\n var mainLoop = function mainLoop(i) {\n if (layout.stopped || i >= options.numIter) {\n // logDebug(\"Layout manually stopped. Stopping computation in step \" + i);\n return false;\n } // Do one step in the phisical simulation\n\n\n step$1(layoutInfo, options, i); // Update temperature\n\n layoutInfo.temperature = layoutInfo.temperature * options.coolingFactor; // logDebug(\"New temperature: \" + layoutInfo.temperature);\n\n if (layoutInfo.temperature < options.minTemp) {\n // logDebug(\"Temperature drop below minimum threshold. Stopping computation in step \" + i);\n return false;\n }\n\n return true;\n };\n\n var done = function done() {\n if (options.animate === true || options.animate === false) {\n refresh(); // Layout has finished\n\n layout.one('layoutstop', options.stop);\n layout.emit({\n type: 'layoutstop',\n layout: layout\n });\n } else {\n var nodes = options.eles.nodes();\n var getScaledPos = getScaleInBoundsFn(layoutInfo, options, nodes);\n nodes.layoutPositions(layout, options, getScaledPos);\n }\n };\n\n var i = 0;\n var loopRet = true;\n\n if (options.animate === true) {\n var frame = function frame() {\n var f = 0;\n\n while (loopRet && f < options.refresh) {\n loopRet = mainLoop(i);\n i++;\n f++;\n }\n\n if (!loopRet) {\n // it's done\n separateComponents(layoutInfo, options);\n done();\n } else {\n var now = performanceNow();\n\n if (now - startTime >= options.animationThreshold) {\n refresh();\n }\n\n requestAnimationFrame(frame);\n }\n };\n\n frame();\n } else {\n while (loopRet) {\n loopRet = mainLoop(i);\n i++;\n }\n\n separateComponents(layoutInfo, options);\n done();\n }\n\n return this; // chaining\n};\n/**\n * @brief : called on continuous layouts to stop them before they finish\n */\n\n\nCoseLayout.prototype.stop = function () {\n this.stopped = true;\n\n if (this.thread) {\n this.thread.stop();\n }\n\n this.emit('layoutstop');\n return this; // chaining\n};\n\nCoseLayout.prototype.destroy = function () {\n if (this.thread) {\n this.thread.stop();\n }\n\n return this; // chaining\n};\n/**\n * @brief : Creates an object which is contains all the data\n * used in the layout process\n * @arg cy : cytoscape.js object\n * @return : layoutInfo object initialized\n */\n\n\nvar createLayoutInfo = function createLayoutInfo(cy, layout, options) {\n // Shortcut\n var edges = options.eles.edges();\n var nodes = options.eles.nodes();\n var layoutInfo = {\n isCompound: cy.hasCompoundNodes(),\n layoutNodes: [],\n idToIndex: {},\n nodeSize: nodes.size(),\n graphSet: [],\n indexToGraph: [],\n layoutEdges: [],\n edgeSize: edges.size(),\n temperature: options.initialTemp,\n clientWidth: cy.width(),\n clientHeight: cy.width(),\n boundingBox: makeBoundingBox(options.boundingBox ? options.boundingBox : {\n x1: 0,\n y1: 0,\n w: cy.width(),\n h: cy.height()\n })\n };\n var components = options.eles.components();\n var id2cmptId = {};\n\n for (var i = 0; i < components.length; i++) {\n var component = components[i];\n\n for (var j = 0; j < component.length; j++) {\n var node = component[j];\n id2cmptId[node.id()] = i;\n }\n } // Iterate over all nodes, creating layout nodes\n\n\n for (var i = 0; i < layoutInfo.nodeSize; i++) {\n var n = nodes[i];\n var nbb = n.layoutDimensions(options);\n var tempNode = {};\n tempNode.isLocked = n.locked();\n tempNode.id = n.data('id');\n tempNode.parentId = n.data('parent');\n tempNode.cmptId = id2cmptId[n.id()];\n tempNode.children = [];\n tempNode.positionX = n.position('x');\n tempNode.positionY = n.position('y');\n tempNode.offsetX = 0;\n tempNode.offsetY = 0;\n tempNode.height = nbb.w;\n tempNode.width = nbb.h;\n tempNode.maxX = tempNode.positionX + tempNode.width / 2;\n tempNode.minX = tempNode.positionX - tempNode.width / 2;\n tempNode.maxY = tempNode.positionY + tempNode.height / 2;\n tempNode.minY = tempNode.positionY - tempNode.height / 2;\n tempNode.padLeft = parseFloat(n.style('padding'));\n tempNode.padRight = parseFloat(n.style('padding'));\n tempNode.padTop = parseFloat(n.style('padding'));\n tempNode.padBottom = parseFloat(n.style('padding')); // forces\n\n tempNode.nodeRepulsion = fn(options.nodeRepulsion) ? options.nodeRepulsion(n) : options.nodeRepulsion; // Add new node\n\n layoutInfo.layoutNodes.push(tempNode); // Add entry to id-index map\n\n layoutInfo.idToIndex[tempNode.id] = i;\n } // Inline implementation of a queue, used for traversing the graph in BFS order\n\n\n var queue = [];\n var start = 0; // Points to the start the queue\n\n var end = -1; // Points to the end of the queue\n\n var tempGraph = []; // Second pass to add child information and\n // initialize queue for hierarchical traversal\n\n for (var i = 0; i < layoutInfo.nodeSize; i++) {\n var n = layoutInfo.layoutNodes[i];\n var p_id = n.parentId; // Check if node n has a parent node\n\n if (null != p_id) {\n // Add node Id to parent's list of children\n layoutInfo.layoutNodes[layoutInfo.idToIndex[p_id]].children.push(n.id);\n } else {\n // If a node doesn't have a parent, then it's in the root graph\n queue[++end] = n.id;\n tempGraph.push(n.id);\n }\n } // Add root graph to graphSet\n\n\n layoutInfo.graphSet.push(tempGraph); // Traverse the graph, level by level,\n\n while (start <= end) {\n // Get the node to visit and remove it from queue\n var node_id = queue[start++];\n var node_ix = layoutInfo.idToIndex[node_id];\n var node = layoutInfo.layoutNodes[node_ix];\n var children = node.children;\n\n if (children.length > 0) {\n // Add children nodes as a new graph to graph set\n layoutInfo.graphSet.push(children); // Add children to que queue to be visited\n\n for (var i = 0; i < children.length; i++) {\n queue[++end] = children[i];\n }\n }\n } // Create indexToGraph map\n\n\n for (var i = 0; i < layoutInfo.graphSet.length; i++) {\n var graph = layoutInfo.graphSet[i];\n\n for (var j = 0; j < graph.length; j++) {\n var index = layoutInfo.idToIndex[graph[j]];\n layoutInfo.indexToGraph[index] = i;\n }\n } // Iterate over all edges, creating Layout Edges\n\n\n for (var i = 0; i < layoutInfo.edgeSize; i++) {\n var e = edges[i];\n var tempEdge = {};\n tempEdge.id = e.data('id');\n tempEdge.sourceId = e.data('source');\n tempEdge.targetId = e.data('target'); // Compute ideal length\n\n var idealLength = fn(options.idealEdgeLength) ? options.idealEdgeLength(e) : options.idealEdgeLength;\n var elasticity = fn(options.edgeElasticity) ? options.edgeElasticity(e) : options.edgeElasticity; // Check if it's an inter graph edge\n\n var sourceIx = layoutInfo.idToIndex[tempEdge.sourceId];\n var targetIx = layoutInfo.idToIndex[tempEdge.targetId];\n var sourceGraph = layoutInfo.indexToGraph[sourceIx];\n var targetGraph = layoutInfo.indexToGraph[targetIx];\n\n if (sourceGraph != targetGraph) {\n // Find lowest common graph ancestor\n var lca = findLCA(tempEdge.sourceId, tempEdge.targetId, layoutInfo); // Compute sum of node depths, relative to lca graph\n\n var lcaGraph = layoutInfo.graphSet[lca];\n var depth = 0; // Source depth\n\n var tempNode = layoutInfo.layoutNodes[sourceIx];\n\n while (-1 === lcaGraph.indexOf(tempNode.id)) {\n tempNode = layoutInfo.layoutNodes[layoutInfo.idToIndex[tempNode.parentId]];\n depth++;\n } // Target depth\n\n\n tempNode = layoutInfo.layoutNodes[targetIx];\n\n while (-1 === lcaGraph.indexOf(tempNode.id)) {\n tempNode = layoutInfo.layoutNodes[layoutInfo.idToIndex[tempNode.parentId]];\n depth++;\n } // logDebug('LCA of nodes ' + tempEdge.sourceId + ' and ' + tempEdge.targetId +\n // \". Index: \" + lca + \" Contents: \" + lcaGraph.toString() +\n // \". Depth: \" + depth);\n // Update idealLength\n\n\n idealLength *= depth * options.nestingFactor;\n }\n\n tempEdge.idealLength = idealLength;\n tempEdge.elasticity = elasticity;\n layoutInfo.layoutEdges.push(tempEdge);\n } // Finally, return layoutInfo object\n\n\n return layoutInfo;\n};\n/**\n * @brief : This function finds the index of the lowest common\n * graph ancestor between 2 nodes in the subtree\n * (from the graph hierarchy induced tree) whose\n * root is graphIx\n *\n * @arg node1: node1's ID\n * @arg node2: node2's ID\n * @arg layoutInfo: layoutInfo object\n *\n */\n\n\nvar findLCA = function findLCA(node1, node2, layoutInfo) {\n // Find their common ancester, starting from the root graph\n var res = findLCA_aux(node1, node2, 0, layoutInfo);\n\n if (2 > res.count) {\n // If aux function couldn't find the common ancester,\n // then it is the root graph\n return 0;\n } else {\n return res.graph;\n }\n};\n/**\n * @brief : Auxiliary function used for LCA computation\n *\n * @arg node1 : node1's ID\n * @arg node2 : node2's ID\n * @arg graphIx : subgraph index\n * @arg layoutInfo : layoutInfo object\n *\n * @return : object of the form {count: X, graph: Y}, where:\n * X is the number of ancesters (max: 2) found in\n * graphIx (and it's subgraphs),\n * Y is the graph index of the lowest graph containing\n * all X nodes\n */\n\n\nvar findLCA_aux = function findLCA_aux(node1, node2, graphIx, layoutInfo) {\n var graph = layoutInfo.graphSet[graphIx]; // If both nodes belongs to graphIx\n\n if (-1 < graph.indexOf(node1) && -1 < graph.indexOf(node2)) {\n return {\n count: 2,\n graph: graphIx\n };\n } // Make recursive calls for all subgraphs\n\n\n var c = 0;\n\n for (var i = 0; i < graph.length; i++) {\n var nodeId = graph[i];\n var nodeIx = layoutInfo.idToIndex[nodeId];\n var children = layoutInfo.layoutNodes[nodeIx].children; // If the node has no child, skip it\n\n if (0 === children.length) {\n continue;\n }\n\n var childGraphIx = layoutInfo.indexToGraph[layoutInfo.idToIndex[children[0]]];\n var result = findLCA_aux(node1, node2, childGraphIx, layoutInfo);\n\n if (0 === result.count) {\n // Neither node1 nor node2 are present in this subgraph\n continue;\n } else if (1 === result.count) {\n // One of (node1, node2) is present in this subgraph\n c++;\n\n if (2 === c) {\n // We've already found both nodes, no need to keep searching\n break;\n }\n } else {\n // Both nodes are present in this subgraph\n return result;\n }\n }\n\n return {\n count: c,\n graph: graphIx\n };\n};\n/**\n * @brief: printsLayoutInfo into js console\n * Only used for debbuging\n */\n\n\nif (false) {\n var printLayoutInfo;\n}\n/**\n * @brief : Randomizes the position of all nodes\n */\n\n\nvar randomizePositions = function randomizePositions(layoutInfo, cy) {\n var width = layoutInfo.clientWidth;\n var height = layoutInfo.clientHeight;\n\n for (var i = 0; i < layoutInfo.nodeSize; i++) {\n var n = layoutInfo.layoutNodes[i]; // No need to randomize compound nodes or locked nodes\n\n if (0 === n.children.length && !n.isLocked) {\n n.positionX = Math.random() * width;\n n.positionY = Math.random() * height;\n }\n }\n};\n\nvar getScaleInBoundsFn = function getScaleInBoundsFn(layoutInfo, options, nodes) {\n var bb = layoutInfo.boundingBox;\n var coseBB = {\n x1: Infinity,\n x2: -Infinity,\n y1: Infinity,\n y2: -Infinity\n };\n\n if (options.boundingBox) {\n nodes.forEach(function (node) {\n var lnode = layoutInfo.layoutNodes[layoutInfo.idToIndex[node.data('id')]];\n coseBB.x1 = Math.min(coseBB.x1, lnode.positionX);\n coseBB.x2 = Math.max(coseBB.x2, lnode.positionX);\n coseBB.y1 = Math.min(coseBB.y1, lnode.positionY);\n coseBB.y2 = Math.max(coseBB.y2, lnode.positionY);\n });\n coseBB.w = coseBB.x2 - coseBB.x1;\n coseBB.h = coseBB.y2 - coseBB.y1;\n }\n\n return function (ele, i) {\n var lnode = layoutInfo.layoutNodes[layoutInfo.idToIndex[ele.data('id')]];\n\n if (options.boundingBox) {\n // then add extra bounding box constraint\n var pctX = (lnode.positionX - coseBB.x1) / coseBB.w;\n var pctY = (lnode.positionY - coseBB.y1) / coseBB.h;\n return {\n x: bb.x1 + pctX * bb.w,\n y: bb.y1 + pctY * bb.h\n };\n } else {\n return {\n x: lnode.positionX,\n y: lnode.positionY\n };\n }\n };\n};\n/**\n * @brief : Updates the positions of nodes in the network\n * @arg layoutInfo : LayoutInfo object\n * @arg cy : Cytoscape object\n * @arg options : Layout options\n */\n\n\nvar refreshPositions = function refreshPositions(layoutInfo, cy, options) {\n // var s = 'Refreshing positions';\n // logDebug(s);\n var layout = options.layout;\n var nodes = options.eles.nodes();\n var getScaledPos = getScaleInBoundsFn(layoutInfo, options, nodes);\n nodes.positions(getScaledPos); // Trigger layoutReady only on first call\n\n if (true !== layoutInfo.ready) {\n // s = 'Triggering layoutready';\n // logDebug(s);\n layoutInfo.ready = true;\n layout.one('layoutready', options.ready);\n layout.emit({\n type: 'layoutready',\n layout: this\n });\n }\n};\n/**\n * @brief : Logs a debug message in JS console, if DEBUG is ON\n */\n// var logDebug = function(text) {\n// if (DEBUG) {\n// console.debug(text);\n// }\n// };\n\n/**\n * @brief : Performs one iteration of the physical simulation\n * @arg layoutInfo : LayoutInfo object already initialized\n * @arg cy : Cytoscape object\n * @arg options : Layout options\n */\n\n\nvar step$1 = function step(layoutInfo, options, _step) {\n // var s = \"\\n\\n###############################\";\n // s += \"\\nSTEP: \" + step;\n // s += \"\\n###############################\\n\";\n // logDebug(s);\n // Calculate node repulsions\n calculateNodeForces(layoutInfo, options); // Calculate edge forces\n\n calculateEdgeForces(layoutInfo, options); // Calculate gravity forces\n\n calculateGravityForces(layoutInfo, options); // Propagate forces from parent to child\n\n propagateForces(layoutInfo, options); // Update positions based on calculated forces\n\n updatePositions(layoutInfo, options);\n};\n/**\n * @brief : Computes the node repulsion forces\n */\n\n\nvar calculateNodeForces = function calculateNodeForces(layoutInfo, options) {\n // Go through each of the graphs in graphSet\n // Nodes only repel each other if they belong to the same graph\n // var s = 'calculateNodeForces';\n // logDebug(s);\n for (var i = 0; i < layoutInfo.graphSet.length; i++) {\n var graph = layoutInfo.graphSet[i];\n var numNodes = graph.length; // s = \"Set: \" + graph.toString();\n // logDebug(s);\n // Now get all the pairs of nodes\n // Only get each pair once, (A, B) = (B, A)\n\n for (var j = 0; j < numNodes; j++) {\n var node1 = layoutInfo.layoutNodes[layoutInfo.idToIndex[graph[j]]];\n\n for (var k = j + 1; k < numNodes; k++) {\n var node2 = layoutInfo.layoutNodes[layoutInfo.idToIndex[graph[k]]];\n nodeRepulsion(node1, node2, layoutInfo, options);\n }\n }\n }\n};\n\nvar randomDistance = function randomDistance(max) {\n return -max + 2 * max * Math.random();\n};\n/**\n * @brief : Compute the node repulsion forces between a pair of nodes\n */\n\n\nvar nodeRepulsion = function nodeRepulsion(node1, node2, layoutInfo, options) {\n // var s = \"Node repulsion. Node1: \" + node1.id + \" Node2: \" + node2.id;\n var cmptId1 = node1.cmptId;\n var cmptId2 = node2.cmptId;\n\n if (cmptId1 !== cmptId2 && !layoutInfo.isCompound) {\n return;\n } // Get direction of line connecting both node centers\n\n\n var directionX = node2.positionX - node1.positionX;\n var directionY = node2.positionY - node1.positionY;\n var maxRandDist = 1; // s += \"\\ndirectionX: \" + directionX + \", directionY: \" + directionY;\n // If both centers are the same, apply a random force\n\n if (0 === directionX && 0 === directionY) {\n directionX = randomDistance(maxRandDist);\n directionY = randomDistance(maxRandDist);\n }\n\n var overlap = nodesOverlap(node1, node2, directionX, directionY);\n\n if (overlap > 0) {\n // s += \"\\nNodes DO overlap.\";\n // s += \"\\nOverlap: \" + overlap;\n // If nodes overlap, repulsion force is proportional\n // to the overlap\n var force = options.nodeOverlap * overlap; // Compute the module and components of the force vector\n\n var distance = Math.sqrt(directionX * directionX + directionY * directionY); // s += \"\\nDistance: \" + distance;\n\n var forceX = force * directionX / distance;\n var forceY = force * directionY / distance;\n } else {\n // s += \"\\nNodes do NOT overlap.\";\n // If there's no overlap, force is inversely proportional\n // to squared distance\n // Get clipping points for both nodes\n var point1 = findClippingPoint(node1, directionX, directionY);\n var point2 = findClippingPoint(node2, -1 * directionX, -1 * directionY); // Use clipping points to compute distance\n\n var distanceX = point2.x - point1.x;\n var distanceY = point2.y - point1.y;\n var distanceSqr = distanceX * distanceX + distanceY * distanceY;\n var distance = Math.sqrt(distanceSqr); // s += \"\\nDistance: \" + distance;\n // Compute the module and components of the force vector\n\n var force = (node1.nodeRepulsion + node2.nodeRepulsion) / distanceSqr;\n var forceX = force * distanceX / distance;\n var forceY = force * distanceY / distance;\n } // Apply force\n\n\n if (!node1.isLocked) {\n node1.offsetX -= forceX;\n node1.offsetY -= forceY;\n }\n\n if (!node2.isLocked) {\n node2.offsetX += forceX;\n node2.offsetY += forceY;\n } // s += \"\\nForceX: \" + forceX + \" ForceY: \" + forceY;\n // logDebug(s);\n\n\n return;\n};\n/**\n * @brief : Determines whether two nodes overlap or not\n * @return : Amount of overlapping (0 => no overlap)\n */\n\n\nvar nodesOverlap = function nodesOverlap(node1, node2, dX, dY) {\n if (dX > 0) {\n var overlapX = node1.maxX - node2.minX;\n } else {\n var overlapX = node2.maxX - node1.minX;\n }\n\n if (dY > 0) {\n var overlapY = node1.maxY - node2.minY;\n } else {\n var overlapY = node2.maxY - node1.minY;\n }\n\n if (overlapX >= 0 && overlapY >= 0) {\n return Math.sqrt(overlapX * overlapX + overlapY * overlapY);\n } else {\n return 0;\n }\n};\n/**\n * @brief : Finds the point in which an edge (direction dX, dY) intersects\n * the rectangular bounding box of it's source/target node\n */\n\n\nvar findClippingPoint = function findClippingPoint(node, dX, dY) {\n // Shorcuts\n var X = node.positionX;\n var Y = node.positionY;\n var H = node.height || 1;\n var W = node.width || 1;\n var dirSlope = dY / dX;\n var nodeSlope = H / W; // var s = 'Computing clipping point of node ' + node.id +\n // \" . Height: \" + H + \", Width: \" + W +\n // \"\\nDirection \" + dX + \", \" + dY;\n //\n // Compute intersection\n\n var res = {}; // Case: Vertical direction (up)\n\n if (0 === dX && 0 < dY) {\n res.x = X; // s += \"\\nUp direction\";\n\n res.y = Y + H / 2;\n return res;\n } // Case: Vertical direction (down)\n\n\n if (0 === dX && 0 > dY) {\n res.x = X;\n res.y = Y + H / 2; // s += \"\\nDown direction\";\n\n return res;\n } // Case: Intersects the right border\n\n\n if (0 < dX && -1 * nodeSlope <= dirSlope && dirSlope <= nodeSlope) {\n res.x = X + W / 2;\n res.y = Y + W * dY / 2 / dX; // s += \"\\nRightborder\";\n\n return res;\n } // Case: Intersects the left border\n\n\n if (0 > dX && -1 * nodeSlope <= dirSlope && dirSlope <= nodeSlope) {\n res.x = X - W / 2;\n res.y = Y - W * dY / 2 / dX; // s += \"\\nLeftborder\";\n\n return res;\n } // Case: Intersects the top border\n\n\n if (0 < dY && (dirSlope <= -1 * nodeSlope || dirSlope >= nodeSlope)) {\n res.x = X + H * dX / 2 / dY;\n res.y = Y + H / 2; // s += \"\\nTop border\";\n\n return res;\n } // Case: Intersects the bottom border\n\n\n if (0 > dY && (dirSlope <= -1 * nodeSlope || dirSlope >= nodeSlope)) {\n res.x = X - H * dX / 2 / dY;\n res.y = Y - H / 2; // s += \"\\nBottom border\";\n\n return res;\n } // s += \"\\nClipping point found at \" + res.x + \", \" + res.y;\n // logDebug(s);\n\n\n return res;\n};\n/**\n * @brief : Calculates all edge forces\n */\n\n\nvar calculateEdgeForces = function calculateEdgeForces(layoutInfo, options) {\n // Iterate over all edges\n for (var i = 0; i < layoutInfo.edgeSize; i++) {\n // Get edge, source & target nodes\n var edge = layoutInfo.layoutEdges[i];\n var sourceIx = layoutInfo.idToIndex[edge.sourceId];\n var source = layoutInfo.layoutNodes[sourceIx];\n var targetIx = layoutInfo.idToIndex[edge.targetId];\n var target = layoutInfo.layoutNodes[targetIx]; // Get direction of line connecting both node centers\n\n var directionX = target.positionX - source.positionX;\n var directionY = target.positionY - source.positionY; // If both centers are the same, do nothing.\n // A random force has already been applied as node repulsion\n\n if (0 === directionX && 0 === directionY) {\n continue;\n } // Get clipping points for both nodes\n\n\n var point1 = findClippingPoint(source, directionX, directionY);\n var point2 = findClippingPoint(target, -1 * directionX, -1 * directionY);\n var lx = point2.x - point1.x;\n var ly = point2.y - point1.y;\n var l = Math.sqrt(lx * lx + ly * ly);\n var force = Math.pow(edge.idealLength - l, 2) / edge.elasticity;\n\n if (0 !== l) {\n var forceX = force * lx / l;\n var forceY = force * ly / l;\n } else {\n var forceX = 0;\n var forceY = 0;\n } // Add this force to target and source nodes\n\n\n if (!source.isLocked) {\n source.offsetX += forceX;\n source.offsetY += forceY;\n }\n\n if (!target.isLocked) {\n target.offsetX -= forceX;\n target.offsetY -= forceY;\n } // var s = 'Edge force between nodes ' + source.id + ' and ' + target.id;\n // s += \"\\nDistance: \" + l + \" Force: (\" + forceX + \", \" + forceY + \")\";\n // logDebug(s);\n\n }\n};\n/**\n * @brief : Computes gravity forces for all nodes\n */\n\n\nvar calculateGravityForces = function calculateGravityForces(layoutInfo, options) {\n var distThreshold = 1; // var s = 'calculateGravityForces';\n // logDebug(s);\n\n for (var i = 0; i < layoutInfo.graphSet.length; i++) {\n var graph = layoutInfo.graphSet[i];\n var numNodes = graph.length; // s = \"Set: \" + graph.toString();\n // logDebug(s);\n // Compute graph center\n\n if (0 === i) {\n var centerX = layoutInfo.clientHeight / 2;\n var centerY = layoutInfo.clientWidth / 2;\n } else {\n // Get Parent node for this graph, and use its position as center\n var temp = layoutInfo.layoutNodes[layoutInfo.idToIndex[graph[0]]];\n var parent = layoutInfo.layoutNodes[layoutInfo.idToIndex[temp.parentId]];\n var centerX = parent.positionX;\n var centerY = parent.positionY;\n } // s = \"Center found at: \" + centerX + \", \" + centerY;\n // logDebug(s);\n // Apply force to all nodes in graph\n\n\n for (var j = 0; j < numNodes; j++) {\n var node = layoutInfo.layoutNodes[layoutInfo.idToIndex[graph[j]]]; // s = \"Node: \" + node.id;\n\n if (node.isLocked) {\n continue;\n }\n\n var dx = centerX - node.positionX;\n var dy = centerY - node.positionY;\n var d = Math.sqrt(dx * dx + dy * dy);\n\n if (d > distThreshold) {\n var fx = options.gravity * dx / d;\n var fy = options.gravity * dy / d;\n node.offsetX += fx;\n node.offsetY += fy; // s += \": Applied force: \" + fx + \", \" + fy;\n } // s += \": skypped since it's too close to center\";\n // logDebug(s);\n\n }\n }\n};\n/**\n * @brief : This function propagates the existing offsets from\n * parent nodes to its descendents.\n * @arg layoutInfo : layoutInfo Object\n * @arg cy : cytoscape Object\n * @arg options : Layout options\n */\n\n\nvar propagateForces = function propagateForces(layoutInfo, options) {\n // Inline implementation of a queue, used for traversing the graph in BFS order\n var queue = [];\n var start = 0; // Points to the start the queue\n\n var end = -1; // Points to the end of the queue\n // logDebug('propagateForces');\n // Start by visiting the nodes in the root graph\n\n queue.push.apply(queue, layoutInfo.graphSet[0]);\n end += layoutInfo.graphSet[0].length; // Traverse the graph, level by level,\n\n while (start <= end) {\n // Get the node to visit and remove it from queue\n var nodeId = queue[start++];\n var nodeIndex = layoutInfo.idToIndex[nodeId];\n var node = layoutInfo.layoutNodes[nodeIndex];\n var children = node.children; // We only need to process the node if it's compound\n\n if (0 < children.length && !node.isLocked) {\n var offX = node.offsetX;\n var offY = node.offsetY; // var s = \"Propagating offset from parent node : \" + node.id +\n // \". OffsetX: \" + offX + \". OffsetY: \" + offY;\n // s += \"\\n Children: \" + children.toString();\n // logDebug(s);\n\n for (var i = 0; i < children.length; i++) {\n var childNode = layoutInfo.layoutNodes[layoutInfo.idToIndex[children[i]]]; // Propagate offset\n\n childNode.offsetX += offX;\n childNode.offsetY += offY; // Add children to queue to be visited\n\n queue[++end] = children[i];\n } // Reset parent offsets\n\n\n node.offsetX = 0;\n node.offsetY = 0;\n }\n }\n};\n/**\n * @brief : Updates the layout model positions, based on\n * the accumulated forces\n */\n\n\nvar updatePositions = function updatePositions(layoutInfo, options) {\n // var s = 'Updating positions';\n // logDebug(s);\n // Reset boundaries for compound nodes\n for (var i = 0; i < layoutInfo.nodeSize; i++) {\n var n = layoutInfo.layoutNodes[i];\n\n if (0 < n.children.length) {\n // logDebug(\"Resetting boundaries of compound node: \" + n.id);\n n.maxX = undefined;\n n.minX = undefined;\n n.maxY = undefined;\n n.minY = undefined;\n }\n }\n\n for (var i = 0; i < layoutInfo.nodeSize; i++) {\n var n = layoutInfo.layoutNodes[i];\n\n if (0 < n.children.length || n.isLocked) {\n // No need to set compound or locked node position\n // logDebug(\"Skipping position update of node: \" + n.id);\n continue;\n } // s = \"Node: \" + n.id + \" Previous position: (\" +\n // n.positionX + \", \" + n.positionY + \").\";\n // Limit displacement in order to improve stability\n\n\n var tempForce = limitForce(n.offsetX, n.offsetY, layoutInfo.temperature);\n n.positionX += tempForce.x;\n n.positionY += tempForce.y;\n n.offsetX = 0;\n n.offsetY = 0;\n n.minX = n.positionX - n.width;\n n.maxX = n.positionX + n.width;\n n.minY = n.positionY - n.height;\n n.maxY = n.positionY + n.height; // s += \" New Position: (\" + n.positionX + \", \" + n.positionY + \").\";\n // logDebug(s);\n // Update ancestry boudaries\n\n updateAncestryBoundaries(n, layoutInfo);\n } // Update size, position of compund nodes\n\n\n for (var i = 0; i < layoutInfo.nodeSize; i++) {\n var n = layoutInfo.layoutNodes[i];\n\n if (0 < n.children.length && !n.isLocked) {\n n.positionX = (n.maxX + n.minX) / 2;\n n.positionY = (n.maxY + n.minY) / 2;\n n.width = n.maxX - n.minX;\n n.height = n.maxY - n.minY; // s = \"Updating position, size of compound node \" + n.id;\n // s += \"\\nPositionX: \" + n.positionX + \", PositionY: \" + n.positionY;\n // s += \"\\nWidth: \" + n.width + \", Height: \" + n.height;\n // logDebug(s);\n }\n }\n};\n/**\n * @brief : Limits a force (forceX, forceY) to be not\n * greater (in modulo) than max.\n 8 Preserves force direction.\n */\n\n\nvar limitForce = function limitForce(forceX, forceY, max) {\n // var s = \"Limiting force: (\" + forceX + \", \" + forceY + \"). Max: \" + max;\n var force = Math.sqrt(forceX * forceX + forceY * forceY);\n\n if (force > max) {\n var res = {\n x: max * forceX / force,\n y: max * forceY / force\n };\n } else {\n var res = {\n x: forceX,\n y: forceY\n };\n } // s += \".\\nResult: (\" + res.x + \", \" + res.y + \")\";\n // logDebug(s);\n\n\n return res;\n};\n/**\n * @brief : Function used for keeping track of compound node\n * sizes, since they should bound all their subnodes.\n */\n\n\nvar updateAncestryBoundaries = function updateAncestryBoundaries(node, layoutInfo) {\n // var s = \"Propagating new position/size of node \" + node.id;\n var parentId = node.parentId;\n\n if (null == parentId) {\n // If there's no parent, we are done\n // s += \". No parent node.\";\n // logDebug(s);\n return;\n } // Get Parent Node\n\n\n var p = layoutInfo.layoutNodes[layoutInfo.idToIndex[parentId]];\n var flag = false; // MaxX\n\n if (null == p.maxX || node.maxX + p.padRight > p.maxX) {\n p.maxX = node.maxX + p.padRight;\n flag = true; // s += \"\\nNew maxX for parent node \" + p.id + \": \" + p.maxX;\n } // MinX\n\n\n if (null == p.minX || node.minX - p.padLeft < p.minX) {\n p.minX = node.minX - p.padLeft;\n flag = true; // s += \"\\nNew minX for parent node \" + p.id + \": \" + p.minX;\n } // MaxY\n\n\n if (null == p.maxY || node.maxY + p.padBottom > p.maxY) {\n p.maxY = node.maxY + p.padBottom;\n flag = true; // s += \"\\nNew maxY for parent node \" + p.id + \": \" + p.maxY;\n } // MinY\n\n\n if (null == p.minY || node.minY - p.padTop < p.minY) {\n p.minY = node.minY - p.padTop;\n flag = true; // s += \"\\nNew minY for parent node \" + p.id + \": \" + p.minY;\n } // If updated boundaries, propagate changes upward\n\n\n if (flag) {\n // logDebug(s);\n return updateAncestryBoundaries(p, layoutInfo);\n } // s += \". No changes in boundaries/position of parent node \" + p.id;\n // logDebug(s);\n\n\n return;\n};\n\nvar separateComponents = function separateComponents(layoutInfo, options) {\n var nodes = layoutInfo.layoutNodes;\n var components = [];\n\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n var cid = node.cmptId;\n var component = components[cid] = components[cid] || [];\n component.push(node);\n }\n\n var totalA = 0;\n\n for (var i = 0; i < components.length; i++) {\n var c = components[i];\n\n if (!c) {\n continue;\n }\n\n c.x1 = Infinity;\n c.x2 = -Infinity;\n c.y1 = Infinity;\n c.y2 = -Infinity;\n\n for (var j = 0; j < c.length; j++) {\n var n = c[j];\n c.x1 = Math.min(c.x1, n.positionX - n.width / 2);\n c.x2 = Math.max(c.x2, n.positionX + n.width / 2);\n c.y1 = Math.min(c.y1, n.positionY - n.height / 2);\n c.y2 = Math.max(c.y2, n.positionY + n.height / 2);\n }\n\n c.w = c.x2 - c.x1;\n c.h = c.y2 - c.y1;\n totalA += c.w * c.h;\n }\n\n components.sort(function (c1, c2) {\n return c2.w * c2.h - c1.w * c1.h;\n });\n var x = 0;\n var y = 0;\n var usedW = 0;\n var rowH = 0;\n var maxRowW = Math.sqrt(totalA) * layoutInfo.clientWidth / layoutInfo.clientHeight;\n\n for (var i = 0; i < components.length; i++) {\n var c = components[i];\n\n if (!c) {\n continue;\n }\n\n for (var j = 0; j < c.length; j++) {\n var n = c[j];\n\n if (!n.isLocked) {\n n.positionX += x - c.x1;\n n.positionY += y - c.y1;\n }\n }\n\n x += c.w + options.componentSpacing;\n usedW += c.w + options.componentSpacing;\n rowH = Math.max(rowH, c.h);\n\n if (usedW > maxRowW) {\n y += rowH + options.componentSpacing;\n x = 0;\n usedW = 0;\n rowH = 0;\n }\n }\n};\n\nvar defaults$d = {\n fit: true,\n // whether to fit the viewport to the graph\n padding: 30,\n // padding used on fit\n boundingBox: undefined,\n // constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h }\n avoidOverlap: true,\n // prevents node overlap, may overflow boundingBox if not enough space\n avoidOverlapPadding: 10,\n // extra spacing around nodes when avoidOverlap: true\n nodeDimensionsIncludeLabels: false,\n // Excludes the label when calculating node bounding boxes for the layout algorithm\n spacingFactor: undefined,\n // Applies a multiplicative factor (>0) to expand or compress the overall area that the nodes take up\n condense: false,\n // uses all available space on false, uses minimal space on true\n rows: undefined,\n // force num of rows in the grid\n cols: undefined,\n // force num of columns in the grid\n position: function position(node) {},\n // returns { row, col } for element\n sort: undefined,\n // a sorting function to order the nodes; e.g. function(a, b){ return a.data('weight') - b.data('weight') }\n animate: false,\n // whether to transition the node positions\n animationDuration: 500,\n // duration of animation in ms if enabled\n animationEasing: undefined,\n // easing of animation if enabled\n animateFilter: function animateFilter(node, i) {\n return true;\n },\n // a function that determines whether the node should be animated. All nodes animated by default on animate enabled. Non-animated nodes are positioned immediately when the layout starts\n ready: undefined,\n // callback on layoutready\n stop: undefined,\n // callback on layoutstop\n transform: function transform(node, position) {\n return position;\n } // transform a given node position. Useful for changing flow direction in discrete layouts \n\n};\n\nfunction GridLayout(options) {\n this.options = extend({}, defaults$d, options);\n}\n\nGridLayout.prototype.run = function () {\n var params = this.options;\n var options = params;\n var cy = params.cy;\n var eles = options.eles;\n var nodes = eles.nodes().not(':parent');\n\n if (options.sort) {\n nodes = nodes.sort(options.sort);\n }\n\n var bb = makeBoundingBox(options.boundingBox ? options.boundingBox : {\n x1: 0,\n y1: 0,\n w: cy.width(),\n h: cy.height()\n });\n\n if (bb.h === 0 || bb.w === 0) {\n nodes.layoutPositions(this, options, function (ele) {\n return {\n x: bb.x1,\n y: bb.y1\n };\n });\n } else {\n // width/height * splits^2 = cells where splits is number of times to split width\n var cells = nodes.size();\n var splits = Math.sqrt(cells * bb.h / bb.w);\n var rows = Math.round(splits);\n var cols = Math.round(bb.w / bb.h * splits);\n\n var small = function small(val) {\n if (val == null) {\n return Math.min(rows, cols);\n } else {\n var min = Math.min(rows, cols);\n\n if (min == rows) {\n rows = val;\n } else {\n cols = val;\n }\n }\n };\n\n var large = function large(val) {\n if (val == null) {\n return Math.max(rows, cols);\n } else {\n var max = Math.max(rows, cols);\n\n if (max == rows) {\n rows = val;\n } else {\n cols = val;\n }\n }\n };\n\n var oRows = options.rows;\n var oCols = options.cols != null ? options.cols : options.columns; // if rows or columns were set in options, use those values\n\n if (oRows != null && oCols != null) {\n rows = oRows;\n cols = oCols;\n } else if (oRows != null && oCols == null) {\n rows = oRows;\n cols = Math.ceil(cells / rows);\n } else if (oRows == null && oCols != null) {\n cols = oCols;\n rows = Math.ceil(cells / cols);\n } // otherwise use the automatic values and adjust accordingly\n // if rounding was up, see if we can reduce rows or columns\n else if (cols * rows > cells) {\n var sm = small();\n var lg = large(); // reducing the small side takes away the most cells, so try it first\n\n if ((sm - 1) * lg >= cells) {\n small(sm - 1);\n } else if ((lg - 1) * sm >= cells) {\n large(lg - 1);\n }\n } else {\n // if rounding was too low, add rows or columns\n while (cols * rows < cells) {\n var _sm = small();\n\n var _lg = large(); // try to add to larger side first (adds less in multiplication)\n\n\n if ((_lg + 1) * _sm >= cells) {\n large(_lg + 1);\n } else {\n small(_sm + 1);\n }\n }\n }\n\n var cellWidth = bb.w / cols;\n var cellHeight = bb.h / rows;\n\n if (options.condense) {\n cellWidth = 0;\n cellHeight = 0;\n }\n\n if (options.avoidOverlap) {\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n var pos = node._private.position;\n\n if (pos.x == null || pos.y == null) {\n // for bb\n pos.x = 0;\n pos.y = 0;\n }\n\n var nbb = node.layoutDimensions(options);\n var p = options.avoidOverlapPadding;\n var w = nbb.w + p;\n var h = nbb.h + p;\n cellWidth = Math.max(cellWidth, w);\n cellHeight = Math.max(cellHeight, h);\n }\n }\n\n var cellUsed = {}; // e.g. 'c-0-2' => true\n\n var used = function used(row, col) {\n return cellUsed['c-' + row + '-' + col] ? true : false;\n };\n\n var use = function use(row, col) {\n cellUsed['c-' + row + '-' + col] = true;\n }; // to keep track of current cell position\n\n\n var row = 0;\n var col = 0;\n\n var moveToNextCell = function moveToNextCell() {\n col++;\n\n if (col >= cols) {\n col = 0;\n row++;\n }\n }; // get a cache of all the manual positions\n\n\n var id2manPos = {};\n\n for (var _i = 0; _i < nodes.length; _i++) {\n var _node = nodes[_i];\n var rcPos = options.position(_node);\n\n if (rcPos && (rcPos.row !== undefined || rcPos.col !== undefined)) {\n // must have at least row or col def'd\n var _pos = {\n row: rcPos.row,\n col: rcPos.col\n };\n\n if (_pos.col === undefined) {\n // find unused col\n _pos.col = 0;\n\n while (used(_pos.row, _pos.col)) {\n _pos.col++;\n }\n } else if (_pos.row === undefined) {\n // find unused row\n _pos.row = 0;\n\n while (used(_pos.row, _pos.col)) {\n _pos.row++;\n }\n }\n\n id2manPos[_node.id()] = _pos;\n use(_pos.row, _pos.col);\n }\n }\n\n var getPos = function getPos(element, i) {\n var x, y;\n\n if (element.locked() || element.isParent()) {\n return false;\n } // see if we have a manual position set\n\n\n var rcPos = id2manPos[element.id()];\n\n if (rcPos) {\n x = rcPos.col * cellWidth + cellWidth / 2 + bb.x1;\n y = rcPos.row * cellHeight + cellHeight / 2 + bb.y1;\n } else {\n // otherwise set automatically\n while (used(row, col)) {\n moveToNextCell();\n }\n\n x = col * cellWidth + cellWidth / 2 + bb.x1;\n y = row * cellHeight + cellHeight / 2 + bb.y1;\n use(row, col);\n moveToNextCell();\n }\n\n return {\n x: x,\n y: y\n };\n };\n\n nodes.layoutPositions(this, options, getPos);\n }\n\n return this; // chaining\n};\n\nvar defaults$e = {\n ready: function ready() {},\n // on layoutready\n stop: function stop() {} // on layoutstop\n\n}; // constructor\n// options : object containing layout options\n\nfunction NullLayout(options) {\n this.options = extend({}, defaults$e, options);\n} // runs the layout\n\n\nNullLayout.prototype.run = function () {\n var options = this.options;\n var eles = options.eles; // elements to consider in the layout\n\n var layout = this; // cy is automatically populated for us in the constructor\n // (disable eslint for next line as this serves as example layout code to external developers)\n // eslint-disable-next-line no-unused-vars\n\n var cy = options.cy;\n layout.emit('layoutstart'); // puts all nodes at (0, 0)\n // n.b. most layouts would use layoutPositions(), instead of positions() and manual events\n\n eles.nodes().positions(function () {\n return {\n x: 0,\n y: 0\n };\n }); // trigger layoutready when each node has had its position set at least once\n\n layout.one('layoutready', options.ready);\n layout.emit('layoutready'); // trigger layoutstop when the layout stops (e.g. finishes)\n\n layout.one('layoutstop', options.stop);\n layout.emit('layoutstop');\n return this; // chaining\n}; // called on continuous layouts to stop them before they finish\n\n\nNullLayout.prototype.stop = function () {\n return this; // chaining\n};\n\nvar defaults$f = {\n positions: undefined,\n // map of (node id) => (position obj); or function(node){ return somPos; }\n zoom: undefined,\n // the zoom level to set (prob want fit = false if set)\n pan: undefined,\n // the pan level to set (prob want fit = false if set)\n fit: true,\n // whether to fit to viewport\n padding: 30,\n // padding on fit\n animate: false,\n // whether to transition the node positions\n animationDuration: 500,\n // duration of animation in ms if enabled\n animationEasing: undefined,\n // easing of animation if enabled\n animateFilter: function animateFilter(node, i) {\n return true;\n },\n // a function that determines whether the node should be animated. All nodes animated by default on animate enabled. Non-animated nodes are positioned immediately when the layout starts\n ready: undefined,\n // callback on layoutready\n stop: undefined,\n // callback on layoutstop\n transform: function transform(node, position) {\n return position;\n } // transform a given node position. Useful for changing flow direction in discrete layouts\n\n};\n\nfunction PresetLayout(options) {\n this.options = extend({}, defaults$f, options);\n}\n\nPresetLayout.prototype.run = function () {\n var options = this.options;\n var eles = options.eles;\n var nodes = eles.nodes();\n var posIsFn = fn(options.positions);\n\n function getPosition(node) {\n if (options.positions == null) {\n return copyPosition(node.position());\n }\n\n if (posIsFn) {\n return options.positions(node);\n }\n\n var pos = options.positions[node._private.data.id];\n\n if (pos == null) {\n return null;\n }\n\n return pos;\n }\n\n nodes.layoutPositions(this, options, function (node, i) {\n var position = getPosition(node);\n\n if (node.locked() || position == null) {\n return false;\n }\n\n return position;\n });\n return this; // chaining\n};\n\nvar defaults$g = {\n fit: true,\n // whether to fit to viewport\n padding: 30,\n // fit padding\n boundingBox: undefined,\n // constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h }\n animate: false,\n // whether to transition the node positions\n animationDuration: 500,\n // duration of animation in ms if enabled\n animationEasing: undefined,\n // easing of animation if enabled\n animateFilter: function animateFilter(node, i) {\n return true;\n },\n // a function that determines whether the node should be animated. All nodes animated by default on animate enabled. Non-animated nodes are positioned immediately when the layout starts\n ready: undefined,\n // callback on layoutready\n stop: undefined,\n // callback on layoutstop\n transform: function transform(node, position) {\n return position;\n } // transform a given node position. Useful for changing flow direction in discrete layouts \n\n};\n\nfunction RandomLayout(options) {\n this.options = extend({}, defaults$g, options);\n}\n\nRandomLayout.prototype.run = function () {\n var options = this.options;\n var cy = options.cy;\n var eles = options.eles;\n var nodes = eles.nodes().not(':parent');\n var bb = makeBoundingBox(options.boundingBox ? options.boundingBox : {\n x1: 0,\n y1: 0,\n w: cy.width(),\n h: cy.height()\n });\n\n var getPos = function getPos(node, i) {\n return {\n x: bb.x1 + Math.round(Math.random() * bb.w),\n y: bb.y1 + Math.round(Math.random() * bb.h)\n };\n };\n\n nodes.layoutPositions(this, options, getPos);\n return this; // chaining\n};\n\nvar layout = [{\n name: 'breadthfirst',\n impl: BreadthFirstLayout\n}, {\n name: 'circle',\n impl: CircleLayout\n}, {\n name: 'concentric',\n impl: ConcentricLayout\n}, {\n name: 'cose',\n impl: CoseLayout\n}, {\n name: 'grid',\n impl: GridLayout\n}, {\n name: 'null',\n impl: NullLayout\n}, {\n name: 'preset',\n impl: PresetLayout\n}, {\n name: 'random',\n impl: RandomLayout\n}];\n\nfunction NullRenderer(options) {\n this.options = options;\n this.notifications = 0; // for testing\n}\n\nvar noop$1 = function noop() {};\n\nNullRenderer.prototype = {\n recalculateRenderedStyle: noop$1,\n notify: function notify() {\n this.notifications++;\n },\n init: noop$1,\n isHeadless: function isHeadless() {\n return true;\n }\n};\n\nvar BRp = {};\nBRp.arrowShapeWidth = 0.3;\n\nBRp.registerArrowShapes = function () {\n var arrowShapes = this.arrowShapes = {};\n var renderer = this; // Contract for arrow shapes:\n // 0, 0 is arrow tip\n // (0, 1) is direction towards node\n // (1, 0) is right\n //\n // functional api:\n // collide: check x, y in shape\n // roughCollide: called before collide, no false negatives\n // draw: draw\n // spacing: dist(arrowTip, nodeBoundary)\n // gap: dist(edgeTip, nodeBoundary), edgeTip may != arrowTip\n\n var bbCollide = function bbCollide(x, y, size, angle, translation, edgeWidth, padding) {\n var x1 = translation.x - size / 2 - padding;\n var x2 = translation.x + size / 2 + padding;\n var y1 = translation.y - size / 2 - padding;\n var y2 = translation.y + size / 2 + padding;\n var inside = x1 <= x && x <= x2 && y1 <= y && y <= y2;\n return inside;\n };\n\n var transform = function transform(x, y, size, angle, translation) {\n var xRotated = x * Math.cos(angle) - y * Math.sin(angle);\n var yRotated = x * Math.sin(angle) + y * Math.cos(angle);\n var xScaled = xRotated * size;\n var yScaled = yRotated * size;\n var xTranslated = xScaled + translation.x;\n var yTranslated = yScaled + translation.y;\n return {\n x: xTranslated,\n y: yTranslated\n };\n };\n\n var transformPoints = function transformPoints(pts, size, angle, translation) {\n var retPts = [];\n\n for (var i = 0; i < pts.length; i += 2) {\n var x = pts[i];\n var y = pts[i + 1];\n retPts.push(transform(x, y, size, angle, translation));\n }\n\n return retPts;\n };\n\n var pointsToArr = function pointsToArr(pts) {\n var ret = [];\n\n for (var i = 0; i < pts.length; i++) {\n var p = pts[i];\n ret.push(p.x, p.y);\n }\n\n return ret;\n };\n\n var standardGap = function standardGap(edge) {\n return edge.pstyle('width').pfValue * edge.pstyle('arrow-scale').pfValue * 2;\n };\n\n var defineArrowShape = function defineArrowShape(name, defn) {\n if (string(defn)) {\n defn = arrowShapes[defn];\n }\n\n arrowShapes[name] = extend({\n name: name,\n points: [-0.15, -0.3, 0.15, -0.3, 0.15, 0.3, -0.15, 0.3],\n collide: function collide(x, y, size, angle, translation, padding) {\n var points = pointsToArr(transformPoints(this.points, size + 2 * padding, angle, translation));\n var inside = pointInsidePolygonPoints(x, y, points);\n return inside;\n },\n roughCollide: bbCollide,\n draw: function draw(context, size, angle, translation) {\n var points = transformPoints(this.points, size, angle, translation);\n renderer.arrowShapeImpl('polygon')(context, points);\n },\n spacing: function spacing(edge) {\n return 0;\n },\n gap: standardGap\n }, defn);\n };\n\n defineArrowShape('none', {\n collide: falsify,\n roughCollide: falsify,\n draw: noop,\n spacing: zeroify,\n gap: zeroify\n });\n defineArrowShape('triangle', {\n points: [-0.15, -0.3, 0, 0, 0.15, -0.3]\n });\n defineArrowShape('arrow', 'triangle');\n defineArrowShape('triangle-backcurve', {\n points: arrowShapes['triangle'].points,\n controlPoint: [0, -0.15],\n roughCollide: bbCollide,\n draw: function draw(context, size, angle, translation, edgeWidth) {\n var ptsTrans = transformPoints(this.points, size, angle, translation);\n var ctrlPt = this.controlPoint;\n var ctrlPtTrans = transform(ctrlPt[0], ctrlPt[1], size, angle, translation);\n renderer.arrowShapeImpl(this.name)(context, ptsTrans, ctrlPtTrans);\n },\n gap: function gap(edge) {\n return standardGap(edge) * 0.8;\n }\n });\n defineArrowShape('triangle-tee', {\n points: [0, 0, 0.15, -0.3, -0.15, -0.3, 0, 0],\n pointsTee: [-0.15, -0.4, -0.15, -0.5, 0.15, -0.5, 0.15, -0.4],\n collide: function collide(x, y, size, angle, translation, edgeWidth, padding) {\n var triPts = pointsToArr(transformPoints(this.points, size + 2 * padding, angle, translation));\n var teePts = pointsToArr(transformPoints(this.pointsTee, size + 2 * padding, angle, translation));\n var inside = pointInsidePolygonPoints(x, y, triPts) || pointInsidePolygonPoints(x, y, teePts);\n return inside;\n },\n draw: function draw(context, size, angle, translation, edgeWidth) {\n var triPts = transformPoints(this.points, size, angle, translation);\n var teePts = transformPoints(this.pointsTee, size, angle, translation);\n renderer.arrowShapeImpl(this.name)(context, triPts, teePts);\n }\n });\n defineArrowShape('triangle-cross', {\n points: [0, 0, 0.15, -0.3, -0.15, -0.3, 0, 0],\n baseCrossLinePts: [-0.15, -0.4, // first half of the rectangle\n -0.15, -0.4, 0.15, -0.4, // second half of the rectangle\n 0.15, -0.4],\n crossLinePts: function crossLinePts(size, edgeWidth) {\n // shift points so that the distance between the cross points matches edge width\n var p = this.baseCrossLinePts.slice();\n var shiftFactor = edgeWidth / size;\n var y0 = 3;\n var y1 = 5;\n p[y0] = p[y0] - shiftFactor;\n p[y1] = p[y1] - shiftFactor;\n return p;\n },\n collide: function collide(x, y, size, angle, translation, edgeWidth, padding) {\n var triPts = pointsToArr(transformPoints(this.points, size + 2 * padding, angle, translation));\n var teePts = pointsToArr(transformPoints(this.crossLinePts(size, edgeWidth), size + 2 * padding, angle, translation));\n var inside = pointInsidePolygonPoints(x, y, triPts) || pointInsidePolygonPoints(x, y, teePts);\n return inside;\n },\n draw: function draw(context, size, angle, translation, edgeWidth) {\n var triPts = transformPoints(this.points, size, angle, translation);\n var crossLinePts = transformPoints(this.crossLinePts(size, edgeWidth), size, angle, translation);\n renderer.arrowShapeImpl(this.name)(context, triPts, crossLinePts);\n }\n });\n defineArrowShape('vee', {\n points: [-0.15, -0.3, 0, 0, 0.15, -0.3, 0, -0.15],\n gap: function gap(edge) {\n return standardGap(edge) * 0.525;\n }\n });\n defineArrowShape('circle', {\n radius: 0.15,\n collide: function collide(x, y, size, angle, translation, edgeWidth, padding) {\n var t = translation;\n var inside = Math.pow(t.x - x, 2) + Math.pow(t.y - y, 2) <= Math.pow((size + 2 * padding) * this.radius, 2);\n return inside;\n },\n draw: function draw(context, size, angle, translation, edgeWidth) {\n renderer.arrowShapeImpl(this.name)(context, translation.x, translation.y, this.radius * size);\n },\n spacing: function spacing(edge) {\n return renderer.getArrowWidth(edge.pstyle('width').pfValue, edge.pstyle('arrow-scale').value) * this.radius;\n }\n });\n defineArrowShape('tee', {\n points: [-0.15, 0, -0.15, -0.1, 0.15, -0.1, 0.15, 0],\n spacing: function spacing(edge) {\n return 1;\n },\n gap: function gap(edge) {\n return 1;\n }\n });\n defineArrowShape('square', {\n points: [-0.15, 0.00, 0.15, 0.00, 0.15, -0.3, -0.15, -0.3]\n });\n defineArrowShape('diamond', {\n points: [-0.15, -0.15, 0, -0.3, 0.15, -0.15, 0, 0],\n gap: function gap(edge) {\n return edge.pstyle('width').pfValue * edge.pstyle('arrow-scale').value;\n }\n });\n defineArrowShape('chevron', {\n points: [0, 0, -0.15, -0.15, -0.1, -0.2, 0, -0.1, 0.1, -0.2, 0.15, -0.15],\n gap: function gap(edge) {\n return 0.95 * edge.pstyle('width').pfValue * edge.pstyle('arrow-scale').value;\n }\n });\n};\n\nvar BRp$1 = {}; // Project mouse\n\nBRp$1.projectIntoViewport = function (clientX, clientY) {\n var cy = this.cy;\n var offsets = this.findContainerClientCoords();\n var offsetLeft = offsets[0];\n var offsetTop = offsets[1];\n var scale = offsets[4];\n var pan = cy.pan();\n var zoom = cy.zoom();\n var x = ((clientX - offsetLeft) / scale - pan.x) / zoom;\n var y = ((clientY - offsetTop) / scale - pan.y) / zoom;\n return [x, y];\n};\n\nBRp$1.findContainerClientCoords = function () {\n if (this.containerBB) {\n return this.containerBB;\n }\n\n var container = this.container;\n var rect = container.getBoundingClientRect();\n var style = window$1.getComputedStyle(container);\n\n var styleValue = function styleValue(name) {\n return parseFloat(style.getPropertyValue(name));\n };\n\n var padding = {\n left: styleValue('padding-left'),\n right: styleValue('padding-right'),\n top: styleValue('padding-top'),\n bottom: styleValue('padding-bottom')\n };\n var border = {\n left: styleValue('border-left-width'),\n right: styleValue('border-right-width'),\n top: styleValue('border-top-width'),\n bottom: styleValue('border-bottom-width')\n };\n var clientWidth = container.clientWidth;\n var clientHeight = container.clientHeight;\n var paddingHor = padding.left + padding.right;\n var paddingVer = padding.top + padding.bottom;\n var borderHor = border.left + border.right;\n var scale = rect.width / (clientWidth + borderHor);\n var unscaledW = clientWidth - paddingHor;\n var unscaledH = clientHeight - paddingVer;\n var left = rect.left + padding.left + border.left;\n var top = rect.top + padding.top + border.top;\n return this.containerBB = [left, top, unscaledW, unscaledH, scale];\n};\n\nBRp$1.invalidateContainerClientCoordsCache = function () {\n this.containerBB = null;\n};\n\nBRp$1.findNearestElement = function (x, y, interactiveElementsOnly, isTouch) {\n return this.findNearestElements(x, y, interactiveElementsOnly, isTouch)[0];\n};\n\nBRp$1.findNearestElements = function (x, y, interactiveElementsOnly, isTouch) {\n var self = this;\n var r = this;\n var eles = r.getCachedZSortedEles();\n var near = []; // 1 node max, 1 edge max\n\n var zoom = r.cy.zoom();\n var hasCompounds = r.cy.hasCompoundNodes();\n var edgeThreshold = (isTouch ? 24 : 8) / zoom;\n var nodeThreshold = (isTouch ? 8 : 2) / zoom;\n var labelThreshold = (isTouch ? 8 : 2) / zoom;\n var minSqDist = Infinity;\n var nearEdge;\n var nearNode;\n\n if (interactiveElementsOnly) {\n eles = eles.interactive;\n }\n\n function addEle(ele, sqDist) {\n if (ele.isNode()) {\n if (nearNode) {\n return; // can't replace node\n } else {\n nearNode = ele;\n near.push(ele);\n }\n }\n\n if (ele.isEdge() && (sqDist == null || sqDist < minSqDist)) {\n if (nearEdge) {\n // then replace existing edge\n // can replace only if same z-index\n if (nearEdge.pstyle('z-compound-depth').value === ele.pstyle('z-compound-depth').value && nearEdge.pstyle('z-compound-depth').value === ele.pstyle('z-compound-depth').value) {\n for (var i = 0; i < near.length; i++) {\n if (near[i].isEdge()) {\n near[i] = ele;\n nearEdge = ele;\n minSqDist = sqDist != null ? sqDist : minSqDist;\n break;\n }\n }\n }\n } else {\n near.push(ele);\n nearEdge = ele;\n minSqDist = sqDist != null ? sqDist : minSqDist;\n }\n }\n }\n\n function checkNode(node) {\n var width = node.outerWidth() + 2 * nodeThreshold;\n var height = node.outerHeight() + 2 * nodeThreshold;\n var hw = width / 2;\n var hh = height / 2;\n var pos = node.position();\n\n if (pos.x - hw <= x && x <= pos.x + hw // bb check x\n && pos.y - hh <= y && y <= pos.y + hh // bb check y\n ) {\n var shape = r.nodeShapes[self.getNodeShape(node)];\n\n if (shape.checkPoint(x, y, 0, width, height, pos.x, pos.y)) {\n addEle(node, 0);\n return true;\n }\n }\n }\n\n function checkEdge(edge) {\n var _p = edge._private;\n var rs = _p.rscratch;\n var styleWidth = edge.pstyle('width').pfValue;\n var scale = edge.pstyle('arrow-scale').value;\n var width = styleWidth / 2 + edgeThreshold; // more like a distance radius from centre\n\n var widthSq = width * width;\n var width2 = width * 2;\n var src = _p.source;\n var tgt = _p.target;\n var sqDist;\n\n if (rs.edgeType === 'segments' || rs.edgeType === 'straight' || rs.edgeType === 'haystack') {\n var pts = rs.allpts;\n\n for (var i = 0; i + 3 < pts.length; i += 2) {\n if (inLineVicinity(x, y, pts[i], pts[i + 1], pts[i + 2], pts[i + 3], width2) && widthSq > (sqDist = sqdistToFiniteLine(x, y, pts[i], pts[i + 1], pts[i + 2], pts[i + 3]))) {\n addEle(edge, sqDist);\n return true;\n }\n }\n } else if (rs.edgeType === 'bezier' || rs.edgeType === 'multibezier' || rs.edgeType === 'self' || rs.edgeType === 'compound') {\n var pts = rs.allpts;\n\n for (var i = 0; i + 5 < rs.allpts.length; i += 4) {\n if (inBezierVicinity(x, y, pts[i], pts[i + 1], pts[i + 2], pts[i + 3], pts[i + 4], pts[i + 5], width2) && widthSq > (sqDist = sqdistToQuadraticBezier(x, y, pts[i], pts[i + 1], pts[i + 2], pts[i + 3], pts[i + 4], pts[i + 5]))) {\n addEle(edge, sqDist);\n return true;\n }\n }\n } // if we're close to the edge but didn't hit it, maybe we hit its arrows\n\n\n var src = src || _p.source;\n var tgt = tgt || _p.target;\n var arSize = self.getArrowWidth(styleWidth, scale);\n var arrows = [{\n name: 'source',\n x: rs.arrowStartX,\n y: rs.arrowStartY,\n angle: rs.srcArrowAngle\n }, {\n name: 'target',\n x: rs.arrowEndX,\n y: rs.arrowEndY,\n angle: rs.tgtArrowAngle\n }, {\n name: 'mid-source',\n x: rs.midX,\n y: rs.midY,\n angle: rs.midsrcArrowAngle\n }, {\n name: 'mid-target',\n x: rs.midX,\n y: rs.midY,\n angle: rs.midtgtArrowAngle\n }];\n\n for (var i = 0; i < arrows.length; i++) {\n var ar = arrows[i];\n var shape = r.arrowShapes[edge.pstyle(ar.name + '-arrow-shape').value];\n var edgeWidth = edge.pstyle('width').pfValue;\n\n if (shape.roughCollide(x, y, arSize, ar.angle, {\n x: ar.x,\n y: ar.y\n }, edgeWidth, edgeThreshold) && shape.collide(x, y, arSize, ar.angle, {\n x: ar.x,\n y: ar.y\n }, edgeWidth, edgeThreshold)) {\n addEle(edge);\n return true;\n }\n } // for compound graphs, hitting edge may actually want a connected node instead (b/c edge may have greater z-index precedence)\n\n\n if (hasCompounds && near.length > 0) {\n checkNode(src);\n checkNode(tgt);\n }\n }\n\n function preprop(obj, name, pre) {\n return getPrefixedProperty(obj, name, pre);\n }\n\n function checkLabel(ele, prefix) {\n var _p = ele._private;\n var th = labelThreshold;\n var prefixDash;\n\n if (prefix) {\n prefixDash = prefix + '-';\n } else {\n prefixDash = '';\n }\n\n var bb = _p.labelBounds[prefix || 'main'];\n var text = ele.pstyle(prefixDash + 'label').value;\n var eventsEnabled = ele.pstyle('text-events').strValue === 'yes';\n\n if (!eventsEnabled || !text) {\n return;\n }\n\n var rstyle = _p.rstyle;\n var lx = preprop(rstyle, 'labelX', prefix);\n var ly = preprop(rstyle, 'labelY', prefix);\n var theta = preprop(_p.rscratch, 'labelAngle', prefix);\n var lx1 = bb.x1 - th;\n var lx2 = bb.x2 + th;\n var ly1 = bb.y1 - th;\n var ly2 = bb.y2 + th;\n\n if (theta) {\n var cos = Math.cos(theta);\n var sin = Math.sin(theta);\n\n var rotate = function rotate(x, y) {\n x = x - lx;\n y = y - ly;\n return {\n x: x * cos - y * sin + lx,\n y: x * sin + y * cos + ly\n };\n };\n\n var px1y1 = rotate(lx1, ly1);\n var px1y2 = rotate(lx1, ly2);\n var px2y1 = rotate(lx2, ly1);\n var px2y2 = rotate(lx2, ly2);\n var points = [px1y1.x, px1y1.y, px2y1.x, px2y1.y, px2y2.x, px2y2.y, px1y2.x, px1y2.y];\n\n if (pointInsidePolygonPoints(x, y, points)) {\n addEle(ele);\n return true;\n }\n } else {\n // do a cheaper bb check\n if (inBoundingBox(bb, x, y)) {\n addEle(ele);\n return true;\n }\n }\n }\n\n for (var i = eles.length - 1; i >= 0; i--) {\n // reverse order for precedence\n var ele = eles[i];\n\n if (ele.isNode()) {\n checkNode(ele) || checkLabel(ele);\n } else {\n // then edge\n checkEdge(ele) || checkLabel(ele) || checkLabel(ele, 'source') || checkLabel(ele, 'target');\n }\n }\n\n return near;\n}; // 'Give me everything from this box'\n\n\nBRp$1.getAllInBox = function (x1, y1, x2, y2) {\n var eles = this.getCachedZSortedEles().interactive;\n var box = [];\n var x1c = Math.min(x1, x2);\n var x2c = Math.max(x1, x2);\n var y1c = Math.min(y1, y2);\n var y2c = Math.max(y1, y2);\n x1 = x1c;\n x2 = x2c;\n y1 = y1c;\n y2 = y2c;\n var boxBb = makeBoundingBox({\n x1: x1,\n y1: y1,\n x2: x2,\n y2: y2\n });\n\n for (var e = 0; e < eles.length; e++) {\n var ele = eles[e];\n\n if (ele.isNode()) {\n var node = ele;\n var nodeBb = node.boundingBox({\n includeNodes: true,\n includeEdges: false,\n includeLabels: false\n });\n\n if (boundingBoxesIntersect(boxBb, nodeBb) && !boundingBoxInBoundingBox(nodeBb, boxBb)) {\n box.push(node);\n }\n } else {\n var edge = ele;\n var _p = edge._private;\n var rs = _p.rscratch;\n\n if (rs.startX != null && rs.startY != null && !inBoundingBox(boxBb, rs.startX, rs.startY)) {\n continue;\n }\n\n if (rs.endX != null && rs.endY != null && !inBoundingBox(boxBb, rs.endX, rs.endY)) {\n continue;\n }\n\n if (rs.edgeType === 'bezier' || rs.edgeType === 'multibezier' || rs.edgeType === 'self' || rs.edgeType === 'compound' || rs.edgeType === 'segments' || rs.edgeType === 'haystack') {\n var pts = _p.rstyle.bezierPts || _p.rstyle.linePts || _p.rstyle.haystackPts;\n var allInside = true;\n\n for (var i = 0; i < pts.length; i++) {\n if (!pointInBoundingBox(boxBb, pts[i])) {\n allInside = false;\n break;\n }\n }\n\n if (allInside) {\n box.push(edge);\n }\n } else if (rs.edgeType === 'haystack' || rs.edgeType === 'straight') {\n box.push(edge);\n }\n }\n }\n\n return box;\n};\n\nvar BRp$2 = {};\n\nBRp$2.calculateArrowAngles = function (edge) {\n var rs = edge._private.rscratch;\n var isHaystack = rs.edgeType === 'haystack';\n var isBezier = rs.edgeType === 'bezier';\n var isMultibezier = rs.edgeType === 'multibezier';\n var isSegments = rs.edgeType === 'segments';\n var isCompound = rs.edgeType === 'compound';\n var isSelf = rs.edgeType === 'self'; // Displacement gives direction for arrowhead orientation\n\n var dispX, dispY;\n var startX, startY, endX, endY, midX, midY;\n\n if (isHaystack) {\n startX = rs.haystackPts[0];\n startY = rs.haystackPts[1];\n endX = rs.haystackPts[2];\n endY = rs.haystackPts[3];\n } else {\n startX = rs.arrowStartX;\n startY = rs.arrowStartY;\n endX = rs.arrowEndX;\n endY = rs.arrowEndY;\n }\n\n midX = rs.midX;\n midY = rs.midY; // source\n //\n\n if (isSegments) {\n dispX = startX - rs.segpts[0];\n dispY = startY - rs.segpts[1];\n } else if (isMultibezier || isCompound || isSelf || isBezier) {\n var pts = rs.allpts;\n var bX = qbezierAt(pts[0], pts[2], pts[4], 0.1);\n var bY = qbezierAt(pts[1], pts[3], pts[5], 0.1);\n dispX = startX - bX;\n dispY = startY - bY;\n } else {\n dispX = startX - midX;\n dispY = startY - midY;\n }\n\n rs.srcArrowAngle = getAngleFromDisp(dispX, dispY); // mid target\n //\n\n var midX = rs.midX;\n var midY = rs.midY;\n\n if (isHaystack) {\n midX = (startX + endX) / 2;\n midY = (startY + endY) / 2;\n }\n\n dispX = endX - startX;\n dispY = endY - startY;\n\n if (isSegments) {\n var pts = rs.allpts;\n\n if (pts.length / 2 % 2 === 0) {\n var i2 = pts.length / 2;\n var i1 = i2 - 2;\n dispX = pts[i2] - pts[i1];\n dispY = pts[i2 + 1] - pts[i1 + 1];\n } else {\n var i2 = pts.length / 2 - 1;\n var i1 = i2 - 2;\n var i3 = i2 + 2;\n dispX = pts[i2] - pts[i1];\n dispY = pts[i2 + 1] - pts[i1 + 1];\n }\n } else if (isMultibezier || isCompound || isSelf) {\n var pts = rs.allpts;\n var cpts = rs.ctrlpts;\n var bp0x, bp0y;\n var bp1x, bp1y;\n\n if (cpts.length / 2 % 2 === 0) {\n var p0 = pts.length / 2 - 1; // startpt\n\n var ic = p0 + 2;\n var p1 = ic + 2;\n bp0x = qbezierAt(pts[p0], pts[ic], pts[p1], 0.0);\n bp0y = qbezierAt(pts[p0 + 1], pts[ic + 1], pts[p1 + 1], 0.0);\n bp1x = qbezierAt(pts[p0], pts[ic], pts[p1], 0.0001);\n bp1y = qbezierAt(pts[p0 + 1], pts[ic + 1], pts[p1 + 1], 0.0001);\n } else {\n var ic = pts.length / 2 - 1; // ctrpt\n\n var p0 = ic - 2; // startpt\n\n var p1 = ic + 2; // endpt\n\n bp0x = qbezierAt(pts[p0], pts[ic], pts[p1], 0.4999);\n bp0y = qbezierAt(pts[p0 + 1], pts[ic + 1], pts[p1 + 1], 0.4999);\n bp1x = qbezierAt(pts[p0], pts[ic], pts[p1], 0.5);\n bp1y = qbezierAt(pts[p0 + 1], pts[ic + 1], pts[p1 + 1], 0.5);\n }\n\n dispX = bp1x - bp0x;\n dispY = bp1y - bp0y;\n }\n\n rs.midtgtArrowAngle = getAngleFromDisp(dispX, dispY);\n rs.midDispX = dispX;\n rs.midDispY = dispY; // mid source\n //\n\n dispX *= -1;\n dispY *= -1;\n\n if (isSegments) {\n var pts = rs.allpts;\n\n if (pts.length / 2 % 2 === 0) ; else {\n var i2 = pts.length / 2 - 1;\n var i3 = i2 + 2;\n dispX = -(pts[i3] - pts[i2]);\n dispY = -(pts[i3 + 1] - pts[i2 + 1]);\n }\n }\n\n rs.midsrcArrowAngle = getAngleFromDisp(dispX, dispY); // target\n //\n\n if (isSegments) {\n dispX = endX - rs.segpts[rs.segpts.length - 2];\n dispY = endY - rs.segpts[rs.segpts.length - 1];\n } else if (isMultibezier || isCompound || isSelf || isBezier) {\n var pts = rs.allpts;\n var l = pts.length;\n var bX = qbezierAt(pts[l - 6], pts[l - 4], pts[l - 2], 0.9);\n var bY = qbezierAt(pts[l - 5], pts[l - 3], pts[l - 1], 0.9);\n dispX = endX - bX;\n dispY = endY - bY;\n } else {\n dispX = endX - midX;\n dispY = endY - midY;\n }\n\n rs.tgtArrowAngle = getAngleFromDisp(dispX, dispY);\n};\n\nBRp$2.getArrowWidth = BRp$2.getArrowHeight = function (edgeWidth, scale) {\n var cache = this.arrowWidthCache = this.arrowWidthCache || {};\n var cachedVal = cache[edgeWidth + ', ' + scale];\n\n if (cachedVal) {\n return cachedVal;\n }\n\n cachedVal = Math.max(Math.pow(edgeWidth * 13.37, 0.9), 29) * scale;\n cache[edgeWidth + ', ' + scale] = cachedVal;\n return cachedVal;\n};\n\nvar BRp$3 = {};\n\nBRp$3.findHaystackPoints = function (edges) {\n for (var i = 0; i < edges.length; i++) {\n var edge = edges[i];\n var _p = edge._private;\n var rs = _p.rscratch;\n\n if (!rs.haystack) {\n var angle = Math.random() * 2 * Math.PI;\n rs.source = {\n x: Math.cos(angle),\n y: Math.sin(angle)\n };\n angle = Math.random() * 2 * Math.PI;\n rs.target = {\n x: Math.cos(angle),\n y: Math.sin(angle)\n };\n }\n\n var src = _p.source;\n var tgt = _p.target;\n var srcPos = src.position();\n var tgtPos = tgt.position();\n var srcW = src.width();\n var tgtW = tgt.width();\n var srcH = src.height();\n var tgtH = tgt.height();\n var radius = edge.pstyle('haystack-radius').value;\n var halfRadius = radius / 2; // b/c have to half width/height\n\n rs.haystackPts = rs.allpts = [rs.source.x * srcW * halfRadius + srcPos.x, rs.source.y * srcH * halfRadius + srcPos.y, rs.target.x * tgtW * halfRadius + tgtPos.x, rs.target.y * tgtH * halfRadius + tgtPos.y];\n rs.midX = (rs.allpts[0] + rs.allpts[2]) / 2;\n rs.midY = (rs.allpts[1] + rs.allpts[3]) / 2; // always override as haystack in case set to different type previously\n\n rs.edgeType = 'haystack';\n rs.haystack = true;\n this.storeEdgeProjections(edge);\n this.calculateArrowAngles(edge);\n this.recalculateEdgeLabelProjections(edge);\n this.calculateLabelAngles(edge);\n }\n};\n\nBRp$3.findSegmentsPoints = function (edge, pairInfo) {\n // Segments (multiple straight lines)\n var rs = edge._private.rscratch;\n var posPts = pairInfo.posPts,\n intersectionPts = pairInfo.intersectionPts,\n vectorNormInverse = pairInfo.vectorNormInverse;\n var edgeDistances = edge.pstyle('edge-distances').value;\n var segmentWs = edge.pstyle('segment-weights');\n var segmentDs = edge.pstyle('segment-distances');\n var segmentsN = Math.min(segmentWs.pfValue.length, segmentDs.pfValue.length);\n rs.edgeType = 'segments';\n rs.segpts = [];\n\n for (var s = 0; s < segmentsN; s++) {\n var w = segmentWs.pfValue[s];\n var d = segmentDs.pfValue[s];\n var w1 = 1 - w;\n var w2 = w;\n var midptPts = edgeDistances === 'node-position' ? posPts : intersectionPts;\n var adjustedMidpt = {\n x: midptPts.x1 * w1 + midptPts.x2 * w2,\n y: midptPts.y1 * w1 + midptPts.y2 * w2\n };\n rs.segpts.push(adjustedMidpt.x + vectorNormInverse.x * d, adjustedMidpt.y + vectorNormInverse.y * d);\n }\n};\n\nBRp$3.findLoopPoints = function (edge, pairInfo, i, edgeIsUnbundled) {\n // Self-edge\n var rs = edge._private.rscratch;\n var dirCounts = pairInfo.dirCounts,\n srcPos = pairInfo.srcPos;\n var ctrlptDists = edge.pstyle('control-point-distances');\n var ctrlptDist = ctrlptDists ? ctrlptDists.pfValue[0] : undefined;\n var loopDir = edge.pstyle('loop-direction').pfValue;\n var loopSwp = edge.pstyle('loop-sweep').pfValue;\n var stepSize = edge.pstyle('control-point-step-size').pfValue;\n rs.edgeType = 'self';\n var j = i;\n var loopDist = stepSize;\n\n if (edgeIsUnbundled) {\n j = 0;\n loopDist = ctrlptDist;\n }\n\n var loopAngle = loopDir - Math.PI / 2;\n var outAngle = loopAngle - loopSwp / 2;\n var inAngle = loopAngle + loopSwp / 2; // increase by step size for overlapping loops, keyed on direction and sweep values\n\n var dc = String(loopDir + '_' + loopSwp);\n j = dirCounts[dc] === undefined ? dirCounts[dc] = 0 : ++dirCounts[dc];\n rs.ctrlpts = [srcPos.x + Math.cos(outAngle) * 1.4 * loopDist * (j / 3 + 1), srcPos.y + Math.sin(outAngle) * 1.4 * loopDist * (j / 3 + 1), srcPos.x + Math.cos(inAngle) * 1.4 * loopDist * (j / 3 + 1), srcPos.y + Math.sin(inAngle) * 1.4 * loopDist * (j / 3 + 1)];\n};\n\nBRp$3.findCompoundLoopPoints = function (edge, pairInfo, i, edgeIsUnbundled) {\n // Compound edge\n var rs = edge._private.rscratch;\n rs.edgeType = 'compound';\n var srcPos = pairInfo.srcPos,\n tgtPos = pairInfo.tgtPos,\n srcW = pairInfo.srcW,\n srcH = pairInfo.srcH,\n tgtW = pairInfo.tgtW,\n tgtH = pairInfo.tgtH;\n var stepSize = edge.pstyle('control-point-step-size').pfValue;\n var ctrlptDists = edge.pstyle('control-point-distances');\n var ctrlptDist = ctrlptDists ? ctrlptDists.pfValue[0] : undefined;\n var j = i;\n var loopDist = stepSize;\n\n if (edgeIsUnbundled) {\n j = 0;\n loopDist = ctrlptDist;\n }\n\n var loopW = 50;\n var loopaPos = {\n x: srcPos.x - srcW / 2,\n y: srcPos.y - srcH / 2\n };\n var loopbPos = {\n x: tgtPos.x - tgtW / 2,\n y: tgtPos.y - tgtH / 2\n };\n var loopPos = {\n x: Math.min(loopaPos.x, loopbPos.x),\n y: Math.min(loopaPos.y, loopbPos.y)\n }; // avoids cases with impossible beziers\n\n var minCompoundStretch = 0.5;\n var compoundStretchA = Math.max(minCompoundStretch, Math.log(srcW * 0.01));\n var compoundStretchB = Math.max(minCompoundStretch, Math.log(tgtW * 0.01));\n rs.ctrlpts = [loopPos.x, loopPos.y - (1 + Math.pow(loopW, 1.12) / 100) * loopDist * (j / 3 + 1) * compoundStretchA, loopPos.x - (1 + Math.pow(loopW, 1.12) / 100) * loopDist * (j / 3 + 1) * compoundStretchB, loopPos.y];\n};\n\nBRp$3.findStraightEdgePoints = function (edge) {\n // Straight edge within bundle\n edge._private.rscratch.edgeType = 'straight';\n};\n\nBRp$3.findBezierPoints = function (edge, pairInfo, i, edgeIsUnbundled, edgeIsSwapped) {\n var rs = edge._private.rscratch;\n var vectorNormInverse = pairInfo.vectorNormInverse,\n posPts = pairInfo.posPts,\n intersectionPts = pairInfo.intersectionPts;\n var edgeDistances = edge.pstyle('edge-distances').value;\n var stepSize = edge.pstyle('control-point-step-size').pfValue;\n var ctrlptDists = edge.pstyle('control-point-distances');\n var ctrlptWs = edge.pstyle('control-point-weights');\n var bezierN = ctrlptDists && ctrlptWs ? Math.min(ctrlptDists.value.length, ctrlptWs.value.length) : 1;\n var ctrlptDist = ctrlptDists ? ctrlptDists.pfValue[0] : undefined;\n var ctrlptWeight = ctrlptWs.value[0]; // (Multi)bezier\n\n var multi = edgeIsUnbundled;\n rs.edgeType = multi ? 'multibezier' : 'bezier';\n rs.ctrlpts = [];\n\n for (var b = 0; b < bezierN; b++) {\n var normctrlptDist = (0.5 - pairInfo.eles.length / 2 + i) * stepSize * (edgeIsSwapped ? -1 : 1);\n var manctrlptDist = void 0;\n var sign = signum(normctrlptDist);\n\n if (multi) {\n ctrlptDist = ctrlptDists ? ctrlptDists.pfValue[b] : stepSize; // fall back on step size\n\n ctrlptWeight = ctrlptWs.value[b];\n }\n\n if (edgeIsUnbundled) {\n // multi or single unbundled\n manctrlptDist = ctrlptDist;\n } else {\n manctrlptDist = ctrlptDist !== undefined ? sign * ctrlptDist : undefined;\n }\n\n var distanceFromMidpoint = manctrlptDist !== undefined ? manctrlptDist : normctrlptDist;\n var w1 = 1 - ctrlptWeight;\n var w2 = ctrlptWeight;\n var midptPts = edgeDistances === 'node-position' ? posPts : intersectionPts;\n var adjustedMidpt = {\n x: midptPts.x1 * w1 + midptPts.x2 * w2,\n y: midptPts.y1 * w1 + midptPts.y2 * w2\n };\n rs.ctrlpts.push(adjustedMidpt.x + vectorNormInverse.x * distanceFromMidpoint, adjustedMidpt.y + vectorNormInverse.y * distanceFromMidpoint);\n }\n};\n\nBRp$3.findTaxiPoints = function (edge, pairInfo) {\n // Taxicab geometry with two turns maximum\n var rs = edge._private.rscratch;\n rs.edgeType = 'segments';\n var VERTICAL = 'vertical';\n var HORIZONTAL = 'horizontal';\n var LEFTWARD = 'leftward';\n var RIGHTWARD = 'rightward';\n var DOWNWARD = 'downward';\n var UPWARD = 'upward';\n var AUTO = 'auto';\n var posPts = pairInfo.posPts,\n srcW = pairInfo.srcW,\n srcH = pairInfo.srcH,\n tgtW = pairInfo.tgtW,\n tgtH = pairInfo.tgtH;\n var edgeDistances = edge.pstyle('edge-distances').value;\n var dIncludesNodeBody = edgeDistances !== 'node-position';\n var taxiDir = edge.pstyle('taxi-direction').value;\n var rawTaxiDir = taxiDir; // unprocessed value\n\n var taxiTurn = edge.pstyle('taxi-turn');\n var taxiTurnPfVal = taxiTurn.pfValue;\n var minD = edge.pstyle('taxi-turn-min-distance').pfValue;\n var turnIsPercent = taxiTurn.units === '%';\n var dw = dIncludesNodeBody ? (srcW + tgtW) / 2 : 0;\n var dh = dIncludesNodeBody ? (srcH + tgtH) / 2 : 0;\n var pdx = posPts.x2 - posPts.x1;\n var pdy = posPts.y2 - posPts.y1; // take away the effective w/h from the magnitude of the delta value\n\n var subDWH = function subDWH(dxy, dwh) {\n if (dxy > 0) {\n return Math.max(dxy - dwh, 0);\n } else {\n return Math.min(dxy + dwh, 0);\n }\n };\n\n var dx = subDWH(pdx, dw);\n var dy = subDWH(pdy, dh);\n var isExplicitDir = false;\n\n if (taxiDir === AUTO) {\n taxiDir = Math.abs(dx) > Math.abs(dy) ? HORIZONTAL : VERTICAL;\n } else if (taxiDir === UPWARD || taxiDir === DOWNWARD) {\n taxiDir = VERTICAL;\n isExplicitDir = true;\n } else if (taxiDir === LEFTWARD || taxiDir === RIGHTWARD) {\n taxiDir = HORIZONTAL;\n isExplicitDir = true;\n }\n\n var isVert = taxiDir === VERTICAL;\n var l = isVert ? dy : dx;\n var pl = isVert ? pdy : pdx;\n var sgnL = signum(pl);\n var forcedDir = false;\n\n if (!(isExplicitDir && turnIsPercent) // forcing in this case would cause weird growing in the opposite direction\n && (rawTaxiDir === DOWNWARD && pl < 0 || rawTaxiDir === UPWARD && pl > 0 || rawTaxiDir === LEFTWARD && pl > 0 || rawTaxiDir === RIGHTWARD && pl < 0)) {\n sgnL *= -1;\n l = sgnL * Math.abs(l);\n forcedDir = true;\n }\n\n var d = turnIsPercent ? taxiTurnPfVal * l : taxiTurnPfVal * sgnL;\n\n var getIsTooClose = function getIsTooClose(d) {\n return Math.abs(d) < minD || Math.abs(d) >= Math.abs(l);\n };\n\n var isTooCloseSrc = getIsTooClose(d);\n var isTooCloseTgt = getIsTooClose(l - d);\n var isTooClose = isTooCloseSrc || isTooCloseTgt;\n\n if (isTooClose && !forcedDir) {\n // non-ideal routing\n if (isVert) {\n // vertical fallbacks\n var lShapeInsideSrc = Math.abs(pl) <= srcH / 2;\n var lShapeInsideTgt = Math.abs(pdx) <= tgtW / 2;\n\n if (lShapeInsideSrc) {\n // horizontal Z-shape (direction not respected)\n var x = (posPts.x1 + posPts.x2) / 2;\n var y1 = posPts.y1,\n y2 = posPts.y2;\n rs.segpts = [x, y1, x, y2];\n } else if (lShapeInsideTgt) {\n // vertical Z-shape (distance not respected)\n var y = (posPts.y1 + posPts.y2) / 2;\n var x1 = posPts.x1,\n x2 = posPts.x2;\n rs.segpts = [x1, y, x2, y];\n } else {\n // L-shape fallback (turn distance not respected, but works well with tree siblings)\n rs.segpts = [posPts.x1, posPts.y2];\n }\n } else {\n // horizontal fallbacks\n var _lShapeInsideSrc = Math.abs(pl) <= srcW / 2;\n\n var _lShapeInsideTgt = Math.abs(pdy) <= tgtH / 2;\n\n if (_lShapeInsideSrc) {\n // vertical Z-shape (direction not respected)\n var _y = (posPts.y1 + posPts.y2) / 2;\n\n var _x = posPts.x1,\n _x2 = posPts.x2;\n rs.segpts = [_x, _y, _x2, _y];\n } else if (_lShapeInsideTgt) {\n // horizontal Z-shape (turn distance not respected)\n var _x3 = (posPts.x1 + posPts.x2) / 2;\n\n var _y2 = posPts.y1,\n _y3 = posPts.y2;\n rs.segpts = [_x3, _y2, _x3, _y3];\n } else {\n // L-shape (turn distance not respected, but works well for tree siblings)\n rs.segpts = [posPts.x2, posPts.y1];\n }\n }\n } else {\n // ideal routing\n if (isVert) {\n var _y4 = posPts.y1 + d + (dIncludesNodeBody ? srcH / 2 * sgnL : 0);\n\n var _x4 = posPts.x1,\n _x5 = posPts.x2;\n rs.segpts = [_x4, _y4, _x5, _y4];\n } else {\n // horizontal\n var _x6 = posPts.x1 + d + (dIncludesNodeBody ? srcW / 2 * sgnL : 0);\n\n var _y5 = posPts.y1,\n _y6 = posPts.y2;\n rs.segpts = [_x6, _y5, _x6, _y6];\n }\n }\n};\n\nBRp$3.tryToCorrectInvalidPoints = function (edge, pairInfo) {\n var rs = edge._private.rscratch; // can only correct beziers for now...\n\n if (rs.edgeType === 'bezier') {\n var srcPos = pairInfo.srcPos,\n tgtPos = pairInfo.tgtPos,\n srcW = pairInfo.srcW,\n srcH = pairInfo.srcH,\n tgtW = pairInfo.tgtW,\n tgtH = pairInfo.tgtH,\n srcShape = pairInfo.srcShape,\n tgtShape = pairInfo.tgtShape;\n var badStart = !number(rs.startX) || !number(rs.startY);\n var badAStart = !number(rs.arrowStartX) || !number(rs.arrowStartY);\n var badEnd = !number(rs.endX) || !number(rs.endY);\n var badAEnd = !number(rs.arrowEndX) || !number(rs.arrowEndY);\n var minCpADistFactor = 3;\n var arrowW = this.getArrowWidth(edge.pstyle('width').pfValue, edge.pstyle('arrow-scale').value) * this.arrowShapeWidth;\n var minCpADist = minCpADistFactor * arrowW;\n var startACpDist = dist({\n x: rs.ctrlpts[0],\n y: rs.ctrlpts[1]\n }, {\n x: rs.startX,\n y: rs.startY\n });\n var closeStartACp = startACpDist < minCpADist;\n var endACpDist = dist({\n x: rs.ctrlpts[0],\n y: rs.ctrlpts[1]\n }, {\n x: rs.endX,\n y: rs.endY\n });\n var closeEndACp = endACpDist < minCpADist;\n var overlapping = false;\n\n if (badStart || badAStart || closeStartACp) {\n overlapping = true; // project control point along line from src centre to outside the src shape\n // (otherwise intersection will yield nothing)\n\n var cpD = {\n // delta\n x: rs.ctrlpts[0] - srcPos.x,\n y: rs.ctrlpts[1] - srcPos.y\n };\n var cpL = Math.sqrt(cpD.x * cpD.x + cpD.y * cpD.y); // length of line\n\n var cpM = {\n // normalised delta\n x: cpD.x / cpL,\n y: cpD.y / cpL\n };\n var radius = Math.max(srcW, srcH);\n var cpProj = {\n // *2 radius guarantees outside shape\n x: rs.ctrlpts[0] + cpM.x * 2 * radius,\n y: rs.ctrlpts[1] + cpM.y * 2 * radius\n };\n var srcCtrlPtIntn = srcShape.intersectLine(srcPos.x, srcPos.y, srcW, srcH, cpProj.x, cpProj.y, 0);\n\n if (closeStartACp) {\n rs.ctrlpts[0] = rs.ctrlpts[0] + cpM.x * (minCpADist - startACpDist);\n rs.ctrlpts[1] = rs.ctrlpts[1] + cpM.y * (minCpADist - startACpDist);\n } else {\n rs.ctrlpts[0] = srcCtrlPtIntn[0] + cpM.x * minCpADist;\n rs.ctrlpts[1] = srcCtrlPtIntn[1] + cpM.y * minCpADist;\n }\n }\n\n if (badEnd || badAEnd || closeEndACp) {\n overlapping = true; // project control point along line from tgt centre to outside the tgt shape\n // (otherwise intersection will yield nothing)\n\n var _cpD = {\n // delta\n x: rs.ctrlpts[0] - tgtPos.x,\n y: rs.ctrlpts[1] - tgtPos.y\n };\n\n var _cpL = Math.sqrt(_cpD.x * _cpD.x + _cpD.y * _cpD.y); // length of line\n\n\n var _cpM = {\n // normalised delta\n x: _cpD.x / _cpL,\n y: _cpD.y / _cpL\n };\n\n var _radius = Math.max(srcW, srcH);\n\n var _cpProj = {\n // *2 radius guarantees outside shape\n x: rs.ctrlpts[0] + _cpM.x * 2 * _radius,\n y: rs.ctrlpts[1] + _cpM.y * 2 * _radius\n };\n var tgtCtrlPtIntn = tgtShape.intersectLine(tgtPos.x, tgtPos.y, tgtW, tgtH, _cpProj.x, _cpProj.y, 0);\n\n if (closeEndACp) {\n rs.ctrlpts[0] = rs.ctrlpts[0] + _cpM.x * (minCpADist - endACpDist);\n rs.ctrlpts[1] = rs.ctrlpts[1] + _cpM.y * (minCpADist - endACpDist);\n } else {\n rs.ctrlpts[0] = tgtCtrlPtIntn[0] + _cpM.x * minCpADist;\n rs.ctrlpts[1] = tgtCtrlPtIntn[1] + _cpM.y * minCpADist;\n }\n }\n\n if (overlapping) {\n // recalc endpts\n this.findEndpoints(edge);\n }\n }\n};\n\nBRp$3.storeAllpts = function (edge) {\n var rs = edge._private.rscratch;\n\n if (rs.edgeType === 'multibezier' || rs.edgeType === 'bezier' || rs.edgeType === 'self' || rs.edgeType === 'compound') {\n rs.allpts = [];\n rs.allpts.push(rs.startX, rs.startY);\n\n for (var b = 0; b + 1 < rs.ctrlpts.length; b += 2) {\n // ctrl pt itself\n rs.allpts.push(rs.ctrlpts[b], rs.ctrlpts[b + 1]); // the midpt between ctrlpts as intermediate destination pts\n\n if (b + 3 < rs.ctrlpts.length) {\n rs.allpts.push((rs.ctrlpts[b] + rs.ctrlpts[b + 2]) / 2, (rs.ctrlpts[b + 1] + rs.ctrlpts[b + 3]) / 2);\n }\n }\n\n rs.allpts.push(rs.endX, rs.endY);\n var m, mt;\n\n if (rs.ctrlpts.length / 2 % 2 === 0) {\n m = rs.allpts.length / 2 - 1;\n rs.midX = rs.allpts[m];\n rs.midY = rs.allpts[m + 1];\n } else {\n m = rs.allpts.length / 2 - 3;\n mt = 0.5;\n rs.midX = qbezierAt(rs.allpts[m], rs.allpts[m + 2], rs.allpts[m + 4], mt);\n rs.midY = qbezierAt(rs.allpts[m + 1], rs.allpts[m + 3], rs.allpts[m + 5], mt);\n }\n } else if (rs.edgeType === 'straight') {\n // need to calc these after endpts\n rs.allpts = [rs.startX, rs.startY, rs.endX, rs.endY]; // default midpt for labels etc\n\n rs.midX = (rs.startX + rs.endX + rs.arrowStartX + rs.arrowEndX) / 4;\n rs.midY = (rs.startY + rs.endY + rs.arrowStartY + rs.arrowEndY) / 4;\n } else if (rs.edgeType === 'segments') {\n rs.allpts = [];\n rs.allpts.push(rs.startX, rs.startY);\n rs.allpts.push.apply(rs.allpts, rs.segpts);\n rs.allpts.push(rs.endX, rs.endY);\n\n if (rs.segpts.length % 4 === 0) {\n var i2 = rs.segpts.length / 2;\n var i1 = i2 - 2;\n rs.midX = (rs.segpts[i1] + rs.segpts[i2]) / 2;\n rs.midY = (rs.segpts[i1 + 1] + rs.segpts[i2 + 1]) / 2;\n } else {\n var _i = rs.segpts.length / 2 - 1;\n\n rs.midX = rs.segpts[_i];\n rs.midY = rs.segpts[_i + 1];\n }\n }\n};\n\nBRp$3.checkForInvalidEdgeWarning = function (edge) {\n var rs = edge[0]._private.rscratch;\n\n if (rs.nodesOverlap || number(rs.startX) && number(rs.startY) && number(rs.endX) && number(rs.endY)) {\n rs.loggedErr = false;\n } else {\n if (!rs.loggedErr) {\n rs.loggedErr = true;\n warn('Edge `' + edge.id() + '` has invalid endpoints and so it is impossible to draw. Adjust your edge style (e.g. control points) accordingly or use an alternative edge type. This is expected behaviour when the source node and the target node overlap.');\n }\n }\n};\n\nBRp$3.findEdgeControlPoints = function (edges) {\n var _this = this;\n\n if (!edges || edges.length === 0) {\n return;\n }\n\n var r = this;\n var cy = r.cy;\n var hasCompounds = cy.hasCompoundNodes();\n var hashTable = {\n map: new Map$1(),\n get: function get(pairId) {\n var map2 = this.map.get(pairId[0]);\n\n if (map2 != null) {\n return map2.get(pairId[1]);\n } else {\n return null;\n }\n },\n set: function set(pairId, val) {\n var map2 = this.map.get(pairId[0]);\n\n if (map2 == null) {\n map2 = new Map$1();\n this.map.set(pairId[0], map2);\n }\n\n map2.set(pairId[1], val);\n }\n };\n var pairIds = [];\n var haystackEdges = []; // create a table of edge (src, tgt) => list of edges between them\n\n for (var i = 0; i < edges.length; i++) {\n var edge = edges[i];\n var _p = edge._private;\n var curveStyle = edge.pstyle('curve-style').value; // ignore edges who are not to be displayed\n // they shouldn't take up space\n\n if (edge.removed() || !edge.takesUpSpace()) {\n continue;\n }\n\n if (curveStyle === 'haystack') {\n haystackEdges.push(edge);\n continue;\n }\n\n var edgeIsUnbundled = curveStyle === 'unbundled-bezier' || curveStyle === 'segments' || curveStyle === 'straight' || curveStyle === 'taxi';\n var edgeIsBezier = curveStyle === 'unbundled-bezier' || curveStyle === 'bezier';\n var src = _p.source;\n var tgt = _p.target;\n var srcIndex = src.poolIndex();\n var tgtIndex = tgt.poolIndex();\n var pairId = [srcIndex, tgtIndex].sort();\n var tableEntry = hashTable.get(pairId);\n\n if (tableEntry == null) {\n tableEntry = {\n eles: []\n };\n hashTable.set(pairId, tableEntry);\n pairIds.push(pairId);\n }\n\n tableEntry.eles.push(edge);\n\n if (edgeIsUnbundled) {\n tableEntry.hasUnbundled = true;\n }\n\n if (edgeIsBezier) {\n tableEntry.hasBezier = true;\n }\n } // for each pair (src, tgt), create the ctrl pts\n // Nested for loop is OK; total number of iterations for both loops = edgeCount\n\n\n var _loop = function _loop(p) {\n var pairId = pairIds[p];\n var pairInfo = hashTable.get(pairId);\n var swappedpairInfo = void 0;\n\n if (!pairInfo.hasUnbundled) {\n var pllEdges = pairInfo.eles[0].parallelEdges().filter(function (e) {\n return e.isBundledBezier();\n });\n clearArray(pairInfo.eles);\n pllEdges.forEach(function (edge) {\n return pairInfo.eles.push(edge);\n }); // for each pair id, the edges should be sorted by index\n\n pairInfo.eles.sort(function (edge1, edge2) {\n return edge1.poolIndex() - edge2.poolIndex();\n });\n }\n\n var firstEdge = pairInfo.eles[0];\n var src = firstEdge.source();\n var tgt = firstEdge.target(); // make sure src/tgt distinction is consistent w.r.t. pairId\n\n if (src.poolIndex() > tgt.poolIndex()) {\n var temp = src;\n src = tgt;\n tgt = temp;\n }\n\n var srcPos = pairInfo.srcPos = src.position();\n var tgtPos = pairInfo.tgtPos = tgt.position();\n var srcW = pairInfo.srcW = src.outerWidth();\n var srcH = pairInfo.srcH = src.outerHeight();\n var tgtW = pairInfo.tgtW = tgt.outerWidth();\n var tgtH = pairInfo.tgtH = tgt.outerHeight();\n\n var srcShape = pairInfo.srcShape = r.nodeShapes[_this.getNodeShape(src)];\n\n var tgtShape = pairInfo.tgtShape = r.nodeShapes[_this.getNodeShape(tgt)];\n\n pairInfo.dirCounts = {\n 'north': 0,\n 'west': 0,\n 'south': 0,\n 'east': 0,\n 'northwest': 0,\n 'southwest': 0,\n 'northeast': 0,\n 'southeast': 0\n };\n\n for (var _i2 = 0; _i2 < pairInfo.eles.length; _i2++) {\n var _edge = pairInfo.eles[_i2];\n var rs = _edge[0]._private.rscratch;\n\n var _curveStyle = _edge.pstyle('curve-style').value;\n\n var _edgeIsUnbundled = _curveStyle === 'unbundled-bezier' || _curveStyle === 'segments' || _curveStyle === 'taxi'; // whether the normalised pair order is the reverse of the edge's src-tgt order\n\n\n var edgeIsSwapped = !src.same(_edge.source());\n\n if (!pairInfo.calculatedIntersection && src !== tgt && (pairInfo.hasBezier || pairInfo.hasUnbundled)) {\n pairInfo.calculatedIntersection = true; // pt outside src shape to calc distance/displacement from src to tgt\n\n var srcOutside = srcShape.intersectLine(srcPos.x, srcPos.y, srcW, srcH, tgtPos.x, tgtPos.y, 0);\n var srcIntn = pairInfo.srcIntn = srcOutside; // pt outside tgt shape to calc distance/displacement from src to tgt\n\n var tgtOutside = tgtShape.intersectLine(tgtPos.x, tgtPos.y, tgtW, tgtH, srcPos.x, srcPos.y, 0);\n var tgtIntn = pairInfo.tgtIntn = tgtOutside;\n var intersectionPts = pairInfo.intersectionPts = {\n x1: srcOutside[0],\n x2: tgtOutside[0],\n y1: srcOutside[1],\n y2: tgtOutside[1]\n };\n var posPts = pairInfo.posPts = {\n x1: srcPos.x,\n x2: tgtPos.x,\n y1: srcPos.y,\n y2: tgtPos.y\n };\n var dy = tgtOutside[1] - srcOutside[1];\n var dx = tgtOutside[0] - srcOutside[0];\n var l = Math.sqrt(dx * dx + dy * dy);\n var vector = pairInfo.vector = {\n x: dx,\n y: dy\n };\n var vectorNorm = pairInfo.vectorNorm = {\n x: vector.x / l,\n y: vector.y / l\n };\n var vectorNormInverse = {\n x: -vectorNorm.y,\n y: vectorNorm.x\n }; // if node shapes overlap, then no ctrl pts to draw\n\n pairInfo.nodesOverlap = !number(l) || tgtShape.checkPoint(srcOutside[0], srcOutside[1], 0, tgtW, tgtH, tgtPos.x, tgtPos.y) || srcShape.checkPoint(tgtOutside[0], tgtOutside[1], 0, srcW, srcH, srcPos.x, srcPos.y);\n pairInfo.vectorNormInverse = vectorNormInverse;\n swappedpairInfo = {\n nodesOverlap: pairInfo.nodesOverlap,\n dirCounts: pairInfo.dirCounts,\n calculatedIntersection: true,\n hasBezier: pairInfo.hasBezier,\n hasUnbundled: pairInfo.hasUnbundled,\n eles: pairInfo.eles,\n srcPos: tgtPos,\n tgtPos: srcPos,\n srcW: tgtW,\n srcH: tgtH,\n tgtW: srcW,\n tgtH: srcH,\n srcIntn: tgtIntn,\n tgtIntn: srcIntn,\n srcShape: tgtShape,\n tgtShape: srcShape,\n posPts: {\n x1: posPts.x2,\n y1: posPts.y2,\n x2: posPts.x1,\n y2: posPts.y1\n },\n intersectionPts: {\n x1: intersectionPts.x2,\n y1: intersectionPts.y2,\n x2: intersectionPts.x1,\n y2: intersectionPts.y1\n },\n vector: {\n x: -vector.x,\n y: -vector.y\n },\n vectorNorm: {\n x: -vectorNorm.x,\n y: -vectorNorm.y\n },\n vectorNormInverse: {\n x: -vectorNormInverse.x,\n y: -vectorNormInverse.y\n }\n };\n }\n\n var passedPairInfo = edgeIsSwapped ? swappedpairInfo : pairInfo;\n rs.nodesOverlap = passedPairInfo.nodesOverlap;\n rs.srcIntn = passedPairInfo.srcIntn;\n rs.tgtIntn = passedPairInfo.tgtIntn;\n\n if (hasCompounds && (src.isParent() || src.isChild() || tgt.isParent() || tgt.isChild()) && (src.parents().anySame(tgt) || tgt.parents().anySame(src) || src.same(tgt))) {\n _this.findCompoundLoopPoints(_edge, passedPairInfo, _i2, _edgeIsUnbundled);\n } else if (src === tgt) {\n _this.findLoopPoints(_edge, passedPairInfo, _i2, _edgeIsUnbundled);\n } else if (_curveStyle === 'segments') {\n _this.findSegmentsPoints(_edge, passedPairInfo);\n } else if (_curveStyle === 'taxi') {\n _this.findTaxiPoints(_edge, passedPairInfo);\n } else if (_curveStyle === 'straight' || !_edgeIsUnbundled && pairInfo.eles.length % 2 === 1 && _i2 === Math.floor(pairInfo.eles.length / 2)) {\n _this.findStraightEdgePoints(_edge);\n } else {\n _this.findBezierPoints(_edge, passedPairInfo, _i2, _edgeIsUnbundled, edgeIsSwapped);\n }\n\n _this.findEndpoints(_edge);\n\n _this.tryToCorrectInvalidPoints(_edge, passedPairInfo);\n\n _this.checkForInvalidEdgeWarning(_edge);\n\n _this.storeAllpts(_edge);\n\n _this.storeEdgeProjections(_edge);\n\n _this.calculateArrowAngles(_edge);\n\n _this.recalculateEdgeLabelProjections(_edge);\n\n _this.calculateLabelAngles(_edge);\n } // for pair edges\n\n };\n\n for (var p = 0; p < pairIds.length; p++) {\n _loop(p);\n } // for pair ids\n // haystacks avoid the expense of pairInfo stuff (intersections etc.)\n\n\n this.findHaystackPoints(haystackEdges);\n};\n\nfunction getPts(pts) {\n var retPts = [];\n\n if (pts == null) {\n return;\n }\n\n for (var i = 0; i < pts.length; i += 2) {\n var x = pts[i];\n var y = pts[i + 1];\n retPts.push({\n x: x,\n y: y\n });\n }\n\n return retPts;\n}\n\nBRp$3.getSegmentPoints = function (edge) {\n var rs = edge[0]._private.rscratch;\n var type = rs.edgeType;\n\n if (type === 'segments') {\n this.recalculateRenderedStyle(edge);\n return getPts(rs.segpts);\n }\n};\n\nBRp$3.getControlPoints = function (edge) {\n var rs = edge[0]._private.rscratch;\n var type = rs.edgeType;\n\n if (type === 'bezier' || type === 'multibezier' || type === 'self' || type === 'compound') {\n this.recalculateRenderedStyle(edge);\n return getPts(rs.ctrlpts);\n }\n};\n\nBRp$3.getEdgeMidpoint = function (edge) {\n var rs = edge[0]._private.rscratch;\n this.recalculateRenderedStyle(edge);\n return {\n x: rs.midX,\n y: rs.midY\n };\n};\n\nvar BRp$4 = {};\n\nBRp$4.manualEndptToPx = function (node, prop) {\n var r = this;\n var npos = node.position();\n var w = node.outerWidth();\n var h = node.outerHeight();\n\n if (prop.value.length === 2) {\n var p = [prop.pfValue[0], prop.pfValue[1]];\n\n if (prop.units[0] === '%') {\n p[0] = p[0] * w;\n }\n\n if (prop.units[1] === '%') {\n p[1] = p[1] * h;\n }\n\n p[0] += npos.x;\n p[1] += npos.y;\n return p;\n } else {\n var angle = prop.pfValue[0];\n angle = -Math.PI / 2 + angle; // start at 12 o'clock\n\n var l = 2 * Math.max(w, h);\n var _p = [npos.x + Math.cos(angle) * l, npos.y + Math.sin(angle) * l];\n return r.nodeShapes[this.getNodeShape(node)].intersectLine(npos.x, npos.y, w, h, _p[0], _p[1], 0);\n }\n};\n\nBRp$4.findEndpoints = function (edge) {\n var r = this;\n var intersect;\n var source = edge.source()[0];\n var target = edge.target()[0];\n var srcPos = source.position();\n var tgtPos = target.position();\n var tgtArShape = edge.pstyle('target-arrow-shape').value;\n var srcArShape = edge.pstyle('source-arrow-shape').value;\n var tgtDist = edge.pstyle('target-distance-from-node').pfValue;\n var srcDist = edge.pstyle('source-distance-from-node').pfValue;\n var curveStyle = edge.pstyle('curve-style').value;\n var rs = edge._private.rscratch;\n var et = rs.edgeType;\n var taxi = curveStyle === 'taxi';\n var self = et === 'self' || et === 'compound';\n var bezier = et === 'bezier' || et === 'multibezier' || self;\n var multi = et !== 'bezier';\n var lines = et === 'straight' || et === 'segments';\n var segments = et === 'segments';\n var hasEndpts = bezier || multi || lines;\n var overrideEndpts = self || taxi;\n var srcManEndpt = edge.pstyle('source-endpoint');\n var srcManEndptVal = overrideEndpts ? 'outside-to-node' : srcManEndpt.value;\n var tgtManEndpt = edge.pstyle('target-endpoint');\n var tgtManEndptVal = overrideEndpts ? 'outside-to-node' : tgtManEndpt.value;\n rs.srcManEndpt = srcManEndpt;\n rs.tgtManEndpt = tgtManEndpt;\n var p1; // last known point of edge on target side\n\n var p2; // last known point of edge on source side\n\n var p1_i; // point to intersect with target shape\n\n var p2_i; // point to intersect with source shape\n\n if (bezier) {\n var cpStart = [rs.ctrlpts[0], rs.ctrlpts[1]];\n var cpEnd = multi ? [rs.ctrlpts[rs.ctrlpts.length - 2], rs.ctrlpts[rs.ctrlpts.length - 1]] : cpStart;\n p1 = cpEnd;\n p2 = cpStart;\n } else if (lines) {\n var srcArrowFromPt = !segments ? [tgtPos.x, tgtPos.y] : rs.segpts.slice(0, 2);\n var tgtArrowFromPt = !segments ? [srcPos.x, srcPos.y] : rs.segpts.slice(rs.segpts.length - 2);\n p1 = tgtArrowFromPt;\n p2 = srcArrowFromPt;\n }\n\n if (tgtManEndptVal === 'inside-to-node') {\n intersect = [tgtPos.x, tgtPos.y];\n } else if (tgtManEndpt.units) {\n intersect = this.manualEndptToPx(target, tgtManEndpt);\n } else if (tgtManEndptVal === 'outside-to-line') {\n intersect = rs.tgtIntn; // use cached value from ctrlpt calc\n } else {\n if (tgtManEndptVal === 'outside-to-node' || tgtManEndptVal === 'outside-to-node-or-label') {\n p1_i = p1;\n } else if (tgtManEndptVal === 'outside-to-line' || tgtManEndptVal === 'outside-to-line-or-label') {\n p1_i = [srcPos.x, srcPos.y];\n }\n\n intersect = r.nodeShapes[this.getNodeShape(target)].intersectLine(tgtPos.x, tgtPos.y, target.outerWidth(), target.outerHeight(), p1_i[0], p1_i[1], 0);\n\n if (tgtManEndptVal === 'outside-to-node-or-label' || tgtManEndptVal === 'outside-to-line-or-label') {\n var trs = target._private.rscratch;\n var lw = trs.labelWidth;\n var lh = trs.labelHeight;\n var lx = trs.labelX;\n var ly = trs.labelY;\n var va = target.pstyle('text-valign').value;\n\n if (va === 'top') {\n ly -= lh / 2;\n } else if (va === 'bottom') {\n ly += lh / 2;\n }\n\n var ha = target.pstyle('text-halign').value;\n\n if (ha === 'left') {\n lx -= lw / 2;\n } else if (ha === 'right') {\n lx += lw / 2;\n }\n\n var labelIntersect = r.nodeShapes['rectangle'].intersectLine(lx, ly, lw, lh, p1_i[0], p1_i[1], 0);\n var refPt = srcPos;\n var intSqdist = sqdist(refPt, array2point(intersect));\n var labIntSqdist = sqdist(refPt, array2point(labelIntersect));\n\n if (labIntSqdist < intSqdist) {\n intersect = labelIntersect;\n }\n }\n }\n\n var arrowEnd = shortenIntersection(intersect, p1, r.arrowShapes[tgtArShape].spacing(edge) + tgtDist);\n var edgeEnd = shortenIntersection(intersect, p1, r.arrowShapes[tgtArShape].gap(edge) + tgtDist);\n rs.endX = edgeEnd[0];\n rs.endY = edgeEnd[1];\n rs.arrowEndX = arrowEnd[0];\n rs.arrowEndY = arrowEnd[1];\n\n if (srcManEndptVal === 'inside-to-node') {\n intersect = [srcPos.x, srcPos.y];\n } else if (srcManEndpt.units) {\n intersect = this.manualEndptToPx(source, srcManEndpt);\n } else if (srcManEndptVal === 'outside-to-line') {\n intersect = rs.srcIntn; // use cached value from ctrlpt calc\n } else {\n if (srcManEndptVal === 'outside-to-node' || srcManEndptVal === 'outside-to-node-or-label') {\n p2_i = p2;\n } else if (srcManEndptVal === 'outside-to-line' || srcManEndptVal === 'outside-to-line-or-label') {\n p2_i = [tgtPos.x, tgtPos.y];\n }\n\n intersect = r.nodeShapes[this.getNodeShape(source)].intersectLine(srcPos.x, srcPos.y, source.outerWidth(), source.outerHeight(), p2_i[0], p2_i[1], 0);\n\n if (srcManEndptVal === 'outside-to-node-or-label' || srcManEndptVal === 'outside-to-line-or-label') {\n var srs = source._private.rscratch;\n var _lw = srs.labelWidth;\n var _lh = srs.labelHeight;\n var _lx = srs.labelX;\n var _ly = srs.labelY;\n var _va = source.pstyle('text-valign').value;\n\n if (_va === 'top') {\n _ly -= _lh / 2;\n } else if (_va === 'bottom') {\n _ly += _lh / 2;\n }\n\n var _ha = source.pstyle('text-halign').value;\n\n if (_ha === 'left') {\n _lx -= _lw / 2;\n } else if (_ha === 'right') {\n _lx += _lw / 2;\n }\n\n var _labelIntersect = r.nodeShapes['rectangle'].intersectLine(_lx, _ly, _lw, _lh, p2_i[0], p2_i[1], 0);\n\n var _refPt = tgtPos;\n\n var _intSqdist = sqdist(_refPt, array2point(intersect));\n\n var _labIntSqdist = sqdist(_refPt, array2point(_labelIntersect));\n\n if (_labIntSqdist < _intSqdist) {\n intersect = _labelIntersect;\n }\n }\n }\n\n var arrowStart = shortenIntersection(intersect, p2, r.arrowShapes[srcArShape].spacing(edge) + srcDist);\n var edgeStart = shortenIntersection(intersect, p2, r.arrowShapes[srcArShape].gap(edge) + srcDist);\n rs.startX = edgeStart[0];\n rs.startY = edgeStart[1];\n rs.arrowStartX = arrowStart[0];\n rs.arrowStartY = arrowStart[1];\n\n if (hasEndpts) {\n if (!number(rs.startX) || !number(rs.startY) || !number(rs.endX) || !number(rs.endY)) {\n rs.badLine = true;\n } else {\n rs.badLine = false;\n }\n }\n};\n\nBRp$4.getSourceEndpoint = function (edge) {\n var rs = edge[0]._private.rscratch;\n this.recalculateRenderedStyle(edge);\n\n switch (rs.edgeType) {\n case 'haystack':\n return {\n x: rs.haystackPts[0],\n y: rs.haystackPts[1]\n };\n\n default:\n return {\n x: rs.arrowStartX,\n y: rs.arrowStartY\n };\n }\n};\n\nBRp$4.getTargetEndpoint = function (edge) {\n var rs = edge[0]._private.rscratch;\n this.recalculateRenderedStyle(edge);\n\n switch (rs.edgeType) {\n case 'haystack':\n return {\n x: rs.haystackPts[2],\n y: rs.haystackPts[3]\n };\n\n default:\n return {\n x: rs.arrowEndX,\n y: rs.arrowEndY\n };\n }\n};\n\nvar BRp$5 = {};\n\nfunction pushBezierPts(r, edge, pts) {\n var qbezierAt$1 = function qbezierAt$1(p1, p2, p3, t) {\n return qbezierAt(p1, p2, p3, t);\n };\n\n var _p = edge._private;\n var bpts = _p.rstyle.bezierPts;\n\n for (var i = 0; i < r.bezierProjPcts.length; i++) {\n var p = r.bezierProjPcts[i];\n bpts.push({\n x: qbezierAt$1(pts[0], pts[2], pts[4], p),\n y: qbezierAt$1(pts[1], pts[3], pts[5], p)\n });\n }\n}\n\nBRp$5.storeEdgeProjections = function (edge) {\n var _p = edge._private;\n var rs = _p.rscratch;\n var et = rs.edgeType; // clear the cached points state\n\n _p.rstyle.bezierPts = null;\n _p.rstyle.linePts = null;\n _p.rstyle.haystackPts = null;\n\n if (et === 'multibezier' || et === 'bezier' || et === 'self' || et === 'compound') {\n _p.rstyle.bezierPts = [];\n\n for (var i = 0; i + 5 < rs.allpts.length; i += 4) {\n pushBezierPts(this, edge, rs.allpts.slice(i, i + 6));\n }\n } else if (et === 'segments') {\n var lpts = _p.rstyle.linePts = [];\n\n for (var i = 0; i + 1 < rs.allpts.length; i += 2) {\n lpts.push({\n x: rs.allpts[i],\n y: rs.allpts[i + 1]\n });\n }\n } else if (et === 'haystack') {\n var hpts = rs.haystackPts;\n _p.rstyle.haystackPts = [{\n x: hpts[0],\n y: hpts[1]\n }, {\n x: hpts[2],\n y: hpts[3]\n }];\n }\n\n _p.rstyle.arrowWidth = this.getArrowWidth(edge.pstyle('width').pfValue, edge.pstyle('arrow-scale').value) * this.arrowShapeWidth;\n};\n\nBRp$5.recalculateEdgeProjections = function (edges) {\n this.findEdgeControlPoints(edges);\n};\n\nvar BRp$6 = {};\n\nBRp$6.recalculateNodeLabelProjection = function (node) {\n var content = node.pstyle('label').strValue;\n\n if (emptyString(content)) {\n return;\n }\n\n var textX, textY;\n var _p = node._private;\n var nodeWidth = node.width();\n var nodeHeight = node.height();\n var padding = node.padding();\n var nodePos = node.position();\n var textHalign = node.pstyle('text-halign').strValue;\n var textValign = node.pstyle('text-valign').strValue;\n var rs = _p.rscratch;\n var rstyle = _p.rstyle;\n\n switch (textHalign) {\n case 'left':\n textX = nodePos.x - nodeWidth / 2 - padding;\n break;\n\n case 'right':\n textX = nodePos.x + nodeWidth / 2 + padding;\n break;\n\n default:\n // e.g. center\n textX = nodePos.x;\n }\n\n switch (textValign) {\n case 'top':\n textY = nodePos.y - nodeHeight / 2 - padding;\n break;\n\n case 'bottom':\n textY = nodePos.y + nodeHeight / 2 + padding;\n break;\n\n default:\n // e.g. middle\n textY = nodePos.y;\n }\n\n rs.labelX = textX;\n rs.labelY = textY;\n rstyle.labelX = textX;\n rstyle.labelY = textY;\n this.applyLabelDimensions(node);\n};\n\nvar lineAngleFromDelta = function lineAngleFromDelta(dx, dy) {\n var angle = Math.atan(dy / dx);\n\n if (dx === 0 && angle < 0) {\n angle = angle * -1;\n }\n\n return angle;\n};\n\nvar lineAngle = function lineAngle(p0, p1) {\n var dx = p1.x - p0.x;\n var dy = p1.y - p0.y;\n return lineAngleFromDelta(dx, dy);\n};\n\nvar bezierAngle = function bezierAngle(p0, p1, p2, t) {\n var t0 = bound(0, t - 0.001, 1);\n var t1 = bound(0, t + 0.001, 1);\n var lp0 = qbezierPtAt(p0, p1, p2, t0);\n var lp1 = qbezierPtAt(p0, p1, p2, t1);\n return lineAngle(lp0, lp1);\n};\n\nBRp$6.recalculateEdgeLabelProjections = function (edge) {\n var p;\n var _p = edge._private;\n var rs = _p.rscratch;\n var r = this;\n var content = {\n mid: edge.pstyle('label').strValue,\n source: edge.pstyle('source-label').strValue,\n target: edge.pstyle('target-label').strValue\n };\n\n if (content.mid || content.source || content.target) ; else {\n return; // no labels => no calcs\n } // add center point to style so bounding box calculations can use it\n //\n\n\n p = {\n x: rs.midX,\n y: rs.midY\n };\n\n var setRs = function setRs(propName, prefix, value) {\n setPrefixedProperty(_p.rscratch, propName, prefix, value);\n setPrefixedProperty(_p.rstyle, propName, prefix, value);\n };\n\n setRs('labelX', null, p.x);\n setRs('labelY', null, p.y);\n var midAngle = lineAngleFromDelta(rs.midDispX, rs.midDispY);\n setRs('labelAutoAngle', null, midAngle);\n\n var createControlPointInfo = function createControlPointInfo() {\n if (createControlPointInfo.cache) {\n return createControlPointInfo.cache;\n } // use cache so only 1x per edge\n\n\n var ctrlpts = []; // store each ctrlpt info init\n\n for (var i = 0; i + 5 < rs.allpts.length; i += 4) {\n var p0 = {\n x: rs.allpts[i],\n y: rs.allpts[i + 1]\n };\n var p1 = {\n x: rs.allpts[i + 2],\n y: rs.allpts[i + 3]\n }; // ctrlpt\n\n var p2 = {\n x: rs.allpts[i + 4],\n y: rs.allpts[i + 5]\n };\n ctrlpts.push({\n p0: p0,\n p1: p1,\n p2: p2,\n startDist: 0,\n length: 0,\n segments: []\n });\n }\n\n var bpts = _p.rstyle.bezierPts;\n var nProjs = r.bezierProjPcts.length;\n\n function addSegment(cp, p0, p1, t0, t1) {\n var length = dist(p0, p1);\n var prevSegment = cp.segments[cp.segments.length - 1];\n var segment = {\n p0: p0,\n p1: p1,\n t0: t0,\n t1: t1,\n startDist: prevSegment ? prevSegment.startDist + prevSegment.length : 0,\n length: length\n };\n cp.segments.push(segment);\n cp.length += length;\n } // update each ctrlpt with segment info\n\n\n for (var _i = 0; _i < ctrlpts.length; _i++) {\n var cp = ctrlpts[_i];\n var prevCp = ctrlpts[_i - 1];\n\n if (prevCp) {\n cp.startDist = prevCp.startDist + prevCp.length;\n }\n\n addSegment(cp, cp.p0, bpts[_i * nProjs], 0, r.bezierProjPcts[0]); // first\n\n for (var j = 0; j < nProjs - 1; j++) {\n addSegment(cp, bpts[_i * nProjs + j], bpts[_i * nProjs + j + 1], r.bezierProjPcts[j], r.bezierProjPcts[j + 1]);\n }\n\n addSegment(cp, bpts[_i * nProjs + nProjs - 1], cp.p2, r.bezierProjPcts[nProjs - 1], 1); // last\n }\n\n return createControlPointInfo.cache = ctrlpts;\n };\n\n var calculateEndProjection = function calculateEndProjection(prefix) {\n var angle;\n var isSrc = prefix === 'source';\n\n if (!content[prefix]) {\n return;\n }\n\n var offset = edge.pstyle(prefix + '-text-offset').pfValue;\n\n switch (rs.edgeType) {\n case 'self':\n case 'compound':\n case 'bezier':\n case 'multibezier':\n {\n var cps = createControlPointInfo();\n var selected;\n var startDist = 0;\n var totalDist = 0; // find the segment we're on\n\n for (var i = 0; i < cps.length; i++) {\n var _cp = cps[isSrc ? i : cps.length - 1 - i];\n\n for (var j = 0; j < _cp.segments.length; j++) {\n var _seg = _cp.segments[isSrc ? j : _cp.segments.length - 1 - j];\n var lastSeg = i === cps.length - 1 && j === _cp.segments.length - 1;\n startDist = totalDist;\n totalDist += _seg.length;\n\n if (totalDist >= offset || lastSeg) {\n selected = {\n cp: _cp,\n segment: _seg\n };\n break;\n }\n }\n\n if (selected) {\n break;\n }\n }\n\n var cp = selected.cp;\n var seg = selected.segment;\n var tSegment = (offset - startDist) / seg.length;\n var segDt = seg.t1 - seg.t0;\n var t = isSrc ? seg.t0 + segDt * tSegment : seg.t1 - segDt * tSegment;\n t = bound(0, t, 1);\n p = qbezierPtAt(cp.p0, cp.p1, cp.p2, t);\n angle = bezierAngle(cp.p0, cp.p1, cp.p2, t, p);\n break;\n }\n\n case 'straight':\n case 'segments':\n case 'haystack':\n {\n var d = 0,\n di,\n d0;\n var p0, p1;\n var l = rs.allpts.length;\n\n for (var _i2 = 0; _i2 + 3 < l; _i2 += 2) {\n if (isSrc) {\n p0 = {\n x: rs.allpts[_i2],\n y: rs.allpts[_i2 + 1]\n };\n p1 = {\n x: rs.allpts[_i2 + 2],\n y: rs.allpts[_i2 + 3]\n };\n } else {\n p0 = {\n x: rs.allpts[l - 2 - _i2],\n y: rs.allpts[l - 1 - _i2]\n };\n p1 = {\n x: rs.allpts[l - 4 - _i2],\n y: rs.allpts[l - 3 - _i2]\n };\n }\n\n di = dist(p0, p1);\n d0 = d;\n d += di;\n\n if (d >= offset) {\n break;\n }\n }\n\n var pD = offset - d0;\n\n var _t = pD / di;\n\n _t = bound(0, _t, 1);\n p = lineAt(p0, p1, _t);\n angle = lineAngle(p0, p1);\n break;\n }\n }\n\n setRs('labelX', prefix, p.x);\n setRs('labelY', prefix, p.y);\n setRs('labelAutoAngle', prefix, angle);\n };\n\n calculateEndProjection('source');\n calculateEndProjection('target');\n this.applyLabelDimensions(edge);\n};\n\nBRp$6.applyLabelDimensions = function (ele) {\n this.applyPrefixedLabelDimensions(ele);\n\n if (ele.isEdge()) {\n this.applyPrefixedLabelDimensions(ele, 'source');\n this.applyPrefixedLabelDimensions(ele, 'target');\n }\n};\n\nBRp$6.applyPrefixedLabelDimensions = function (ele, prefix) {\n var _p = ele._private;\n var text = this.getLabelText(ele, prefix);\n var labelDims = this.calculateLabelDimensions(ele, text);\n var lineHeight = ele.pstyle('line-height').pfValue;\n var textWrap = ele.pstyle('text-wrap').strValue;\n var lines = getPrefixedProperty(_p.rscratch, 'labelWrapCachedLines', prefix) || [];\n var numLines = textWrap !== 'wrap' ? 1 : Math.max(lines.length, 1);\n var normPerLineHeight = labelDims.height / numLines;\n var labelLineHeight = normPerLineHeight * lineHeight;\n var width = labelDims.width;\n var height = labelDims.height + (numLines - 1) * (lineHeight - 1) * normPerLineHeight;\n setPrefixedProperty(_p.rstyle, 'labelWidth', prefix, width);\n setPrefixedProperty(_p.rscratch, 'labelWidth', prefix, width);\n setPrefixedProperty(_p.rstyle, 'labelHeight', prefix, height);\n setPrefixedProperty(_p.rscratch, 'labelHeight', prefix, height);\n setPrefixedProperty(_p.rscratch, 'labelLineHeight', prefix, labelLineHeight);\n};\n\nBRp$6.getLabelText = function (ele, prefix) {\n var _p = ele._private;\n var pfd = prefix ? prefix + '-' : '';\n var text = ele.pstyle(pfd + 'label').strValue;\n var textTransform = ele.pstyle('text-transform').value;\n\n var rscratch = function rscratch(propName, value) {\n if (value) {\n setPrefixedProperty(_p.rscratch, propName, prefix, value);\n return value;\n } else {\n return getPrefixedProperty(_p.rscratch, propName, prefix);\n }\n }; // for empty text, skip all processing\n\n\n if (!text) {\n return '';\n }\n\n if (textTransform == 'none') ; else if (textTransform == 'uppercase') {\n text = text.toUpperCase();\n } else if (textTransform == 'lowercase') {\n text = text.toLowerCase();\n }\n\n var wrapStyle = ele.pstyle('text-wrap').value;\n\n if (wrapStyle === 'wrap') {\n var labelKey = rscratch('labelKey'); // save recalc if the label is the same as before\n\n if (labelKey != null && rscratch('labelWrapKey') === labelKey) {\n return rscratch('labelWrapCachedText');\n }\n\n var zwsp = \"\\u200B\";\n var lines = text.split('\\n');\n var maxW = ele.pstyle('text-max-width').pfValue;\n var overflow = ele.pstyle('text-overflow-wrap').value;\n var overflowAny = overflow === 'anywhere';\n var wrappedLines = [];\n var wordsRegex = /[\\s\\u200b]+/;\n var wordSeparator = overflowAny ? '' : ' ';\n\n for (var l = 0; l < lines.length; l++) {\n var line = lines[l];\n var lineDims = this.calculateLabelDimensions(ele, line);\n var lineW = lineDims.width;\n\n if (overflowAny) {\n var processedLine = line.split('').join(zwsp);\n line = processedLine;\n }\n\n if (lineW > maxW) {\n // line is too long\n var words = line.split(wordsRegex);\n var subline = '';\n\n for (var w = 0; w < words.length; w++) {\n var word = words[w];\n var testLine = subline.length === 0 ? word : subline + wordSeparator + word;\n var testDims = this.calculateLabelDimensions(ele, testLine);\n var testW = testDims.width;\n\n if (testW <= maxW) {\n // word fits on current line\n subline += word + wordSeparator;\n } else {\n // word starts new line\n wrappedLines.push(subline);\n subline = word + wordSeparator;\n }\n } // if there's remaining text, put it in a wrapped line\n\n\n if (!subline.match(/^[\\s\\u200b]+$/)) {\n wrappedLines.push(subline);\n }\n } else {\n // line is already short enough\n wrappedLines.push(line);\n }\n } // for\n\n\n rscratch('labelWrapCachedLines', wrappedLines);\n text = rscratch('labelWrapCachedText', wrappedLines.join('\\n'));\n rscratch('labelWrapKey', labelKey);\n } else if (wrapStyle === 'ellipsis') {\n var _maxW = ele.pstyle('text-max-width').pfValue;\n var ellipsized = '';\n var ellipsis = \"\\u2026\";\n var incLastCh = false;\n\n for (var i = 0; i < text.length; i++) {\n var widthWithNextCh = this.calculateLabelDimensions(ele, ellipsized + text[i] + ellipsis).width;\n\n if (widthWithNextCh > _maxW) {\n break;\n }\n\n ellipsized += text[i];\n\n if (i === text.length - 1) {\n incLastCh = true;\n }\n }\n\n if (!incLastCh) {\n ellipsized += ellipsis;\n }\n\n return ellipsized;\n } // if ellipsize\n\n\n return text;\n};\n\nBRp$6.getLabelJustification = function (ele) {\n var justification = ele.pstyle('text-justification').strValue;\n var textHalign = ele.pstyle('text-halign').strValue;\n\n if (justification === 'auto') {\n if (ele.isNode()) {\n switch (textHalign) {\n case 'left':\n return 'right';\n\n case 'right':\n return 'left';\n\n default:\n return 'center';\n }\n } else {\n return 'center';\n }\n } else {\n return justification;\n }\n};\n\nBRp$6.calculateLabelDimensions = function (ele, text) {\n var r = this;\n var cacheKey = hashString(text, ele._private.labelDimsKey);\n var cache = r.labelDimCache || (r.labelDimCache = []);\n var existingVal = cache[cacheKey];\n\n if (existingVal != null) {\n return existingVal;\n }\n\n var sizeMult = 1; // increase the scale to increase accuracy w.r.t. zoomed text\n\n var fStyle = ele.pstyle('font-style').strValue;\n var size = sizeMult * ele.pstyle('font-size').pfValue + 'px';\n var family = ele.pstyle('font-family').strValue;\n var weight = ele.pstyle('font-weight').strValue;\n var div = this.labelCalcDiv;\n\n if (!div) {\n div = this.labelCalcDiv = document.createElement('div'); // eslint-disable-line no-undef\n\n document.body.appendChild(div); // eslint-disable-line no-undef\n }\n\n var ds = div.style; // from ele style\n\n ds.fontFamily = family;\n ds.fontStyle = fStyle;\n ds.fontSize = size;\n ds.fontWeight = weight; // forced style\n\n ds.position = 'absolute';\n ds.left = '-9999px';\n ds.top = '-9999px';\n ds.zIndex = '-1';\n ds.visibility = 'hidden';\n ds.pointerEvents = 'none';\n ds.padding = '0';\n ds.lineHeight = '1';\n\n if (ele.pstyle('text-wrap').value === 'wrap') {\n ds.whiteSpace = 'pre'; // so newlines are taken into account\n } else {\n ds.whiteSpace = 'normal';\n } // put label content in div\n\n\n div.textContent = text;\n return cache[cacheKey] = {\n width: Math.ceil(div.clientWidth / sizeMult),\n height: Math.ceil(div.clientHeight / sizeMult)\n };\n};\n\nBRp$6.calculateLabelAngle = function (ele, prefix) {\n var _p = ele._private;\n var rs = _p.rscratch;\n var isEdge = ele.isEdge();\n var prefixDash = prefix ? prefix + '-' : '';\n var rot = ele.pstyle(prefixDash + 'text-rotation');\n var rotStr = rot.strValue;\n\n if (rotStr === 'none') {\n return 0;\n } else if (isEdge && rotStr === 'autorotate') {\n return rs.labelAutoAngle;\n } else if (rotStr === 'autorotate') {\n return 0;\n } else {\n return rot.pfValue;\n }\n};\n\nBRp$6.calculateLabelAngles = function (ele) {\n var r = this;\n var isEdge = ele.isEdge();\n var _p = ele._private;\n var rs = _p.rscratch;\n rs.labelAngle = r.calculateLabelAngle(ele);\n\n if (isEdge) {\n rs.sourceLabelAngle = r.calculateLabelAngle(ele, 'source');\n rs.targetLabelAngle = r.calculateLabelAngle(ele, 'target');\n }\n};\n\nvar BRp$7 = {};\nvar TOO_SMALL_CUT_RECT = 28;\nvar warnedCutRect = false;\n\nBRp$7.getNodeShape = function (node) {\n var r = this;\n var shape = node.pstyle('shape').value;\n\n if (shape === 'cutrectangle' && (node.width() < TOO_SMALL_CUT_RECT || node.height() < TOO_SMALL_CUT_RECT)) {\n if (!warnedCutRect) {\n warn('The `cutrectangle` node shape can not be used at small sizes so `rectangle` is used instead');\n warnedCutRect = true;\n }\n\n return 'rectangle';\n }\n\n if (node.isParent()) {\n if (shape === 'rectangle' || shape === 'roundrectangle' || shape === 'cutrectangle' || shape === 'barrel') {\n return shape;\n } else {\n return 'rectangle';\n }\n }\n\n if (shape === 'polygon') {\n var points = node.pstyle('shape-polygon-points').value;\n return r.nodeShapes.makePolygon(points).name;\n }\n\n return shape;\n};\n\nvar BRp$8 = {};\n\nBRp$8.registerCalculationListeners = function () {\n var cy = this.cy;\n var elesToUpdate = cy.collection();\n var r = this;\n\n var enqueue = function enqueue(eles) {\n var dirtyStyleCaches = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n elesToUpdate.merge(eles);\n\n if (dirtyStyleCaches) {\n for (var i = 0; i < eles.length; i++) {\n var ele = eles[i];\n var _p = ele._private;\n var rstyle = _p.rstyle;\n rstyle.clean = false;\n }\n }\n };\n\n r.binder(cy).on('bounds.* dirty.*', function onDirtyBounds(e) {\n var ele = e.target;\n enqueue(ele);\n }).on('style.* background.*', function onDirtyStyle(e) {\n var ele = e.target;\n enqueue(ele, false);\n });\n\n var updateEleCalcs = function updateEleCalcs(willDraw) {\n if (willDraw) {\n var fns = r.onUpdateEleCalcsFns;\n\n for (var i = 0; i < elesToUpdate.length; i++) {\n var ele = elesToUpdate[i];\n\n if (ele.isNode() && !ele._private.rstyle.clean) {\n enqueue(ele.connectedEdges());\n }\n }\n\n if (fns) {\n for (var i = 0; i < fns.length; i++) {\n var fn = fns[i];\n fn(willDraw, elesToUpdate);\n }\n }\n\n r.recalculateRenderedStyle(elesToUpdate);\n elesToUpdate = cy.collection();\n }\n };\n\n r.flushRenderedStyleQueue = function () {\n updateEleCalcs(true);\n };\n\n r.beforeRender(updateEleCalcs, r.beforeRenderPriorities.eleCalcs);\n};\n\nBRp$8.onUpdateEleCalcs = function (fn) {\n var fns = this.onUpdateEleCalcsFns = this.onUpdateEleCalcsFns || [];\n fns.push(fn);\n};\n\nBRp$8.recalculateRenderedStyle = function (eles, useCache) {\n var edges = [];\n var nodes = []; // the renderer can't be used for calcs when destroyed, e.g. ele.boundingBox()\n\n if (this.destroyed) {\n return;\n } // use cache by default for perf\n\n\n if (useCache === undefined) {\n useCache = true;\n }\n\n for (var i = 0; i < eles.length; i++) {\n var ele = eles[i];\n var _p = ele._private;\n var rstyle = _p.rstyle; // only update if dirty and in graph\n\n if (useCache && rstyle.clean || ele.removed()) {\n continue;\n } // only update if not display: none\n\n\n if (ele.pstyle('display').value === 'none') {\n continue;\n }\n\n if (_p.group === 'nodes') {\n nodes.push(ele);\n } else {\n // edges\n edges.push(ele);\n }\n\n rstyle.clean = true;\n } // update node data from projections\n\n\n for (var i = 0; i < nodes.length; i++) {\n var ele = nodes[i];\n var _p = ele._private;\n var rstyle = _p.rstyle;\n var pos = ele.position();\n this.recalculateNodeLabelProjection(ele);\n rstyle.nodeX = pos.x;\n rstyle.nodeY = pos.y;\n rstyle.nodeW = ele.pstyle('width').pfValue;\n rstyle.nodeH = ele.pstyle('height').pfValue;\n }\n\n this.recalculateEdgeProjections(edges); // update edge data from projections\n\n for (var i = 0; i < edges.length; i++) {\n var ele = edges[i];\n var _p = ele._private;\n var rstyle = _p.rstyle;\n var rs = _p.rscratch; // update rstyle positions\n\n rstyle.srcX = rs.arrowStartX;\n rstyle.srcY = rs.arrowStartY;\n rstyle.tgtX = rs.arrowEndX;\n rstyle.tgtY = rs.arrowEndY;\n rstyle.midX = rs.midX;\n rstyle.midY = rs.midY;\n rstyle.labelAngle = rs.labelAngle;\n rstyle.sourceLabelAngle = rs.sourceLabelAngle;\n rstyle.targetLabelAngle = rs.targetLabelAngle;\n }\n};\n\nvar BRp$9 = {};\n\nBRp$9.updateCachedGrabbedEles = function () {\n var eles = this.cachedZSortedEles;\n\n if (!eles) {\n // just let this be recalculated on the next z sort tick\n return;\n }\n\n eles.drag = [];\n eles.nondrag = [];\n var grabTargets = [];\n\n for (var i = 0; i < eles.length; i++) {\n var ele = eles[i];\n var rs = ele._private.rscratch;\n\n if (ele.grabbed() && !ele.isParent()) {\n grabTargets.push(ele);\n } else if (rs.inDragLayer) {\n eles.drag.push(ele);\n } else {\n eles.nondrag.push(ele);\n }\n } // put the grab target nodes last so it's on top of its neighbourhood\n\n\n for (var i = 0; i < grabTargets.length; i++) {\n var ele = grabTargets[i];\n eles.drag.push(ele);\n }\n};\n\nBRp$9.invalidateCachedZSortedEles = function () {\n this.cachedZSortedEles = null;\n};\n\nBRp$9.getCachedZSortedEles = function (forceRecalc) {\n if (forceRecalc || !this.cachedZSortedEles) {\n var eles = this.cy.mutableElements().toArray();\n eles.sort(zIndexSort);\n eles.interactive = eles.filter(function (ele) {\n return ele.interactive();\n });\n this.cachedZSortedEles = eles;\n this.updateCachedGrabbedEles();\n } else {\n eles = this.cachedZSortedEles;\n }\n\n return eles;\n};\n\nvar BRp$a = {};\n[BRp$1, BRp$2, BRp$3, BRp$4, BRp$5, BRp$6, BRp$7, BRp$8, BRp$9].forEach(function (props) {\n extend(BRp$a, props);\n});\n\nvar BRp$b = {};\n\nBRp$b.getCachedImage = function (url, crossOrigin, onLoad) {\n var r = this;\n var imageCache = r.imageCache = r.imageCache || {};\n var cache = imageCache[url];\n\n if (cache) {\n if (!cache.image.complete) {\n cache.image.addEventListener('load', onLoad);\n }\n\n return cache.image;\n } else {\n cache = imageCache[url] = imageCache[url] || {};\n var image = cache.image = new Image(); // eslint-disable-line no-undef\n\n image.addEventListener('load', onLoad);\n image.addEventListener('error', function () {\n image.error = true;\n }); // #1582 safari doesn't load data uris with crossOrigin properly\n // https://bugs.webkit.org/show_bug.cgi?id=123978\n\n var dataUriPrefix = 'data:';\n var isDataUri = url.substring(0, dataUriPrefix.length).toLowerCase() === dataUriPrefix;\n\n if (!isDataUri) {\n image.crossOrigin = crossOrigin; // prevent tainted canvas\n }\n\n image.src = url;\n return image;\n }\n};\n\nvar BRp$c = {};\n/* global document, window */\n\nBRp$c.registerBinding = function (target, event, handler, useCapture) {\n // eslint-disable-line no-unused-vars\n var args = Array.prototype.slice.apply(arguments, [1]); // copy\n\n var b = this.binder(target);\n return b.on.apply(b, args);\n};\n\nBRp$c.binder = function (tgt) {\n var r = this;\n var tgtIsDom = tgt === window || tgt === document || tgt === document.body || domElement(tgt);\n\n if (r.supportsPassiveEvents == null) {\n // from https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md#feature-detection\n var supportsPassive = false;\n\n try {\n var opts = Object.defineProperty({}, 'passive', {\n get: function get() {\n supportsPassive = true;\n return true;\n }\n });\n window.addEventListener('test', null, opts);\n } catch (err) {// not supported\n }\n\n r.supportsPassiveEvents = supportsPassive;\n }\n\n var on = function on(event, handler, useCapture) {\n var args = Array.prototype.slice.call(arguments);\n\n if (tgtIsDom && r.supportsPassiveEvents) {\n // replace useCapture w/ opts obj\n args[2] = {\n capture: useCapture != null ? useCapture : false,\n passive: false,\n once: false\n };\n }\n\n r.bindings.push({\n target: tgt,\n args: args\n });\n (tgt.addEventListener || tgt.on).apply(tgt, args);\n return this;\n };\n\n return {\n on: on,\n addEventListener: on,\n addListener: on,\n bind: on\n };\n};\n\nBRp$c.nodeIsDraggable = function (node) {\n return node && node.isNode() && !node.locked() && node.grabbable();\n};\n\nBRp$c.nodeIsGrabbable = function (node) {\n return this.nodeIsDraggable(node) && node.interactive();\n};\n\nBRp$c.load = function () {\n var r = this;\n\n var isSelected = function isSelected(ele) {\n return ele.selected();\n };\n\n var triggerEvents = function triggerEvents(target, names, e, position) {\n if (target == null) {\n target = r.cy;\n }\n\n for (var i = 0; i < names.length; i++) {\n var name = names[i];\n target.emit({\n originalEvent: e,\n type: name,\n position: position\n });\n }\n };\n\n var isMultSelKeyDown = function isMultSelKeyDown(e) {\n return e.shiftKey || e.metaKey || e.ctrlKey; // maybe e.altKey\n };\n\n var allowPanningPassthrough = function allowPanningPassthrough(down, downs) {\n var allowPassthrough = true;\n\n if (r.cy.hasCompoundNodes() && down && down.pannable()) {\n // a grabbable compound node below the ele => no passthrough panning\n for (var i = 0; downs && i < downs.length; i++) {\n var down = downs[i];\n\n if (down.isNode() && down.isParent()) {\n allowPassthrough = false;\n break;\n }\n }\n } else {\n allowPassthrough = true;\n }\n\n return allowPassthrough;\n };\n\n var setGrabbed = function setGrabbed(ele) {\n ele[0]._private.grabbed = true;\n };\n\n var setFreed = function setFreed(ele) {\n ele[0]._private.grabbed = false;\n };\n\n var setInDragLayer = function setInDragLayer(ele) {\n ele[0]._private.rscratch.inDragLayer = true;\n };\n\n var setOutDragLayer = function setOutDragLayer(ele) {\n ele[0]._private.rscratch.inDragLayer = false;\n };\n\n var setGrabTarget = function setGrabTarget(ele) {\n ele[0]._private.rscratch.isGrabTarget = true;\n };\n\n var removeGrabTarget = function removeGrabTarget(ele) {\n ele[0]._private.rscratch.isGrabTarget = false;\n };\n\n var addToDragList = function addToDragList(ele, opts) {\n var list = opts.addToList;\n var listHasEle = list.has(ele);\n\n if (!listHasEle) {\n list.merge(ele);\n setGrabbed(ele);\n }\n }; // helper function to determine which child nodes and inner edges\n // of a compound node to be dragged as well as the grabbed and selected nodes\n\n\n var addDescendantsToDrag = function addDescendantsToDrag(node, opts) {\n if (!node.cy().hasCompoundNodes()) {\n return;\n }\n\n if (opts.inDragLayer == null && opts.addToList == null) {\n return;\n } // nothing to do\n\n\n var innerNodes = node.descendants();\n\n if (opts.inDragLayer) {\n innerNodes.forEach(setInDragLayer);\n innerNodes.connectedEdges().forEach(setInDragLayer);\n }\n\n if (opts.addToList) {\n opts.addToList.unmerge(innerNodes);\n }\n }; // adds the given nodes and its neighbourhood to the drag layer\n\n\n var addNodesToDrag = function addNodesToDrag(nodes, opts) {\n opts = opts || {};\n var hasCompoundNodes = nodes.cy().hasCompoundNodes();\n\n if (opts.inDragLayer) {\n nodes.forEach(setInDragLayer);\n nodes.neighborhood().stdFilter(function (ele) {\n return !hasCompoundNodes || ele.isEdge();\n }).forEach(setInDragLayer);\n }\n\n if (opts.addToList) {\n nodes.forEach(function (ele) {\n addToDragList(ele, opts);\n });\n }\n\n addDescendantsToDrag(nodes, opts); // always add to drag\n // also add nodes and edges related to the topmost ancestor\n\n updateAncestorsInDragLayer(nodes, {\n inDragLayer: opts.inDragLayer\n });\n r.updateCachedGrabbedEles();\n };\n\n var addNodeToDrag = addNodesToDrag;\n\n var freeDraggedElements = function freeDraggedElements(grabbedEles) {\n if (!grabbedEles) {\n return;\n } // just go over all elements rather than doing a bunch of (possibly expensive) traversals\n\n\n r.getCachedZSortedEles().forEach(function (ele) {\n setFreed(ele);\n setOutDragLayer(ele);\n removeGrabTarget(ele);\n });\n r.updateCachedGrabbedEles();\n }; // helper function to determine which ancestor nodes and edges should go\n // to the drag layer (or should be removed from drag layer).\n\n\n var updateAncestorsInDragLayer = function updateAncestorsInDragLayer(node, opts) {\n if (opts.inDragLayer == null && opts.addToList == null) {\n return;\n } // nothing to do\n\n\n if (!node.cy().hasCompoundNodes()) {\n return;\n } // find top-level parent\n\n\n var parent = node.ancestors().orphans(); // no parent node: no nodes to add to the drag layer\n\n if (parent.same(node)) {\n return;\n }\n\n var nodes = parent.descendants().spawnSelf().merge(parent).unmerge(node).unmerge(node.descendants());\n var edges = nodes.connectedEdges();\n\n if (opts.inDragLayer) {\n edges.forEach(setInDragLayer);\n nodes.forEach(setInDragLayer);\n }\n\n if (opts.addToList) {\n nodes.forEach(function (ele) {\n addToDragList(ele, opts);\n });\n }\n };\n\n var blurActiveDomElement = function blurActiveDomElement() {\n if (document.activeElement != null && document.activeElement.blur != null) {\n document.activeElement.blur();\n }\n };\n\n var haveMutationsApi = typeof MutationObserver !== 'undefined'; // watch for when the cy container is removed from the dom\n\n if (haveMutationsApi) {\n r.removeObserver = new MutationObserver(function (mutns) {\n // eslint-disable-line no-undef\n for (var i = 0; i < mutns.length; i++) {\n var mutn = mutns[i];\n var rNodes = mutn.removedNodes;\n\n if (rNodes) {\n for (var j = 0; j < rNodes.length; j++) {\n var rNode = rNodes[j];\n\n if (rNode === r.container) {\n r.destroy();\n break;\n }\n }\n }\n }\n });\n\n if (r.container.parentNode) {\n r.removeObserver.observe(r.container.parentNode, {\n childList: true\n });\n }\n } else {\n r.registerBinding(r.container, 'DOMNodeRemoved', function (e) {\n // eslint-disable-line no-unused-vars\n r.destroy();\n });\n }\n\n var onResize = util(function () {\n r.cy.resize();\n }, 100);\n\n if (haveMutationsApi) {\n r.styleObserver = new MutationObserver(onResize); // eslint-disable-line no-undef\n\n r.styleObserver.observe(r.container, {\n attributes: true\n });\n } // auto resize\n\n\n r.registerBinding(window, 'resize', onResize); // eslint-disable-line no-undef\n\n var forEachUp = function forEachUp(domEle, fn) {\n while (domEle != null) {\n fn(domEle);\n domEle = domEle.parentNode;\n }\n };\n\n var invalidateCoords = function invalidateCoords() {\n r.invalidateContainerClientCoordsCache();\n };\n\n forEachUp(r.container, function (domEle) {\n r.registerBinding(domEle, 'transitionend', invalidateCoords);\n r.registerBinding(domEle, 'animationend', invalidateCoords);\n r.registerBinding(domEle, 'scroll', invalidateCoords);\n }); // stop right click menu from appearing on cy\n\n r.registerBinding(r.container, 'contextmenu', function (e) {\n e.preventDefault();\n });\n\n var inBoxSelection = function inBoxSelection() {\n return r.selection[4] !== 0;\n };\n\n var eventInContainer = function eventInContainer(e) {\n // save cycles if mouse events aren't to be captured\n var containerPageCoords = r.findContainerClientCoords();\n var x = containerPageCoords[0];\n var y = containerPageCoords[1];\n var width = containerPageCoords[2];\n var height = containerPageCoords[3];\n var positions = e.touches ? e.touches : [e];\n var atLeastOnePosInside = false;\n\n for (var i = 0; i < positions.length; i++) {\n var p = positions[i];\n\n if (x <= p.clientX && p.clientX <= x + width && y <= p.clientY && p.clientY <= y + height) {\n atLeastOnePosInside = true;\n break;\n }\n }\n\n if (!atLeastOnePosInside) {\n return false;\n }\n\n var container = r.container;\n var target = e.target;\n var tParent = target.parentNode;\n var containerIsTarget = false;\n\n while (tParent) {\n if (tParent === container) {\n containerIsTarget = true;\n break;\n }\n\n tParent = tParent.parentNode;\n }\n\n if (!containerIsTarget) {\n return false;\n } // if target is outisde cy container, then this event is not for us\n\n\n return true;\n }; // Primary key\n\n\n r.registerBinding(r.container, 'mousedown', function mousedownHandler(e) {\n if (!eventInContainer(e)) {\n return;\n }\n\n e.preventDefault();\n blurActiveDomElement();\n r.hoverData.capture = true;\n r.hoverData.which = e.which;\n var cy = r.cy;\n var gpos = [e.clientX, e.clientY];\n var pos = r.projectIntoViewport(gpos[0], gpos[1]);\n var select = r.selection;\n var nears = r.findNearestElements(pos[0], pos[1], true, false);\n var near = nears[0];\n var draggedElements = r.dragData.possibleDragElements;\n r.hoverData.mdownPos = pos;\n r.hoverData.mdownGPos = gpos;\n\n var checkForTaphold = function checkForTaphold() {\n r.hoverData.tapholdCancelled = false;\n clearTimeout(r.hoverData.tapholdTimeout);\n r.hoverData.tapholdTimeout = setTimeout(function () {\n if (r.hoverData.tapholdCancelled) {\n return;\n } else {\n var ele = r.hoverData.down;\n\n if (ele) {\n ele.emit({\n originalEvent: e,\n type: 'taphold',\n position: {\n x: pos[0],\n y: pos[1]\n }\n });\n } else {\n cy.emit({\n originalEvent: e,\n type: 'taphold',\n position: {\n x: pos[0],\n y: pos[1]\n }\n });\n }\n }\n }, r.tapholdDuration);\n }; // Right click button\n\n\n if (e.which == 3) {\n r.hoverData.cxtStarted = true;\n var cxtEvt = {\n originalEvent: e,\n type: 'cxttapstart',\n position: {\n x: pos[0],\n y: pos[1]\n }\n };\n\n if (near) {\n near.activate();\n near.emit(cxtEvt);\n r.hoverData.down = near;\n } else {\n cy.emit(cxtEvt);\n }\n\n r.hoverData.downTime = new Date().getTime();\n r.hoverData.cxtDragged = false; // Primary button\n } else if (e.which == 1) {\n if (near) {\n near.activate();\n } // Element dragging\n\n\n {\n // If something is under the cursor and it is draggable, prepare to grab it\n if (near != null) {\n if (r.nodeIsGrabbable(near)) {\n var makeEvent = function makeEvent(type) {\n return {\n originalEvent: e,\n type: type,\n position: {\n x: pos[0],\n y: pos[1]\n }\n };\n };\n\n var triggerGrab = function triggerGrab(ele) {\n ele.emit(makeEvent('grab'));\n };\n\n setGrabTarget(near);\n\n if (!near.selected()) {\n draggedElements = r.dragData.possibleDragElements = cy.collection();\n addNodeToDrag(near, {\n addToList: draggedElements\n });\n near.emit(makeEvent('grabon')).emit(makeEvent('grab'));\n } else {\n draggedElements = r.dragData.possibleDragElements = cy.collection();\n var selectedNodes = cy.$(function (ele) {\n return ele.isNode() && ele.selected() && r.nodeIsGrabbable(ele);\n });\n addNodesToDrag(selectedNodes, {\n addToList: draggedElements\n });\n near.emit(makeEvent('grabon'));\n selectedNodes.forEach(triggerGrab);\n }\n\n r.redrawHint('eles', true);\n r.redrawHint('drag', true);\n }\n }\n\n r.hoverData.down = near;\n r.hoverData.downs = nears;\n r.hoverData.downTime = new Date().getTime();\n }\n triggerEvents(near, ['mousedown', 'tapstart', 'vmousedown'], e, {\n x: pos[0],\n y: pos[1]\n });\n\n if (near == null) {\n select[4] = 1;\n r.data.bgActivePosistion = {\n x: pos[0],\n y: pos[1]\n };\n r.redrawHint('select', true);\n r.redraw();\n } else if (near.pannable()) {\n select[4] = 1; // for future pan\n }\n\n checkForTaphold();\n } // Initialize selection box coordinates\n\n\n select[0] = select[2] = pos[0];\n select[1] = select[3] = pos[1];\n }, false);\n r.registerBinding(window, 'mousemove', function mousemoveHandler(e) {\n // eslint-disable-line no-undef\n var capture = r.hoverData.capture;\n\n if (!capture && !eventInContainer(e)) {\n return;\n }\n\n var preventDefault = false;\n var cy = r.cy;\n var zoom = cy.zoom();\n var gpos = [e.clientX, e.clientY];\n var pos = r.projectIntoViewport(gpos[0], gpos[1]);\n var mdownPos = r.hoverData.mdownPos;\n var mdownGPos = r.hoverData.mdownGPos;\n var select = r.selection;\n var near = null;\n\n if (!r.hoverData.draggingEles && !r.hoverData.dragging && !r.hoverData.selecting) {\n near = r.findNearestElement(pos[0], pos[1], true, false);\n }\n\n var last = r.hoverData.last;\n var down = r.hoverData.down;\n var disp = [pos[0] - select[2], pos[1] - select[3]];\n var draggedElements = r.dragData.possibleDragElements;\n var isOverThresholdDrag;\n\n if (mdownGPos) {\n var dx = gpos[0] - mdownGPos[0];\n var dx2 = dx * dx;\n var dy = gpos[1] - mdownGPos[1];\n var dy2 = dy * dy;\n var dist2 = dx2 + dy2;\n r.hoverData.isOverThresholdDrag = isOverThresholdDrag = dist2 >= r.desktopTapThreshold2;\n }\n\n var multSelKeyDown = isMultSelKeyDown(e);\n\n if (isOverThresholdDrag) {\n r.hoverData.tapholdCancelled = true;\n }\n\n var updateDragDelta = function updateDragDelta() {\n var dragDelta = r.hoverData.dragDelta = r.hoverData.dragDelta || [];\n\n if (dragDelta.length === 0) {\n dragDelta.push(disp[0]);\n dragDelta.push(disp[1]);\n } else {\n dragDelta[0] += disp[0];\n dragDelta[1] += disp[1];\n }\n };\n\n preventDefault = true;\n triggerEvents(near, ['mousemove', 'vmousemove', 'tapdrag'], e, {\n x: pos[0],\n y: pos[1]\n });\n\n var goIntoBoxMode = function goIntoBoxMode() {\n r.data.bgActivePosistion = undefined;\n\n if (!r.hoverData.selecting) {\n cy.emit({\n originalEvent: e,\n type: 'boxstart',\n position: {\n x: pos[0],\n y: pos[1]\n }\n });\n }\n\n select[4] = 1;\n r.hoverData.selecting = true;\n r.redrawHint('select', true);\n r.redraw();\n }; // trigger context drag if rmouse down\n\n\n if (r.hoverData.which === 3) {\n // but only if over threshold\n if (isOverThresholdDrag) {\n var cxtEvt = {\n originalEvent: e,\n type: 'cxtdrag',\n position: {\n x: pos[0],\n y: pos[1]\n }\n };\n\n if (down) {\n down.emit(cxtEvt);\n } else {\n cy.emit(cxtEvt);\n }\n\n r.hoverData.cxtDragged = true;\n\n if (!r.hoverData.cxtOver || near !== r.hoverData.cxtOver) {\n if (r.hoverData.cxtOver) {\n r.hoverData.cxtOver.emit({\n originalEvent: e,\n type: 'cxtdragout',\n position: {\n x: pos[0],\n y: pos[1]\n }\n });\n }\n\n r.hoverData.cxtOver = near;\n\n if (near) {\n near.emit({\n originalEvent: e,\n type: 'cxtdragover',\n position: {\n x: pos[0],\n y: pos[1]\n }\n });\n }\n }\n } // Check if we are drag panning the entire graph\n\n } else if (r.hoverData.dragging) {\n preventDefault = true;\n\n if (cy.panningEnabled() && cy.userPanningEnabled()) {\n var deltaP;\n\n if (r.hoverData.justStartedPan) {\n var mdPos = r.hoverData.mdownPos;\n deltaP = {\n x: (pos[0] - mdPos[0]) * zoom,\n y: (pos[1] - mdPos[1]) * zoom\n };\n r.hoverData.justStartedPan = false;\n } else {\n deltaP = {\n x: disp[0] * zoom,\n y: disp[1] * zoom\n };\n }\n\n cy.panBy(deltaP);\n r.hoverData.dragged = true;\n } // Needs reproject due to pan changing viewport\n\n\n pos = r.projectIntoViewport(e.clientX, e.clientY); // Checks primary button down & out of time & mouse not moved much\n } else if (select[4] == 1 && (down == null || down.pannable())) {\n if (isOverThresholdDrag) {\n if (!r.hoverData.dragging && cy.boxSelectionEnabled() && (multSelKeyDown || !cy.panningEnabled() || !cy.userPanningEnabled())) {\n goIntoBoxMode();\n } else if (!r.hoverData.selecting && cy.panningEnabled() && cy.userPanningEnabled()) {\n var allowPassthrough = allowPanningPassthrough(down, r.hoverData.downs);\n\n if (allowPassthrough) {\n r.hoverData.dragging = true;\n r.hoverData.justStartedPan = true;\n select[4] = 0;\n r.data.bgActivePosistion = array2point(mdownPos);\n r.redrawHint('select', true);\n r.redraw();\n }\n }\n\n if (down && down.pannable() && down.active()) {\n down.unactivate();\n }\n }\n } else {\n if (down && down.pannable() && down.active()) {\n down.unactivate();\n }\n\n if ((!down || !down.grabbed()) && near != last) {\n if (last) {\n triggerEvents(last, ['mouseout', 'tapdragout'], e, {\n x: pos[0],\n y: pos[1]\n });\n }\n\n if (near) {\n triggerEvents(near, ['mouseover', 'tapdragover'], e, {\n x: pos[0],\n y: pos[1]\n });\n }\n\n r.hoverData.last = near;\n }\n\n if (down) {\n if (isOverThresholdDrag) {\n // then we can take action\n if (cy.boxSelectionEnabled() && multSelKeyDown) {\n // then selection overrides\n if (down && down.grabbed()) {\n freeDraggedElements(draggedElements);\n down.emit('freeon');\n draggedElements.emit('free');\n\n if (r.dragData.didDrag) {\n down.emit('dragfreeon');\n draggedElements.emit('dragfree');\n }\n }\n\n goIntoBoxMode();\n } else if (down && down.grabbed() && r.nodeIsDraggable(down)) {\n // drag node\n var justStartedDrag = !r.dragData.didDrag;\n\n if (justStartedDrag) {\n r.redrawHint('eles', true);\n }\n\n r.dragData.didDrag = true; // indicate that we actually did drag the node\n\n var toTrigger = cy.collection(); // now, add the elements to the drag layer if not done already\n\n if (!r.hoverData.draggingEles) {\n addNodesToDrag(draggedElements, {\n inDragLayer: true\n });\n }\n\n var totalShift = {\n x: 0,\n y: 0\n };\n\n if (number(disp[0]) && number(disp[1])) {\n totalShift.x += disp[0];\n totalShift.y += disp[1];\n\n if (justStartedDrag) {\n var dragDelta = r.hoverData.dragDelta;\n\n if (dragDelta && number(dragDelta[0]) && number(dragDelta[1])) {\n totalShift.x += dragDelta[0];\n totalShift.y += dragDelta[1];\n }\n }\n }\n\n for (var i = 0; i < draggedElements.length; i++) {\n var dEle = draggedElements[i];\n\n if (r.nodeIsDraggable(dEle) && dEle.grabbed()) {\n toTrigger.merge(dEle);\n }\n }\n\n r.hoverData.draggingEles = true;\n toTrigger.silentShift(totalShift).emit('position drag');\n r.redrawHint('drag', true);\n r.redraw();\n }\n } else {\n // otherwise save drag delta for when we actually start dragging so the relative grab pos is constant\n updateDragDelta();\n }\n } // prevent the dragging from triggering text selection on the page\n\n\n preventDefault = true;\n }\n\n select[2] = pos[0];\n select[3] = pos[1];\n\n if (preventDefault) {\n if (e.stopPropagation) e.stopPropagation();\n if (e.preventDefault) e.preventDefault();\n return false;\n }\n }, false);\n r.registerBinding(window, 'mouseup', function mouseupHandler(e) {\n // eslint-disable-line no-undef\n var capture = r.hoverData.capture;\n\n if (!capture) {\n return;\n }\n\n r.hoverData.capture = false;\n var cy = r.cy;\n var pos = r.projectIntoViewport(e.clientX, e.clientY);\n var select = r.selection;\n var near = r.findNearestElement(pos[0], pos[1], true, false);\n var draggedElements = r.dragData.possibleDragElements;\n var down = r.hoverData.down;\n var multSelKeyDown = isMultSelKeyDown(e);\n\n if (r.data.bgActivePosistion) {\n r.redrawHint('select', true);\n r.redraw();\n }\n\n r.hoverData.tapholdCancelled = true;\n r.data.bgActivePosistion = undefined; // not active bg now\n\n if (down) {\n down.unactivate();\n }\n\n if (r.hoverData.which === 3) {\n var cxtEvt = {\n originalEvent: e,\n type: 'cxttapend',\n position: {\n x: pos[0],\n y: pos[1]\n }\n };\n\n if (down) {\n down.emit(cxtEvt);\n } else {\n cy.emit(cxtEvt);\n }\n\n if (!r.hoverData.cxtDragged) {\n var cxtTap = {\n originalEvent: e,\n type: 'cxttap',\n position: {\n x: pos[0],\n y: pos[1]\n }\n };\n\n if (down) {\n down.emit(cxtTap);\n } else {\n cy.emit(cxtTap);\n }\n }\n\n r.hoverData.cxtDragged = false;\n r.hoverData.which = null;\n } else if (r.hoverData.which === 1) {\n triggerEvents(near, ['mouseup', 'tapend', 'vmouseup'], e, {\n x: pos[0],\n y: pos[1]\n });\n\n if (!r.dragData.didDrag // didn't move a node around\n && !r.hoverData.dragged // didn't pan\n && !r.hoverData.selecting // not box selection\n && !r.hoverData.isOverThresholdDrag // didn't move too much\n ) {\n triggerEvents(down, ['click', 'tap', 'vclick'], e, {\n x: pos[0],\n y: pos[1]\n });\n } // Deselect all elements if nothing is currently under the mouse cursor and we aren't dragging something\n\n\n if (down == null && // not mousedown on node\n !r.dragData.didDrag // didn't move the node around\n && !r.hoverData.selecting // not box selection\n && !r.hoverData.dragged // didn't pan\n && !isMultSelKeyDown(e)) {\n cy.$(isSelected).unselect(['tapunselect']);\n\n if (draggedElements.length > 0) {\n r.redrawHint('eles', true);\n }\n\n r.dragData.possibleDragElements = draggedElements = cy.collection();\n } // Single selection\n\n\n if (near == down && !r.dragData.didDrag && !r.hoverData.selecting) {\n if (near != null && near._private.selectable) {\n if (r.hoverData.dragging) ; else if (cy.selectionType() === 'additive' || multSelKeyDown) {\n if (near.selected()) {\n near.unselect(['tapunselect']);\n } else {\n near.select(['tapselect']);\n }\n } else {\n if (!multSelKeyDown) {\n cy.$(isSelected).unmerge(near).unselect(['tapunselect']);\n near.select(['tapselect']);\n }\n }\n\n r.redrawHint('eles', true);\n }\n }\n\n if (r.hoverData.selecting) {\n var box = cy.collection(r.getAllInBox(select[0], select[1], select[2], select[3]));\n r.redrawHint('select', true);\n\n if (box.length > 0) {\n r.redrawHint('eles', true);\n }\n\n cy.emit({\n type: 'boxend',\n originalEvent: e,\n position: {\n x: pos[0],\n y: pos[1]\n }\n });\n\n var eleWouldBeSelected = function eleWouldBeSelected(ele) {\n return ele.selectable() && !ele.selected();\n };\n\n if (cy.selectionType() === 'additive') {\n box.emit('box').stdFilter(eleWouldBeSelected).select().emit('boxselect');\n } else {\n if (!multSelKeyDown) {\n cy.$(isSelected).unmerge(box).unselect();\n }\n\n box.emit('box').stdFilter(eleWouldBeSelected).select().emit('boxselect');\n } // always need redraw in case eles unselectable\n\n\n r.redraw();\n } // Cancel drag pan\n\n\n if (r.hoverData.dragging) {\n r.hoverData.dragging = false;\n r.redrawHint('select', true);\n r.redrawHint('eles', true);\n r.redraw();\n }\n\n if (!select[4]) {\n r.redrawHint('drag', true);\n r.redrawHint('eles', true);\n var downWasGrabbed = down && down.grabbed();\n freeDraggedElements(draggedElements);\n\n if (downWasGrabbed) {\n down.emit('freeon');\n draggedElements.emit('free');\n\n if (r.dragData.didDrag) {\n down.emit('dragfreeon');\n draggedElements.emit('dragfree');\n }\n }\n }\n } // else not right mouse\n\n\n select[4] = 0;\n r.hoverData.down = null;\n r.hoverData.cxtStarted = false;\n r.hoverData.draggingEles = false;\n r.hoverData.selecting = false;\n r.hoverData.isOverThresholdDrag = false;\n r.dragData.didDrag = false;\n r.hoverData.dragged = false;\n r.hoverData.dragDelta = [];\n r.hoverData.mdownPos = null;\n r.hoverData.mdownGPos = null;\n }, false);\n\n var wheelHandler = function wheelHandler(e) {\n if (r.scrollingPage) {\n return;\n } // while scrolling, ignore wheel-to-zoom\n\n\n var cy = r.cy;\n var pos = r.projectIntoViewport(e.clientX, e.clientY);\n var rpos = [pos[0] * cy.zoom() + cy.pan().x, pos[1] * cy.zoom() + cy.pan().y];\n\n if (r.hoverData.draggingEles || r.hoverData.dragging || r.hoverData.cxtStarted || inBoxSelection()) {\n // if pan dragging or cxt dragging, wheel movements make no zoom\n e.preventDefault();\n return;\n }\n\n if (cy.panningEnabled() && cy.userPanningEnabled() && cy.zoomingEnabled() && cy.userZoomingEnabled()) {\n e.preventDefault();\n r.data.wheelZooming = true;\n clearTimeout(r.data.wheelTimeout);\n r.data.wheelTimeout = setTimeout(function () {\n r.data.wheelZooming = false;\n r.redrawHint('eles', true);\n r.redraw();\n }, 150);\n var diff;\n\n if (e.deltaY != null) {\n diff = e.deltaY / -250;\n } else if (e.wheelDeltaY != null) {\n diff = e.wheelDeltaY / 1000;\n } else {\n diff = e.wheelDelta / 1000;\n }\n\n diff = diff * r.wheelSensitivity;\n var needsWheelFix = e.deltaMode === 1;\n\n if (needsWheelFix) {\n // fixes slow wheel events on ff/linux and ff/windows\n diff *= 33;\n }\n\n cy.zoom({\n level: cy.zoom() * Math.pow(10, diff),\n renderedPosition: {\n x: rpos[0],\n y: rpos[1]\n }\n });\n }\n }; // Functions to help with whether mouse wheel should trigger zooming\n // --\n\n\n r.registerBinding(r.container, 'wheel', wheelHandler, true); // disable nonstandard wheel events\n // r.registerBinding(r.container, 'mousewheel', wheelHandler, true);\n // r.registerBinding(r.container, 'DOMMouseScroll', wheelHandler, true);\n // r.registerBinding(r.container, 'MozMousePixelScroll', wheelHandler, true); // older firefox\n\n r.registerBinding(window, 'scroll', function scrollHandler(e) {\n // eslint-disable-line no-unused-vars\n r.scrollingPage = true;\n clearTimeout(r.scrollingPageTimeout);\n r.scrollingPageTimeout = setTimeout(function () {\n r.scrollingPage = false;\n }, 250);\n }, true); // Functions to help with handling mouseout/mouseover on the Cytoscape container\n // Handle mouseout on Cytoscape container\n\n r.registerBinding(r.container, 'mouseout', function mouseOutHandler(e) {\n var pos = r.projectIntoViewport(e.clientX, e.clientY);\n r.cy.emit({\n originalEvent: e,\n type: 'mouseout',\n position: {\n x: pos[0],\n y: pos[1]\n }\n });\n }, false);\n r.registerBinding(r.container, 'mouseover', function mouseOverHandler(e) {\n var pos = r.projectIntoViewport(e.clientX, e.clientY);\n r.cy.emit({\n originalEvent: e,\n type: 'mouseover',\n position: {\n x: pos[0],\n y: pos[1]\n }\n });\n }, false);\n var f1x1, f1y1, f2x1, f2y1; // starting points for pinch-to-zoom\n\n var distance1, distance1Sq; // initial distance between finger 1 and finger 2 for pinch-to-zoom\n\n var center1, modelCenter1; // center point on start pinch to zoom\n\n var offsetLeft, offsetTop;\n var containerWidth, containerHeight;\n var twoFingersStartInside;\n\n var distance = function distance(x1, y1, x2, y2) {\n return Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));\n };\n\n var distanceSq = function distanceSq(x1, y1, x2, y2) {\n return (x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1);\n };\n\n var touchstartHandler;\n r.registerBinding(r.container, 'touchstart', touchstartHandler = function touchstartHandler(e) {\n if (!eventInContainer(e)) {\n return;\n }\n\n blurActiveDomElement();\n r.touchData.capture = true;\n r.data.bgActivePosistion = undefined;\n var cy = r.cy;\n var now = r.touchData.now;\n var earlier = r.touchData.earlier;\n\n if (e.touches[0]) {\n var pos = r.projectIntoViewport(e.touches[0].clientX, e.touches[0].clientY);\n now[0] = pos[0];\n now[1] = pos[1];\n }\n\n if (e.touches[1]) {\n var pos = r.projectIntoViewport(e.touches[1].clientX, e.touches[1].clientY);\n now[2] = pos[0];\n now[3] = pos[1];\n }\n\n if (e.touches[2]) {\n var pos = r.projectIntoViewport(e.touches[2].clientX, e.touches[2].clientY);\n now[4] = pos[0];\n now[5] = pos[1];\n } // record starting points for pinch-to-zoom\n\n\n if (e.touches[1]) {\n freeDraggedElements(r.dragData.touchDragEles);\n var offsets = r.findContainerClientCoords();\n offsetLeft = offsets[0];\n offsetTop = offsets[1];\n containerWidth = offsets[2];\n containerHeight = offsets[3];\n f1x1 = e.touches[0].clientX - offsetLeft;\n f1y1 = e.touches[0].clientY - offsetTop;\n f2x1 = e.touches[1].clientX - offsetLeft;\n f2y1 = e.touches[1].clientY - offsetTop;\n twoFingersStartInside = 0 <= f1x1 && f1x1 <= containerWidth && 0 <= f2x1 && f2x1 <= containerWidth && 0 <= f1y1 && f1y1 <= containerHeight && 0 <= f2y1 && f2y1 <= containerHeight;\n var pan = cy.pan();\n var zoom = cy.zoom();\n distance1 = distance(f1x1, f1y1, f2x1, f2y1);\n distance1Sq = distanceSq(f1x1, f1y1, f2x1, f2y1);\n center1 = [(f1x1 + f2x1) / 2, (f1y1 + f2y1) / 2];\n modelCenter1 = [(center1[0] - pan.x) / zoom, (center1[1] - pan.y) / zoom]; // consider context tap\n\n var cxtDistThreshold = 200;\n var cxtDistThresholdSq = cxtDistThreshold * cxtDistThreshold;\n\n if (distance1Sq < cxtDistThresholdSq && !e.touches[2]) {\n var near1 = r.findNearestElement(now[0], now[1], true, true);\n var near2 = r.findNearestElement(now[2], now[3], true, true);\n\n if (near1 && near1.isNode()) {\n near1.activate().emit({\n originalEvent: e,\n type: 'cxttapstart',\n position: {\n x: now[0],\n y: now[1]\n }\n });\n r.touchData.start = near1;\n } else if (near2 && near2.isNode()) {\n near2.activate().emit({\n originalEvent: e,\n type: 'cxttapstart',\n position: {\n x: now[0],\n y: now[1]\n }\n });\n r.touchData.start = near2;\n } else {\n cy.emit({\n originalEvent: e,\n type: 'cxttapstart',\n position: {\n x: now[0],\n y: now[1]\n }\n });\n }\n\n if (r.touchData.start) {\n r.touchData.start._private.grabbed = false;\n }\n\n r.touchData.cxt = true;\n r.touchData.cxtDragged = false;\n r.data.bgActivePosistion = undefined;\n r.redraw();\n return;\n }\n }\n\n if (e.touches[2]) ; else if (e.touches[1]) ; else if (e.touches[0]) {\n var nears = r.findNearestElements(now[0], now[1], true, true);\n var near = nears[0];\n\n if (near != null) {\n near.activate();\n r.touchData.start = near;\n r.touchData.starts = nears;\n\n if (r.nodeIsGrabbable(near)) {\n var draggedEles = r.dragData.touchDragEles = cy.collection();\n var selectedNodes = null;\n r.redrawHint('eles', true);\n r.redrawHint('drag', true);\n\n if (near.selected()) {\n // reset drag elements, since near will be added again\n selectedNodes = cy.$(function (ele) {\n return ele.selected() && r.nodeIsGrabbable(ele);\n });\n addNodesToDrag(selectedNodes, {\n addToList: draggedEles\n });\n } else {\n addNodeToDrag(near, {\n addToList: draggedEles\n });\n }\n\n setGrabTarget(near);\n\n var makeEvent = function makeEvent(type) {\n return {\n originalEvent: e,\n type: type,\n position: {\n x: now[0],\n y: now[1]\n }\n };\n };\n\n near.emit(makeEvent('grabon'));\n\n if (selectedNodes) {\n selectedNodes.forEach(function (n) {\n n.emit(makeEvent('grab'));\n });\n } else {\n near.emit(makeEvent('grab'));\n }\n }\n }\n\n triggerEvents(near, ['touchstart', 'tapstart', 'vmousedown'], e, {\n x: now[0],\n y: now[1]\n });\n\n if (near == null) {\n r.data.bgActivePosistion = {\n x: pos[0],\n y: pos[1]\n };\n r.redrawHint('select', true);\n r.redraw();\n } // Tap, taphold\n // -----\n\n\n r.touchData.singleTouchMoved = false;\n r.touchData.singleTouchStartTime = +new Date();\n clearTimeout(r.touchData.tapholdTimeout);\n r.touchData.tapholdTimeout = setTimeout(function () {\n if (r.touchData.singleTouchMoved === false && !r.pinching // if pinching, then taphold unselect shouldn't take effect\n && !r.touchData.selecting // box selection shouldn't allow taphold through\n ) {\n triggerEvents(r.touchData.start, ['taphold'], e, {\n x: now[0],\n y: now[1]\n });\n }\n }, r.tapholdDuration);\n }\n\n if (e.touches.length >= 1) {\n var sPos = r.touchData.startPosition = [];\n\n for (var i = 0; i < now.length; i++) {\n sPos[i] = earlier[i] = now[i];\n }\n\n var touch0 = e.touches[0];\n r.touchData.startGPosition = [touch0.clientX, touch0.clientY];\n }\n }, false);\n var touchmoveHandler;\n r.registerBinding(window, 'touchmove', touchmoveHandler = function touchmoveHandler(e) {\n // eslint-disable-line no-undef\n var capture = r.touchData.capture;\n\n if (!capture && !eventInContainer(e)) {\n return;\n }\n\n var select = r.selection;\n var cy = r.cy;\n var now = r.touchData.now;\n var earlier = r.touchData.earlier;\n var zoom = cy.zoom();\n\n if (e.touches[0]) {\n var pos = r.projectIntoViewport(e.touches[0].clientX, e.touches[0].clientY);\n now[0] = pos[0];\n now[1] = pos[1];\n }\n\n if (e.touches[1]) {\n var pos = r.projectIntoViewport(e.touches[1].clientX, e.touches[1].clientY);\n now[2] = pos[0];\n now[3] = pos[1];\n }\n\n if (e.touches[2]) {\n var pos = r.projectIntoViewport(e.touches[2].clientX, e.touches[2].clientY);\n now[4] = pos[0];\n now[5] = pos[1];\n }\n\n var startGPos = r.touchData.startGPosition;\n var isOverThresholdDrag;\n\n if (capture && e.touches[0] && startGPos) {\n var disp = [];\n\n for (var j = 0; j < now.length; j++) {\n disp[j] = now[j] - earlier[j];\n }\n\n var dx = e.touches[0].clientX - startGPos[0];\n var dx2 = dx * dx;\n var dy = e.touches[0].clientY - startGPos[1];\n var dy2 = dy * dy;\n var dist2 = dx2 + dy2;\n isOverThresholdDrag = dist2 >= r.touchTapThreshold2;\n } // context swipe cancelling\n\n\n if (capture && r.touchData.cxt) {\n e.preventDefault();\n var f1x2 = e.touches[0].clientX - offsetLeft,\n f1y2 = e.touches[0].clientY - offsetTop;\n var f2x2 = e.touches[1].clientX - offsetLeft,\n f2y2 = e.touches[1].clientY - offsetTop; // var distance2 = distance( f1x2, f1y2, f2x2, f2y2 );\n\n var distance2Sq = distanceSq(f1x2, f1y2, f2x2, f2y2);\n var factorSq = distance2Sq / distance1Sq;\n var distThreshold = 150;\n var distThresholdSq = distThreshold * distThreshold;\n var factorThreshold = 1.5;\n var factorThresholdSq = factorThreshold * factorThreshold; // cancel ctx gestures if the distance b/t the fingers increases\n\n if (factorSq >= factorThresholdSq || distance2Sq >= distThresholdSq) {\n r.touchData.cxt = false;\n r.data.bgActivePosistion = undefined;\n r.redrawHint('select', true);\n var cxtEvt = {\n originalEvent: e,\n type: 'cxttapend',\n position: {\n x: now[0],\n y: now[1]\n }\n };\n\n if (r.touchData.start) {\n r.touchData.start.unactivate().emit(cxtEvt);\n r.touchData.start = null;\n } else {\n cy.emit(cxtEvt);\n }\n }\n } // context swipe\n\n\n if (capture && r.touchData.cxt) {\n var cxtEvt = {\n originalEvent: e,\n type: 'cxtdrag',\n position: {\n x: now[0],\n y: now[1]\n }\n };\n r.data.bgActivePosistion = undefined;\n r.redrawHint('select', true);\n\n if (r.touchData.start) {\n r.touchData.start.emit(cxtEvt);\n } else {\n cy.emit(cxtEvt);\n }\n\n if (r.touchData.start) {\n r.touchData.start._private.grabbed = false;\n }\n\n r.touchData.cxtDragged = true;\n var near = r.findNearestElement(now[0], now[1], true, true);\n\n if (!r.touchData.cxtOver || near !== r.touchData.cxtOver) {\n if (r.touchData.cxtOver) {\n r.touchData.cxtOver.emit({\n originalEvent: e,\n type: 'cxtdragout',\n position: {\n x: now[0],\n y: now[1]\n }\n });\n }\n\n r.touchData.cxtOver = near;\n\n if (near) {\n near.emit({\n originalEvent: e,\n type: 'cxtdragover',\n position: {\n x: now[0],\n y: now[1]\n }\n });\n }\n } // box selection\n\n } else if (capture && e.touches[2] && cy.boxSelectionEnabled()) {\n e.preventDefault();\n r.data.bgActivePosistion = undefined;\n this.lastThreeTouch = +new Date();\n\n if (!r.touchData.selecting) {\n cy.emit({\n originalEvent: e,\n type: 'boxstart',\n position: {\n x: now[0],\n y: now[1]\n }\n });\n }\n\n r.touchData.selecting = true;\n r.redrawHint('select', true);\n\n if (!select || select.length === 0 || select[0] === undefined) {\n select[0] = (now[0] + now[2] + now[4]) / 3;\n select[1] = (now[1] + now[3] + now[5]) / 3;\n select[2] = (now[0] + now[2] + now[4]) / 3 + 1;\n select[3] = (now[1] + now[3] + now[5]) / 3 + 1;\n } else {\n select[2] = (now[0] + now[2] + now[4]) / 3;\n select[3] = (now[1] + now[3] + now[5]) / 3;\n }\n\n select[4] = 1;\n r.touchData.selecting = true;\n r.redraw(); // pinch to zoom\n } else if (capture && e.touches[1] && cy.zoomingEnabled() && cy.panningEnabled() && cy.userZoomingEnabled() && cy.userPanningEnabled()) {\n // two fingers => pinch to zoom\n e.preventDefault();\n r.data.bgActivePosistion = undefined;\n r.redrawHint('select', true);\n var draggedEles = r.dragData.touchDragEles;\n\n if (draggedEles) {\n r.redrawHint('drag', true);\n\n for (var i = 0; i < draggedEles.length; i++) {\n var de_p = draggedEles[i]._private;\n de_p.grabbed = false;\n de_p.rscratch.inDragLayer = false;\n }\n }\n\n var _start = r.touchData.start; // (x2, y2) for fingers 1 and 2\n\n var f1x2 = e.touches[0].clientX - offsetLeft,\n f1y2 = e.touches[0].clientY - offsetTop;\n var f2x2 = e.touches[1].clientX - offsetLeft,\n f2y2 = e.touches[1].clientY - offsetTop;\n var distance2 = distance(f1x2, f1y2, f2x2, f2y2); // var distance2Sq = distanceSq( f1x2, f1y2, f2x2, f2y2 );\n // var factor = Math.sqrt( distance2Sq ) / Math.sqrt( distance1Sq );\n\n var factor = distance2 / distance1;\n\n if (twoFingersStartInside) {\n // delta finger1\n var df1x = f1x2 - f1x1;\n var df1y = f1y2 - f1y1; // delta finger 2\n\n var df2x = f2x2 - f2x1;\n var df2y = f2y2 - f2y1; // translation is the normalised vector of the two fingers movement\n // i.e. so pinching cancels out and moving together pans\n\n var tx = (df1x + df2x) / 2;\n var ty = (df1y + df2y) / 2; // now calculate the zoom\n\n var zoom1 = cy.zoom();\n var zoom2 = zoom1 * factor;\n var pan1 = cy.pan(); // the model center point converted to the current rendered pos\n\n var ctrx = modelCenter1[0] * zoom1 + pan1.x;\n var ctry = modelCenter1[1] * zoom1 + pan1.y;\n var pan2 = {\n x: -zoom2 / zoom1 * (ctrx - pan1.x - tx) + ctrx,\n y: -zoom2 / zoom1 * (ctry - pan1.y - ty) + ctry\n }; // remove dragged eles\n\n if (_start && _start.active()) {\n var draggedEles = r.dragData.touchDragEles;\n freeDraggedElements(draggedEles);\n r.redrawHint('drag', true);\n r.redrawHint('eles', true);\n\n _start.unactivate().emit('freeon');\n\n draggedEles.emit('free');\n\n if (r.dragData.didDrag) {\n _start.emit('dragfreeon');\n\n draggedEles.emit('dragfree');\n }\n }\n\n cy.viewport({\n zoom: zoom2,\n pan: pan2,\n cancelOnFailedZoom: true\n });\n distance1 = distance2;\n f1x1 = f1x2;\n f1y1 = f1y2;\n f2x1 = f2x2;\n f2y1 = f2y2;\n r.pinching = true;\n } // Re-project\n\n\n if (e.touches[0]) {\n var pos = r.projectIntoViewport(e.touches[0].clientX, e.touches[0].clientY);\n now[0] = pos[0];\n now[1] = pos[1];\n }\n\n if (e.touches[1]) {\n var pos = r.projectIntoViewport(e.touches[1].clientX, e.touches[1].clientY);\n now[2] = pos[0];\n now[3] = pos[1];\n }\n\n if (e.touches[2]) {\n var pos = r.projectIntoViewport(e.touches[2].clientX, e.touches[2].clientY);\n now[4] = pos[0];\n now[5] = pos[1];\n }\n } else if (e.touches[0]) {\n var start = r.touchData.start;\n var last = r.touchData.last;\n var near;\n\n if (!r.hoverData.draggingEles && !r.swipePanning) {\n near = r.findNearestElement(now[0], now[1], true, true);\n }\n\n if (capture && start != null) {\n e.preventDefault();\n } // dragging nodes\n\n\n if (capture && start != null && r.nodeIsDraggable(start)) {\n if (isOverThresholdDrag) {\n // then dragging can happen\n var draggedEles = r.dragData.touchDragEles;\n var justStartedDrag = !r.dragData.didDrag;\n\n if (justStartedDrag) {\n addNodesToDrag(draggedEles, {\n inDragLayer: true\n });\n }\n\n r.dragData.didDrag = true;\n var totalShift = {\n x: 0,\n y: 0\n };\n\n if (number(disp[0]) && number(disp[1])) {\n totalShift.x += disp[0];\n totalShift.y += disp[1];\n\n if (justStartedDrag) {\n r.redrawHint('eles', true);\n var dragDelta = r.touchData.dragDelta;\n\n if (dragDelta && number(dragDelta[0]) && number(dragDelta[1])) {\n totalShift.x += dragDelta[0];\n totalShift.y += dragDelta[1];\n }\n }\n }\n\n r.hoverData.draggingEles = true;\n draggedEles.silentShift(totalShift).emit('position drag');\n r.redrawHint('drag', true);\n\n if (r.touchData.startPosition[0] == earlier[0] && r.touchData.startPosition[1] == earlier[1]) {\n r.redrawHint('eles', true);\n }\n\n r.redraw();\n } else {\n // otherise keep track of drag delta for later\n var dragDelta = r.touchData.dragDelta = r.touchData.dragDelta || [];\n\n if (dragDelta.length === 0) {\n dragDelta.push(disp[0]);\n dragDelta.push(disp[1]);\n } else {\n dragDelta[0] += disp[0];\n dragDelta[1] += disp[1];\n }\n }\n } // touchmove\n\n\n {\n triggerEvents(start || near, ['touchmove', 'tapdrag', 'vmousemove'], e, {\n x: now[0],\n y: now[1]\n });\n\n if ((!start || !start.grabbed()) && near != last) {\n if (last) {\n last.emit({\n originalEvent: e,\n type: 'tapdragout',\n position: {\n x: now[0],\n y: now[1]\n }\n });\n }\n\n if (near) {\n near.emit({\n originalEvent: e,\n type: 'tapdragover',\n position: {\n x: now[0],\n y: now[1]\n }\n });\n }\n }\n\n r.touchData.last = near;\n } // check to cancel taphold\n\n if (capture) {\n for (var i = 0; i < now.length; i++) {\n if (now[i] && r.touchData.startPosition[i] && isOverThresholdDrag) {\n r.touchData.singleTouchMoved = true;\n }\n }\n } // panning\n\n\n if (capture && (start == null || start.pannable()) && cy.panningEnabled() && cy.userPanningEnabled()) {\n var allowPassthrough = allowPanningPassthrough(start, r.touchData.starts);\n\n if (allowPassthrough) {\n e.preventDefault();\n\n if (r.swipePanning) {\n cy.panBy({\n x: disp[0] * zoom,\n y: disp[1] * zoom\n });\n } else if (isOverThresholdDrag) {\n r.swipePanning = true;\n cy.panBy({\n x: dx * zoom,\n y: dy * zoom\n });\n\n if (start) {\n start.unactivate();\n\n if (!r.data.bgActivePosistion) {\n r.data.bgActivePosistion = array2point(r.touchData.startPosition);\n }\n\n r.redrawHint('select', true);\n r.touchData.start = null;\n }\n }\n } // Re-project\n\n\n var pos = r.projectIntoViewport(e.touches[0].clientX, e.touches[0].clientY);\n now[0] = pos[0];\n now[1] = pos[1];\n }\n }\n\n for (var j = 0; j < now.length; j++) {\n earlier[j] = now[j];\n } // the active bg indicator should be removed when making a swipe that is neither for dragging nodes or panning\n\n\n if (capture && e.touches.length > 0 && !r.hoverData.draggingEles && !r.swipePanning && r.data.bgActivePosistion != null) {\n r.data.bgActivePosistion = undefined;\n r.redrawHint('select', true);\n r.redraw();\n }\n }, false);\n var touchcancelHandler;\n r.registerBinding(window, 'touchcancel', touchcancelHandler = function touchcancelHandler(e) {\n // eslint-disable-line no-unused-vars\n var start = r.touchData.start;\n r.touchData.capture = false;\n\n if (start) {\n start.unactivate();\n }\n });\n var touchendHandler;\n r.registerBinding(window, 'touchend', touchendHandler = function touchendHandler(e) {\n // eslint-disable-line no-unused-vars\n var start = r.touchData.start;\n var capture = r.touchData.capture;\n\n if (capture) {\n if (e.touches.length === 0) {\n r.touchData.capture = false;\n }\n\n e.preventDefault();\n } else {\n return;\n }\n\n var select = r.selection;\n r.swipePanning = false;\n r.hoverData.draggingEles = false;\n var cy = r.cy;\n var zoom = cy.zoom();\n var now = r.touchData.now;\n var earlier = r.touchData.earlier;\n\n if (e.touches[0]) {\n var pos = r.projectIntoViewport(e.touches[0].clientX, e.touches[0].clientY);\n now[0] = pos[0];\n now[1] = pos[1];\n }\n\n if (e.touches[1]) {\n var pos = r.projectIntoViewport(e.touches[1].clientX, e.touches[1].clientY);\n now[2] = pos[0];\n now[3] = pos[1];\n }\n\n if (e.touches[2]) {\n var pos = r.projectIntoViewport(e.touches[2].clientX, e.touches[2].clientY);\n now[4] = pos[0];\n now[5] = pos[1];\n }\n\n if (start) {\n start.unactivate();\n }\n\n var ctxTapend;\n\n if (r.touchData.cxt) {\n ctxTapend = {\n originalEvent: e,\n type: 'cxttapend',\n position: {\n x: now[0],\n y: now[1]\n }\n };\n\n if (start) {\n start.emit(ctxTapend);\n } else {\n cy.emit(ctxTapend);\n }\n\n if (!r.touchData.cxtDragged) {\n var ctxTap = {\n originalEvent: e,\n type: 'cxttap',\n position: {\n x: now[0],\n y: now[1]\n }\n };\n\n if (start) {\n start.emit(ctxTap);\n } else {\n cy.emit(ctxTap);\n }\n }\n\n if (r.touchData.start) {\n r.touchData.start._private.grabbed = false;\n }\n\n r.touchData.cxt = false;\n r.touchData.start = null;\n r.redraw();\n return;\n } // no more box selection if we don't have three fingers\n\n\n if (!e.touches[2] && cy.boxSelectionEnabled() && r.touchData.selecting) {\n r.touchData.selecting = false;\n var box = cy.collection(r.getAllInBox(select[0], select[1], select[2], select[3]));\n select[0] = undefined;\n select[1] = undefined;\n select[2] = undefined;\n select[3] = undefined;\n select[4] = 0;\n r.redrawHint('select', true);\n cy.emit({\n type: 'boxend',\n originalEvent: e,\n position: {\n x: now[0],\n y: now[1]\n }\n });\n\n var eleWouldBeSelected = function eleWouldBeSelected(ele) {\n return ele.selectable() && !ele.selected();\n };\n\n box.emit('box').stdFilter(eleWouldBeSelected).select().emit('boxselect');\n\n if (box.nonempty()) {\n r.redrawHint('eles', true);\n }\n\n r.redraw();\n }\n\n if (start != null) {\n start.unactivate();\n }\n\n if (e.touches[2]) {\n r.data.bgActivePosistion = undefined;\n r.redrawHint('select', true);\n } else if (e.touches[1]) ; else if (e.touches[0]) ; else if (!e.touches[0]) {\n r.data.bgActivePosistion = undefined;\n r.redrawHint('select', true);\n var draggedEles = r.dragData.touchDragEles;\n\n if (start != null) {\n var startWasGrabbed = start._private.grabbed;\n freeDraggedElements(draggedEles);\n r.redrawHint('drag', true);\n r.redrawHint('eles', true);\n\n if (startWasGrabbed) {\n start.emit('freeon');\n draggedEles.emit('free');\n\n if (r.dragData.didDrag) {\n start.emit('dragfreeon');\n draggedEles.emit('dragfree');\n }\n }\n\n triggerEvents(start, ['touchend', 'tapend', 'vmouseup', 'tapdragout'], e, {\n x: now[0],\n y: now[1]\n });\n start.unactivate();\n r.touchData.start = null;\n } else {\n var near = r.findNearestElement(now[0], now[1], true, true);\n triggerEvents(near, ['touchend', 'tapend', 'vmouseup', 'tapdragout'], e, {\n x: now[0],\n y: now[1]\n });\n }\n\n var dx = r.touchData.startPosition[0] - now[0];\n var dx2 = dx * dx;\n var dy = r.touchData.startPosition[1] - now[1];\n var dy2 = dy * dy;\n var dist2 = dx2 + dy2;\n var rdist2 = dist2 * zoom * zoom; // Tap event, roughly same as mouse click event for touch\n\n if (!r.touchData.singleTouchMoved) {\n if (!start) {\n cy.$(':selected').unselect(['tapunselect']);\n }\n\n triggerEvents(start, ['tap', 'vclick'], e, {\n x: now[0],\n y: now[1]\n });\n } // Prepare to select the currently touched node, only if it hasn't been dragged past a certain distance\n\n\n if (start != null && !r.dragData.didDrag // didn't drag nodes around\n && start._private.selectable && rdist2 < r.touchTapThreshold2 && !r.pinching // pinch to zoom should not affect selection\n ) {\n if (cy.selectionType() === 'single') {\n cy.$(isSelected).unmerge(start).unselect(['tapunselect']);\n start.select(['tapselect']);\n } else {\n if (start.selected()) {\n start.unselect(['tapunselect']);\n } else {\n start.select(['tapselect']);\n }\n }\n\n r.redrawHint('eles', true);\n }\n\n r.touchData.singleTouchMoved = true;\n }\n\n for (var j = 0; j < now.length; j++) {\n earlier[j] = now[j];\n }\n\n r.dragData.didDrag = false; // reset for next mousedown\n\n if (e.touches.length === 0) {\n r.touchData.dragDelta = [];\n r.touchData.startPosition = null;\n r.touchData.startGPosition = null;\n }\n\n if (e.touches.length < 2) {\n r.pinching = false;\n r.redrawHint('eles', true);\n r.redraw();\n } //r.redraw();\n\n }, false); // fallback compatibility layer for ms pointer events\n\n if (typeof TouchEvent === 'undefined') {\n var pointers = [];\n\n var makeTouch = function makeTouch(e) {\n return {\n clientX: e.clientX,\n clientY: e.clientY,\n force: 1,\n identifier: e.pointerId,\n pageX: e.pageX,\n pageY: e.pageY,\n radiusX: e.width / 2,\n radiusY: e.height / 2,\n screenX: e.screenX,\n screenY: e.screenY,\n target: e.target\n };\n };\n\n var makePointer = function makePointer(e) {\n return {\n event: e,\n touch: makeTouch(e)\n };\n };\n\n var addPointer = function addPointer(e) {\n pointers.push(makePointer(e));\n };\n\n var removePointer = function removePointer(e) {\n for (var i = 0; i < pointers.length; i++) {\n var p = pointers[i];\n\n if (p.event.pointerId === e.pointerId) {\n pointers.splice(i, 1);\n return;\n }\n }\n };\n\n var updatePointer = function updatePointer(e) {\n var p = pointers.filter(function (p) {\n return p.event.pointerId === e.pointerId;\n })[0];\n p.event = e;\n p.touch = makeTouch(e);\n };\n\n var addTouchesToEvent = function addTouchesToEvent(e) {\n e.touches = pointers.map(function (p) {\n return p.touch;\n });\n };\n\n var pointerIsMouse = function pointerIsMouse(e) {\n return e.pointerType === 'mouse' || e.pointerType === 4;\n };\n\n r.registerBinding(r.container, 'pointerdown', function (e) {\n if (pointerIsMouse(e)) {\n return;\n } // mouse already handled\n\n\n e.preventDefault();\n addPointer(e);\n addTouchesToEvent(e);\n touchstartHandler(e);\n });\n r.registerBinding(r.container, 'pointerup', function (e) {\n if (pointerIsMouse(e)) {\n return;\n } // mouse already handled\n\n\n removePointer(e);\n addTouchesToEvent(e);\n touchendHandler(e);\n });\n r.registerBinding(r.container, 'pointercancel', function (e) {\n if (pointerIsMouse(e)) {\n return;\n } // mouse already handled\n\n\n removePointer(e);\n addTouchesToEvent(e);\n touchcancelHandler(e);\n });\n r.registerBinding(r.container, 'pointermove', function (e) {\n if (pointerIsMouse(e)) {\n return;\n } // mouse already handled\n\n\n e.preventDefault();\n updatePointer(e);\n addTouchesToEvent(e);\n touchmoveHandler(e);\n });\n }\n};\n\nvar BRp$d = {};\n\nBRp$d.generatePolygon = function (name, points) {\n return this.nodeShapes[name] = {\n renderer: this,\n name: name,\n points: points,\n draw: function draw(context, centerX, centerY, width, height) {\n this.renderer.nodeShapeImpl('polygon', context, centerX, centerY, width, height, this.points);\n },\n intersectLine: function intersectLine(nodeX, nodeY, width, height, x, y, padding) {\n return polygonIntersectLine(x, y, this.points, nodeX, nodeY, width / 2, height / 2, padding);\n },\n checkPoint: function checkPoint(x, y, padding, width, height, centerX, centerY) {\n return pointInsidePolygon(x, y, this.points, centerX, centerY, width, height, [0, -1], padding);\n }\n };\n};\n\nBRp$d.generateEllipse = function () {\n return this.nodeShapes['ellipse'] = {\n renderer: this,\n name: 'ellipse',\n draw: function draw(context, centerX, centerY, width, height) {\n this.renderer.nodeShapeImpl(this.name, context, centerX, centerY, width, height);\n },\n intersectLine: function intersectLine(nodeX, nodeY, width, height, x, y, padding) {\n return intersectLineEllipse(x, y, nodeX, nodeY, width / 2 + padding, height / 2 + padding);\n },\n checkPoint: function checkPoint(x, y, padding, width, height, centerX, centerY) {\n return checkInEllipse(x, y, width, height, centerX, centerY, padding);\n }\n };\n};\n\nBRp$d.generateRoundRectangle = function () {\n return this.nodeShapes['round-rectangle'] = this.nodeShapes['roundrectangle'] = {\n renderer: this,\n name: 'round-rectangle',\n points: generateUnitNgonPointsFitToSquare(4, 0),\n draw: function draw(context, centerX, centerY, width, height) {\n this.renderer.nodeShapeImpl(this.name, context, centerX, centerY, width, height);\n },\n intersectLine: function intersectLine(nodeX, nodeY, width, height, x, y, padding) {\n return roundRectangleIntersectLine(x, y, nodeX, nodeY, width, height, padding);\n },\n checkPoint: function checkPoint(x, y, padding, width, height, centerX, centerY) {\n var cornerRadius = getRoundRectangleRadius(width, height);\n var diam = cornerRadius * 2; // Check hBox\n\n if (pointInsidePolygon(x, y, this.points, centerX, centerY, width, height - diam, [0, -1], padding)) {\n return true;\n } // Check vBox\n\n\n if (pointInsidePolygon(x, y, this.points, centerX, centerY, width - diam, height, [0, -1], padding)) {\n return true;\n } // Check top left quarter circle\n\n\n if (checkInEllipse(x, y, diam, diam, centerX - width / 2 + cornerRadius, centerY - height / 2 + cornerRadius, padding)) {\n return true;\n } // Check top right quarter circle\n\n\n if (checkInEllipse(x, y, diam, diam, centerX + width / 2 - cornerRadius, centerY - height / 2 + cornerRadius, padding)) {\n return true;\n } // Check bottom right quarter circle\n\n\n if (checkInEllipse(x, y, diam, diam, centerX + width / 2 - cornerRadius, centerY + height / 2 - cornerRadius, padding)) {\n return true;\n } // Check bottom left quarter circle\n\n\n if (checkInEllipse(x, y, diam, diam, centerX - width / 2 + cornerRadius, centerY + height / 2 - cornerRadius, padding)) {\n return true;\n }\n\n return false;\n }\n };\n};\n\nBRp$d.generateCutRectangle = function () {\n return this.nodeShapes['cut-rectangle'] = this.nodeShapes['cutrectangle'] = {\n renderer: this,\n name: 'cut-rectangle',\n cornerLength: getCutRectangleCornerLength(),\n points: generateUnitNgonPointsFitToSquare(4, 0),\n draw: function draw(context, centerX, centerY, width, height) {\n this.renderer.nodeShapeImpl(this.name, context, centerX, centerY, width, height);\n },\n generateCutTrianglePts: function generateCutTrianglePts(width, height, centerX, centerY) {\n var cl = this.cornerLength;\n var hh = height / 2;\n var hw = width / 2;\n var xBegin = centerX - hw;\n var xEnd = centerX + hw;\n var yBegin = centerY - hh;\n var yEnd = centerY + hh; // points are in clockwise order, inner (imaginary) triangle pt on [4, 5]\n\n return {\n topLeft: [xBegin, yBegin + cl, xBegin + cl, yBegin, xBegin + cl, yBegin + cl],\n topRight: [xEnd - cl, yBegin, xEnd, yBegin + cl, xEnd - cl, yBegin + cl],\n bottomRight: [xEnd, yEnd - cl, xEnd - cl, yEnd, xEnd - cl, yEnd - cl],\n bottomLeft: [xBegin + cl, yEnd, xBegin, yEnd - cl, xBegin + cl, yEnd - cl]\n };\n },\n intersectLine: function intersectLine(nodeX, nodeY, width, height, x, y, padding) {\n var cPts = this.generateCutTrianglePts(width + 2 * padding, height + 2 * padding, nodeX, nodeY);\n var pts = [].concat.apply([], [cPts.topLeft.splice(0, 4), cPts.topRight.splice(0, 4), cPts.bottomRight.splice(0, 4), cPts.bottomLeft.splice(0, 4)]);\n return polygonIntersectLine(x, y, pts, nodeX, nodeY);\n },\n checkPoint: function checkPoint(x, y, padding, width, height, centerX, centerY) {\n // Check hBox\n if (pointInsidePolygon(x, y, this.points, centerX, centerY, width, height - 2 * this.cornerLength, [0, -1], padding)) {\n return true;\n } // Check vBox\n\n\n if (pointInsidePolygon(x, y, this.points, centerX, centerY, width - 2 * this.cornerLength, height, [0, -1], padding)) {\n return true;\n }\n\n var cutTrianglePts = this.generateCutTrianglePts(width, height, centerX, centerY);\n return pointInsidePolygonPoints(x, y, cutTrianglePts.topLeft) || pointInsidePolygonPoints(x, y, cutTrianglePts.topRight) || pointInsidePolygonPoints(x, y, cutTrianglePts.bottomRight) || pointInsidePolygonPoints(x, y, cutTrianglePts.bottomLeft);\n }\n };\n};\n\nBRp$d.generateBarrel = function () {\n return this.nodeShapes['barrel'] = {\n renderer: this,\n name: 'barrel',\n points: generateUnitNgonPointsFitToSquare(4, 0),\n draw: function draw(context, centerX, centerY, width, height) {\n this.renderer.nodeShapeImpl(this.name, context, centerX, centerY, width, height);\n },\n intersectLine: function intersectLine(nodeX, nodeY, width, height, x, y, padding) {\n // use two fixed t values for the bezier curve approximation\n var t0 = 0.15;\n var t1 = 0.5;\n var t2 = 0.85;\n var bPts = this.generateBarrelBezierPts(width + 2 * padding, height + 2 * padding, nodeX, nodeY);\n\n var approximateBarrelCurvePts = function approximateBarrelCurvePts(pts) {\n // approximate curve pts based on the two t values\n var m0 = qbezierPtAt({\n x: pts[0],\n y: pts[1]\n }, {\n x: pts[2],\n y: pts[3]\n }, {\n x: pts[4],\n y: pts[5]\n }, t0);\n var m1 = qbezierPtAt({\n x: pts[0],\n y: pts[1]\n }, {\n x: pts[2],\n y: pts[3]\n }, {\n x: pts[4],\n y: pts[5]\n }, t1);\n var m2 = qbezierPtAt({\n x: pts[0],\n y: pts[1]\n }, {\n x: pts[2],\n y: pts[3]\n }, {\n x: pts[4],\n y: pts[5]\n }, t2);\n return [pts[0], pts[1], m0.x, m0.y, m1.x, m1.y, m2.x, m2.y, pts[4], pts[5]];\n };\n\n var pts = [].concat(approximateBarrelCurvePts(bPts.topLeft), approximateBarrelCurvePts(bPts.topRight), approximateBarrelCurvePts(bPts.bottomRight), approximateBarrelCurvePts(bPts.bottomLeft));\n return polygonIntersectLine(x, y, pts, nodeX, nodeY);\n },\n generateBarrelBezierPts: function generateBarrelBezierPts(width, height, centerX, centerY) {\n var hh = height / 2;\n var hw = width / 2;\n var xBegin = centerX - hw;\n var xEnd = centerX + hw;\n var yBegin = centerY - hh;\n var yEnd = centerY + hh;\n var curveConstants = getBarrelCurveConstants(width, height);\n var hOffset = curveConstants.heightOffset;\n var wOffset = curveConstants.widthOffset;\n var ctrlPtXOffset = curveConstants.ctrlPtOffsetPct * width; // points are in clockwise order, inner (imaginary) control pt on [4, 5]\n\n var pts = {\n topLeft: [xBegin, yBegin + hOffset, xBegin + ctrlPtXOffset, yBegin, xBegin + wOffset, yBegin],\n topRight: [xEnd - wOffset, yBegin, xEnd - ctrlPtXOffset, yBegin, xEnd, yBegin + hOffset],\n bottomRight: [xEnd, yEnd - hOffset, xEnd - ctrlPtXOffset, yEnd, xEnd - wOffset, yEnd],\n bottomLeft: [xBegin + wOffset, yEnd, xBegin + ctrlPtXOffset, yEnd, xBegin, yEnd - hOffset]\n };\n pts.topLeft.isTop = true;\n pts.topRight.isTop = true;\n pts.bottomLeft.isBottom = true;\n pts.bottomRight.isBottom = true;\n return pts;\n },\n checkPoint: function checkPoint(x, y, padding, width, height, centerX, centerY) {\n var curveConstants = getBarrelCurveConstants(width, height);\n var hOffset = curveConstants.heightOffset;\n var wOffset = curveConstants.widthOffset; // Check hBox\n\n if (pointInsidePolygon(x, y, this.points, centerX, centerY, width, height - 2 * hOffset, [0, -1], padding)) {\n return true;\n } // Check vBox\n\n\n if (pointInsidePolygon(x, y, this.points, centerX, centerY, width - 2 * wOffset, height, [0, -1], padding)) {\n return true;\n }\n\n var barrelCurvePts = this.generateBarrelBezierPts(width, height, centerX, centerY);\n\n var getCurveT = function getCurveT(x, y, curvePts) {\n var x0 = curvePts[4];\n var x1 = curvePts[2];\n var x2 = curvePts[0];\n var y0 = curvePts[5]; // var y1 = curvePts[ 3 ];\n\n var y2 = curvePts[1];\n var xMin = Math.min(x0, x2);\n var xMax = Math.max(x0, x2);\n var yMin = Math.min(y0, y2);\n var yMax = Math.max(y0, y2);\n\n if (xMin <= x && x <= xMax && yMin <= y && y <= yMax) {\n var coeff = bezierPtsToQuadCoeff(x0, x1, x2);\n var roots = solveQuadratic(coeff[0], coeff[1], coeff[2], x);\n var validRoots = roots.filter(function (r) {\n return 0 <= r && r <= 1;\n });\n\n if (validRoots.length > 0) {\n return validRoots[0];\n }\n }\n\n return null;\n };\n\n var curveRegions = Object.keys(barrelCurvePts);\n\n for (var i = 0; i < curveRegions.length; i++) {\n var corner = curveRegions[i];\n var cornerPts = barrelCurvePts[corner];\n var t = getCurveT(x, y, cornerPts);\n\n if (t == null) {\n continue;\n }\n\n var y0 = cornerPts[5];\n var y1 = cornerPts[3];\n var y2 = cornerPts[1];\n var bezY = qbezierAt(y0, y1, y2, t);\n\n if (cornerPts.isTop && bezY <= y) {\n return true;\n }\n\n if (cornerPts.isBottom && y <= bezY) {\n return true;\n }\n }\n\n return false;\n }\n };\n};\n\nBRp$d.generateBottomRoundrectangle = function () {\n return this.nodeShapes['bottom-round-rectangle'] = this.nodeShapes['bottomroundrectangle'] = {\n renderer: this,\n name: 'bottom-round-rectangle',\n points: generateUnitNgonPointsFitToSquare(4, 0),\n draw: function draw(context, centerX, centerY, width, height) {\n this.renderer.nodeShapeImpl(this.name, context, centerX, centerY, width, height);\n },\n intersectLine: function intersectLine(nodeX, nodeY, width, height, x, y, padding) {\n var topStartX = nodeX - (width / 2 + padding);\n var topStartY = nodeY - (height / 2 + padding);\n var topEndY = topStartY;\n var topEndX = nodeX + (width / 2 + padding);\n var topIntersections = finiteLinesIntersect(x, y, nodeX, nodeY, topStartX, topStartY, topEndX, topEndY, false);\n\n if (topIntersections.length > 0) {\n return topIntersections;\n }\n\n return roundRectangleIntersectLine(x, y, nodeX, nodeY, width, height, padding);\n },\n checkPoint: function checkPoint(x, y, padding, width, height, centerX, centerY) {\n var cornerRadius = getRoundRectangleRadius(width, height);\n var diam = 2 * cornerRadius; // Check hBox\n\n if (pointInsidePolygon(x, y, this.points, centerX, centerY, width, height - diam, [0, -1], padding)) {\n return true;\n } // Check vBox\n\n\n if (pointInsidePolygon(x, y, this.points, centerX, centerY, width - diam, height, [0, -1], padding)) {\n return true;\n } // check non-rounded top side\n\n\n var outerWidth = width / 2 + 2 * padding;\n var outerHeight = height / 2 + 2 * padding;\n var points = [centerX - outerWidth, centerY - outerHeight, centerX - outerWidth, centerY, centerX + outerWidth, centerY, centerX + outerWidth, centerY - outerHeight];\n\n if (pointInsidePolygonPoints(x, y, points)) {\n return true;\n } // Check bottom right quarter circle\n\n\n if (checkInEllipse(x, y, diam, diam, centerX + width / 2 - cornerRadius, centerY + height / 2 - cornerRadius, padding)) {\n return true;\n } // Check bottom left quarter circle\n\n\n if (checkInEllipse(x, y, diam, diam, centerX - width / 2 + cornerRadius, centerY + height / 2 - cornerRadius, padding)) {\n return true;\n }\n\n return false;\n }\n };\n};\n\nBRp$d.registerNodeShapes = function () {\n var nodeShapes = this.nodeShapes = {};\n var renderer = this;\n this.generateEllipse();\n this.generatePolygon('triangle', generateUnitNgonPointsFitToSquare(3, 0));\n this.generatePolygon('rectangle', generateUnitNgonPointsFitToSquare(4, 0));\n nodeShapes['square'] = nodeShapes['rectangle'];\n this.generateRoundRectangle();\n this.generateCutRectangle();\n this.generateBarrel();\n this.generateBottomRoundrectangle();\n this.generatePolygon('diamond', [0, 1, 1, 0, 0, -1, -1, 0]);\n this.generatePolygon('pentagon', generateUnitNgonPointsFitToSquare(5, 0));\n this.generatePolygon('hexagon', generateUnitNgonPointsFitToSquare(6, 0));\n this.generatePolygon('heptagon', generateUnitNgonPointsFitToSquare(7, 0));\n this.generatePolygon('octagon', generateUnitNgonPointsFitToSquare(8, 0));\n var star5Points = new Array(20);\n {\n var outerPoints = generateUnitNgonPoints(5, 0);\n var innerPoints = generateUnitNgonPoints(5, Math.PI / 5); // Outer radius is 1; inner radius of star is smaller\n\n var innerRadius = 0.5 * (3 - Math.sqrt(5));\n innerRadius *= 1.57;\n\n for (var i = 0; i < innerPoints.length / 2; i++) {\n innerPoints[i * 2] *= innerRadius;\n innerPoints[i * 2 + 1] *= innerRadius;\n }\n\n for (var i = 0; i < 20 / 4; i++) {\n star5Points[i * 4] = outerPoints[i * 2];\n star5Points[i * 4 + 1] = outerPoints[i * 2 + 1];\n star5Points[i * 4 + 2] = innerPoints[i * 2];\n star5Points[i * 4 + 3] = innerPoints[i * 2 + 1];\n }\n }\n star5Points = fitPolygonToSquare(star5Points);\n this.generatePolygon('star', star5Points);\n this.generatePolygon('vee', [-1, -1, 0, -0.333, 1, -1, 0, 1]);\n this.generatePolygon('rhomboid', [-1, -1, 0.333, -1, 1, 1, -0.333, 1]);\n this.nodeShapes['concavehexagon'] = this.generatePolygon('concave-hexagon', [-1, -0.95, -0.75, 0, -1, 0.95, 1, 0.95, 0.75, 0, 1, -0.95]);\n this.generatePolygon('tag', [-1, -1, 0.25, -1, 1, 0, 0.25, 1, -1, 1]);\n\n nodeShapes.makePolygon = function (points) {\n // use caching on user-specified polygons so they are as fast as native shapes\n var key = points.join('$');\n var name = 'polygon-' + key;\n var shape;\n\n if (shape = this[name]) {\n // got cached shape\n return shape;\n } // create and cache new shape\n\n\n return renderer.generatePolygon(name, points);\n };\n};\n\nvar BRp$e = {};\n\nBRp$e.timeToRender = function () {\n return this.redrawTotalTime / this.redrawCount;\n};\n\nBRp$e.redraw = function (options) {\n options = options || staticEmptyObject();\n var r = this;\n\n if (r.averageRedrawTime === undefined) {\n r.averageRedrawTime = 0;\n }\n\n if (r.lastRedrawTime === undefined) {\n r.lastRedrawTime = 0;\n }\n\n if (r.lastDrawTime === undefined) {\n r.lastDrawTime = 0;\n }\n\n r.requestedFrame = true;\n r.renderOptions = options;\n};\n\nBRp$e.beforeRender = function (fn, priority) {\n // the renderer can't add tick callbacks when destroyed\n if (this.destroyed) {\n return;\n }\n\n if (priority == null) {\n error('Priority is not optional for beforeRender');\n }\n\n var cbs = this.beforeRenderCallbacks;\n cbs.push({\n fn: fn,\n priority: priority\n }); // higher priority callbacks executed first\n\n cbs.sort(function (a, b) {\n return b.priority - a.priority;\n });\n};\n\nvar beforeRenderCallbacks = function beforeRenderCallbacks(r, willDraw, startTime) {\n var cbs = r.beforeRenderCallbacks;\n\n for (var i = 0; i < cbs.length; i++) {\n cbs[i].fn(willDraw, startTime);\n }\n};\n\nBRp$e.startRenderLoop = function () {\n var r = this;\n var cy = r.cy;\n\n if (r.renderLoopStarted) {\n return;\n } else {\n r.renderLoopStarted = true;\n }\n\n var renderFn = function renderFn(requestTime) {\n if (r.destroyed) {\n return;\n }\n\n if (cy.batching()) ; else if (r.requestedFrame && !r.skipFrame) {\n beforeRenderCallbacks(r, true, requestTime);\n var startTime = performanceNow();\n r.render(r.renderOptions);\n var endTime = r.lastDrawTime = performanceNow();\n\n if (r.averageRedrawTime === undefined) {\n r.averageRedrawTime = endTime - startTime;\n }\n\n if (r.redrawCount === undefined) {\n r.redrawCount = 0;\n }\n\n r.redrawCount++;\n\n if (r.redrawTotalTime === undefined) {\n r.redrawTotalTime = 0;\n }\n\n var duration = endTime - startTime;\n r.redrawTotalTime += duration;\n r.lastRedrawTime = duration; // use a weighted average with a bias from the previous average so we don't spike so easily\n\n r.averageRedrawTime = r.averageRedrawTime / 2 + duration / 2;\n r.requestedFrame = false;\n } else {\n beforeRenderCallbacks(r, false, requestTime);\n }\n\n r.skipFrame = false;\n requestAnimationFrame(renderFn);\n };\n\n requestAnimationFrame(renderFn);\n};\n\nvar BaseRenderer = function BaseRenderer(options) {\n this.init(options);\n};\n\nvar BR = BaseRenderer;\nvar BRp$f = BR.prototype;\nBRp$f.clientFunctions = ['redrawHint', 'render', 'renderTo', 'matchCanvasSize', 'nodeShapeImpl', 'arrowShapeImpl'];\n\nBRp$f.init = function (options) {\n var r = this;\n r.options = options;\n r.cy = options.cy;\n var ctr = r.container = options.cy.container(); // prepend a stylesheet in the head such that\n\n if (window$1) {\n var document = window$1.document;\n var head = document.head;\n var stylesheetId = '__________cytoscape_stylesheet';\n var className = '__________cytoscape_container';\n var stylesheetAlreadyExists = document.getElementById(stylesheetId) != null;\n\n if (ctr.className.indexOf(className) < 0) {\n ctr.className = (ctr.className || '') + ' ' + className;\n }\n\n if (!stylesheetAlreadyExists) {\n var stylesheet = document.createElement('style');\n stylesheet.id = stylesheetId;\n stylesheet.innerHTML = '.' + className + ' { position: relative; }';\n head.insertBefore(stylesheet, head.children[0]); // first so lowest priority\n }\n\n var computedStyle = window$1.getComputedStyle(ctr);\n var position = computedStyle.getPropertyValue('position');\n\n if (position === 'static') {\n warn('A Cytoscape container has style position:static and so can not use UI extensions properly');\n }\n }\n\n r.selection = [undefined, undefined, undefined, undefined, 0]; // Coordinates for selection box, plus enabled flag\n\n r.bezierProjPcts = [0.05, 0.225, 0.4, 0.5, 0.6, 0.775, 0.95]; //--Pointer-related data\n\n r.hoverData = {\n down: null,\n last: null,\n downTime: null,\n triggerMode: null,\n dragging: false,\n initialPan: [null, null],\n capture: false\n };\n r.dragData = {\n possibleDragElements: []\n };\n r.touchData = {\n start: null,\n capture: false,\n // These 3 fields related to tap, taphold events\n startPosition: [null, null, null, null, null, null],\n singleTouchStartTime: null,\n singleTouchMoved: true,\n now: [null, null, null, null, null, null],\n earlier: [null, null, null, null, null, null]\n };\n r.redraws = 0;\n r.showFps = options.showFps;\n r.debug = options.debug;\n r.hideEdgesOnViewport = options.hideEdgesOnViewport;\n r.hideLabelsOnViewport = options.hideLabelsOnViewport;\n r.textureOnViewport = options.textureOnViewport;\n r.wheelSensitivity = options.wheelSensitivity;\n r.motionBlurEnabled = options.motionBlur; // on by default\n\n r.forcedPixelRatio = number(options.pixelRatio) ? options.pixelRatio : null;\n r.motionBlur = options.motionBlur; // for initial kick off\n\n r.motionBlurOpacity = options.motionBlurOpacity;\n r.motionBlurTransparency = 1 - r.motionBlurOpacity;\n r.motionBlurPxRatio = 1;\n r.mbPxRBlurry = 1; //0.8;\n\n r.minMbLowQualFrames = 4;\n r.fullQualityMb = false;\n r.clearedForMotionBlur = [];\n r.desktopTapThreshold = options.desktopTapThreshold;\n r.desktopTapThreshold2 = options.desktopTapThreshold * options.desktopTapThreshold;\n r.touchTapThreshold = options.touchTapThreshold;\n r.touchTapThreshold2 = options.touchTapThreshold * options.touchTapThreshold;\n r.tapholdDuration = 500;\n r.bindings = [];\n r.beforeRenderCallbacks = [];\n r.beforeRenderPriorities = {\n // higher priority execs before lower one\n animations: 400,\n eleCalcs: 300,\n eleTxrDeq: 200,\n lyrTxrDeq: 150,\n lyrTxrSkip: 100\n };\n r.registerNodeShapes();\n r.registerArrowShapes();\n r.registerCalculationListeners();\n};\n\nBRp$f.notify = function (eventName, eles) {\n var r = this;\n var cy = r.cy; // the renderer can't be notified after it's destroyed\n\n if (this.destroyed) {\n return;\n }\n\n if (eventName === 'init') {\n r.load();\n return;\n }\n\n if (eventName === 'destroy') {\n r.destroy();\n return;\n }\n\n if (eventName === 'add' || eventName === 'remove' || eventName === 'move' && cy.hasCompoundNodes() || eventName === 'load' || eventName === 'zorder' || eventName === 'mount') {\n r.invalidateCachedZSortedEles();\n }\n\n if (eventName === 'viewport') {\n r.redrawHint('select', true);\n }\n\n if (eventName === 'load' || eventName === 'resize' || eventName === 'mount') {\n r.invalidateContainerClientCoordsCache();\n r.matchCanvasSize(r.container);\n }\n\n r.redrawHint('eles', true);\n r.redrawHint('drag', true);\n this.startRenderLoop();\n this.redraw();\n};\n\nBRp$f.destroy = function () {\n var r = this;\n r.destroyed = true;\n r.cy.stopAnimationLoop();\n\n for (var i = 0; i < r.bindings.length; i++) {\n var binding = r.bindings[i];\n var b = binding;\n var tgt = b.target;\n (tgt.off || tgt.removeEventListener).apply(tgt, b.args);\n }\n\n r.bindings = [];\n r.beforeRenderCallbacks = [];\n r.onUpdateEleCalcsFns = [];\n\n if (r.removeObserver) {\n r.removeObserver.disconnect();\n }\n\n if (r.styleObserver) {\n r.styleObserver.disconnect();\n }\n\n if (r.labelCalcDiv) {\n try {\n document.body.removeChild(r.labelCalcDiv); // eslint-disable-line no-undef\n } catch (e) {// ie10 issue #1014\n }\n }\n};\n\nBRp$f.isHeadless = function () {\n return false;\n};\n\n[BRp, BRp$a, BRp$b, BRp$c, BRp$d, BRp$e].forEach(function (props) {\n extend(BRp$f, props);\n});\n\nvar fullFpsTime = 1000 / 60; // assume 60 frames per second\n\nvar defs = {\n setupDequeueing: function setupDequeueing(opts) {\n return function setupDequeueingImpl() {\n var self = this;\n var r = this.renderer;\n\n if (self.dequeueingSetup) {\n return;\n } else {\n self.dequeueingSetup = true;\n }\n\n var queueRedraw = util(function () {\n r.redrawHint('eles', true);\n r.redrawHint('drag', true);\n r.redraw();\n }, opts.deqRedrawThreshold);\n\n var dequeue = function dequeue(willDraw, frameStartTime) {\n var startTime = performanceNow();\n var avgRenderTime = r.averageRedrawTime;\n var renderTime = r.lastRedrawTime;\n var deqd = [];\n var extent = r.cy.extent();\n var pixelRatio = r.getPixelRatio(); // if we aren't in a tick that causes a draw, then the rendered style\n // queue won't automatically be flushed before dequeueing starts\n\n if (!willDraw) {\n r.flushRenderedStyleQueue();\n }\n\n while (true) {\n // eslint-disable-line no-constant-condition\n var now = performanceNow();\n var duration = now - startTime;\n var frameDuration = now - frameStartTime;\n\n if (renderTime < fullFpsTime) {\n // if we're rendering faster than the ideal fps, then do dequeueing\n // during all of the remaining frame time\n var timeAvailable = fullFpsTime - (willDraw ? avgRenderTime : 0);\n\n if (frameDuration >= opts.deqFastCost * timeAvailable) {\n break;\n }\n } else {\n if (willDraw) {\n if (duration >= opts.deqCost * renderTime || duration >= opts.deqAvgCost * avgRenderTime) {\n break;\n }\n } else if (frameDuration >= opts.deqNoDrawCost * fullFpsTime) {\n break;\n }\n }\n\n var thisDeqd = opts.deq(self, pixelRatio, extent);\n\n if (thisDeqd.length > 0) {\n for (var i = 0; i < thisDeqd.length; i++) {\n deqd.push(thisDeqd[i]);\n }\n } else {\n break;\n }\n } // callbacks on dequeue\n\n\n if (deqd.length > 0) {\n opts.onDeqd(self, deqd);\n\n if (!willDraw && opts.shouldRedraw(self, deqd, pixelRatio, extent)) {\n queueRedraw();\n }\n }\n };\n\n var priority = opts.priority || noop;\n r.beforeRender(dequeue, priority(self));\n };\n }\n};\n\n// Uses keys so elements may share the same cache.\n\nvar ElementTextureCacheLookup =\n/*#__PURE__*/\nfunction () {\n function ElementTextureCacheLookup(getKey) {\n var doesEleInvalidateKey = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : falsify;\n\n _classCallCheck(this, ElementTextureCacheLookup);\n\n this.idsByKey = new Map$1();\n this.keyForId = new Map$1();\n this.cachesByLvl = new Map$1();\n this.lvls = [];\n this.getKey = getKey;\n this.doesEleInvalidateKey = doesEleInvalidateKey;\n }\n\n _createClass(ElementTextureCacheLookup, [{\n key: \"getIdsFor\",\n value: function getIdsFor(key) {\n if (key == null) {\n error(\"Can not get id list for null key\");\n }\n\n var idsByKey = this.idsByKey;\n var ids = this.idsByKey.get(key);\n\n if (!ids) {\n ids = new Set$1();\n idsByKey.set(key, ids);\n }\n\n return ids;\n }\n }, {\n key: \"addIdForKey\",\n value: function addIdForKey(key, id) {\n if (key != null) {\n this.getIdsFor(key).add(id);\n }\n }\n }, {\n key: \"deleteIdForKey\",\n value: function deleteIdForKey(key, id) {\n if (key != null) {\n this.getIdsFor(key).delete(id);\n }\n }\n }, {\n key: \"getNumberOfIdsForKey\",\n value: function getNumberOfIdsForKey(key) {\n if (key == null) {\n return 0;\n } else {\n return this.getIdsFor(key).size;\n }\n }\n }, {\n key: \"updateKeyMappingFor\",\n value: function updateKeyMappingFor(ele) {\n var id = ele.id();\n var prevKey = this.keyForId.get(id);\n var currKey = this.getKey(ele);\n this.deleteIdForKey(prevKey, id);\n this.addIdForKey(currKey, id);\n this.keyForId.set(id, currKey);\n }\n }, {\n key: \"deleteKeyMappingFor\",\n value: function deleteKeyMappingFor(ele) {\n var id = ele.id();\n var prevKey = this.keyForId.get(id);\n this.deleteIdForKey(prevKey, id);\n this.keyForId.delete(id);\n }\n }, {\n key: \"keyHasChangedFor\",\n value: function keyHasChangedFor(ele) {\n var id = ele.id();\n var prevKey = this.keyForId.get(id);\n var newKey = this.getKey(ele);\n return prevKey !== newKey;\n }\n }, {\n key: \"isInvalid\",\n value: function isInvalid(ele) {\n return this.keyHasChangedFor(ele) || this.doesEleInvalidateKey(ele);\n }\n }, {\n key: \"getCachesAt\",\n value: function getCachesAt(lvl) {\n var cachesByLvl = this.cachesByLvl,\n lvls = this.lvls;\n var caches = cachesByLvl.get(lvl);\n\n if (!caches) {\n caches = new Map$1();\n cachesByLvl.set(lvl, caches);\n lvls.push(lvl);\n }\n\n return caches;\n }\n }, {\n key: \"getCache\",\n value: function getCache(key, lvl) {\n return this.getCachesAt(lvl).get(key);\n }\n }, {\n key: \"get\",\n value: function get(ele, lvl) {\n var key = this.getKey(ele);\n var cache = this.getCache(key, lvl); // getting for an element may need to add to the id list b/c eles can share keys\n\n if (cache != null) {\n this.updateKeyMappingFor(ele);\n }\n\n return cache;\n }\n }, {\n key: \"getForCachedKey\",\n value: function getForCachedKey(ele, lvl) {\n var key = this.keyForId.get(ele.id()); // n.b. use cached key, not newly computed key\n\n var cache = this.getCache(key, lvl);\n return cache;\n }\n }, {\n key: \"hasCache\",\n value: function hasCache(key, lvl) {\n return this.getCachesAt(lvl).has(key);\n }\n }, {\n key: \"has\",\n value: function has(ele, lvl) {\n var key = this.getKey(ele);\n return this.hasCache(key, lvl);\n }\n }, {\n key: \"setCache\",\n value: function setCache(key, lvl, cache) {\n cache.key = key;\n this.getCachesAt(lvl).set(key, cache);\n }\n }, {\n key: \"set\",\n value: function set(ele, lvl, cache) {\n var key = this.getKey(ele);\n this.setCache(key, lvl, cache);\n this.updateKeyMappingFor(ele);\n }\n }, {\n key: \"deleteCache\",\n value: function deleteCache(key, lvl) {\n this.getCachesAt(lvl).delete(key);\n }\n }, {\n key: \"delete\",\n value: function _delete(ele, lvl) {\n var key = this.getKey(ele);\n this.deleteCache(key, lvl);\n }\n }, {\n key: \"invalidateKey\",\n value: function invalidateKey(key) {\n var _this = this;\n\n this.lvls.forEach(function (lvl) {\n return _this.deleteCache(key, lvl);\n });\n } // returns true if no other eles reference the invalidated cache (n.b. other eles may need the cache with the same key)\n\n }, {\n key: \"invalidate\",\n value: function invalidate(ele) {\n var id = ele.id();\n var key = this.keyForId.get(id); // n.b. use stored key rather than current (potential key)\n\n this.deleteKeyMappingFor(ele);\n var entireKeyInvalidated = this.doesEleInvalidateKey(ele);\n\n if (entireKeyInvalidated) {\n // clear mapping for current key\n this.invalidateKey(key);\n }\n\n return entireKeyInvalidated || this.getNumberOfIdsForKey(key) === 0;\n }\n }]);\n\n return ElementTextureCacheLookup;\n}();\n\nvar minTxrH = 25; // the size of the texture cache for small height eles (special case)\n\nvar txrStepH = 50; // the min size of the regular cache, and the size it increases with each step up\n\nvar minLvl = -4; // when scaling smaller than that we don't need to re-render\n\nvar maxLvl = 3; // when larger than this scale just render directly (caching is not helpful)\n\nvar maxZoom = 7.99; // beyond this zoom level, layered textures are not used\n\nvar eleTxrSpacing = 8; // spacing between elements on textures to avoid blitting overlaps\n\nvar defTxrWidth = 1024; // default/minimum texture width\n\nvar maxTxrW = 1024; // the maximum width of a texture\n\nvar maxTxrH = 1024; // the maximum height of a texture\n\nvar minUtility = 0.2; // if usage of texture is less than this, it is retired\n\nvar maxFullness = 0.8; // fullness of texture after which queue removal is checked\n\nvar maxFullnessChecks = 10; // dequeued after this many checks\n\nvar deqCost = 0.15; // % of add'l rendering cost allowed for dequeuing ele caches each frame\n\nvar deqAvgCost = 0.1; // % of add'l rendering cost compared to average overall redraw time\n\nvar deqNoDrawCost = 0.9; // % of avg frame time that can be used for dequeueing when not drawing\n\nvar deqFastCost = 0.9; // % of frame time to be used when >60fps\n\nvar deqRedrawThreshold = 100; // time to batch redraws together from dequeueing to allow more dequeueing calcs to happen in the meanwhile\n\nvar maxDeqSize = 1; // number of eles to dequeue and render at higher texture in each batch\n\nvar getTxrReasons = {\n dequeue: 'dequeue',\n downscale: 'downscale',\n highQuality: 'highQuality'\n};\nvar initDefaults = defaults({\n getKey: null,\n doesEleInvalidateKey: falsify,\n drawElement: null,\n getBoundingBox: null,\n getRotationPoint: null,\n getRotationOffset: null,\n isVisible: trueify,\n allowEdgeTxrCaching: true,\n allowParentTxrCaching: true\n});\n\nvar ElementTextureCache = function ElementTextureCache(renderer, initOptions) {\n var self = this;\n self.renderer = renderer;\n self.onDequeues = [];\n var opts = initDefaults(initOptions);\n extend(self, opts);\n self.lookup = new ElementTextureCacheLookup(opts.getKey, opts.doesEleInvalidateKey);\n self.setupDequeueing();\n};\n\nvar ETCp = ElementTextureCache.prototype;\nETCp.reasons = getTxrReasons; // the list of textures in which new subtextures for elements can be placed\n\nETCp.getTextureQueue = function (txrH) {\n var self = this;\n self.eleImgCaches = self.eleImgCaches || {};\n return self.eleImgCaches[txrH] = self.eleImgCaches[txrH] || [];\n}; // the list of usused textures which can be recycled (in use in texture queue)\n\n\nETCp.getRetiredTextureQueue = function (txrH) {\n var self = this;\n var rtxtrQs = self.eleImgCaches.retired = self.eleImgCaches.retired || {};\n var rtxtrQ = rtxtrQs[txrH] = rtxtrQs[txrH] || [];\n return rtxtrQ;\n}; // queue of element draw requests at different scale levels\n\n\nETCp.getElementQueue = function () {\n var self = this;\n var q = self.eleCacheQueue = self.eleCacheQueue || new Heap(function (a, b) {\n return b.reqs - a.reqs;\n });\n return q;\n}; // queue of element draw requests at different scale levels (element id lookup)\n\n\nETCp.getElementKeyToQueue = function () {\n var self = this;\n var k2q = self.eleKeyToCacheQueue = self.eleKeyToCacheQueue || {};\n return k2q;\n};\n\nETCp.getElement = function (ele, bb, pxRatio, lvl, reason) {\n var self = this;\n var r = this.renderer;\n var zoom = r.cy.zoom();\n var lookup = this.lookup;\n\n if (bb.w === 0 || bb.h === 0 || isNaN(bb.w) || isNaN(bb.h) || !ele.visible()) {\n return null;\n }\n\n if (!self.allowEdgeTxrCaching && ele.isEdge() || !self.allowParentTxrCaching && ele.isParent()) {\n return null;\n }\n\n if (lvl == null) {\n lvl = Math.ceil(log2(zoom * pxRatio));\n }\n\n if (lvl < minLvl) {\n lvl = minLvl;\n } else if (zoom >= maxZoom || lvl > maxLvl) {\n return null;\n }\n\n var scale = Math.pow(2, lvl);\n var eleScaledH = bb.h * scale;\n var eleScaledW = bb.w * scale;\n var scaledLabelShown = r.eleTextBiggerThanMin(ele, scale);\n\n if (!this.isVisible(ele, scaledLabelShown)) {\n return null;\n }\n\n var eleCache = lookup.get(ele, lvl); // if this get was on an unused/invalidated cache, then restore the texture usage metric\n\n if (eleCache && eleCache.invalidated) {\n eleCache.invalidated = false;\n eleCache.texture.invalidatedWidth -= eleCache.width;\n }\n\n if (eleCache) {\n return eleCache;\n }\n\n var txrH; // which texture height this ele belongs to\n\n if (eleScaledH <= minTxrH) {\n txrH = minTxrH;\n } else if (eleScaledH <= txrStepH) {\n txrH = txrStepH;\n } else {\n txrH = Math.ceil(eleScaledH / txrStepH) * txrStepH;\n }\n\n if (eleScaledH > maxTxrH || eleScaledW > maxTxrW) {\n return null; // caching large elements is not efficient\n }\n\n var txrQ = self.getTextureQueue(txrH); // first try the second last one in case it has space at the end\n\n var txr = txrQ[txrQ.length - 2];\n\n var addNewTxr = function addNewTxr() {\n return self.recycleTexture(txrH, eleScaledW) || self.addTexture(txrH, eleScaledW);\n }; // try the last one if there is no second last one\n\n\n if (!txr) {\n txr = txrQ[txrQ.length - 1];\n } // if the last one doesn't exist, we need a first one\n\n\n if (!txr) {\n txr = addNewTxr();\n } // if there's no room in the current texture, we need a new one\n\n\n if (txr.width - txr.usedWidth < eleScaledW) {\n txr = addNewTxr();\n }\n\n var scalableFrom = function scalableFrom(otherCache) {\n return otherCache && otherCache.scaledLabelShown === scaledLabelShown;\n };\n\n var deqing = reason && reason === getTxrReasons.dequeue;\n var highQualityReq = reason && reason === getTxrReasons.highQuality;\n var downscaleReq = reason && reason === getTxrReasons.downscale;\n var higherCache; // the nearest cache with a higher level\n\n for (var l = lvl + 1; l <= maxLvl; l++) {\n var c = lookup.get(ele, l);\n\n if (c) {\n higherCache = c;\n break;\n }\n }\n\n var oneUpCache = higherCache && higherCache.level === lvl + 1 ? higherCache : null;\n\n var downscale = function downscale() {\n txr.context.drawImage(oneUpCache.texture.canvas, oneUpCache.x, 0, oneUpCache.width, oneUpCache.height, txr.usedWidth, 0, eleScaledW, eleScaledH);\n }; // reset ele area in texture\n\n\n txr.context.setTransform(1, 0, 0, 1, 0, 0);\n txr.context.clearRect(txr.usedWidth, 0, eleScaledW, txrH);\n\n if (scalableFrom(oneUpCache)) {\n // then we can relatively cheaply rescale the existing image w/o rerendering\n downscale();\n } else if (scalableFrom(higherCache)) {\n // then use the higher cache for now and queue the next level down\n // to cheaply scale towards the smaller level\n if (highQualityReq) {\n for (var _l = higherCache.level; _l > lvl; _l--) {\n oneUpCache = self.getElement(ele, bb, pxRatio, _l, getTxrReasons.downscale);\n }\n\n downscale();\n } else {\n self.queueElement(ele, higherCache.level - 1);\n return higherCache;\n }\n } else {\n var lowerCache; // the nearest cache with a lower level\n\n if (!deqing && !highQualityReq && !downscaleReq) {\n for (var _l2 = lvl - 1; _l2 >= minLvl; _l2--) {\n var _c = lookup.get(ele, _l2);\n\n if (_c) {\n lowerCache = _c;\n break;\n }\n }\n }\n\n if (scalableFrom(lowerCache)) {\n // then use the lower quality cache for now and queue the better one for later\n self.queueElement(ele, lvl);\n return lowerCache;\n }\n\n txr.context.translate(txr.usedWidth, 0);\n txr.context.scale(scale, scale);\n this.drawElement(txr.context, ele, bb, scaledLabelShown, false);\n txr.context.scale(1 / scale, 1 / scale);\n txr.context.translate(-txr.usedWidth, 0);\n }\n\n eleCache = {\n x: txr.usedWidth,\n texture: txr,\n level: lvl,\n scale: scale,\n width: eleScaledW,\n height: eleScaledH,\n scaledLabelShown: scaledLabelShown\n };\n txr.usedWidth += Math.ceil(eleScaledW + eleTxrSpacing);\n txr.eleCaches.push(eleCache);\n lookup.set(ele, lvl, eleCache);\n self.checkTextureFullness(txr);\n return eleCache;\n};\n\nETCp.invalidateElements = function (eles) {\n for (var i = 0; i < eles.length; i++) {\n this.invalidateElement(eles[i]);\n }\n};\n\nETCp.invalidateElement = function (ele) {\n var self = this;\n var lookup = self.lookup;\n var caches = [];\n var invalid = lookup.isInvalid(ele);\n\n if (!invalid) {\n return; // override the invalidation request if the element key has not changed\n }\n\n for (var lvl = minLvl; lvl <= maxLvl; lvl++) {\n var cache = lookup.getForCachedKey(ele, lvl);\n\n if (cache) {\n caches.push(cache);\n }\n }\n\n var noOtherElesUseCache = lookup.invalidate(ele);\n\n if (noOtherElesUseCache) {\n for (var i = 0; i < caches.length; i++) {\n var _cache = caches[i];\n var txr = _cache.texture; // remove space from the texture it belongs to\n\n txr.invalidatedWidth += _cache.width; // mark the cache as invalidated\n\n _cache.invalidated = true; // retire the texture if its utility is low\n\n self.checkTextureUtility(txr);\n }\n } // remove from queue since the old req was for the old state\n\n\n self.removeFromQueue(ele);\n};\n\nETCp.checkTextureUtility = function (txr) {\n // invalidate all entries in the cache if the cache size is small\n if (txr.invalidatedWidth >= minUtility * txr.width) {\n this.retireTexture(txr);\n }\n};\n\nETCp.checkTextureFullness = function (txr) {\n // if texture has been mostly filled and passed over several times, remove\n // it from the queue so we don't need to waste time looking at it to put new things\n var self = this;\n var txrQ = self.getTextureQueue(txr.height);\n\n if (txr.usedWidth / txr.width > maxFullness && txr.fullnessChecks >= maxFullnessChecks) {\n removeFromArray(txrQ, txr);\n } else {\n txr.fullnessChecks++;\n }\n};\n\nETCp.retireTexture = function (txr) {\n var self = this;\n var txrH = txr.height;\n var txrQ = self.getTextureQueue(txrH);\n var lookup = this.lookup; // retire the texture from the active / searchable queue:\n\n removeFromArray(txrQ, txr);\n txr.retired = true; // remove the refs from the eles to the caches:\n\n var eleCaches = txr.eleCaches;\n\n for (var i = 0; i < eleCaches.length; i++) {\n var eleCache = eleCaches[i];\n lookup.deleteCache(eleCache.key, eleCache.level);\n }\n\n clearArray(eleCaches); // add the texture to a retired queue so it can be recycled in future:\n\n var rtxtrQ = self.getRetiredTextureQueue(txrH);\n rtxtrQ.push(txr);\n};\n\nETCp.addTexture = function (txrH, minW) {\n var self = this;\n var txrQ = self.getTextureQueue(txrH);\n var txr = {};\n txrQ.push(txr);\n txr.eleCaches = [];\n txr.height = txrH;\n txr.width = Math.max(defTxrWidth, minW);\n txr.usedWidth = 0;\n txr.invalidatedWidth = 0;\n txr.fullnessChecks = 0;\n txr.canvas = self.renderer.makeOffscreenCanvas(txr.width, txr.height);\n txr.context = txr.canvas.getContext('2d');\n return txr;\n};\n\nETCp.recycleTexture = function (txrH, minW) {\n var self = this;\n var txrQ = self.getTextureQueue(txrH);\n var rtxtrQ = self.getRetiredTextureQueue(txrH);\n\n for (var i = 0; i < rtxtrQ.length; i++) {\n var txr = rtxtrQ[i];\n\n if (txr.width >= minW) {\n txr.retired = false;\n txr.usedWidth = 0;\n txr.invalidatedWidth = 0;\n txr.fullnessChecks = 0;\n clearArray(txr.eleCaches);\n txr.context.setTransform(1, 0, 0, 1, 0, 0);\n txr.context.clearRect(0, 0, txr.width, txr.height);\n removeFromArray(rtxtrQ, txr);\n txrQ.push(txr);\n return txr;\n }\n }\n};\n\nETCp.queueElement = function (ele, lvl) {\n var self = this;\n var q = self.getElementQueue();\n var k2q = self.getElementKeyToQueue();\n var key = this.getKey(ele);\n var existingReq = k2q[key];\n\n if (existingReq) {\n // use the max lvl b/c in between lvls are cheap to make\n existingReq.level = Math.max(existingReq.level, lvl);\n existingReq.eles.merge(ele);\n existingReq.reqs++;\n q.updateItem(existingReq);\n } else {\n var req = {\n eles: ele.spawn().merge(ele),\n level: lvl,\n reqs: 1,\n key: key\n };\n q.push(req);\n k2q[key] = req;\n }\n};\n\nETCp.dequeue = function (pxRatio\n/*, extent*/\n) {\n var self = this;\n var q = self.getElementQueue();\n var k2q = self.getElementKeyToQueue();\n var dequeued = [];\n var lookup = self.lookup;\n\n for (var i = 0; i < maxDeqSize; i++) {\n if (q.size() > 0) {\n var req = q.pop();\n var key = req.key;\n var ele = req.eles[0]; // all eles have the same key\n\n var cacheExists = lookup.hasCache(ele, req.level); // clear out the key to req lookup\n\n k2q[key] = null; // dequeueing isn't necessary with an existing cache\n\n if (cacheExists) {\n continue;\n }\n\n dequeued.push(req);\n var bb = self.getBoundingBox(ele);\n self.getElement(ele, bb, pxRatio, req.level, getTxrReasons.dequeue);\n } else {\n break;\n }\n }\n\n return dequeued;\n};\n\nETCp.removeFromQueue = function (ele) {\n var self = this;\n var q = self.getElementQueue();\n var k2q = self.getElementKeyToQueue();\n var key = this.getKey(ele);\n var req = k2q[key];\n\n if (req != null) {\n if (req.eles.length === 1) {\n // remove if last ele in the req\n // bring to front of queue\n req.reqs = MAX_INT;\n q.updateItem(req);\n q.pop(); // remove from queue\n\n k2q[key] = null; // remove from lookup map\n } else {\n // otherwise just remove ele from req\n req.eles.unmerge(ele);\n }\n }\n};\n\nETCp.onDequeue = function (fn) {\n this.onDequeues.push(fn);\n};\n\nETCp.offDequeue = function (fn) {\n removeFromArray(this.onDequeues, fn);\n};\n\nETCp.setupDequeueing = defs.setupDequeueing({\n deqRedrawThreshold: deqRedrawThreshold,\n deqCost: deqCost,\n deqAvgCost: deqAvgCost,\n deqNoDrawCost: deqNoDrawCost,\n deqFastCost: deqFastCost,\n deq: function deq(self, pxRatio, extent) {\n return self.dequeue(pxRatio, extent);\n },\n onDeqd: function onDeqd(self, deqd) {\n for (var i = 0; i < self.onDequeues.length; i++) {\n var fn = self.onDequeues[i];\n fn(deqd);\n }\n },\n shouldRedraw: function shouldRedraw(self, deqd, pxRatio, extent) {\n for (var i = 0; i < deqd.length; i++) {\n var eles = deqd[i].eles;\n\n for (var j = 0; j < eles.length; j++) {\n var bb = eles[j].boundingBox();\n\n if (boundingBoxesIntersect(bb, extent)) {\n return true;\n }\n }\n }\n\n return false;\n },\n priority: function priority(self) {\n return self.renderer.beforeRenderPriorities.eleTxrDeq;\n }\n});\n\nvar defNumLayers = 1; // default number of layers to use\n\nvar minLvl$1 = -4; // when scaling smaller than that we don't need to re-render\n\nvar maxLvl$1 = 2; // when larger than this scale just render directly (caching is not helpful)\n\nvar maxZoom$1 = 3.99; // beyond this zoom level, layered textures are not used\n\nvar deqRedrawThreshold$1 = 50; // time to batch redraws together from dequeueing to allow more dequeueing calcs to happen in the meanwhile\n\nvar refineEleDebounceTime = 50; // time to debounce sharper ele texture updates\n\nvar deqCost$1 = 0.15; // % of add'l rendering cost allowed for dequeuing ele caches each frame\n\nvar deqAvgCost$1 = 0.1; // % of add'l rendering cost compared to average overall redraw time\n\nvar deqNoDrawCost$1 = 0.9; // % of avg frame time that can be used for dequeueing when not drawing\n\nvar deqFastCost$1 = 0.9; // % of frame time to be used when >60fps\n\nvar maxDeqSize$1 = 1; // number of eles to dequeue and render at higher texture in each batch\n\nvar invalidThreshold = 250; // time threshold for disabling b/c of invalidations\n\nvar maxLayerArea = 4000 * 4000; // layers can't be bigger than this\n\nvar useHighQualityEleTxrReqs = true; // whether to use high quality ele txr requests (generally faster and cheaper in the longterm)\n// var log = function(){ console.log.apply( console, arguments ); };\n\nvar LayeredTextureCache = function LayeredTextureCache(renderer) {\n var self = this;\n var r = self.renderer = renderer;\n var cy = r.cy;\n self.layersByLevel = {}; // e.g. 2 => [ layer1, layer2, ..., layerN ]\n\n self.firstGet = true;\n self.lastInvalidationTime = performanceNow() - 2 * invalidThreshold;\n self.skipping = false;\n self.eleTxrDeqs = cy.collection();\n self.scheduleElementRefinement = util(function () {\n self.refineElementTextures(self.eleTxrDeqs);\n self.eleTxrDeqs.unmerge(self.eleTxrDeqs);\n }, refineEleDebounceTime);\n r.beforeRender(function (willDraw, now) {\n if (now - self.lastInvalidationTime <= invalidThreshold) {\n self.skipping = true;\n } else {\n self.skipping = false;\n }\n }, r.beforeRenderPriorities.lyrTxrSkip);\n\n var qSort = function qSort(a, b) {\n return b.reqs - a.reqs;\n };\n\n self.layersQueue = new Heap(qSort);\n self.setupDequeueing();\n};\n\nvar LTCp = LayeredTextureCache.prototype;\nvar layerIdPool = 0;\nvar MAX_INT$1 = Math.pow(2, 53) - 1;\n\nLTCp.makeLayer = function (bb, lvl) {\n var scale = Math.pow(2, lvl);\n var w = Math.ceil(bb.w * scale);\n var h = Math.ceil(bb.h * scale);\n var canvas = this.renderer.makeOffscreenCanvas(w, h);\n var layer = {\n id: layerIdPool = ++layerIdPool % MAX_INT$1,\n bb: bb,\n level: lvl,\n width: w,\n height: h,\n canvas: canvas,\n context: canvas.getContext('2d'),\n eles: [],\n elesQueue: [],\n reqs: 0\n }; // log('make layer %s with w %s and h %s and lvl %s', layer.id, layer.width, layer.height, layer.level);\n\n var cxt = layer.context;\n var dx = -layer.bb.x1;\n var dy = -layer.bb.y1; // do the transform on creation to save cycles (it's the same for all eles)\n\n cxt.scale(scale, scale);\n cxt.translate(dx, dy);\n return layer;\n};\n\nLTCp.getLayers = function (eles, pxRatio, lvl) {\n var self = this;\n var r = self.renderer;\n var cy = r.cy;\n var zoom = cy.zoom();\n var firstGet = self.firstGet;\n self.firstGet = false; // log('--\\nget layers with %s eles', eles.length);\n //log eles.map(function(ele){ return ele.id() }) );\n\n if (lvl == null) {\n lvl = Math.ceil(log2(zoom * pxRatio));\n\n if (lvl < minLvl$1) {\n lvl = minLvl$1;\n } else if (zoom >= maxZoom$1 || lvl > maxLvl$1) {\n return null;\n }\n }\n\n self.validateLayersElesOrdering(lvl, eles);\n var layersByLvl = self.layersByLevel;\n var scale = Math.pow(2, lvl);\n var layers = layersByLvl[lvl] = layersByLvl[lvl] || [];\n var bb;\n var lvlComplete = self.levelIsComplete(lvl, eles);\n var tmpLayers;\n\n var checkTempLevels = function checkTempLevels() {\n var canUseAsTmpLvl = function canUseAsTmpLvl(l) {\n self.validateLayersElesOrdering(l, eles);\n\n if (self.levelIsComplete(l, eles)) {\n tmpLayers = layersByLvl[l];\n return true;\n }\n };\n\n var checkLvls = function checkLvls(dir) {\n if (tmpLayers) {\n return;\n }\n\n for (var l = lvl + dir; minLvl$1 <= l && l <= maxLvl$1; l += dir) {\n if (canUseAsTmpLvl(l)) {\n break;\n }\n }\n };\n\n checkLvls(+1);\n checkLvls(-1); // remove the invalid layers; they will be replaced as needed later in this function\n\n for (var i = layers.length - 1; i >= 0; i--) {\n var layer = layers[i];\n\n if (layer.invalid) {\n removeFromArray(layers, layer);\n }\n }\n };\n\n if (!lvlComplete) {\n // if the current level is incomplete, then use the closest, best quality layerset temporarily\n // and later queue the current layerset so we can get the proper quality level soon\n checkTempLevels();\n } else {\n // log('level complete, using existing layers\\n--');\n return layers;\n }\n\n var getBb = function getBb() {\n if (!bb) {\n bb = makeBoundingBox();\n\n for (var i = 0; i < eles.length; i++) {\n updateBoundingBox(bb, eles[i].boundingBox());\n }\n }\n\n return bb;\n };\n\n var makeLayer = function makeLayer(opts) {\n opts = opts || {};\n var after = opts.after;\n getBb();\n var area = bb.w * scale * (bb.h * scale);\n\n if (area > maxLayerArea) {\n return null;\n }\n\n var layer = self.makeLayer(bb, lvl);\n\n if (after != null) {\n var index = layers.indexOf(after) + 1;\n layers.splice(index, 0, layer);\n } else if (opts.insert === undefined || opts.insert) {\n // no after specified => first layer made so put at start\n layers.unshift(layer);\n } // if( tmpLayers ){\n //self.queueLayer( layer );\n // }\n\n\n return layer;\n };\n\n if (self.skipping && !firstGet) {\n // log('skip layers');\n return null;\n } // log('do layers');\n\n\n var layer = null;\n var maxElesPerLayer = eles.length / defNumLayers;\n var allowLazyQueueing = !firstGet;\n\n for (var i = 0; i < eles.length; i++) {\n var ele = eles[i];\n var rs = ele._private.rscratch;\n var caches = rs.imgLayerCaches = rs.imgLayerCaches || {}; // log('look at ele', ele.id());\n\n var existingLayer = caches[lvl];\n\n if (existingLayer) {\n // reuse layer for later eles\n // log('reuse layer for', ele.id());\n layer = existingLayer;\n continue;\n }\n\n if (!layer || layer.eles.length >= maxElesPerLayer || !boundingBoxInBoundingBox(layer.bb, ele.boundingBox())) {\n // log('make new layer for ele %s', ele.id());\n layer = makeLayer({\n insert: true,\n after: layer\n }); // if now layer can be built then we can't use layers at this level\n\n if (!layer) {\n return null;\n } // log('new layer with id %s', layer.id);\n\n }\n\n if (tmpLayers || allowLazyQueueing) {\n // log('queue ele %s in layer %s', ele.id(), layer.id);\n self.queueLayer(layer, ele);\n } else {\n // log('draw ele %s in layer %s', ele.id(), layer.id);\n self.drawEleInLayer(layer, ele, lvl, pxRatio);\n }\n\n layer.eles.push(ele);\n caches[lvl] = layer;\n } // log('--');\n\n\n if (tmpLayers) {\n // then we only queued the current layerset and can't draw it yet\n return tmpLayers;\n }\n\n if (allowLazyQueueing) {\n // log('lazy queue level', lvl);\n return null;\n }\n\n return layers;\n}; // a layer may want to use an ele cache of a higher level to avoid blurriness\n// so the layer level might not equal the ele level\n\n\nLTCp.getEleLevelForLayerLevel = function (lvl, pxRatio) {\n return lvl;\n};\n\nLTCp.drawEleInLayer = function (layer, ele, lvl, pxRatio) {\n var self = this;\n var r = this.renderer;\n var context = layer.context;\n var bb = ele.boundingBox();\n\n if (bb.w === 0 || bb.h === 0 || !ele.visible()) {\n return;\n }\n\n lvl = self.getEleLevelForLayerLevel(lvl, pxRatio);\n\n {\n r.setImgSmoothing(context, false);\n }\n\n {\n r.drawCachedElement(context, ele, null, null, lvl, useHighQualityEleTxrReqs);\n }\n\n {\n r.setImgSmoothing(context, true);\n }\n};\n\nLTCp.levelIsComplete = function (lvl, eles) {\n var self = this;\n var layers = self.layersByLevel[lvl];\n\n if (!layers || layers.length === 0) {\n return false;\n }\n\n var numElesInLayers = 0;\n\n for (var i = 0; i < layers.length; i++) {\n var layer = layers[i]; // if there are any eles needed to be drawn yet, the level is not complete\n\n if (layer.reqs > 0) {\n return false;\n } // if the layer is invalid, the level is not complete\n\n\n if (layer.invalid) {\n return false;\n }\n\n numElesInLayers += layer.eles.length;\n } // we should have exactly the number of eles passed in to be complete\n\n\n if (numElesInLayers !== eles.length) {\n return false;\n }\n\n return true;\n};\n\nLTCp.validateLayersElesOrdering = function (lvl, eles) {\n var layers = this.layersByLevel[lvl];\n\n if (!layers) {\n return;\n } // if in a layer the eles are not in the same order, then the layer is invalid\n // (i.e. there is an ele in between the eles in the layer)\n\n\n for (var i = 0; i < layers.length; i++) {\n var layer = layers[i];\n var offset = -1; // find the offset\n\n for (var j = 0; j < eles.length; j++) {\n if (layer.eles[0] === eles[j]) {\n offset = j;\n break;\n }\n }\n\n if (offset < 0) {\n // then the layer has nonexistant elements and is invalid\n this.invalidateLayer(layer);\n continue;\n } // the eles in the layer must be in the same continuous order, else the layer is invalid\n\n\n var o = offset;\n\n for (var j = 0; j < layer.eles.length; j++) {\n if (layer.eles[j] !== eles[o + j]) {\n // log('invalidate based on ordering', layer.id);\n this.invalidateLayer(layer);\n break;\n }\n }\n }\n};\n\nLTCp.updateElementsInLayers = function (eles, update) {\n var self = this;\n var isEles = element(eles[0]); // collect udpated elements (cascaded from the layers) and update each\n // layer itself along the way\n\n for (var i = 0; i < eles.length; i++) {\n var req = isEles ? null : eles[i];\n var ele = isEles ? eles[i] : eles[i].ele;\n var rs = ele._private.rscratch;\n var caches = rs.imgLayerCaches = rs.imgLayerCaches || {};\n\n for (var l = minLvl$1; l <= maxLvl$1; l++) {\n var layer = caches[l];\n\n if (!layer) {\n continue;\n } // if update is a request from the ele cache, then it affects only\n // the matching level\n\n\n if (req && self.getEleLevelForLayerLevel(layer.level) !== req.level) {\n continue;\n }\n\n update(layer, ele, req);\n }\n }\n};\n\nLTCp.haveLayers = function () {\n var self = this;\n var haveLayers = false;\n\n for (var l = minLvl$1; l <= maxLvl$1; l++) {\n var layers = self.layersByLevel[l];\n\n if (layers && layers.length > 0) {\n haveLayers = true;\n break;\n }\n }\n\n return haveLayers;\n};\n\nLTCp.invalidateElements = function (eles) {\n var self = this;\n\n if (eles.length === 0) {\n return;\n }\n\n self.lastInvalidationTime = performanceNow(); // log('update invalidate layer time from eles');\n\n if (eles.length === 0 || !self.haveLayers()) {\n return;\n }\n\n self.updateElementsInLayers(eles, function invalAssocLayers(layer, ele, req) {\n self.invalidateLayer(layer);\n });\n};\n\nLTCp.invalidateLayer = function (layer) {\n // log('update invalidate layer time');\n this.lastInvalidationTime = performanceNow();\n\n if (layer.invalid) {\n return;\n } // save cycles\n\n\n var lvl = layer.level;\n var eles = layer.eles;\n var layers = this.layersByLevel[lvl]; // log('invalidate layer', layer.id );\n\n removeFromArray(layers, layer); // layer.eles = [];\n\n layer.elesQueue = [];\n layer.invalid = true;\n\n if (layer.replacement) {\n layer.replacement.invalid = true;\n }\n\n for (var i = 0; i < eles.length; i++) {\n var caches = eles[i]._private.rscratch.imgLayerCaches;\n\n if (caches) {\n caches[lvl] = null;\n }\n }\n};\n\nLTCp.refineElementTextures = function (eles) {\n var self = this; // log('refine', eles.length);\n\n self.updateElementsInLayers(eles, function refineEachEle(layer, ele, req) {\n var rLyr = layer.replacement;\n\n if (!rLyr) {\n rLyr = layer.replacement = self.makeLayer(layer.bb, layer.level);\n rLyr.replaces = layer;\n rLyr.eles = layer.eles; // log('make replacement layer %s for %s with level %s', rLyr.id, layer.id, rLyr.level);\n }\n\n if (!rLyr.reqs) {\n for (var i = 0; i < rLyr.eles.length; i++) {\n self.queueLayer(rLyr, rLyr.eles[i]);\n } // log('queue replacement layer refinement', rLyr.id);\n\n }\n });\n};\n\nLTCp.enqueueElementRefinement = function (ele) {\n\n this.eleTxrDeqs.merge(ele);\n this.scheduleElementRefinement();\n};\n\nLTCp.queueLayer = function (layer, ele) {\n var self = this;\n var q = self.layersQueue;\n var elesQ = layer.elesQueue;\n var hasId = elesQ.hasId = elesQ.hasId || {}; // if a layer is going to be replaced, queuing is a waste of time\n\n if (layer.replacement) {\n return;\n }\n\n if (ele) {\n if (hasId[ele.id()]) {\n return;\n }\n\n elesQ.push(ele);\n hasId[ele.id()] = true;\n }\n\n if (layer.reqs) {\n layer.reqs++;\n q.updateItem(layer);\n } else {\n layer.reqs = 1;\n q.push(layer);\n }\n};\n\nLTCp.dequeue = function (pxRatio) {\n var self = this;\n var q = self.layersQueue;\n var deqd = [];\n var eleDeqs = 0;\n\n while (eleDeqs < maxDeqSize$1) {\n if (q.size() === 0) {\n break;\n }\n\n var layer = q.peek(); // if a layer has been or will be replaced, then don't waste time with it\n\n if (layer.replacement) {\n // log('layer %s in queue skipped b/c it already has a replacement', layer.id);\n q.pop();\n continue;\n } // if this is a replacement layer that has been superceded, then forget it\n\n\n if (layer.replaces && layer !== layer.replaces.replacement) {\n // log('layer is no longer the most uptodate replacement; dequeued', layer.id)\n q.pop();\n continue;\n }\n\n if (layer.invalid) {\n // log('replacement layer %s is invalid; dequeued', layer.id);\n q.pop();\n continue;\n }\n\n var ele = layer.elesQueue.shift();\n\n if (ele) {\n // log('dequeue layer %s', layer.id);\n self.drawEleInLayer(layer, ele, layer.level, pxRatio);\n eleDeqs++;\n }\n\n if (deqd.length === 0) {\n // we need only one entry in deqd to queue redrawing etc\n deqd.push(true);\n } // if the layer has all its eles done, then remove from the queue\n\n\n if (layer.elesQueue.length === 0) {\n q.pop();\n layer.reqs = 0; // log('dequeue of layer %s complete', layer.id);\n // when a replacement layer is dequeued, it replaces the old layer in the level\n\n if (layer.replaces) {\n self.applyLayerReplacement(layer);\n }\n\n self.requestRedraw();\n }\n }\n\n return deqd;\n};\n\nLTCp.applyLayerReplacement = function (layer) {\n var self = this;\n var layersInLevel = self.layersByLevel[layer.level];\n var replaced = layer.replaces;\n var index = layersInLevel.indexOf(replaced); // if the replaced layer is not in the active list for the level, then replacing\n // refs would be a mistake (i.e. overwriting the true active layer)\n\n if (index < 0 || replaced.invalid) {\n // log('replacement layer would have no effect', layer.id);\n return;\n }\n\n layersInLevel[index] = layer; // replace level ref\n // replace refs in eles\n\n for (var i = 0; i < layer.eles.length; i++) {\n var _p = layer.eles[i]._private;\n var cache = _p.imgLayerCaches = _p.imgLayerCaches || {};\n\n if (cache) {\n cache[layer.level] = layer;\n }\n } // log('apply replacement layer %s over %s', layer.id, replaced.id);\n\n\n self.requestRedraw();\n};\n\nLTCp.requestRedraw = util(function () {\n var r = this.renderer;\n r.redrawHint('eles', true);\n r.redrawHint('drag', true);\n r.redraw();\n}, 100);\nLTCp.setupDequeueing = defs.setupDequeueing({\n deqRedrawThreshold: deqRedrawThreshold$1,\n deqCost: deqCost$1,\n deqAvgCost: deqAvgCost$1,\n deqNoDrawCost: deqNoDrawCost$1,\n deqFastCost: deqFastCost$1,\n deq: function deq(self, pxRatio) {\n return self.dequeue(pxRatio);\n },\n onDeqd: noop,\n shouldRedraw: trueify,\n priority: function priority(self) {\n return self.renderer.beforeRenderPriorities.lyrTxrDeq;\n }\n});\n\nvar CRp = {};\nvar impl;\n\nfunction polygon(context, points) {\n for (var i = 0; i < points.length; i++) {\n var pt = points[i];\n context.lineTo(pt.x, pt.y);\n }\n}\n\nfunction triangleBackcurve(context, points, controlPoint) {\n var firstPt;\n\n for (var i = 0; i < points.length; i++) {\n var pt = points[i];\n\n if (i === 0) {\n firstPt = pt;\n }\n\n context.lineTo(pt.x, pt.y);\n }\n\n context.quadraticCurveTo(controlPoint.x, controlPoint.y, firstPt.x, firstPt.y);\n}\n\nfunction triangleTee(context, trianglePoints, teePoints) {\n if (context.beginPath) {\n context.beginPath();\n }\n\n var triPts = trianglePoints;\n\n for (var i = 0; i < triPts.length; i++) {\n var pt = triPts[i];\n context.lineTo(pt.x, pt.y);\n }\n\n var teePts = teePoints;\n var firstTeePt = teePoints[0];\n context.moveTo(firstTeePt.x, firstTeePt.y);\n\n for (var i = 1; i < teePts.length; i++) {\n var pt = teePts[i];\n context.lineTo(pt.x, pt.y);\n }\n\n if (context.closePath) {\n context.closePath();\n }\n}\n\nfunction circle(context, rx, ry, r) {\n context.arc(rx, ry, r, 0, Math.PI * 2, false);\n}\n\nCRp.arrowShapeImpl = function (name) {\n return (impl || (impl = {\n 'polygon': polygon,\n 'triangle-backcurve': triangleBackcurve,\n 'triangle-tee': triangleTee,\n 'triangle-cross': triangleTee,\n 'circle': circle\n }))[name];\n};\n\nvar CRp$1 = {};\n\nCRp$1.drawElement = function (context, ele, shiftToOriginWithBb, showLabel, showOverlay, showOpacity) {\n var r = this;\n\n if (ele.isNode()) {\n r.drawNode(context, ele, shiftToOriginWithBb, showLabel, showOverlay, showOpacity);\n } else {\n r.drawEdge(context, ele, shiftToOriginWithBb, showLabel, showOverlay, showOpacity);\n }\n};\n\nCRp$1.drawElementOverlay = function (context, ele) {\n var r = this;\n\n if (ele.isNode()) {\n r.drawNodeOverlay(context, ele);\n } else {\n r.drawEdgeOverlay(context, ele);\n }\n};\n\nCRp$1.drawCachedElementPortion = function (context, ele, eleTxrCache, pxRatio, lvl, reason, getRotation, getOpacity) {\n var r = this;\n var bb = eleTxrCache.getBoundingBox(ele);\n\n if (bb.w === 0 || bb.h === 0) {\n return;\n } // ignore zero size case\n\n\n var eleCache = eleTxrCache.getElement(ele, bb, pxRatio, lvl, reason);\n\n if (eleCache != null) {\n var opacity = getOpacity(r, ele);\n\n if (opacity === 0) {\n return;\n }\n\n var theta = getRotation(r, ele);\n var x1 = bb.x1,\n y1 = bb.y1,\n w = bb.w,\n h = bb.h;\n var x, y, sx, sy, smooth;\n\n if (theta !== 0) {\n var rotPt = eleTxrCache.getRotationPoint(ele);\n sx = rotPt.x;\n sy = rotPt.y;\n context.translate(sx, sy);\n context.rotate(theta);\n smooth = r.getImgSmoothing(context);\n\n if (!smooth) {\n r.setImgSmoothing(context, true);\n }\n\n var off = eleTxrCache.getRotationOffset(ele);\n x = off.x;\n y = off.y;\n } else {\n x = x1;\n y = y1;\n }\n\n var oldGlobalAlpha;\n\n if (opacity !== 1) {\n oldGlobalAlpha = context.globalAlpha;\n context.globalAlpha = oldGlobalAlpha * opacity;\n }\n\n context.drawImage(eleCache.texture.canvas, eleCache.x, 0, eleCache.width, eleCache.height, x, y, w, h);\n\n if (opacity !== 1) {\n context.globalAlpha = oldGlobalAlpha;\n }\n\n if (theta !== 0) {\n context.rotate(-theta);\n context.translate(-sx, -sy);\n\n if (!smooth) {\n r.setImgSmoothing(context, false);\n }\n }\n } else {\n eleTxrCache.drawElement(context, ele); // direct draw fallback\n }\n};\n\nvar getZeroRotation = function getZeroRotation() {\n return 0;\n};\n\nvar getLabelRotation = function getLabelRotation(r, ele) {\n return r.getTextAngle(ele, null);\n};\n\nvar getSourceLabelRotation = function getSourceLabelRotation(r, ele) {\n return r.getTextAngle(ele, 'source');\n};\n\nvar getTargetLabelRotation = function getTargetLabelRotation(r, ele) {\n return r.getTextAngle(ele, 'target');\n};\n\nvar getOpacity = function getOpacity(r, ele) {\n return ele.effectiveOpacity();\n};\n\nvar getTextOpacity = function getTextOpacity(e, ele) {\n return ele.pstyle('text-opacity').pfValue * ele.effectiveOpacity();\n};\n\nCRp$1.drawCachedElement = function (context, ele, pxRatio, extent, lvl, requestHighQuality) {\n var r = this;\n var _r$data = r.data,\n eleTxrCache = _r$data.eleTxrCache,\n lblTxrCache = _r$data.lblTxrCache,\n slbTxrCache = _r$data.slbTxrCache,\n tlbTxrCache = _r$data.tlbTxrCache;\n var bb = ele.boundingBox();\n var reason = requestHighQuality === true ? eleTxrCache.reasons.highQuality : null;\n\n if (bb.w === 0 || bb.h === 0 || !ele.visible()) {\n return;\n }\n\n if (!extent || boundingBoxesIntersect(bb, extent)) {\n r.drawCachedElementPortion(context, ele, eleTxrCache, pxRatio, lvl, reason, getZeroRotation, getOpacity);\n r.drawCachedElementPortion(context, ele, lblTxrCache, pxRatio, lvl, reason, getLabelRotation, getTextOpacity);\n\n if (ele.isEdge()) {\n r.drawCachedElementPortion(context, ele, slbTxrCache, pxRatio, lvl, reason, getSourceLabelRotation, getTextOpacity);\n r.drawCachedElementPortion(context, ele, tlbTxrCache, pxRatio, lvl, reason, getTargetLabelRotation, getTextOpacity);\n }\n\n r.drawElementOverlay(context, ele);\n }\n};\n\nCRp$1.drawElements = function (context, eles) {\n var r = this;\n\n for (var i = 0; i < eles.length; i++) {\n var ele = eles[i];\n r.drawElement(context, ele);\n }\n};\n\nCRp$1.drawCachedElements = function (context, eles, pxRatio, extent) {\n var r = this;\n\n for (var i = 0; i < eles.length; i++) {\n var ele = eles[i];\n r.drawCachedElement(context, ele, pxRatio, extent);\n }\n};\n\nCRp$1.drawCachedNodes = function (context, eles, pxRatio, extent) {\n var r = this;\n\n for (var i = 0; i < eles.length; i++) {\n var ele = eles[i];\n\n if (!ele.isNode()) {\n continue;\n }\n\n r.drawCachedElement(context, ele, pxRatio, extent);\n }\n};\n\nCRp$1.drawLayeredElements = function (context, eles, pxRatio, extent) {\n var r = this;\n var layers = r.data.lyrTxrCache.getLayers(eles, pxRatio);\n\n if (layers) {\n for (var i = 0; i < layers.length; i++) {\n var layer = layers[i];\n var bb = layer.bb;\n\n if (bb.w === 0 || bb.h === 0) {\n continue;\n }\n\n context.drawImage(layer.canvas, bb.x1, bb.y1, bb.w, bb.h);\n }\n } else {\n // fall back on plain caching if no layers\n r.drawCachedElements(context, eles, pxRatio, extent);\n }\n};\n\n/* global Path2D */\nvar CRp$2 = {};\n\nCRp$2.drawEdge = function (context, edge, shiftToOriginWithBb) {\n var drawLabel = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n var shouldDrawOverlay = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n var shouldDrawOpacity = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : true;\n var r = this;\n var rs = edge._private.rscratch;\n\n if (shouldDrawOpacity && !edge.visible()) {\n return;\n } // if bezier ctrl pts can not be calculated, then die\n\n\n if (rs.badLine || rs.allpts == null || isNaN(rs.allpts[0])) {\n // isNaN in case edge is impossible and browser bugs (e.g. safari)\n return;\n }\n\n var bb;\n\n if (shiftToOriginWithBb) {\n bb = shiftToOriginWithBb;\n context.translate(-bb.x1, -bb.y1);\n }\n\n var opacity = shouldDrawOpacity ? edge.pstyle('opacity').value : 1;\n var lineStyle = edge.pstyle('line-style').value;\n var edgeWidth = edge.pstyle('width').pfValue;\n var lineCap = edge.pstyle('line-cap').value;\n\n var drawLine = function drawLine() {\n var strokeOpacity = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : opacity;\n context.lineWidth = edgeWidth;\n context.lineCap = lineCap;\n r.eleStrokeStyle(context, edge, strokeOpacity);\n r.drawEdgePath(edge, context, rs.allpts, lineStyle);\n context.lineCap = 'butt'; // reset for other drawing functions\n };\n\n var drawOverlay = function drawOverlay() {\n if (!shouldDrawOverlay) {\n return;\n }\n\n r.drawEdgeOverlay(context, edge);\n };\n\n var drawArrows = function drawArrows() {\n var arrowOpacity = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : opacity;\n r.drawArrowheads(context, edge, arrowOpacity);\n };\n\n var drawText = function drawText() {\n r.drawElementText(context, edge, null, drawLabel);\n };\n\n context.lineJoin = 'round';\n var ghost = edge.pstyle('ghost').value === 'yes';\n\n if (ghost) {\n var gx = edge.pstyle('ghost-offset-x').pfValue;\n var gy = edge.pstyle('ghost-offset-y').pfValue;\n var ghostOpacity = edge.pstyle('ghost-opacity').value;\n var effectiveGhostOpacity = opacity * ghostOpacity;\n context.translate(gx, gy);\n drawLine(effectiveGhostOpacity);\n drawArrows(effectiveGhostOpacity);\n context.translate(-gx, -gy);\n }\n\n drawLine();\n drawArrows();\n drawOverlay();\n drawText();\n\n if (shiftToOriginWithBb) {\n context.translate(bb.x1, bb.y1);\n }\n};\n\nCRp$2.drawEdgeOverlay = function (context, edge) {\n if (!edge.visible()) {\n return;\n }\n\n var overlayOpacity = edge.pstyle('overlay-opacity').value;\n\n if (overlayOpacity === 0) {\n return;\n }\n\n var r = this;\n var usePaths = r.usePaths();\n var rs = edge._private.rscratch;\n var overlayPadding = edge.pstyle('overlay-padding').pfValue;\n var overlayWidth = 2 * overlayPadding;\n var overlayColor = edge.pstyle('overlay-color').value;\n context.lineWidth = overlayWidth;\n\n if (rs.edgeType === 'self' && !usePaths) {\n context.lineCap = 'butt';\n } else {\n context.lineCap = 'round';\n }\n\n r.colorStrokeStyle(context, overlayColor[0], overlayColor[1], overlayColor[2], overlayOpacity);\n r.drawEdgePath(edge, context, rs.allpts, 'solid');\n};\n\nCRp$2.drawEdgePath = function (edge, context, pts, type) {\n var rs = edge._private.rscratch;\n var canvasCxt = context;\n var path;\n var pathCacheHit = false;\n var usePaths = this.usePaths();\n var lineDashPattern = edge.pstyle('line-dash-pattern').pfValue;\n var lineDashOffset = edge.pstyle('line-dash-offset').pfValue;\n\n if (usePaths) {\n var pathCacheKey = pts.join('$');\n var keyMatches = rs.pathCacheKey && rs.pathCacheKey === pathCacheKey;\n\n if (keyMatches) {\n path = context = rs.pathCache;\n pathCacheHit = true;\n } else {\n path = context = new Path2D();\n rs.pathCacheKey = pathCacheKey;\n rs.pathCache = path;\n }\n }\n\n if (canvasCxt.setLineDash) {\n // for very outofdate browsers\n switch (type) {\n case 'dotted':\n canvasCxt.setLineDash([1, 1]);\n break;\n\n case 'dashed':\n canvasCxt.setLineDash(lineDashPattern);\n canvasCxt.lineDashOffset = lineDashOffset;\n break;\n\n case 'solid':\n canvasCxt.setLineDash([]);\n break;\n }\n }\n\n if (!pathCacheHit && !rs.badLine) {\n if (context.beginPath) {\n context.beginPath();\n }\n\n context.moveTo(pts[0], pts[1]);\n\n switch (rs.edgeType) {\n case 'bezier':\n case 'self':\n case 'compound':\n case 'multibezier':\n for (var i = 2; i + 3 < pts.length; i += 4) {\n context.quadraticCurveTo(pts[i], pts[i + 1], pts[i + 2], pts[i + 3]);\n }\n\n break;\n\n case 'straight':\n case 'segments':\n case 'haystack':\n for (var _i = 2; _i + 1 < pts.length; _i += 2) {\n context.lineTo(pts[_i], pts[_i + 1]);\n }\n\n break;\n }\n }\n\n context = canvasCxt;\n\n if (usePaths) {\n context.stroke(path);\n } else {\n context.stroke();\n } // reset any line dashes\n\n\n if (context.setLineDash) {\n // for very outofdate browsers\n context.setLineDash([]);\n }\n};\n\nCRp$2.drawArrowheads = function (context, edge, opacity) {\n var rs = edge._private.rscratch;\n var isHaystack = rs.edgeType === 'haystack';\n\n if (!isHaystack) {\n this.drawArrowhead(context, edge, 'source', rs.arrowStartX, rs.arrowStartY, rs.srcArrowAngle, opacity);\n }\n\n this.drawArrowhead(context, edge, 'mid-target', rs.midX, rs.midY, rs.midtgtArrowAngle, opacity);\n this.drawArrowhead(context, edge, 'mid-source', rs.midX, rs.midY, rs.midsrcArrowAngle, opacity);\n\n if (!isHaystack) {\n this.drawArrowhead(context, edge, 'target', rs.arrowEndX, rs.arrowEndY, rs.tgtArrowAngle, opacity);\n }\n};\n\nCRp$2.drawArrowhead = function (context, edge, prefix, x, y, angle, opacity) {\n if (isNaN(x) || x == null || isNaN(y) || y == null || isNaN(angle) || angle == null) {\n return;\n }\n\n var self = this;\n var arrowShape = edge.pstyle(prefix + '-arrow-shape').value;\n\n if (arrowShape === 'none') {\n return;\n }\n\n var arrowClearFill = edge.pstyle(prefix + '-arrow-fill').value === 'hollow' ? 'both' : 'filled';\n var arrowFill = edge.pstyle(prefix + '-arrow-fill').value;\n var edgeWidth = edge.pstyle('width').pfValue;\n var edgeOpacity = edge.pstyle('opacity').value;\n\n if (opacity === undefined) {\n opacity = edgeOpacity;\n }\n\n var gco = context.globalCompositeOperation;\n\n if (opacity !== 1 || arrowFill === 'hollow') {\n // then extra clear is needed\n context.globalCompositeOperation = 'destination-out';\n self.colorFillStyle(context, 255, 255, 255, 1);\n self.colorStrokeStyle(context, 255, 255, 255, 1);\n self.drawArrowShape(edge, context, arrowClearFill, edgeWidth, arrowShape, x, y, angle);\n context.globalCompositeOperation = gco;\n } // otherwise, the opaque arrow clears it for free :)\n\n\n var color = edge.pstyle(prefix + '-arrow-color').value;\n self.colorFillStyle(context, color[0], color[1], color[2], opacity);\n self.colorStrokeStyle(context, color[0], color[1], color[2], opacity);\n self.drawArrowShape(edge, context, arrowFill, edgeWidth, arrowShape, x, y, angle);\n};\n\nCRp$2.drawArrowShape = function (edge, context, fill, edgeWidth, shape, x, y, angle) {\n var r = this;\n var usePaths = this.usePaths() && shape !== 'triangle-cross';\n var pathCacheHit = false;\n var path;\n var canvasContext = context;\n var translation = {\n x: x,\n y: y\n };\n var scale = edge.pstyle('arrow-scale').value;\n var size = this.getArrowWidth(edgeWidth, scale);\n var shapeImpl = r.arrowShapes[shape];\n\n if (usePaths) {\n var cache = r.arrowPathCache = r.arrowPathCache || [];\n var key = hashString(shape);\n var cachedPath = cache[key];\n\n if (cachedPath != null) {\n path = context = cachedPath;\n pathCacheHit = true;\n } else {\n path = context = new Path2D();\n cache[key] = path;\n }\n }\n\n if (context.beginPath) {\n context.beginPath();\n }\n\n if (!pathCacheHit) {\n if (usePaths) {\n // store in the path cache with values easily manipulated later\n shapeImpl.draw(context, 1, 0, {\n x: 0,\n y: 0\n }, 1);\n } else {\n shapeImpl.draw(context, size, angle, translation, edgeWidth);\n }\n }\n\n if (context.closePath) {\n context.closePath();\n }\n\n context = canvasContext;\n\n if (usePaths) {\n // set transform to arrow position/orientation\n context.translate(x, y);\n context.rotate(angle);\n context.scale(size, size);\n }\n\n if (fill === 'filled' || fill === 'both') {\n if (usePaths) {\n context.fill(path);\n } else {\n context.fill();\n }\n }\n\n if (fill === 'hollow' || fill === 'both') {\n context.lineWidth = (shapeImpl.matchEdgeWidth ? edgeWidth : 1) / (usePaths ? size : 1);\n context.lineJoin = 'miter';\n\n if (usePaths) {\n context.stroke(path);\n } else {\n context.stroke();\n }\n }\n\n if (usePaths) {\n // reset transform by applying inverse\n context.scale(1 / size, 1 / size);\n context.rotate(-angle);\n context.translate(-x, -y);\n }\n};\n\nvar CRp$3 = {};\n\nCRp$3.safeDrawImage = function (context, img, ix, iy, iw, ih, x, y, w, h) {\n // detect problematic cases for old browsers with bad images (cheaper than try-catch)\n if (iw <= 0 || ih <= 0 || w <= 0 || h <= 0) {\n return;\n }\n\n context.drawImage(img, ix, iy, iw, ih, x, y, w, h);\n};\n\nCRp$3.drawInscribedImage = function (context, img, node, index, nodeOpacity) {\n var r = this;\n var pos = node.position();\n var nodeX = pos.x;\n var nodeY = pos.y;\n var styleObj = node.cy().style();\n var getIndexedStyle = styleObj.getIndexedStyle.bind(styleObj);\n var fit = getIndexedStyle(node, 'background-fit', 'value', index);\n var repeat = getIndexedStyle(node, 'background-repeat', 'value', index);\n var nodeW = node.width();\n var nodeH = node.height();\n var paddingX2 = node.padding() * 2;\n var nodeTW = nodeW + (getIndexedStyle(node, 'background-width-relative-to', 'value', index) === 'inner' ? 0 : paddingX2);\n var nodeTH = nodeH + (getIndexedStyle(node, 'background-height-relative-to', 'value', index) === 'inner' ? 0 : paddingX2);\n var rs = node._private.rscratch;\n var clip = node.pstyle('background-clip').value;\n var shouldClip = clip === 'node';\n var imgOpacity = getIndexedStyle(node, 'background-image-opacity', 'value', index) * nodeOpacity;\n var imgW = img.width || img.cachedW;\n var imgH = img.height || img.cachedH; // workaround for broken browsers like ie\n\n if (null == imgW || null == imgH) {\n document.body.appendChild(img); // eslint-disable-line no-undef\n\n imgW = img.cachedW = img.width || img.offsetWidth;\n imgH = img.cachedH = img.height || img.offsetHeight;\n document.body.removeChild(img); // eslint-disable-line no-undef\n }\n\n var w = imgW;\n var h = imgH;\n\n if (getIndexedStyle(node, 'background-width', 'value', index) !== 'auto') {\n if (getIndexedStyle(node, 'background-width', 'units', index) === '%') {\n w = getIndexedStyle(node, 'background-width', 'pfValue', index) * nodeTW;\n } else {\n w = getIndexedStyle(node, 'background-width', 'pfValue', index);\n }\n }\n\n if (getIndexedStyle(node, 'background-height', 'value', index) !== 'auto') {\n if (getIndexedStyle(node, 'background-height', 'units', index) === '%') {\n h = getIndexedStyle(node, 'background-height', 'pfValue', index) * nodeTH;\n } else {\n h = getIndexedStyle(node, 'background-height', 'pfValue', index);\n }\n }\n\n if (w === 0 || h === 0) {\n return; // no point in drawing empty image (and chrome is broken in this case)\n }\n\n if (fit === 'contain') {\n var scale = Math.min(nodeTW / w, nodeTH / h);\n w *= scale;\n h *= scale;\n } else if (fit === 'cover') {\n var scale = Math.max(nodeTW / w, nodeTH / h);\n w *= scale;\n h *= scale;\n }\n\n var x = nodeX - nodeTW / 2; // left\n\n var posXUnits = getIndexedStyle(node, 'background-position-x', 'units', index);\n var posXPfVal = getIndexedStyle(node, 'background-position-x', 'pfValue', index);\n\n if (posXUnits === '%') {\n x += (nodeTW - w) * posXPfVal;\n } else {\n x += posXPfVal;\n }\n\n var offXUnits = getIndexedStyle(node, 'background-offset-x', 'units', index);\n var offXPfVal = getIndexedStyle(node, 'background-offset-x', 'pfValue', index);\n\n if (offXUnits === '%') {\n x += (nodeTW - w) * offXPfVal;\n } else {\n x += offXPfVal;\n }\n\n var y = nodeY - nodeTH / 2; // top\n\n var posYUnits = getIndexedStyle(node, 'background-position-y', 'units', index);\n var posYPfVal = getIndexedStyle(node, 'background-position-y', 'pfValue', index);\n\n if (posYUnits === '%') {\n y += (nodeTH - h) * posYPfVal;\n } else {\n y += posYPfVal;\n }\n\n var offYUnits = getIndexedStyle(node, 'background-offset-y', 'units', index);\n var offYPfVal = getIndexedStyle(node, 'background-offset-y', 'pfValue', index);\n\n if (offYUnits === '%') {\n y += (nodeTH - h) * offYPfVal;\n } else {\n y += offYPfVal;\n }\n\n if (rs.pathCache) {\n x -= nodeX;\n y -= nodeY;\n nodeX = 0;\n nodeY = 0;\n }\n\n var gAlpha = context.globalAlpha;\n context.globalAlpha = imgOpacity;\n\n if (repeat === 'no-repeat') {\n if (shouldClip) {\n context.save();\n\n if (rs.pathCache) {\n context.clip(rs.pathCache);\n } else {\n r.nodeShapes[r.getNodeShape(node)].draw(context, nodeX, nodeY, nodeTW, nodeTH);\n context.clip();\n }\n }\n\n r.safeDrawImage(context, img, 0, 0, imgW, imgH, x, y, w, h);\n\n if (shouldClip) {\n context.restore();\n }\n } else {\n var pattern = context.createPattern(img, repeat);\n context.fillStyle = pattern;\n r.nodeShapes[r.getNodeShape(node)].draw(context, nodeX, nodeY, nodeTW, nodeTH);\n context.translate(x, y);\n context.fill();\n context.translate(-x, -y);\n }\n\n context.globalAlpha = gAlpha;\n};\n\nvar CRp$4 = {};\n\nCRp$4.eleTextBiggerThanMin = function (ele, scale) {\n if (!scale) {\n var zoom = ele.cy().zoom();\n var pxRatio = this.getPixelRatio();\n var lvl = Math.ceil(log2(zoom * pxRatio)); // the effective texture level\n\n scale = Math.pow(2, lvl);\n }\n\n var computedSize = ele.pstyle('font-size').pfValue * scale;\n var minSize = ele.pstyle('min-zoomed-font-size').pfValue;\n\n if (computedSize < minSize) {\n return false;\n }\n\n return true;\n};\n\nCRp$4.drawElementText = function (context, ele, shiftToOriginWithBb, force, prefix) {\n var useEleOpacity = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : true;\n var r = this;\n\n if (force == null) {\n if (useEleOpacity && !r.eleTextBiggerThanMin(ele)) {\n return;\n }\n } else if (force === false) {\n return;\n }\n\n if (ele.isNode()) {\n var label = ele.pstyle('label');\n\n if (!label || !label.value) {\n return;\n }\n\n var justification = r.getLabelJustification(ele);\n context.textAlign = justification;\n context.textBaseline = 'bottom';\n } else {\n var _label = ele.pstyle('label');\n\n var srcLabel = ele.pstyle('source-label');\n var tgtLabel = ele.pstyle('target-label');\n\n if ((!_label || !_label.value) && (!srcLabel || !srcLabel.value) && (!tgtLabel || !tgtLabel.value)) {\n return;\n }\n\n context.textAlign = 'center';\n context.textBaseline = 'bottom';\n }\n\n var applyRotation = !shiftToOriginWithBb;\n var bb;\n\n if (shiftToOriginWithBb) {\n bb = shiftToOriginWithBb;\n context.translate(-bb.x1, -bb.y1);\n }\n\n if (prefix == null) {\n r.drawText(context, ele, null, applyRotation, useEleOpacity);\n\n if (ele.isEdge()) {\n r.drawText(context, ele, 'source', applyRotation, useEleOpacity);\n r.drawText(context, ele, 'target', applyRotation, useEleOpacity);\n }\n } else {\n r.drawText(context, ele, prefix, applyRotation, useEleOpacity);\n }\n\n if (shiftToOriginWithBb) {\n context.translate(bb.x1, bb.y1);\n }\n};\n\nCRp$4.getFontCache = function (context) {\n var cache;\n this.fontCaches = this.fontCaches || [];\n\n for (var i = 0; i < this.fontCaches.length; i++) {\n cache = this.fontCaches[i];\n\n if (cache.context === context) {\n return cache;\n }\n }\n\n cache = {\n context: context\n };\n this.fontCaches.push(cache);\n return cache;\n}; // set up canvas context with font\n// returns transformed text string\n\n\nCRp$4.setupTextStyle = function (context, ele) {\n var useEleOpacity = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n // Font style\n var labelStyle = ele.pstyle('font-style').strValue;\n var labelSize = ele.pstyle('font-size').pfValue + 'px';\n var labelFamily = ele.pstyle('font-family').strValue;\n var labelWeight = ele.pstyle('font-weight').strValue;\n var opacity = useEleOpacity ? ele.effectiveOpacity() * ele.pstyle('text-opacity').value : 1;\n var outlineOpacity = ele.pstyle('text-outline-opacity').value * opacity;\n var color = ele.pstyle('color').value;\n var outlineColor = ele.pstyle('text-outline-color').value;\n context.font = labelStyle + ' ' + labelWeight + ' ' + labelSize + ' ' + labelFamily;\n context.lineJoin = 'round'; // so text outlines aren't jagged\n\n this.colorFillStyle(context, color[0], color[1], color[2], opacity);\n this.colorStrokeStyle(context, outlineColor[0], outlineColor[1], outlineColor[2], outlineOpacity);\n}; // TODO ensure re-used\n\n\nfunction roundRect(ctx, x, y, width, height) {\n var radius = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 5;\n ctx.beginPath();\n ctx.moveTo(x + radius, y);\n ctx.lineTo(x + width - radius, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + radius);\n ctx.lineTo(x + width, y + height - radius);\n ctx.quadraticCurveTo(x + width, y + height, x + width - radius, y + height);\n ctx.lineTo(x + radius, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - radius);\n ctx.lineTo(x, y + radius);\n ctx.quadraticCurveTo(x, y, x + radius, y);\n ctx.closePath();\n ctx.fill();\n}\n\nCRp$4.getTextAngle = function (ele, prefix) {\n var theta;\n var _p = ele._private;\n var rscratch = _p.rscratch;\n var pdash = prefix ? prefix + '-' : '';\n var rotation = ele.pstyle(pdash + 'text-rotation');\n var textAngle = getPrefixedProperty(rscratch, 'labelAngle', prefix);\n\n if (rotation.strValue === 'autorotate') {\n theta = ele.isEdge() ? textAngle : 0;\n } else if (rotation.strValue === 'none') {\n theta = 0;\n } else {\n theta = rotation.pfValue;\n }\n\n return theta;\n};\n\nCRp$4.drawText = function (context, ele, prefix) {\n var applyRotation = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n var useEleOpacity = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n var _p = ele._private;\n var rscratch = _p.rscratch;\n var parentOpacity = useEleOpacity ? ele.effectiveOpacity() : 1;\n\n if (useEleOpacity && (parentOpacity === 0 || ele.pstyle('text-opacity').value === 0)) {\n return;\n } // use 'main' as an alias for the main label (i.e. null prefix)\n\n\n if (prefix === 'main') {\n prefix = null;\n }\n\n var textX = getPrefixedProperty(rscratch, 'labelX', prefix);\n var textY = getPrefixedProperty(rscratch, 'labelY', prefix);\n var orgTextX, orgTextY; // used for rotation\n\n var text = this.getLabelText(ele, prefix);\n\n if (text != null && text !== '' && !isNaN(textX) && !isNaN(textY)) {\n this.setupTextStyle(context, ele, useEleOpacity);\n var pdash = prefix ? prefix + '-' : '';\n var textW = getPrefixedProperty(rscratch, 'labelWidth', prefix);\n var textH = getPrefixedProperty(rscratch, 'labelHeight', prefix);\n var marginX = ele.pstyle(pdash + 'text-margin-x').pfValue;\n var marginY = ele.pstyle(pdash + 'text-margin-y').pfValue;\n var isEdge = ele.isEdge();\n var halign = ele.pstyle('text-halign').value;\n var valign = ele.pstyle('text-valign').value;\n\n if (isEdge) {\n halign = 'center';\n valign = 'center';\n }\n\n textX += marginX;\n textY += marginY;\n var theta;\n\n if (!applyRotation) {\n theta = 0;\n } else {\n theta = this.getTextAngle(ele, prefix);\n }\n\n if (theta !== 0) {\n orgTextX = textX;\n orgTextY = textY;\n context.translate(orgTextX, orgTextY);\n context.rotate(theta);\n textX = 0;\n textY = 0;\n }\n\n switch (valign) {\n case 'top':\n break;\n\n case 'center':\n textY += textH / 2;\n break;\n\n case 'bottom':\n textY += textH;\n break;\n }\n\n var backgroundOpacity = ele.pstyle('text-background-opacity').value;\n var borderOpacity = ele.pstyle('text-border-opacity').value;\n var textBorderWidth = ele.pstyle('text-border-width').pfValue;\n var backgroundPadding = ele.pstyle('text-background-padding').pfValue;\n\n if (backgroundOpacity > 0 || textBorderWidth > 0 && borderOpacity > 0) {\n var bgX = textX - backgroundPadding;\n\n switch (halign) {\n case 'left':\n bgX -= textW;\n break;\n\n case 'center':\n bgX -= textW / 2;\n break;\n\n case 'right':\n break;\n }\n\n var bgY = textY - textH - backgroundPadding;\n var bgW = textW + 2 * backgroundPadding;\n var bgH = textH + 2 * backgroundPadding;\n\n if (backgroundOpacity > 0) {\n var textFill = context.fillStyle;\n var textBackgroundColor = ele.pstyle('text-background-color').value;\n context.fillStyle = 'rgba(' + textBackgroundColor[0] + ',' + textBackgroundColor[1] + ',' + textBackgroundColor[2] + ',' + backgroundOpacity * parentOpacity + ')';\n var styleShape = ele.pstyle('text-background-shape').strValue;\n\n if (styleShape == 'roundrectangle') {\n roundRect(context, bgX, bgY, bgW, bgH, 2);\n } else {\n context.fillRect(bgX, bgY, bgW, bgH);\n }\n\n context.fillStyle = textFill;\n }\n\n if (textBorderWidth > 0 && borderOpacity > 0) {\n var textStroke = context.strokeStyle;\n var textLineWidth = context.lineWidth;\n var textBorderColor = ele.pstyle('text-border-color').value;\n var textBorderStyle = ele.pstyle('text-border-style').value;\n context.strokeStyle = 'rgba(' + textBorderColor[0] + ',' + textBorderColor[1] + ',' + textBorderColor[2] + ',' + borderOpacity * parentOpacity + ')';\n context.lineWidth = textBorderWidth;\n\n if (context.setLineDash) {\n // for very outofdate browsers\n switch (textBorderStyle) {\n case 'dotted':\n context.setLineDash([1, 1]);\n break;\n\n case 'dashed':\n context.setLineDash([4, 2]);\n break;\n\n case 'double':\n context.lineWidth = textBorderWidth / 4; // 50% reserved for white between the two borders\n\n context.setLineDash([]);\n break;\n\n case 'solid':\n context.setLineDash([]);\n break;\n }\n }\n\n context.strokeRect(bgX, bgY, bgW, bgH);\n\n if (textBorderStyle === 'double') {\n var whiteWidth = textBorderWidth / 2;\n context.strokeRect(bgX + whiteWidth, bgY + whiteWidth, bgW - whiteWidth * 2, bgH - whiteWidth * 2);\n }\n\n if (context.setLineDash) {\n // for very outofdate browsers\n context.setLineDash([]);\n }\n\n context.lineWidth = textLineWidth;\n context.strokeStyle = textStroke;\n }\n }\n\n var lineWidth = 2 * ele.pstyle('text-outline-width').pfValue; // *2 b/c the stroke is drawn centred on the middle\n\n if (lineWidth > 0) {\n context.lineWidth = lineWidth;\n }\n\n if (ele.pstyle('text-wrap').value === 'wrap') {\n var lines = getPrefixedProperty(rscratch, 'labelWrapCachedLines', prefix);\n var lineHeight = getPrefixedProperty(rscratch, 'labelLineHeight', prefix);\n var halfTextW = textW / 2;\n var justification = this.getLabelJustification(ele);\n\n if (justification === 'auto') ; else if (halign === 'left') {\n // auto justification : right\n if (justification === 'left') {\n textX += -textW;\n } else if (justification === 'center') {\n textX += -halfTextW;\n } // else same as auto\n\n } else if (halign === 'center') {\n // auto justfication : center\n if (justification === 'left') {\n textX += -halfTextW;\n } else if (justification === 'right') {\n textX += halfTextW;\n } // else same as auto\n\n } else if (halign === 'right') {\n // auto justification : left\n if (justification === 'center') {\n textX += halfTextW;\n } else if (justification === 'right') {\n textX += textW;\n } // else same as auto\n\n }\n\n switch (valign) {\n case 'top':\n textY -= (lines.length - 1) * lineHeight;\n break;\n\n case 'center':\n case 'bottom':\n textY -= (lines.length - 1) * lineHeight;\n break;\n }\n\n for (var l = 0; l < lines.length; l++) {\n if (lineWidth > 0) {\n context.strokeText(lines[l], textX, textY);\n }\n\n context.fillText(lines[l], textX, textY);\n textY += lineHeight;\n }\n } else {\n if (lineWidth > 0) {\n context.strokeText(text, textX, textY);\n }\n\n context.fillText(text, textX, textY);\n }\n\n if (theta !== 0) {\n context.rotate(-theta);\n context.translate(-orgTextX, -orgTextY);\n }\n }\n};\n\n/* global Path2D */\nvar CRp$5 = {};\n\nCRp$5.drawNode = function (context, node, shiftToOriginWithBb) {\n var drawLabel = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n var shouldDrawOverlay = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n var shouldDrawOpacity = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : true;\n var r = this;\n var nodeWidth, nodeHeight;\n var _p = node._private;\n var rs = _p.rscratch;\n var pos = node.position();\n\n if (!number(pos.x) || !number(pos.y)) {\n return; // can't draw node with undefined position\n }\n\n if (shouldDrawOpacity && !node.visible()) {\n return;\n }\n\n var eleOpacity = shouldDrawOpacity ? node.effectiveOpacity() : 1;\n var usePaths = r.usePaths();\n var path;\n var pathCacheHit = false;\n var padding = node.padding();\n nodeWidth = node.width() + 2 * padding;\n nodeHeight = node.height() + 2 * padding; //\n // setup shift\n\n var bb;\n\n if (shiftToOriginWithBb) {\n bb = shiftToOriginWithBb;\n context.translate(-bb.x1, -bb.y1);\n } //\n // load bg image\n\n\n var bgImgProp = node.pstyle('background-image');\n var urls = bgImgProp.value;\n var urlDefined = new Array(urls.length);\n var image = new Array(urls.length);\n var numImages = 0;\n\n for (var i = 0; i < urls.length; i++) {\n var url = urls[i];\n var defd = urlDefined[i] = url != null && url !== 'none';\n\n if (defd) {\n var bgImgCrossOrigin = node.cy().style().getIndexedStyle(node, 'background-image-crossorigin', 'value', i);\n numImages++; // get image, and if not loaded then ask to redraw when later loaded\n\n image[i] = r.getCachedImage(url, bgImgCrossOrigin, function () {\n _p.backgroundTimestamp = Date.now();\n node.emitAndNotify('background');\n });\n }\n } //\n // setup styles\n\n\n var darkness = node.pstyle('background-blacken').value;\n var borderWidth = node.pstyle('border-width').pfValue;\n var bgOpacity = node.pstyle('background-opacity').value * eleOpacity;\n var borderColor = node.pstyle('border-color').value;\n var borderStyle = node.pstyle('border-style').value;\n var borderOpacity = node.pstyle('border-opacity').value * eleOpacity;\n context.lineJoin = 'miter'; // so borders are square with the node shape\n\n var setupShapeColor = function setupShapeColor() {\n var bgOpy = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : bgOpacity;\n r.eleFillStyle(context, node, bgOpy);\n };\n\n var setupBorderColor = function setupBorderColor() {\n var bdrOpy = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : borderOpacity;\n r.colorStrokeStyle(context, borderColor[0], borderColor[1], borderColor[2], bdrOpy);\n }; //\n // setup shape\n\n\n var styleShape = node.pstyle('shape').strValue;\n var shapePts = node.pstyle('shape-polygon-points').pfValue;\n\n if (usePaths) {\n context.translate(pos.x, pos.y);\n var pathCache = r.nodePathCache = r.nodePathCache || [];\n var key = hashStrings(styleShape === 'polygon' ? styleShape + ',' + shapePts.join(',') : styleShape, '' + nodeHeight, '' + nodeWidth);\n var cachedPath = pathCache[key];\n\n if (cachedPath != null) {\n path = cachedPath;\n pathCacheHit = true;\n rs.pathCache = path;\n } else {\n path = new Path2D();\n pathCache[key] = rs.pathCache = path;\n }\n }\n\n var drawShape = function drawShape() {\n if (!pathCacheHit) {\n var npos = pos;\n\n if (usePaths) {\n npos = {\n x: 0,\n y: 0\n };\n }\n\n r.nodeShapes[r.getNodeShape(node)].draw(path || context, npos.x, npos.y, nodeWidth, nodeHeight);\n }\n\n if (usePaths) {\n context.fill(path);\n } else {\n context.fill();\n }\n };\n\n var drawImages = function drawImages() {\n var nodeOpacity = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : eleOpacity;\n var prevBging = _p.backgrounding;\n var totalCompleted = 0;\n\n for (var _i = 0; _i < image.length; _i++) {\n if (urlDefined[_i] && image[_i].complete && !image[_i].error) {\n totalCompleted++;\n r.drawInscribedImage(context, image[_i], node, _i, nodeOpacity);\n }\n }\n\n _p.backgrounding = !(totalCompleted === numImages);\n\n if (prevBging !== _p.backgrounding) {\n // update style b/c :backgrounding state changed\n node.updateStyle(false);\n }\n };\n\n var drawPie = function drawPie() {\n var redrawShape = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var pieOpacity = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : eleOpacity;\n\n if (r.hasPie(node)) {\n r.drawPie(context, node, pieOpacity); // redraw/restore path if steps after pie need it\n\n if (redrawShape) {\n if (!usePaths) {\n r.nodeShapes[r.getNodeShape(node)].draw(context, pos.x, pos.y, nodeWidth, nodeHeight);\n }\n }\n }\n };\n\n var darken = function darken() {\n var darkenOpacity = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : eleOpacity;\n var opacity = (darkness > 0 ? darkness : -darkness) * darkenOpacity;\n var c = darkness > 0 ? 0 : 255;\n\n if (darkness !== 0) {\n r.colorFillStyle(context, c, c, c, opacity);\n\n if (usePaths) {\n context.fill(path);\n } else {\n context.fill();\n }\n }\n };\n\n var drawBorder = function drawBorder() {\n if (borderWidth > 0) {\n context.lineWidth = borderWidth;\n context.lineCap = 'butt';\n\n if (context.setLineDash) {\n // for very outofdate browsers\n switch (borderStyle) {\n case 'dotted':\n context.setLineDash([1, 1]);\n break;\n\n case 'dashed':\n context.setLineDash([4, 2]);\n break;\n\n case 'solid':\n case 'double':\n context.setLineDash([]);\n break;\n }\n }\n\n if (usePaths) {\n context.stroke(path);\n } else {\n context.stroke();\n }\n\n if (borderStyle === 'double') {\n context.lineWidth = borderWidth / 3;\n var gco = context.globalCompositeOperation;\n context.globalCompositeOperation = 'destination-out';\n\n if (usePaths) {\n context.stroke(path);\n } else {\n context.stroke();\n }\n\n context.globalCompositeOperation = gco;\n } // reset in case we changed the border style\n\n\n if (context.setLineDash) {\n // for very outofdate browsers\n context.setLineDash([]);\n }\n }\n };\n\n var drawOverlay = function drawOverlay() {\n if (shouldDrawOverlay) {\n r.drawNodeOverlay(context, node, pos, nodeWidth, nodeHeight);\n }\n };\n\n var drawText = function drawText() {\n r.drawElementText(context, node, null, drawLabel);\n };\n\n var ghost = node.pstyle('ghost').value === 'yes';\n\n if (ghost) {\n var gx = node.pstyle('ghost-offset-x').pfValue;\n var gy = node.pstyle('ghost-offset-y').pfValue;\n var ghostOpacity = node.pstyle('ghost-opacity').value;\n var effGhostOpacity = ghostOpacity * eleOpacity;\n context.translate(gx, gy);\n setupShapeColor(ghostOpacity * bgOpacity);\n drawShape();\n drawImages(effGhostOpacity);\n drawPie(darkness !== 0 || borderWidth !== 0);\n darken(effGhostOpacity);\n setupBorderColor(ghostOpacity * borderOpacity);\n drawBorder();\n context.translate(-gx, -gy);\n }\n\n setupShapeColor();\n drawShape();\n drawImages();\n drawPie(darkness !== 0 || borderWidth !== 0);\n darken();\n setupBorderColor();\n drawBorder();\n\n if (usePaths) {\n context.translate(-pos.x, -pos.y);\n }\n\n drawText();\n drawOverlay(); //\n // clean up shift\n\n if (shiftToOriginWithBb) {\n context.translate(bb.x1, bb.y1);\n }\n};\n\nCRp$5.drawNodeOverlay = function (context, node, pos, nodeWidth, nodeHeight) {\n var r = this;\n\n if (!node.visible()) {\n return;\n }\n\n var overlayPadding = node.pstyle('overlay-padding').pfValue;\n var overlayOpacity = node.pstyle('overlay-opacity').value;\n var overlayColor = node.pstyle('overlay-color').value;\n\n if (overlayOpacity > 0) {\n pos = pos || node.position();\n\n if (nodeWidth == null || nodeHeight == null) {\n var padding = node.padding();\n nodeWidth = node.width() + 2 * padding;\n nodeHeight = node.height() + 2 * padding;\n }\n\n r.colorFillStyle(context, overlayColor[0], overlayColor[1], overlayColor[2], overlayOpacity);\n r.nodeShapes['roundrectangle'].draw(context, pos.x, pos.y, nodeWidth + overlayPadding * 2, nodeHeight + overlayPadding * 2);\n context.fill();\n }\n}; // does the node have at least one pie piece?\n\n\nCRp$5.hasPie = function (node) {\n node = node[0]; // ensure ele ref\n\n return node._private.hasPie;\n};\n\nCRp$5.drawPie = function (context, node, nodeOpacity, pos) {\n node = node[0]; // ensure ele ref\n\n pos = pos || node.position();\n var cyStyle = node.cy().style();\n var pieSize = node.pstyle('pie-size');\n var x = pos.x;\n var y = pos.y;\n var nodeW = node.width();\n var nodeH = node.height();\n var radius = Math.min(nodeW, nodeH) / 2; // must fit in node\n\n var lastPercent = 0; // what % to continue drawing pie slices from on [0, 1]\n\n var usePaths = this.usePaths();\n\n if (usePaths) {\n x = 0;\n y = 0;\n }\n\n if (pieSize.units === '%') {\n radius = radius * pieSize.pfValue;\n } else if (pieSize.pfValue !== undefined) {\n radius = pieSize.pfValue / 2;\n }\n\n for (var i = 1; i <= cyStyle.pieBackgroundN; i++) {\n // 1..N\n var size = node.pstyle('pie-' + i + '-background-size').value;\n var color = node.pstyle('pie-' + i + '-background-color').value;\n var opacity = node.pstyle('pie-' + i + '-background-opacity').value * nodeOpacity;\n var percent = size / 100; // map integer range [0, 100] to [0, 1]\n // percent can't push beyond 1\n\n if (percent + lastPercent > 1) {\n percent = 1 - lastPercent;\n }\n\n var angleStart = 1.5 * Math.PI + 2 * Math.PI * lastPercent; // start at 12 o'clock and go clockwise\n\n var angleDelta = 2 * Math.PI * percent;\n var angleEnd = angleStart + angleDelta; // ignore if\n // - zero size\n // - we're already beyond the full circle\n // - adding the current slice would go beyond the full circle\n\n if (size === 0 || lastPercent >= 1 || lastPercent + percent > 1) {\n continue;\n }\n\n context.beginPath();\n context.moveTo(x, y);\n context.arc(x, y, radius, angleStart, angleEnd);\n context.closePath();\n this.colorFillStyle(context, color[0], color[1], color[2], opacity);\n context.fill();\n lastPercent += percent;\n }\n};\n\nvar CRp$6 = {};\nvar motionBlurDelay = 100; // var isFirefox = typeof InstallTrigger !== 'undefined';\n\nCRp$6.getPixelRatio = function () {\n var context = this.data.contexts[0];\n\n if (this.forcedPixelRatio != null) {\n return this.forcedPixelRatio;\n }\n\n var backingStore = context.backingStorePixelRatio || context.webkitBackingStorePixelRatio || context.mozBackingStorePixelRatio || context.msBackingStorePixelRatio || context.oBackingStorePixelRatio || context.backingStorePixelRatio || 1;\n return (window.devicePixelRatio || 1) / backingStore; // eslint-disable-line no-undef\n};\n\nCRp$6.paintCache = function (context) {\n var caches = this.paintCaches = this.paintCaches || [];\n var needToCreateCache = true;\n var cache;\n\n for (var i = 0; i < caches.length; i++) {\n cache = caches[i];\n\n if (cache.context === context) {\n needToCreateCache = false;\n break;\n }\n }\n\n if (needToCreateCache) {\n cache = {\n context: context\n };\n caches.push(cache);\n }\n\n return cache;\n};\n\nCRp$6.createGradientStyleFor = function (context, shapeStyleName, ele, fill, opacity) {\n var gradientStyle;\n var usePaths = this.usePaths();\n var colors = ele.pstyle(shapeStyleName + '-gradient-stop-colors').value,\n positions = ele.pstyle(shapeStyleName + '-gradient-stop-positions').pfValue;\n\n if (fill === 'radial-gradient') {\n if (ele.isEdge()) {\n var start = ele.sourceEndpoint(),\n end = ele.targetEndpoint(),\n mid = ele.midpoint();\n var d1 = dist(start, mid);\n var d2 = dist(end, mid);\n gradientStyle = context.createRadialGradient(mid.x, mid.y, 0, mid.x, mid.y, Math.max(d1, d2));\n } else {\n var pos = usePaths ? {\n x: 0,\n y: 0\n } : ele.position(),\n width = ele.width(),\n height = ele.height();\n gradientStyle = context.createRadialGradient(pos.x, pos.y, 0, pos.x, pos.y, Math.max(width, height));\n }\n } else {\n if (ele.isEdge()) {\n var _start = ele.sourceEndpoint(),\n _end = ele.targetEndpoint();\n\n gradientStyle = context.createLinearGradient(_start.x, _start.y, _end.x, _end.y);\n } else {\n var _pos = usePaths ? {\n x: 0,\n y: 0\n } : ele.position(),\n _width = ele.width(),\n _height = ele.height(),\n halfWidth = _width / 2,\n halfHeight = _height / 2;\n\n var direction = ele.pstyle('background-gradient-direction').value;\n\n switch (direction) {\n case 'to-bottom':\n gradientStyle = context.createLinearGradient(_pos.x, _pos.y - halfHeight, _pos.x, _pos.y + halfHeight);\n break;\n\n case 'to-top':\n gradientStyle = context.createLinearGradient(_pos.x, _pos.y + halfHeight, _pos.x, _pos.y - halfHeight);\n break;\n\n case 'to-left':\n gradientStyle = context.createLinearGradient(_pos.x - halfWidth, _pos.y, _pos.x + halfWidth, _pos.y);\n break;\n\n case 'to-right':\n gradientStyle = context.createLinearGradient(_pos.x + halfWidth, _pos.y, _pos.x - halfWidth, _pos.y);\n break;\n\n case 'to-bottom-right':\n case 'to-right-bottom':\n gradientStyle = context.createLinearGradient(_pos.x - halfWidth, _pos.y - halfHeight, _pos.x + halfWidth, _pos.y + halfHeight);\n break;\n\n case 'to-top-right':\n case 'to-right-top':\n gradientStyle = context.createLinearGradient(_pos.x - halfWidth, _pos.y + halfHeight, _pos.x + halfWidth, _pos.y - halfHeight);\n break;\n\n case 'to-bottom-left':\n case 'to-left-bottom':\n gradientStyle = context.createLinearGradient(_pos.x + halfWidth, _pos.y - halfHeight, _pos.x - halfWidth, _pos.y + halfHeight);\n break;\n\n case 'to-top-left':\n case 'to-left-top':\n gradientStyle = context.createLinearGradient(_pos.x + halfWidth, _pos.y + halfHeight, _pos.x - halfWidth, _pos.y - halfHeight);\n break;\n }\n }\n }\n\n if (!gradientStyle) return null; // invalid gradient style\n\n var hasPositions = positions.length === colors.length;\n var length = colors.length;\n\n for (var i = 0; i < length; i++) {\n gradientStyle.addColorStop(hasPositions ? positions[i] : i / (length - 1), 'rgba(' + colors[i][0] + ',' + colors[i][1] + ',' + colors[i][2] + ',' + opacity + ')');\n }\n\n return gradientStyle;\n};\n\nCRp$6.gradientFillStyle = function (context, ele, fill, opacity) {\n var gradientStyle = this.createGradientStyleFor(context, 'background', ele, fill, opacity);\n if (!gradientStyle) return null; // error\n\n context.fillStyle = gradientStyle;\n};\n\nCRp$6.colorFillStyle = function (context, r, g, b, a) {\n context.fillStyle = 'rgba(' + r + ',' + g + ',' + b + ',' + a + ')'; // turn off for now, seems context does its own caching\n // var cache = this.paintCache(context);\n // var fillStyle = 'rgba(' + r + ',' + g + ',' + b + ',' + a + ')';\n // if( cache.fillStyle !== fillStyle ){\n // context.fillStyle = cache.fillStyle = fillStyle;\n // }\n};\n\nCRp$6.eleFillStyle = function (context, ele, opacity) {\n var backgroundFill = ele.pstyle('background-fill').value;\n\n if (backgroundFill === 'linear-gradient' || backgroundFill === 'radial-gradient') {\n this.gradientFillStyle(context, ele, backgroundFill, opacity);\n } else {\n var backgroundColor = ele.pstyle('background-color').value;\n this.colorFillStyle(context, backgroundColor[0], backgroundColor[1], backgroundColor[2], opacity);\n }\n};\n\nCRp$6.gradientStrokeStyle = function (context, ele, fill, opacity) {\n var gradientStyle = this.createGradientStyleFor(context, 'line', ele, fill, opacity);\n if (!gradientStyle) return null; // error\n\n context.strokeStyle = gradientStyle;\n};\n\nCRp$6.colorStrokeStyle = function (context, r, g, b, a) {\n context.strokeStyle = 'rgba(' + r + ',' + g + ',' + b + ',' + a + ')'; // turn off for now, seems context does its own caching\n // var cache = this.paintCache(context);\n // var strokeStyle = 'rgba(' + r + ',' + g + ',' + b + ',' + a + ')';\n // if( cache.strokeStyle !== strokeStyle ){\n // context.strokeStyle = cache.strokeStyle = strokeStyle;\n // }\n};\n\nCRp$6.eleStrokeStyle = function (context, ele, opacity) {\n var lineFill = ele.pstyle('line-fill').value;\n\n if (lineFill === 'linear-gradient' || lineFill === 'radial-gradient') {\n this.gradientStrokeStyle(context, ele, lineFill, opacity);\n } else {\n var lineColor = ele.pstyle('line-color').value;\n this.colorStrokeStyle(context, lineColor[0], lineColor[1], lineColor[2], opacity);\n }\n}; // Resize canvas\n\n\nCRp$6.matchCanvasSize = function (container) {\n var r = this;\n var data = r.data;\n var bb = r.findContainerClientCoords();\n var width = bb[2];\n var height = bb[3];\n var pixelRatio = r.getPixelRatio();\n var mbPxRatio = r.motionBlurPxRatio;\n\n if (container === r.data.bufferCanvases[r.MOTIONBLUR_BUFFER_NODE] || container === r.data.bufferCanvases[r.MOTIONBLUR_BUFFER_DRAG]) {\n pixelRatio = mbPxRatio;\n }\n\n var canvasWidth = width * pixelRatio;\n var canvasHeight = height * pixelRatio;\n var canvas;\n\n if (canvasWidth === r.canvasWidth && canvasHeight === r.canvasHeight) {\n return; // save cycles if same\n }\n\n r.fontCaches = null; // resizing resets the style\n\n var canvasContainer = data.canvasContainer;\n canvasContainer.style.width = width + 'px';\n canvasContainer.style.height = height + 'px';\n\n for (var i = 0; i < r.CANVAS_LAYERS; i++) {\n canvas = data.canvases[i];\n canvas.width = canvasWidth;\n canvas.height = canvasHeight;\n canvas.style.width = width + 'px';\n canvas.style.height = height + 'px';\n }\n\n for (var i = 0; i < r.BUFFER_COUNT; i++) {\n canvas = data.bufferCanvases[i];\n canvas.width = canvasWidth;\n canvas.height = canvasHeight;\n canvas.style.width = width + 'px';\n canvas.style.height = height + 'px';\n }\n\n r.textureMult = 1;\n\n if (pixelRatio <= 1) {\n canvas = data.bufferCanvases[r.TEXTURE_BUFFER];\n r.textureMult = 2;\n canvas.width = canvasWidth * r.textureMult;\n canvas.height = canvasHeight * r.textureMult;\n }\n\n r.canvasWidth = canvasWidth;\n r.canvasHeight = canvasHeight;\n};\n\nCRp$6.renderTo = function (cxt, zoom, pan, pxRatio) {\n this.render({\n forcedContext: cxt,\n forcedZoom: zoom,\n forcedPan: pan,\n drawAllLayers: true,\n forcedPxRatio: pxRatio\n });\n};\n\nCRp$6.render = function (options) {\n options = options || staticEmptyObject();\n var forcedContext = options.forcedContext;\n var drawAllLayers = options.drawAllLayers;\n var drawOnlyNodeLayer = options.drawOnlyNodeLayer;\n var forcedZoom = options.forcedZoom;\n var forcedPan = options.forcedPan;\n var r = this;\n var pixelRatio = options.forcedPxRatio === undefined ? this.getPixelRatio() : options.forcedPxRatio;\n var cy = r.cy;\n var data = r.data;\n var needDraw = data.canvasNeedsRedraw;\n var textureDraw = r.textureOnViewport && !forcedContext && (r.pinching || r.hoverData.dragging || r.swipePanning || r.data.wheelZooming);\n var motionBlur = options.motionBlur !== undefined ? options.motionBlur : r.motionBlur;\n var mbPxRatio = r.motionBlurPxRatio;\n var hasCompoundNodes = cy.hasCompoundNodes();\n var inNodeDragGesture = r.hoverData.draggingEles;\n var inBoxSelection = r.hoverData.selecting || r.touchData.selecting ? true : false;\n motionBlur = motionBlur && !forcedContext && r.motionBlurEnabled && !inBoxSelection;\n var motionBlurFadeEffect = motionBlur;\n\n if (!forcedContext) {\n if (r.prevPxRatio !== pixelRatio) {\n r.invalidateContainerClientCoordsCache();\n r.matchCanvasSize(r.container);\n r.redrawHint('eles', true);\n r.redrawHint('drag', true);\n }\n\n r.prevPxRatio = pixelRatio;\n }\n\n if (!forcedContext && r.motionBlurTimeout) {\n clearTimeout(r.motionBlurTimeout);\n }\n\n if (motionBlur) {\n if (r.mbFrames == null) {\n r.mbFrames = 0;\n }\n\n r.mbFrames++;\n\n if (r.mbFrames < 3) {\n // need several frames before even high quality motionblur\n motionBlurFadeEffect = false;\n } // go to lower quality blurry frames when several m/b frames have been rendered (avoids flashing)\n\n\n if (r.mbFrames > r.minMbLowQualFrames) {\n //r.fullQualityMb = false;\n r.motionBlurPxRatio = r.mbPxRBlurry;\n }\n }\n\n if (r.clearingMotionBlur) {\n r.motionBlurPxRatio = 1;\n } // b/c drawToContext() may be async w.r.t. redraw(), keep track of last texture frame\n // because a rogue async texture frame would clear needDraw\n\n\n if (r.textureDrawLastFrame && !textureDraw) {\n needDraw[r.NODE] = true;\n needDraw[r.SELECT_BOX] = true;\n }\n\n var style = cy.style();\n var zoom = cy.zoom();\n var effectiveZoom = forcedZoom !== undefined ? forcedZoom : zoom;\n var pan = cy.pan();\n var effectivePan = {\n x: pan.x,\n y: pan.y\n };\n var vp = {\n zoom: zoom,\n pan: {\n x: pan.x,\n y: pan.y\n }\n };\n var prevVp = r.prevViewport;\n var viewportIsDiff = prevVp === undefined || vp.zoom !== prevVp.zoom || vp.pan.x !== prevVp.pan.x || vp.pan.y !== prevVp.pan.y; // we want the low quality motionblur only when the viewport is being manipulated etc (where it's not noticed)\n\n if (!viewportIsDiff && !(inNodeDragGesture && !hasCompoundNodes)) {\n r.motionBlurPxRatio = 1;\n }\n\n if (forcedPan) {\n effectivePan = forcedPan;\n } // apply pixel ratio\n\n\n effectiveZoom *= pixelRatio;\n effectivePan.x *= pixelRatio;\n effectivePan.y *= pixelRatio;\n var eles = r.getCachedZSortedEles();\n\n function mbclear(context, x, y, w, h) {\n var gco = context.globalCompositeOperation;\n context.globalCompositeOperation = 'destination-out';\n r.colorFillStyle(context, 255, 255, 255, r.motionBlurTransparency);\n context.fillRect(x, y, w, h);\n context.globalCompositeOperation = gco;\n }\n\n function setContextTransform(context, clear) {\n var ePan, eZoom, w, h;\n\n if (!r.clearingMotionBlur && (context === data.bufferContexts[r.MOTIONBLUR_BUFFER_NODE] || context === data.bufferContexts[r.MOTIONBLUR_BUFFER_DRAG])) {\n ePan = {\n x: pan.x * mbPxRatio,\n y: pan.y * mbPxRatio\n };\n eZoom = zoom * mbPxRatio;\n w = r.canvasWidth * mbPxRatio;\n h = r.canvasHeight * mbPxRatio;\n } else {\n ePan = effectivePan;\n eZoom = effectiveZoom;\n w = r.canvasWidth;\n h = r.canvasHeight;\n }\n\n context.setTransform(1, 0, 0, 1, 0, 0);\n\n if (clear === 'motionBlur') {\n mbclear(context, 0, 0, w, h);\n } else if (!forcedContext && (clear === undefined || clear)) {\n context.clearRect(0, 0, w, h);\n }\n\n if (!drawAllLayers) {\n context.translate(ePan.x, ePan.y);\n context.scale(eZoom, eZoom);\n }\n\n if (forcedPan) {\n context.translate(forcedPan.x, forcedPan.y);\n }\n\n if (forcedZoom) {\n context.scale(forcedZoom, forcedZoom);\n }\n }\n\n if (!textureDraw) {\n r.textureDrawLastFrame = false;\n }\n\n if (textureDraw) {\n r.textureDrawLastFrame = true;\n\n if (!r.textureCache) {\n r.textureCache = {};\n r.textureCache.bb = cy.mutableElements().boundingBox();\n r.textureCache.texture = r.data.bufferCanvases[r.TEXTURE_BUFFER];\n var cxt = r.data.bufferContexts[r.TEXTURE_BUFFER];\n cxt.setTransform(1, 0, 0, 1, 0, 0);\n cxt.clearRect(0, 0, r.canvasWidth * r.textureMult, r.canvasHeight * r.textureMult);\n r.render({\n forcedContext: cxt,\n drawOnlyNodeLayer: true,\n forcedPxRatio: pixelRatio * r.textureMult\n });\n var vp = r.textureCache.viewport = {\n zoom: cy.zoom(),\n pan: cy.pan(),\n width: r.canvasWidth,\n height: r.canvasHeight\n };\n vp.mpan = {\n x: (0 - vp.pan.x) / vp.zoom,\n y: (0 - vp.pan.y) / vp.zoom\n };\n }\n\n needDraw[r.DRAG] = false;\n needDraw[r.NODE] = false;\n var context = data.contexts[r.NODE];\n var texture = r.textureCache.texture;\n var vp = r.textureCache.viewport;\n context.setTransform(1, 0, 0, 1, 0, 0);\n\n if (motionBlur) {\n mbclear(context, 0, 0, vp.width, vp.height);\n } else {\n context.clearRect(0, 0, vp.width, vp.height);\n }\n\n var outsideBgColor = style.core('outside-texture-bg-color').value;\n var outsideBgOpacity = style.core('outside-texture-bg-opacity').value;\n r.colorFillStyle(context, outsideBgColor[0], outsideBgColor[1], outsideBgColor[2], outsideBgOpacity);\n context.fillRect(0, 0, vp.width, vp.height);\n var zoom = cy.zoom();\n setContextTransform(context, false);\n context.clearRect(vp.mpan.x, vp.mpan.y, vp.width / vp.zoom / pixelRatio, vp.height / vp.zoom / pixelRatio);\n context.drawImage(texture, vp.mpan.x, vp.mpan.y, vp.width / vp.zoom / pixelRatio, vp.height / vp.zoom / pixelRatio);\n } else if (r.textureOnViewport && !forcedContext) {\n // clear the cache since we don't need it\n r.textureCache = null;\n }\n\n var extent = cy.extent();\n var vpManip = r.pinching || r.hoverData.dragging || r.swipePanning || r.data.wheelZooming || r.hoverData.draggingEles;\n var hideEdges = r.hideEdgesOnViewport && vpManip;\n var needMbClear = [];\n needMbClear[r.NODE] = !needDraw[r.NODE] && motionBlur && !r.clearedForMotionBlur[r.NODE] || r.clearingMotionBlur;\n\n if (needMbClear[r.NODE]) {\n r.clearedForMotionBlur[r.NODE] = true;\n }\n\n needMbClear[r.DRAG] = !needDraw[r.DRAG] && motionBlur && !r.clearedForMotionBlur[r.DRAG] || r.clearingMotionBlur;\n\n if (needMbClear[r.DRAG]) {\n r.clearedForMotionBlur[r.DRAG] = true;\n }\n\n if (needDraw[r.NODE] || drawAllLayers || drawOnlyNodeLayer || needMbClear[r.NODE]) {\n var useBuffer = motionBlur && !needMbClear[r.NODE] && mbPxRatio !== 1;\n var context = forcedContext || (useBuffer ? r.data.bufferContexts[r.MOTIONBLUR_BUFFER_NODE] : data.contexts[r.NODE]);\n var clear = motionBlur && !useBuffer ? 'motionBlur' : undefined;\n setContextTransform(context, clear);\n\n if (hideEdges) {\n r.drawCachedNodes(context, eles.nondrag, pixelRatio, extent);\n } else {\n r.drawLayeredElements(context, eles.nondrag, pixelRatio, extent);\n }\n\n if (r.debug) {\n r.drawDebugPoints(context, eles.nondrag);\n }\n\n if (!drawAllLayers && !motionBlur) {\n needDraw[r.NODE] = false;\n }\n }\n\n if (!drawOnlyNodeLayer && (needDraw[r.DRAG] || drawAllLayers || needMbClear[r.DRAG])) {\n var useBuffer = motionBlur && !needMbClear[r.DRAG] && mbPxRatio !== 1;\n var context = forcedContext || (useBuffer ? r.data.bufferContexts[r.MOTIONBLUR_BUFFER_DRAG] : data.contexts[r.DRAG]);\n setContextTransform(context, motionBlur && !useBuffer ? 'motionBlur' : undefined);\n\n if (hideEdges) {\n r.drawCachedNodes(context, eles.drag, pixelRatio, extent);\n } else {\n r.drawCachedElements(context, eles.drag, pixelRatio, extent);\n }\n\n if (r.debug) {\n r.drawDebugPoints(context, eles.drag);\n }\n\n if (!drawAllLayers && !motionBlur) {\n needDraw[r.DRAG] = false;\n }\n }\n\n if (r.showFps || !drawOnlyNodeLayer && needDraw[r.SELECT_BOX] && !drawAllLayers) {\n var context = forcedContext || data.contexts[r.SELECT_BOX];\n setContextTransform(context);\n\n if (r.selection[4] == 1 && (r.hoverData.selecting || r.touchData.selecting)) {\n var zoom = r.cy.zoom();\n var borderWidth = style.core('selection-box-border-width').value / zoom;\n context.lineWidth = borderWidth;\n context.fillStyle = 'rgba(' + style.core('selection-box-color').value[0] + ',' + style.core('selection-box-color').value[1] + ',' + style.core('selection-box-color').value[2] + ',' + style.core('selection-box-opacity').value + ')';\n context.fillRect(r.selection[0], r.selection[1], r.selection[2] - r.selection[0], r.selection[3] - r.selection[1]);\n\n if (borderWidth > 0) {\n context.strokeStyle = 'rgba(' + style.core('selection-box-border-color').value[0] + ',' + style.core('selection-box-border-color').value[1] + ',' + style.core('selection-box-border-color').value[2] + ',' + style.core('selection-box-opacity').value + ')';\n context.strokeRect(r.selection[0], r.selection[1], r.selection[2] - r.selection[0], r.selection[3] - r.selection[1]);\n }\n }\n\n if (data.bgActivePosistion && !r.hoverData.selecting) {\n var zoom = r.cy.zoom();\n var pos = data.bgActivePosistion;\n context.fillStyle = 'rgba(' + style.core('active-bg-color').value[0] + ',' + style.core('active-bg-color').value[1] + ',' + style.core('active-bg-color').value[2] + ',' + style.core('active-bg-opacity').value + ')';\n context.beginPath();\n context.arc(pos.x, pos.y, style.core('active-bg-size').pfValue / zoom, 0, 2 * Math.PI);\n context.fill();\n }\n\n var timeToRender = r.lastRedrawTime;\n\n if (r.showFps && timeToRender) {\n timeToRender = Math.round(timeToRender);\n var fps = Math.round(1000 / timeToRender);\n context.setTransform(1, 0, 0, 1, 0, 0);\n context.fillStyle = 'rgba(255, 0, 0, 0.75)';\n context.strokeStyle = 'rgba(255, 0, 0, 0.75)';\n context.lineWidth = 1;\n context.fillText('1 frame = ' + timeToRender + ' ms = ' + fps + ' fps', 0, 20);\n var maxFps = 60;\n context.strokeRect(0, 30, 250, 20);\n context.fillRect(0, 30, 250 * Math.min(fps / maxFps, 1), 20);\n }\n\n if (!drawAllLayers) {\n needDraw[r.SELECT_BOX] = false;\n }\n } // motionblur: blit rendered blurry frames\n\n\n if (motionBlur && mbPxRatio !== 1) {\n var cxtNode = data.contexts[r.NODE];\n var txtNode = r.data.bufferCanvases[r.MOTIONBLUR_BUFFER_NODE];\n var cxtDrag = data.contexts[r.DRAG];\n var txtDrag = r.data.bufferCanvases[r.MOTIONBLUR_BUFFER_DRAG];\n\n var drawMotionBlur = function drawMotionBlur(cxt, txt, needClear) {\n cxt.setTransform(1, 0, 0, 1, 0, 0);\n\n if (needClear || !motionBlurFadeEffect) {\n cxt.clearRect(0, 0, r.canvasWidth, r.canvasHeight);\n } else {\n mbclear(cxt, 0, 0, r.canvasWidth, r.canvasHeight);\n }\n\n var pxr = mbPxRatio;\n cxt.drawImage(txt, // img\n 0, 0, // sx, sy\n r.canvasWidth * pxr, r.canvasHeight * pxr, // sw, sh\n 0, 0, // x, y\n r.canvasWidth, r.canvasHeight // w, h\n );\n };\n\n if (needDraw[r.NODE] || needMbClear[r.NODE]) {\n drawMotionBlur(cxtNode, txtNode, needMbClear[r.NODE]);\n needDraw[r.NODE] = false;\n }\n\n if (needDraw[r.DRAG] || needMbClear[r.DRAG]) {\n drawMotionBlur(cxtDrag, txtDrag, needMbClear[r.DRAG]);\n needDraw[r.DRAG] = false;\n }\n }\n\n r.prevViewport = vp;\n\n if (r.clearingMotionBlur) {\n r.clearingMotionBlur = false;\n r.motionBlurCleared = true;\n r.motionBlur = true;\n }\n\n if (motionBlur) {\n r.motionBlurTimeout = setTimeout(function () {\n r.motionBlurTimeout = null;\n r.clearedForMotionBlur[r.NODE] = false;\n r.clearedForMotionBlur[r.DRAG] = false;\n r.motionBlur = false;\n r.clearingMotionBlur = !textureDraw;\n r.mbFrames = 0;\n needDraw[r.NODE] = true;\n needDraw[r.DRAG] = true;\n r.redraw();\n }, motionBlurDelay);\n }\n\n if (!forcedContext) {\n cy.emit('render');\n }\n};\n\nvar CRp$7 = {}; // @O Polygon drawing\n\nCRp$7.drawPolygonPath = function (context, x, y, width, height, points) {\n var halfW = width / 2;\n var halfH = height / 2;\n\n if (context.beginPath) {\n context.beginPath();\n }\n\n context.moveTo(x + halfW * points[0], y + halfH * points[1]);\n\n for (var i = 1; i < points.length / 2; i++) {\n context.lineTo(x + halfW * points[i * 2], y + halfH * points[i * 2 + 1]);\n }\n\n context.closePath();\n}; // Round rectangle drawing\n\n\nCRp$7.drawRoundRectanglePath = function (context, x, y, width, height) {\n var halfWidth = width / 2;\n var halfHeight = height / 2;\n var cornerRadius = getRoundRectangleRadius(width, height);\n\n if (context.beginPath) {\n context.beginPath();\n } // Start at top middle\n\n\n context.moveTo(x, y - halfHeight); // Arc from middle top to right side\n\n context.arcTo(x + halfWidth, y - halfHeight, x + halfWidth, y, cornerRadius); // Arc from right side to bottom\n\n context.arcTo(x + halfWidth, y + halfHeight, x, y + halfHeight, cornerRadius); // Arc from bottom to left side\n\n context.arcTo(x - halfWidth, y + halfHeight, x - halfWidth, y, cornerRadius); // Arc from left side to topBorder\n\n context.arcTo(x - halfWidth, y - halfHeight, x, y - halfHeight, cornerRadius); // Join line\n\n context.lineTo(x, y - halfHeight);\n context.closePath();\n};\n\nCRp$7.drawBottomRoundRectanglePath = function (context, x, y, width, height) {\n var halfWidth = width / 2;\n var halfHeight = height / 2;\n var cornerRadius = getRoundRectangleRadius(width, height);\n\n if (context.beginPath) {\n context.beginPath();\n } // Start at top middle\n\n\n context.moveTo(x, y - halfHeight);\n context.lineTo(x + halfWidth, y - halfHeight);\n context.lineTo(x + halfWidth, y);\n context.arcTo(x + halfWidth, y + halfHeight, x, y + halfHeight, cornerRadius);\n context.arcTo(x - halfWidth, y + halfHeight, x - halfWidth, y, cornerRadius);\n context.lineTo(x - halfWidth, y - halfHeight);\n context.lineTo(x, y - halfHeight);\n context.closePath();\n};\n\nCRp$7.drawCutRectanglePath = function (context, x, y, width, height) {\n var halfWidth = width / 2;\n var halfHeight = height / 2;\n var cornerLength = getCutRectangleCornerLength();\n\n if (context.beginPath) {\n context.beginPath();\n }\n\n context.moveTo(x - halfWidth + cornerLength, y - halfHeight);\n context.lineTo(x + halfWidth - cornerLength, y - halfHeight);\n context.lineTo(x + halfWidth, y - halfHeight + cornerLength);\n context.lineTo(x + halfWidth, y + halfHeight - cornerLength);\n context.lineTo(x + halfWidth - cornerLength, y + halfHeight);\n context.lineTo(x - halfWidth + cornerLength, y + halfHeight);\n context.lineTo(x - halfWidth, y + halfHeight - cornerLength);\n context.lineTo(x - halfWidth, y - halfHeight + cornerLength);\n context.closePath();\n};\n\nCRp$7.drawBarrelPath = function (context, x, y, width, height) {\n var halfWidth = width / 2;\n var halfHeight = height / 2;\n var xBegin = x - halfWidth;\n var xEnd = x + halfWidth;\n var yBegin = y - halfHeight;\n var yEnd = y + halfHeight;\n var barrelCurveConstants = getBarrelCurveConstants(width, height);\n var wOffset = barrelCurveConstants.widthOffset;\n var hOffset = barrelCurveConstants.heightOffset;\n var ctrlPtXOffset = barrelCurveConstants.ctrlPtOffsetPct * wOffset;\n\n if (context.beginPath) {\n context.beginPath();\n }\n\n context.moveTo(xBegin, yBegin + hOffset);\n context.lineTo(xBegin, yEnd - hOffset);\n context.quadraticCurveTo(xBegin + ctrlPtXOffset, yEnd, xBegin + wOffset, yEnd);\n context.lineTo(xEnd - wOffset, yEnd);\n context.quadraticCurveTo(xEnd - ctrlPtXOffset, yEnd, xEnd, yEnd - hOffset);\n context.lineTo(xEnd, yBegin + hOffset);\n context.quadraticCurveTo(xEnd - ctrlPtXOffset, yBegin, xEnd - wOffset, yBegin);\n context.lineTo(xBegin + wOffset, yBegin);\n context.quadraticCurveTo(xBegin + ctrlPtXOffset, yBegin, xBegin, yBegin + hOffset);\n context.closePath();\n};\n\nvar sin0 = Math.sin(0);\nvar cos0 = Math.cos(0);\nvar sin = {};\nvar cos = {};\nvar ellipseStepSize = Math.PI / 40;\n\nfor (var i = 0 * Math.PI; i < 2 * Math.PI; i += ellipseStepSize) {\n sin[i] = Math.sin(i);\n cos[i] = Math.cos(i);\n}\n\nCRp$7.drawEllipsePath = function (context, centerX, centerY, width, height) {\n if (context.beginPath) {\n context.beginPath();\n }\n\n if (context.ellipse) {\n context.ellipse(centerX, centerY, width / 2, height / 2, 0, 0, 2 * Math.PI);\n } else {\n var xPos, yPos;\n var rw = width / 2;\n var rh = height / 2;\n\n for (var i = 0 * Math.PI; i < 2 * Math.PI; i += ellipseStepSize) {\n xPos = centerX - rw * sin[i] * sin0 + rw * cos[i] * cos0;\n yPos = centerY + rh * cos[i] * sin0 + rh * sin[i] * cos0;\n\n if (i === 0) {\n context.moveTo(xPos, yPos);\n } else {\n context.lineTo(xPos, yPos);\n }\n }\n }\n\n context.closePath();\n};\n\n/* global atob, ArrayBuffer, Uint8Array, Blob */\nvar CRp$8 = {};\n\nCRp$8.createBuffer = function (w, h) {\n var buffer = document.createElement('canvas'); // eslint-disable-line no-undef\n\n buffer.width = w;\n buffer.height = h;\n return [buffer, buffer.getContext('2d')];\n};\n\nCRp$8.bufferCanvasImage = function (options) {\n var cy = this.cy;\n var eles = cy.mutableElements();\n var bb = eles.boundingBox();\n var ctrRect = this.findContainerClientCoords();\n var width = options.full ? Math.ceil(bb.w) : ctrRect[2];\n var height = options.full ? Math.ceil(bb.h) : ctrRect[3];\n var specdMaxDims = number(options.maxWidth) || number(options.maxHeight);\n var pxRatio = this.getPixelRatio();\n var scale = 1;\n\n if (options.scale !== undefined) {\n width *= options.scale;\n height *= options.scale;\n scale = options.scale;\n } else if (specdMaxDims) {\n var maxScaleW = Infinity;\n var maxScaleH = Infinity;\n\n if (number(options.maxWidth)) {\n maxScaleW = scale * options.maxWidth / width;\n }\n\n if (number(options.maxHeight)) {\n maxScaleH = scale * options.maxHeight / height;\n }\n\n scale = Math.min(maxScaleW, maxScaleH);\n width *= scale;\n height *= scale;\n }\n\n if (!specdMaxDims) {\n width *= pxRatio;\n height *= pxRatio;\n scale *= pxRatio;\n }\n\n var buffCanvas = document.createElement('canvas'); // eslint-disable-line no-undef\n\n buffCanvas.width = width;\n buffCanvas.height = height;\n buffCanvas.style.width = width + 'px';\n buffCanvas.style.height = height + 'px';\n var buffCxt = buffCanvas.getContext('2d'); // Rasterize the layers, but only if container has nonzero size\n\n if (width > 0 && height > 0) {\n buffCxt.clearRect(0, 0, width, height);\n buffCxt.globalCompositeOperation = 'source-over';\n var zsortedEles = this.getCachedZSortedEles();\n\n if (options.full) {\n // draw the full bounds of the graph\n buffCxt.translate(-bb.x1 * scale, -bb.y1 * scale);\n buffCxt.scale(scale, scale);\n this.drawElements(buffCxt, zsortedEles);\n buffCxt.scale(1 / scale, 1 / scale);\n buffCxt.translate(bb.x1 * scale, bb.y1 * scale);\n } else {\n // draw the current view\n var pan = cy.pan();\n var translation = {\n x: pan.x * scale,\n y: pan.y * scale\n };\n scale *= cy.zoom();\n buffCxt.translate(translation.x, translation.y);\n buffCxt.scale(scale, scale);\n this.drawElements(buffCxt, zsortedEles);\n buffCxt.scale(1 / scale, 1 / scale);\n buffCxt.translate(-translation.x, -translation.y);\n } // need to fill bg at end like this in order to fill cleared transparent pixels in jpgs\n\n\n if (options.bg) {\n buffCxt.globalCompositeOperation = 'destination-over';\n buffCxt.fillStyle = options.bg;\n buffCxt.rect(0, 0, width, height);\n buffCxt.fill();\n }\n }\n\n return buffCanvas;\n};\n\nfunction b64ToBlob(b64, mimeType) {\n var bytes = atob(b64);\n var buff = new ArrayBuffer(bytes.length);\n var buffUint8 = new Uint8Array(buff);\n\n for (var i = 0; i < bytes.length; i++) {\n buffUint8[i] = bytes.charCodeAt(i);\n }\n\n return new Blob([buff], {\n type: mimeType\n });\n}\n\nfunction b64UriToB64(b64uri) {\n var i = b64uri.indexOf(',');\n return b64uri.substr(i + 1);\n}\n\nfunction output(options, canvas, mimeType) {\n var getB64Uri = function getB64Uri() {\n return canvas.toDataURL(mimeType, options.quality);\n };\n\n switch (options.output) {\n case 'blob-promise':\n return new Promise$1(function (resolve, reject) {\n try {\n canvas.toBlob(function (blob) {\n if (blob != null) {\n resolve(blob);\n } else {\n reject(new Error('`canvas.toBlob()` sent a null value in its callback'));\n }\n }, mimeType, options.quality);\n } catch (err) {\n reject(err);\n }\n });\n\n case 'blob':\n return b64ToBlob(b64UriToB64(getB64Uri()), mimeType);\n\n case 'base64':\n return b64UriToB64(getB64Uri());\n\n case 'base64uri':\n default:\n return getB64Uri();\n }\n}\n\nCRp$8.png = function (options) {\n return output(options, this.bufferCanvasImage(options), 'image/png');\n};\n\nCRp$8.jpg = function (options) {\n return output(options, this.bufferCanvasImage(options), 'image/jpeg');\n};\n\nvar CRp$9 = {};\n\nCRp$9.nodeShapeImpl = function (name, context, centerX, centerY, width, height, points) {\n switch (name) {\n case 'ellipse':\n return this.drawEllipsePath(context, centerX, centerY, width, height);\n\n case 'polygon':\n return this.drawPolygonPath(context, centerX, centerY, width, height, points);\n\n case 'roundrectangle':\n case 'round-rectangle':\n return this.drawRoundRectanglePath(context, centerX, centerY, width, height);\n\n case 'cutrectangle':\n case 'cut-rectangle':\n return this.drawCutRectanglePath(context, centerX, centerY, width, height);\n\n case 'bottomroundrectangle':\n case 'bottom-round-rectangle':\n return this.drawBottomRoundRectanglePath(context, centerX, centerY, width, height);\n\n case 'barrel':\n return this.drawBarrelPath(context, centerX, centerY, width, height);\n }\n};\n\nvar CR = CanvasRenderer;\nvar CRp$a = CanvasRenderer.prototype;\nCRp$a.CANVAS_LAYERS = 3; //\n\nCRp$a.SELECT_BOX = 0;\nCRp$a.DRAG = 1;\nCRp$a.NODE = 2;\nCRp$a.BUFFER_COUNT = 3; //\n\nCRp$a.TEXTURE_BUFFER = 0;\nCRp$a.MOTIONBLUR_BUFFER_NODE = 1;\nCRp$a.MOTIONBLUR_BUFFER_DRAG = 2;\n\nfunction CanvasRenderer(options) {\n var r = this;\n r.data = {\n canvases: new Array(CRp$a.CANVAS_LAYERS),\n contexts: new Array(CRp$a.CANVAS_LAYERS),\n canvasNeedsRedraw: new Array(CRp$a.CANVAS_LAYERS),\n bufferCanvases: new Array(CRp$a.BUFFER_COUNT),\n bufferContexts: new Array(CRp$a.CANVAS_LAYERS)\n };\n var tapHlOffAttr = '-webkit-tap-highlight-color';\n var tapHlOffStyle = 'rgba(0,0,0,0)';\n r.data.canvasContainer = document.createElement('div'); // eslint-disable-line no-undef\n\n var containerStyle = r.data.canvasContainer.style;\n r.data.canvasContainer.style[tapHlOffAttr] = tapHlOffStyle;\n containerStyle.position = 'relative';\n containerStyle.zIndex = '0';\n containerStyle.overflow = 'hidden';\n var container = options.cy.container();\n container.appendChild(r.data.canvasContainer);\n container.style[tapHlOffAttr] = tapHlOffStyle;\n var styleMap = {\n '-webkit-user-select': 'none',\n '-moz-user-select': '-moz-none',\n 'user-select': 'none',\n '-webkit-tap-highlight-color': 'rgba(0,0,0,0)',\n 'outline-style': 'none'\n };\n\n if (ms()) {\n styleMap['-ms-touch-action'] = 'none';\n styleMap['touch-action'] = 'none';\n }\n\n for (var i = 0; i < CRp$a.CANVAS_LAYERS; i++) {\n var canvas = r.data.canvases[i] = document.createElement('canvas'); // eslint-disable-line no-undef\n\n r.data.contexts[i] = canvas.getContext('2d');\n Object.keys(styleMap).forEach(function (k) {\n canvas.style[k] = styleMap[k];\n });\n canvas.style.position = 'absolute';\n canvas.setAttribute('data-id', 'layer' + i);\n canvas.style.zIndex = String(CRp$a.CANVAS_LAYERS - i);\n r.data.canvasContainer.appendChild(canvas);\n r.data.canvasNeedsRedraw[i] = false;\n }\n\n r.data.topCanvas = r.data.canvases[0];\n r.data.canvases[CRp$a.NODE].setAttribute('data-id', 'layer' + CRp$a.NODE + '-node');\n r.data.canvases[CRp$a.SELECT_BOX].setAttribute('data-id', 'layer' + CRp$a.SELECT_BOX + '-selectbox');\n r.data.canvases[CRp$a.DRAG].setAttribute('data-id', 'layer' + CRp$a.DRAG + '-drag');\n\n for (var i = 0; i < CRp$a.BUFFER_COUNT; i++) {\n r.data.bufferCanvases[i] = document.createElement('canvas'); // eslint-disable-line no-undef\n\n r.data.bufferContexts[i] = r.data.bufferCanvases[i].getContext('2d');\n r.data.bufferCanvases[i].style.position = 'absolute';\n r.data.bufferCanvases[i].setAttribute('data-id', 'buffer' + i);\n r.data.bufferCanvases[i].style.zIndex = String(-i - 1);\n r.data.bufferCanvases[i].style.visibility = 'hidden'; //r.data.canvasContainer.appendChild(r.data.bufferCanvases[i]);\n }\n\n r.pathsEnabled = true;\n var emptyBb = makeBoundingBox();\n\n var getBoxCenter = function getBoxCenter(bb) {\n return {\n x: (bb.x1 + bb.x2) / 2,\n y: (bb.y1 + bb.y2) / 2\n };\n };\n\n var getCenterOffset = function getCenterOffset(bb) {\n return {\n x: -bb.w / 2,\n y: -bb.h / 2\n };\n };\n\n var backgroundTimestampHasChanged = function backgroundTimestampHasChanged(ele) {\n var _p = ele[0]._private;\n var same = _p.oldBackgroundTimestamp === _p.backgroundTimestamp;\n return !same;\n };\n\n var getStyleKey = function getStyleKey(ele) {\n return ele[0]._private.nodeKey;\n };\n\n var getLabelKey = function getLabelKey(ele) {\n return ele[0]._private.labelStyleKey;\n };\n\n var getSourceLabelKey = function getSourceLabelKey(ele) {\n return ele[0]._private.sourceLabelStyleKey;\n };\n\n var getTargetLabelKey = function getTargetLabelKey(ele) {\n return ele[0]._private.targetLabelStyleKey;\n };\n\n var drawElement = function drawElement(context, ele, bb, scaledLabelShown, useEleOpacity) {\n return r.drawElement(context, ele, bb, false, false, useEleOpacity);\n };\n\n var drawLabel = function drawLabel(context, ele, bb, scaledLabelShown, useEleOpacity) {\n return r.drawElementText(context, ele, bb, scaledLabelShown, 'main', useEleOpacity);\n };\n\n var drawSourceLabel = function drawSourceLabel(context, ele, bb, scaledLabelShown, useEleOpacity) {\n return r.drawElementText(context, ele, bb, scaledLabelShown, 'source', useEleOpacity);\n };\n\n var drawTargetLabel = function drawTargetLabel(context, ele, bb, scaledLabelShown, useEleOpacity) {\n return r.drawElementText(context, ele, bb, scaledLabelShown, 'target', useEleOpacity);\n };\n\n var getElementBox = function getElementBox(ele) {\n ele.boundingBox();\n return ele[0]._private.bodyBounds;\n };\n\n var getLabelBox = function getLabelBox(ele) {\n ele.boundingBox();\n return ele[0]._private.labelBounds.main || emptyBb;\n };\n\n var getSourceLabelBox = function getSourceLabelBox(ele) {\n ele.boundingBox();\n return ele[0]._private.labelBounds.source || emptyBb;\n };\n\n var getTargetLabelBox = function getTargetLabelBox(ele) {\n ele.boundingBox();\n return ele[0]._private.labelBounds.target || emptyBb;\n };\n\n var isLabelVisibleAtScale = function isLabelVisibleAtScale(ele, scaledLabelShown) {\n return scaledLabelShown;\n };\n\n var getElementRotationPoint = function getElementRotationPoint(ele) {\n return getBoxCenter(getElementBox(ele));\n };\n\n var addTextMargin = function addTextMargin(pt, ele) {\n return {\n x: pt.x + ele.pstyle('text-margin-x').pfValue,\n y: pt.y + ele.pstyle('text-margin-y').pfValue\n };\n };\n\n var getRsPt = function getRsPt(ele, x, y) {\n var rs = ele[0]._private.rscratch;\n return {\n x: rs[x],\n y: rs[y]\n };\n };\n\n var getLabelRotationPoint = function getLabelRotationPoint(ele) {\n return addTextMargin(getRsPt(ele, 'labelX', 'labelY'), ele);\n };\n\n var getSourceLabelRotationPoint = function getSourceLabelRotationPoint(ele) {\n return addTextMargin(getRsPt(ele, 'sourceLabelX', 'sourceLabelY'), ele);\n };\n\n var getTargetLabelRotationPoint = function getTargetLabelRotationPoint(ele) {\n return addTextMargin(getRsPt(ele, 'targetLabelX', 'targetLabelY'), ele);\n };\n\n var getElementRotationOffset = function getElementRotationOffset(ele) {\n return getCenterOffset(getElementBox(ele));\n };\n\n var getSourceLabelRotationOffset = function getSourceLabelRotationOffset(ele) {\n return getCenterOffset(getSourceLabelBox(ele));\n };\n\n var getTargetLabelRotationOffset = function getTargetLabelRotationOffset(ele) {\n return getCenterOffset(getTargetLabelBox(ele));\n };\n\n var getLabelRotationOffset = function getLabelRotationOffset(ele) {\n var bb = getLabelBox(ele);\n var p = getCenterOffset(getLabelBox(ele));\n\n if (ele.isNode()) {\n switch (ele.pstyle('text-halign').value) {\n case 'left':\n p.x = -bb.w;\n break;\n\n case 'right':\n p.x = 0;\n break;\n }\n\n switch (ele.pstyle('text-valign').value) {\n case 'top':\n p.y = -bb.h;\n break;\n\n case 'bottom':\n p.y = 0;\n break;\n }\n }\n\n return p;\n };\n\n var eleTxrCache = r.data.eleTxrCache = new ElementTextureCache(r, {\n getKey: getStyleKey,\n doesEleInvalidateKey: backgroundTimestampHasChanged,\n drawElement: drawElement,\n getBoundingBox: getElementBox,\n getRotationPoint: getElementRotationPoint,\n getRotationOffset: getElementRotationOffset,\n allowEdgeTxrCaching: false,\n allowParentTxrCaching: false\n });\n var lblTxrCache = r.data.lblTxrCache = new ElementTextureCache(r, {\n getKey: getLabelKey,\n drawElement: drawLabel,\n getBoundingBox: getLabelBox,\n getRotationPoint: getLabelRotationPoint,\n getRotationOffset: getLabelRotationOffset,\n isVisible: isLabelVisibleAtScale\n });\n var slbTxrCache = r.data.slbTxrCache = new ElementTextureCache(r, {\n getKey: getSourceLabelKey,\n drawElement: drawSourceLabel,\n getBoundingBox: getSourceLabelBox,\n getRotationPoint: getSourceLabelRotationPoint,\n getRotationOffset: getSourceLabelRotationOffset,\n isVisible: isLabelVisibleAtScale\n });\n var tlbTxrCache = r.data.tlbTxrCache = new ElementTextureCache(r, {\n getKey: getTargetLabelKey,\n drawElement: drawTargetLabel,\n getBoundingBox: getTargetLabelBox,\n getRotationPoint: getTargetLabelRotationPoint,\n getRotationOffset: getTargetLabelRotationOffset,\n isVisible: isLabelVisibleAtScale\n });\n var lyrTxrCache = r.data.lyrTxrCache = new LayeredTextureCache(r);\n r.onUpdateEleCalcs(function invalidateTextureCaches(willDraw, eles) {\n // each cache should check for sub-key diff to see that the update affects that cache particularly\n eleTxrCache.invalidateElements(eles);\n lblTxrCache.invalidateElements(eles);\n slbTxrCache.invalidateElements(eles);\n tlbTxrCache.invalidateElements(eles); // any change invalidates the layers\n\n lyrTxrCache.invalidateElements(eles); // update the old bg timestamp so diffs can be done in the ele txr caches\n\n for (var _i = 0; _i < eles.length; _i++) {\n var _p = eles[_i]._private;\n _p.oldBackgroundTimestamp = _p.backgroundTimestamp;\n }\n });\n\n var refineInLayers = function refineInLayers(reqs) {\n for (var i = 0; i < reqs.length; i++) {\n lyrTxrCache.enqueueElementRefinement(reqs[i].ele);\n }\n };\n\n eleTxrCache.onDequeue(refineInLayers);\n lblTxrCache.onDequeue(refineInLayers);\n slbTxrCache.onDequeue(refineInLayers);\n tlbTxrCache.onDequeue(refineInLayers);\n}\n\nCRp$a.redrawHint = function (group, bool) {\n var r = this;\n\n switch (group) {\n case 'eles':\n r.data.canvasNeedsRedraw[CRp$a.NODE] = bool;\n break;\n\n case 'drag':\n r.data.canvasNeedsRedraw[CRp$a.DRAG] = bool;\n break;\n\n case 'select':\n r.data.canvasNeedsRedraw[CRp$a.SELECT_BOX] = bool;\n break;\n }\n}; // whether to use Path2D caching for drawing\n\n\nvar pathsImpld = typeof Path2D !== 'undefined';\n\nCRp$a.path2dEnabled = function (on) {\n if (on === undefined) {\n return this.pathsEnabled;\n }\n\n this.pathsEnabled = on ? true : false;\n};\n\nCRp$a.usePaths = function () {\n return pathsImpld && this.pathsEnabled;\n};\n\nCRp$a.setImgSmoothing = function (context, bool) {\n if (context.imageSmoothingEnabled != null) {\n context.imageSmoothingEnabled = bool;\n } else {\n context.webkitImageSmoothingEnabled = bool;\n context.mozImageSmoothingEnabled = bool;\n context.msImageSmoothingEnabled = bool;\n }\n};\n\nCRp$a.getImgSmoothing = function (context) {\n if (context.imageSmoothingEnabled != null) {\n return context.imageSmoothingEnabled;\n } else {\n return context.webkitImageSmoothingEnabled || context.mozImageSmoothingEnabled || context.msImageSmoothingEnabled;\n }\n};\n\nCRp$a.makeOffscreenCanvas = function (width, height) {\n var canvas;\n\n if ((typeof OffscreenCanvas === \"undefined\" ? \"undefined\" : _typeof(OffscreenCanvas)) !== (\"undefined\")) {\n canvas = new OffscreenCanvas(width, height);\n } else {\n canvas = document.createElement('canvas'); // eslint-disable-line no-undef\n\n canvas.width = width;\n canvas.height = height;\n }\n\n return canvas;\n};\n\n[CRp, CRp$1, CRp$2, CRp$3, CRp$4, CRp$5, CRp$6, CRp$7, CRp$8, CRp$9].forEach(function (props) {\n extend(CRp$a, props);\n});\n\nvar renderer = [{\n name: 'null',\n impl: NullRenderer\n}, {\n name: 'base',\n impl: BR\n}, {\n name: 'canvas',\n impl: CR\n}];\n\nvar incExts = [{\n type: 'layout',\n extensions: layout\n}, {\n type: 'renderer',\n extensions: renderer\n}];\n\nvar extensions = {}; // registered modules for extensions, indexed by name\n\nvar modules = {};\n\nfunction setExtension(type, name, registrant) {\n var ext = registrant;\n\n var overrideErr = function overrideErr(field) {\n error('Can not register `' + name + '` for `' + type + '` since `' + field + '` already exists in the prototype and can not be overridden');\n };\n\n if (type === 'core') {\n if (Core.prototype[name]) {\n return overrideErr(name);\n } else {\n Core.prototype[name] = registrant;\n }\n } else if (type === 'collection') {\n if (Collection.prototype[name]) {\n return overrideErr(name);\n } else {\n Collection.prototype[name] = registrant;\n }\n } else if (type === 'layout') {\n // fill in missing layout functions in the prototype\n var Layout = function Layout(options) {\n this.options = options;\n registrant.call(this, options); // make sure layout has _private for use w/ std apis like .on()\n\n if (!plainObject(this._private)) {\n this._private = {};\n }\n\n this._private.cy = options.cy;\n this._private.listeners = [];\n this.createEmitter();\n };\n\n var layoutProto = Layout.prototype = Object.create(registrant.prototype);\n var optLayoutFns = [];\n\n for (var i = 0; i < optLayoutFns.length; i++) {\n var fnName = optLayoutFns[i];\n\n layoutProto[fnName] = layoutProto[fnName] || function () {\n return this;\n };\n } // either .start() or .run() is defined, so autogen the other\n\n\n if (layoutProto.start && !layoutProto.run) {\n layoutProto.run = function () {\n this.start();\n return this;\n };\n } else if (!layoutProto.start && layoutProto.run) {\n layoutProto.start = function () {\n this.run();\n return this;\n };\n }\n\n var regStop = registrant.prototype.stop;\n\n layoutProto.stop = function () {\n var opts = this.options;\n\n if (opts && opts.animate) {\n var anis = this.animations;\n\n if (anis) {\n for (var _i = 0; _i < anis.length; _i++) {\n anis[_i].stop();\n }\n }\n }\n\n if (regStop) {\n regStop.call(this);\n } else {\n this.emit('layoutstop');\n }\n\n return this;\n };\n\n if (!layoutProto.destroy) {\n layoutProto.destroy = function () {\n return this;\n };\n }\n\n layoutProto.cy = function () {\n return this._private.cy;\n };\n\n var getCy = function getCy(layout) {\n return layout._private.cy;\n };\n\n var emitterOpts = {\n addEventFields: function addEventFields(layout, evt) {\n evt.layout = layout;\n evt.cy = getCy(layout);\n evt.target = layout;\n },\n bubble: function bubble() {\n return true;\n },\n parent: function parent(layout) {\n return getCy(layout);\n }\n };\n extend(layoutProto, {\n createEmitter: function createEmitter() {\n this._private.emitter = new Emitter(emitterOpts, this);\n return this;\n },\n emitter: function emitter() {\n return this._private.emitter;\n },\n on: function on(evt, cb) {\n this.emitter().on(evt, cb);\n return this;\n },\n one: function one(evt, cb) {\n this.emitter().one(evt, cb);\n return this;\n },\n once: function once(evt, cb) {\n this.emitter().one(evt, cb);\n return this;\n },\n removeListener: function removeListener(evt, cb) {\n this.emitter().removeListener(evt, cb);\n return this;\n },\n removeAllListeners: function removeAllListeners() {\n this.emitter().removeAllListeners();\n return this;\n },\n emit: function emit(evt, params) {\n this.emitter().emit(evt, params);\n return this;\n }\n });\n define$3.eventAliasesOn(layoutProto);\n ext = Layout; // replace with our wrapped layout\n } else if (type === 'renderer' && name !== 'null' && name !== 'base') {\n // user registered renderers inherit from base\n var BaseRenderer = getExtension('renderer', 'base');\n var bProto = BaseRenderer.prototype;\n var RegistrantRenderer = registrant;\n var rProto = registrant.prototype;\n\n var Renderer = function Renderer() {\n BaseRenderer.apply(this, arguments);\n RegistrantRenderer.apply(this, arguments);\n };\n\n var proto = Renderer.prototype;\n\n for (var pName in bProto) {\n var pVal = bProto[pName];\n var existsInR = rProto[pName] != null;\n\n if (existsInR) {\n return overrideErr(pName);\n }\n\n proto[pName] = pVal; // take impl from base\n }\n\n for (var _pName in rProto) {\n proto[_pName] = rProto[_pName]; // take impl from registrant\n }\n\n bProto.clientFunctions.forEach(function (name) {\n proto[name] = proto[name] || function () {\n error('Renderer does not implement `renderer.' + name + '()` on its prototype');\n };\n });\n ext = Renderer;\n }\n\n return setMap({\n map: extensions,\n keys: [type, name],\n value: ext\n });\n}\n\nfunction getExtension(type, name) {\n return getMap({\n map: extensions,\n keys: [type, name]\n });\n}\n\nfunction setModule(type, name, moduleType, moduleName, registrant) {\n return setMap({\n map: modules,\n keys: [type, name, moduleType, moduleName],\n value: registrant\n });\n}\n\nfunction getModule(type, name, moduleType, moduleName) {\n return getMap({\n map: modules,\n keys: [type, name, moduleType, moduleName]\n });\n}\n\nvar extension = function extension() {\n // e.g. extension('renderer', 'svg')\n if (arguments.length === 2) {\n return getExtension.apply(null, arguments);\n } // e.g. extension('renderer', 'svg', { ... })\n else if (arguments.length === 3) {\n return setExtension.apply(null, arguments);\n } // e.g. extension('renderer', 'svg', 'nodeShape', 'ellipse')\n else if (arguments.length === 4) {\n return getModule.apply(null, arguments);\n } // e.g. extension('renderer', 'svg', 'nodeShape', 'ellipse', { ... })\n else if (arguments.length === 5) {\n return setModule.apply(null, arguments);\n } else {\n error('Invalid extension access syntax');\n }\n}; // allows a core instance to access extensions internally\n\n\nCore.prototype.extension = extension; // included extensions\n\nincExts.forEach(function (group) {\n group.extensions.forEach(function (ext) {\n setExtension(group.type, ext.name, ext.impl);\n });\n});\n\n// (useful for init)\n\nvar Stylesheet = function Stylesheet() {\n if (!(this instanceof Stylesheet)) {\n return new Stylesheet();\n }\n\n this.length = 0;\n};\n\nvar sheetfn = Stylesheet.prototype;\n\nsheetfn.instanceString = function () {\n return 'stylesheet';\n}; // just store the selector to be parsed later\n\n\nsheetfn.selector = function (selector) {\n var i = this.length++;\n this[i] = {\n selector: selector,\n properties: []\n };\n return this; // chaining\n}; // just store the property to be parsed later\n\n\nsheetfn.css = function (name, value) {\n var i = this.length - 1;\n\n if (string(name)) {\n this[i].properties.push({\n name: name,\n value: value\n });\n } else if (plainObject(name)) {\n var map = name;\n var propNames = Object.keys(map);\n\n for (var j = 0; j < propNames.length; j++) {\n var key = propNames[j];\n var mapVal = map[key];\n\n if (mapVal == null) {\n continue;\n }\n\n var prop = Style.properties[key] || Style.properties[dash2camel(key)];\n\n if (prop == null) {\n continue;\n }\n\n var _name = prop.name;\n var _value = mapVal;\n this[i].properties.push({\n name: _name,\n value: _value\n });\n }\n }\n\n return this; // chaining\n};\n\nsheetfn.style = sheetfn.css; // generate a real style object from the dummy stylesheet\n\nsheetfn.generateStyle = function (cy) {\n var style = new Style(cy);\n return this.appendToStyle(style);\n}; // append a dummy stylesheet object on a real style object\n\n\nsheetfn.appendToStyle = function (style) {\n for (var i = 0; i < this.length; i++) {\n var context = this[i];\n var selector = context.selector;\n var props = context.properties;\n style.selector(selector); // apply selector\n\n for (var j = 0; j < props.length; j++) {\n var prop = props[j];\n style.css(prop.name, prop.value); // apply property\n }\n }\n\n return style;\n};\n\nvar version = \"3.7.2\";\n\nvar cytoscape = function cytoscape(options) {\n // if no options specified, use default\n if (options === undefined) {\n options = {};\n } // create instance\n\n\n if (plainObject(options)) {\n return new Core(options);\n } // allow for registration of extensions\n else if (string(options)) {\n return extension.apply(extension, arguments);\n }\n}; // e.g. cytoscape.use( require('cytoscape-foo'), bar )\n\n\ncytoscape.use = function (ext) {\n var args = Array.prototype.slice.call(arguments, 1); // args to pass to ext\n\n args.unshift(cytoscape); // cytoscape is first arg to ext\n\n ext.apply(null, args);\n return this;\n};\n\ncytoscape.warnings = function (bool) {\n return warnings(bool);\n}; // replaced by build system\n\n\ncytoscape.version = version; // expose public apis (mostly for extensions)\n\ncytoscape.stylesheet = cytoscape.Stylesheet = Stylesheet;\n\nmodule.exports = cytoscape;\n","'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","module.exports = clamp\n\nfunction clamp(value, min, max) {\n return min < max\n ? (value < min ? min : value > max ? max : value)\n : (value < max ? max : value > min ? min : value)\n}\n","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"layout-base\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"layout-base\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"coseBase\"] = factory(require(\"layout-base\"));\n\telse\n\t\troot[\"coseBase\"] = factory(root[\"layoutBase\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_0__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// identity function for calling harmony imports with the correct context\n/******/ \t__webpack_require__.i = function(value) { return value; };\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 7);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_0__;\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar FDLayoutConstants = __webpack_require__(0).FDLayoutConstants;\n\nfunction CoSEConstants() {}\n\n//CoSEConstants inherits static props in FDLayoutConstants\nfor (var prop in FDLayoutConstants) {\n CoSEConstants[prop] = FDLayoutConstants[prop];\n}\n\nCoSEConstants.DEFAULT_USE_MULTI_LEVEL_SCALING = false;\nCoSEConstants.DEFAULT_RADIAL_SEPARATION = FDLayoutConstants.DEFAULT_EDGE_LENGTH;\nCoSEConstants.DEFAULT_COMPONENT_SEPERATION = 60;\nCoSEConstants.TILE = true;\nCoSEConstants.TILING_PADDING_VERTICAL = 10;\nCoSEConstants.TILING_PADDING_HORIZONTAL = 10;\nCoSEConstants.TREE_REDUCTION_ON_INCREMENTAL = false; // make this true when cose is used incrementally as a part of other non-incremental layout\n\nmodule.exports = CoSEConstants;\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar FDLayoutEdge = __webpack_require__(0).FDLayoutEdge;\n\nfunction CoSEEdge(source, target, vEdge) {\n FDLayoutEdge.call(this, source, target, vEdge);\n}\n\nCoSEEdge.prototype = Object.create(FDLayoutEdge.prototype);\nfor (var prop in FDLayoutEdge) {\n CoSEEdge[prop] = FDLayoutEdge[prop];\n}\n\nmodule.exports = CoSEEdge;\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar LGraph = __webpack_require__(0).LGraph;\n\nfunction CoSEGraph(parent, graphMgr, vGraph) {\n LGraph.call(this, parent, graphMgr, vGraph);\n}\n\nCoSEGraph.prototype = Object.create(LGraph.prototype);\nfor (var prop in LGraph) {\n CoSEGraph[prop] = LGraph[prop];\n}\n\nmodule.exports = CoSEGraph;\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar LGraphManager = __webpack_require__(0).LGraphManager;\n\nfunction CoSEGraphManager(layout) {\n LGraphManager.call(this, layout);\n}\n\nCoSEGraphManager.prototype = Object.create(LGraphManager.prototype);\nfor (var prop in LGraphManager) {\n CoSEGraphManager[prop] = LGraphManager[prop];\n}\n\nmodule.exports = CoSEGraphManager;\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar FDLayoutNode = __webpack_require__(0).FDLayoutNode;\nvar IMath = __webpack_require__(0).IMath;\n\nfunction CoSENode(gm, loc, size, vNode) {\n FDLayoutNode.call(this, gm, loc, size, vNode);\n}\n\nCoSENode.prototype = Object.create(FDLayoutNode.prototype);\nfor (var prop in FDLayoutNode) {\n CoSENode[prop] = FDLayoutNode[prop];\n}\n\nCoSENode.prototype.move = function () {\n var layout = this.graphManager.getLayout();\n this.displacementX = layout.coolingFactor * (this.springForceX + this.repulsionForceX + this.gravitationForceX) / this.noOfChildren;\n this.displacementY = layout.coolingFactor * (this.springForceY + this.repulsionForceY + this.gravitationForceY) / this.noOfChildren;\n\n if (Math.abs(this.displacementX) > layout.coolingFactor * layout.maxNodeDisplacement) {\n this.displacementX = layout.coolingFactor * layout.maxNodeDisplacement * IMath.sign(this.displacementX);\n }\n\n if (Math.abs(this.displacementY) > layout.coolingFactor * layout.maxNodeDisplacement) {\n this.displacementY = layout.coolingFactor * layout.maxNodeDisplacement * IMath.sign(this.displacementY);\n }\n\n // a simple node, just move it\n if (this.child == null) {\n this.moveBy(this.displacementX, this.displacementY);\n }\n // an empty compound node, again just move it\n else if (this.child.getNodes().length == 0) {\n this.moveBy(this.displacementX, this.displacementY);\n }\n // non-empty compound node, propogate movement to children as well\n else {\n this.propogateDisplacementToChildren(this.displacementX, this.displacementY);\n }\n\n layout.totalDisplacement += Math.abs(this.displacementX) + Math.abs(this.displacementY);\n\n this.springForceX = 0;\n this.springForceY = 0;\n this.repulsionForceX = 0;\n this.repulsionForceY = 0;\n this.gravitationForceX = 0;\n this.gravitationForceY = 0;\n this.displacementX = 0;\n this.displacementY = 0;\n};\n\nCoSENode.prototype.propogateDisplacementToChildren = function (dX, dY) {\n var nodes = this.getChild().getNodes();\n var node;\n for (var i = 0; i < nodes.length; i++) {\n node = nodes[i];\n if (node.getChild() == null) {\n node.moveBy(dX, dY);\n node.displacementX += dX;\n node.displacementY += dY;\n } else {\n node.propogateDisplacementToChildren(dX, dY);\n }\n }\n};\n\nCoSENode.prototype.setPred1 = function (pred1) {\n this.pred1 = pred1;\n};\n\nCoSENode.prototype.getPred1 = function () {\n return pred1;\n};\n\nCoSENode.prototype.getPred2 = function () {\n return pred2;\n};\n\nCoSENode.prototype.setNext = function (next) {\n this.next = next;\n};\n\nCoSENode.prototype.getNext = function () {\n return next;\n};\n\nCoSENode.prototype.setProcessed = function (processed) {\n this.processed = processed;\n};\n\nCoSENode.prototype.isProcessed = function () {\n return processed;\n};\n\nmodule.exports = CoSENode;\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar FDLayout = __webpack_require__(0).FDLayout;\nvar CoSEGraphManager = __webpack_require__(4);\nvar CoSEGraph = __webpack_require__(3);\nvar CoSENode = __webpack_require__(5);\nvar CoSEEdge = __webpack_require__(2);\nvar CoSEConstants = __webpack_require__(1);\nvar FDLayoutConstants = __webpack_require__(0).FDLayoutConstants;\nvar LayoutConstants = __webpack_require__(0).LayoutConstants;\nvar Point = __webpack_require__(0).Point;\nvar PointD = __webpack_require__(0).PointD;\nvar Layout = __webpack_require__(0).Layout;\nvar Integer = __webpack_require__(0).Integer;\nvar IGeometry = __webpack_require__(0).IGeometry;\nvar LGraph = __webpack_require__(0).LGraph;\nvar Transform = __webpack_require__(0).Transform;\n\nfunction CoSELayout() {\n FDLayout.call(this);\n\n this.toBeTiled = {}; // Memorize if a node is to be tiled or is tiled\n}\n\nCoSELayout.prototype = Object.create(FDLayout.prototype);\n\nfor (var prop in FDLayout) {\n CoSELayout[prop] = FDLayout[prop];\n}\n\nCoSELayout.prototype.newGraphManager = function () {\n var gm = new CoSEGraphManager(this);\n this.graphManager = gm;\n return gm;\n};\n\nCoSELayout.prototype.newGraph = function (vGraph) {\n return new CoSEGraph(null, this.graphManager, vGraph);\n};\n\nCoSELayout.prototype.newNode = function (vNode) {\n return new CoSENode(this.graphManager, vNode);\n};\n\nCoSELayout.prototype.newEdge = function (vEdge) {\n return new CoSEEdge(null, null, vEdge);\n};\n\nCoSELayout.prototype.initParameters = function () {\n FDLayout.prototype.initParameters.call(this, arguments);\n if (!this.isSubLayout) {\n if (CoSEConstants.DEFAULT_EDGE_LENGTH < 10) {\n this.idealEdgeLength = 10;\n } else {\n this.idealEdgeLength = CoSEConstants.DEFAULT_EDGE_LENGTH;\n }\n\n this.useSmartIdealEdgeLengthCalculation = CoSEConstants.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION;\n this.springConstant = FDLayoutConstants.DEFAULT_SPRING_STRENGTH;\n this.repulsionConstant = FDLayoutConstants.DEFAULT_REPULSION_STRENGTH;\n this.gravityConstant = FDLayoutConstants.DEFAULT_GRAVITY_STRENGTH;\n this.compoundGravityConstant = FDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_STRENGTH;\n this.gravityRangeFactor = FDLayoutConstants.DEFAULT_GRAVITY_RANGE_FACTOR;\n this.compoundGravityRangeFactor = FDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR;\n\n // variables for tree reduction support\n this.prunedNodesAll = [];\n this.growTreeIterations = 0;\n this.afterGrowthIterations = 0;\n this.isTreeGrowing = false;\n this.isGrowthFinished = false;\n\n // variables for cooling\n this.coolingCycle = 0;\n this.maxCoolingCycle = this.maxIterations / FDLayoutConstants.CONVERGENCE_CHECK_PERIOD;\n this.finalTemperature = FDLayoutConstants.CONVERGENCE_CHECK_PERIOD / this.maxIterations;\n this.coolingAdjuster = 1;\n }\n};\n\nCoSELayout.prototype.layout = function () {\n var createBendsAsNeeded = LayoutConstants.DEFAULT_CREATE_BENDS_AS_NEEDED;\n if (createBendsAsNeeded) {\n this.createBendpoints();\n this.graphManager.resetAllEdges();\n }\n\n this.level = 0;\n return this.classicLayout();\n};\n\nCoSELayout.prototype.classicLayout = function () {\n this.nodesWithGravity = this.calculateNodesToApplyGravitationTo();\n this.graphManager.setAllNodesToApplyGravitation(this.nodesWithGravity);\n this.calcNoOfChildrenForAllNodes();\n this.graphManager.calcLowestCommonAncestors();\n this.graphManager.calcInclusionTreeDepths();\n this.graphManager.getRoot().calcEstimatedSize();\n this.calcIdealEdgeLengths();\n\n if (!this.incremental) {\n var forest = this.getFlatForest();\n\n // The graph associated with this layout is flat and a forest\n if (forest.length > 0) {\n this.positionNodesRadially(forest);\n }\n // The graph associated with this layout is not flat or a forest\n else {\n // Reduce the trees when incremental mode is not enabled and graph is not a forest \n this.reduceTrees();\n // Update nodes that gravity will be applied\n this.graphManager.resetAllNodesToApplyGravitation();\n var allNodes = new Set(this.getAllNodes());\n var intersection = this.nodesWithGravity.filter(function (x) {\n return allNodes.has(x);\n });\n this.graphManager.setAllNodesToApplyGravitation(intersection);\n\n this.positionNodesRandomly();\n }\n } else {\n if (CoSEConstants.TREE_REDUCTION_ON_INCREMENTAL) {\n // Reduce the trees in incremental mode if only this constant is set to true \n this.reduceTrees();\n // Update nodes that gravity will be applied\n this.graphManager.resetAllNodesToApplyGravitation();\n var allNodes = new Set(this.getAllNodes());\n var intersection = this.nodesWithGravity.filter(function (x) {\n return allNodes.has(x);\n });\n this.graphManager.setAllNodesToApplyGravitation(intersection);\n }\n }\n\n this.initSpringEmbedder();\n this.runSpringEmbedder();\n\n return true;\n};\n\nCoSELayout.prototype.tick = function () {\n this.totalIterations++;\n\n if (this.totalIterations === this.maxIterations && !this.isTreeGrowing && !this.isGrowthFinished) {\n if (this.prunedNodesAll.length > 0) {\n this.isTreeGrowing = true;\n } else {\n return true;\n }\n }\n\n if (this.totalIterations % FDLayoutConstants.CONVERGENCE_CHECK_PERIOD == 0 && !this.isTreeGrowing && !this.isGrowthFinished) {\n if (this.isConverged()) {\n if (this.prunedNodesAll.length > 0) {\n this.isTreeGrowing = true;\n } else {\n return true;\n }\n }\n\n this.coolingCycle++;\n\n if (this.layoutQuality == 0) {\n // quality - \"draft\"\n this.coolingAdjuster = this.coolingCycle;\n } else if (this.layoutQuality == 1) {\n // quality - \"default\"\n this.coolingAdjuster = this.coolingCycle / 3;\n }\n\n // cooling schedule is based on http://www.btluke.com/simanf1.html -> cooling schedule 3\n this.coolingFactor = Math.max(this.initialCoolingFactor - Math.pow(this.coolingCycle, Math.log(100 * (this.initialCoolingFactor - this.finalTemperature)) / Math.log(this.maxCoolingCycle)) / 100 * this.coolingAdjuster, this.finalTemperature);\n this.animationPeriod = Math.ceil(this.initialAnimationPeriod * Math.sqrt(this.coolingFactor));\n }\n // Operations while tree is growing again \n if (this.isTreeGrowing) {\n if (this.growTreeIterations % 10 == 0) {\n if (this.prunedNodesAll.length > 0) {\n this.graphManager.updateBounds();\n this.updateGrid();\n this.growTree(this.prunedNodesAll);\n // Update nodes that gravity will be applied\n this.graphManager.resetAllNodesToApplyGravitation();\n var allNodes = new Set(this.getAllNodes());\n var intersection = this.nodesWithGravity.filter(function (x) {\n return allNodes.has(x);\n });\n this.graphManager.setAllNodesToApplyGravitation(intersection);\n\n this.graphManager.updateBounds();\n this.updateGrid();\n this.coolingFactor = FDLayoutConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL;\n } else {\n this.isTreeGrowing = false;\n this.isGrowthFinished = true;\n }\n }\n this.growTreeIterations++;\n }\n // Operations after growth is finished\n if (this.isGrowthFinished) {\n if (this.isConverged()) {\n return true;\n }\n if (this.afterGrowthIterations % 10 == 0) {\n this.graphManager.updateBounds();\n this.updateGrid();\n }\n this.coolingFactor = FDLayoutConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL * ((100 - this.afterGrowthIterations) / 100);\n this.afterGrowthIterations++;\n }\n\n var gridUpdateAllowed = !this.isTreeGrowing && !this.isGrowthFinished;\n var forceToNodeSurroundingUpdate = this.growTreeIterations % 10 == 1 && this.isTreeGrowing || this.afterGrowthIterations % 10 == 1 && this.isGrowthFinished;\n\n this.totalDisplacement = 0;\n this.graphManager.updateBounds();\n this.calcSpringForces();\n this.calcRepulsionForces(gridUpdateAllowed, forceToNodeSurroundingUpdate);\n this.calcGravitationalForces();\n this.moveNodes();\n this.animate();\n\n return false; // Layout is not ended yet return false\n};\n\nCoSELayout.prototype.getPositionsData = function () {\n var allNodes = this.graphManager.getAllNodes();\n var pData = {};\n for (var i = 0; i < allNodes.length; i++) {\n var rect = allNodes[i].rect;\n var id = allNodes[i].id;\n pData[id] = {\n id: id,\n x: rect.getCenterX(),\n y: rect.getCenterY(),\n w: rect.width,\n h: rect.height\n };\n }\n\n return pData;\n};\n\nCoSELayout.prototype.runSpringEmbedder = function () {\n this.initialAnimationPeriod = 25;\n this.animationPeriod = this.initialAnimationPeriod;\n var layoutEnded = false;\n\n // If aminate option is 'during' signal that layout is supposed to start iterating\n if (FDLayoutConstants.ANIMATE === 'during') {\n this.emit('layoutstarted');\n } else {\n // If aminate option is 'during' tick() function will be called on index.js\n while (!layoutEnded) {\n layoutEnded = this.tick();\n }\n\n this.graphManager.updateBounds();\n }\n};\n\nCoSELayout.prototype.calculateNodesToApplyGravitationTo = function () {\n var nodeList = [];\n var graph;\n\n var graphs = this.graphManager.getGraphs();\n var size = graphs.length;\n var i;\n for (i = 0; i < size; i++) {\n graph = graphs[i];\n\n graph.updateConnected();\n\n if (!graph.isConnected) {\n nodeList = nodeList.concat(graph.getNodes());\n }\n }\n\n return nodeList;\n};\n\nCoSELayout.prototype.createBendpoints = function () {\n var edges = [];\n edges = edges.concat(this.graphManager.getAllEdges());\n var visited = new Set();\n var i;\n for (i = 0; i < edges.length; i++) {\n var edge = edges[i];\n\n if (!visited.has(edge)) {\n var source = edge.getSource();\n var target = edge.getTarget();\n\n if (source == target) {\n edge.getBendpoints().push(new PointD());\n edge.getBendpoints().push(new PointD());\n this.createDummyNodesForBendpoints(edge);\n visited.add(edge);\n } else {\n var edgeList = [];\n\n edgeList = edgeList.concat(source.getEdgeListToNode(target));\n edgeList = edgeList.concat(target.getEdgeListToNode(source));\n\n if (!visited.has(edgeList[0])) {\n if (edgeList.length > 1) {\n var k;\n for (k = 0; k < edgeList.length; k++) {\n var multiEdge = edgeList[k];\n multiEdge.getBendpoints().push(new PointD());\n this.createDummyNodesForBendpoints(multiEdge);\n }\n }\n edgeList.forEach(function (edge) {\n visited.add(edge);\n });\n }\n }\n }\n\n if (visited.size == edges.length) {\n break;\n }\n }\n};\n\nCoSELayout.prototype.positionNodesRadially = function (forest) {\n // We tile the trees to a grid row by row; first tree starts at (0,0)\n var currentStartingPoint = new Point(0, 0);\n var numberOfColumns = Math.ceil(Math.sqrt(forest.length));\n var height = 0;\n var currentY = 0;\n var currentX = 0;\n var point = new PointD(0, 0);\n\n for (var i = 0; i < forest.length; i++) {\n if (i % numberOfColumns == 0) {\n // Start of a new row, make the x coordinate 0, increment the\n // y coordinate with the max height of the previous row\n currentX = 0;\n currentY = height;\n\n if (i != 0) {\n currentY += CoSEConstants.DEFAULT_COMPONENT_SEPERATION;\n }\n\n height = 0;\n }\n\n var tree = forest[i];\n\n // Find the center of the tree\n var centerNode = Layout.findCenterOfTree(tree);\n\n // Set the staring point of the next tree\n currentStartingPoint.x = currentX;\n currentStartingPoint.y = currentY;\n\n // Do a radial layout starting with the center\n point = CoSELayout.radialLayout(tree, centerNode, currentStartingPoint);\n\n if (point.y > height) {\n height = Math.floor(point.y);\n }\n\n currentX = Math.floor(point.x + CoSEConstants.DEFAULT_COMPONENT_SEPERATION);\n }\n\n this.transform(new PointD(LayoutConstants.WORLD_CENTER_X - point.x / 2, LayoutConstants.WORLD_CENTER_Y - point.y / 2));\n};\n\nCoSELayout.radialLayout = function (tree, centerNode, startingPoint) {\n var radialSep = Math.max(this.maxDiagonalInTree(tree), CoSEConstants.DEFAULT_RADIAL_SEPARATION);\n CoSELayout.branchRadialLayout(centerNode, null, 0, 359, 0, radialSep);\n var bounds = LGraph.calculateBounds(tree);\n\n var transform = new Transform();\n transform.setDeviceOrgX(bounds.getMinX());\n transform.setDeviceOrgY(bounds.getMinY());\n transform.setWorldOrgX(startingPoint.x);\n transform.setWorldOrgY(startingPoint.y);\n\n for (var i = 0; i < tree.length; i++) {\n var node = tree[i];\n node.transform(transform);\n }\n\n var bottomRight = new PointD(bounds.getMaxX(), bounds.getMaxY());\n\n return transform.inverseTransformPoint(bottomRight);\n};\n\nCoSELayout.branchRadialLayout = function (node, parentOfNode, startAngle, endAngle, distance, radialSeparation) {\n // First, position this node by finding its angle.\n var halfInterval = (endAngle - startAngle + 1) / 2;\n\n if (halfInterval < 0) {\n halfInterval += 180;\n }\n\n var nodeAngle = (halfInterval + startAngle) % 360;\n var teta = nodeAngle * IGeometry.TWO_PI / 360;\n\n // Make polar to java cordinate conversion.\n var cos_teta = Math.cos(teta);\n var x_ = distance * Math.cos(teta);\n var y_ = distance * Math.sin(teta);\n\n node.setCenter(x_, y_);\n\n // Traverse all neighbors of this node and recursively call this\n // function.\n var neighborEdges = [];\n neighborEdges = neighborEdges.concat(node.getEdges());\n var childCount = neighborEdges.length;\n\n if (parentOfNode != null) {\n childCount--;\n }\n\n var branchCount = 0;\n\n var incEdgesCount = neighborEdges.length;\n var startIndex;\n\n var edges = node.getEdgesBetween(parentOfNode);\n\n // If there are multiple edges, prune them until there remains only one\n // edge.\n while (edges.length > 1) {\n //neighborEdges.remove(edges.remove(0));\n var temp = edges[0];\n edges.splice(0, 1);\n var index = neighborEdges.indexOf(temp);\n if (index >= 0) {\n neighborEdges.splice(index, 1);\n }\n incEdgesCount--;\n childCount--;\n }\n\n if (parentOfNode != null) {\n //assert edges.length == 1;\n startIndex = (neighborEdges.indexOf(edges[0]) + 1) % incEdgesCount;\n } else {\n startIndex = 0;\n }\n\n var stepAngle = Math.abs(endAngle - startAngle) / childCount;\n\n for (var i = startIndex; branchCount != childCount; i = ++i % incEdgesCount) {\n var currentNeighbor = neighborEdges[i].getOtherEnd(node);\n\n // Don't back traverse to root node in current tree.\n if (currentNeighbor == parentOfNode) {\n continue;\n }\n\n var childStartAngle = (startAngle + branchCount * stepAngle) % 360;\n var childEndAngle = (childStartAngle + stepAngle) % 360;\n\n CoSELayout.branchRadialLayout(currentNeighbor, node, childStartAngle, childEndAngle, distance + radialSeparation, radialSeparation);\n\n branchCount++;\n }\n};\n\nCoSELayout.maxDiagonalInTree = function (tree) {\n var maxDiagonal = Integer.MIN_VALUE;\n\n for (var i = 0; i < tree.length; i++) {\n var node = tree[i];\n var diagonal = node.getDiagonal();\n\n if (diagonal > maxDiagonal) {\n maxDiagonal = diagonal;\n }\n }\n\n return maxDiagonal;\n};\n\nCoSELayout.prototype.calcRepulsionRange = function () {\n // formula is 2 x (level + 1) x idealEdgeLength\n return 2 * (this.level + 1) * this.idealEdgeLength;\n};\n\n// Tiling methods\n\n// Group zero degree members whose parents are not to be tiled, create dummy parents where needed and fill memberGroups by their dummp parent id's\nCoSELayout.prototype.groupZeroDegreeMembers = function () {\n var self = this;\n // array of [parent_id x oneDegreeNode_id]\n var tempMemberGroups = {}; // A temporary map of parent node and its zero degree members\n this.memberGroups = {}; // A map of dummy parent node and its zero degree members whose parents are not to be tiled\n this.idToDummyNode = {}; // A map of id to dummy node \n\n var zeroDegree = []; // List of zero degree nodes whose parents are not to be tiled\n var allNodes = this.graphManager.getAllNodes();\n\n // Fill zero degree list\n for (var i = 0; i < allNodes.length; i++) {\n var node = allNodes[i];\n var parent = node.getParent();\n // If a node has zero degree and its parent is not to be tiled if exists add that node to zeroDegres list\n if (this.getNodeDegreeWithChildren(node) === 0 && (parent.id == undefined || !this.getToBeTiled(parent))) {\n zeroDegree.push(node);\n }\n }\n\n // Create a map of parent node and its zero degree members\n for (var i = 0; i < zeroDegree.length; i++) {\n var node = zeroDegree[i]; // Zero degree node itself\n var p_id = node.getParent().id; // Parent id\n\n if (typeof tempMemberGroups[p_id] === \"undefined\") tempMemberGroups[p_id] = [];\n\n tempMemberGroups[p_id] = tempMemberGroups[p_id].concat(node); // Push node to the list belongs to its parent in tempMemberGroups\n }\n\n // If there are at least two nodes at a level, create a dummy compound for them\n Object.keys(tempMemberGroups).forEach(function (p_id) {\n if (tempMemberGroups[p_id].length > 1) {\n var dummyCompoundId = \"DummyCompound_\" + p_id; // The id of dummy compound which will be created soon\n self.memberGroups[dummyCompoundId] = tempMemberGroups[p_id]; // Add dummy compound to memberGroups\n\n var parent = tempMemberGroups[p_id][0].getParent(); // The parent of zero degree nodes will be the parent of new dummy compound\n\n // Create a dummy compound with calculated id\n var dummyCompound = new CoSENode(self.graphManager);\n dummyCompound.id = dummyCompoundId;\n dummyCompound.paddingLeft = parent.paddingLeft || 0;\n dummyCompound.paddingRight = parent.paddingRight || 0;\n dummyCompound.paddingBottom = parent.paddingBottom || 0;\n dummyCompound.paddingTop = parent.paddingTop || 0;\n\n self.idToDummyNode[dummyCompoundId] = dummyCompound;\n\n var dummyParentGraph = self.getGraphManager().add(self.newGraph(), dummyCompound);\n var parentGraph = parent.getChild();\n\n // Add dummy compound to parent the graph\n parentGraph.add(dummyCompound);\n\n // For each zero degree node in this level remove it from its parent graph and add it to the graph of dummy parent\n for (var i = 0; i < tempMemberGroups[p_id].length; i++) {\n var node = tempMemberGroups[p_id][i];\n\n parentGraph.remove(node);\n dummyParentGraph.add(node);\n }\n }\n });\n};\n\nCoSELayout.prototype.clearCompounds = function () {\n var childGraphMap = {};\n var idToNode = {};\n\n // Get compound ordering by finding the inner one first\n this.performDFSOnCompounds();\n\n for (var i = 0; i < this.compoundOrder.length; i++) {\n\n idToNode[this.compoundOrder[i].id] = this.compoundOrder[i];\n childGraphMap[this.compoundOrder[i].id] = [].concat(this.compoundOrder[i].getChild().getNodes());\n\n // Remove children of compounds\n this.graphManager.remove(this.compoundOrder[i].getChild());\n this.compoundOrder[i].child = null;\n }\n\n this.graphManager.resetAllNodes();\n\n // Tile the removed children\n this.tileCompoundMembers(childGraphMap, idToNode);\n};\n\nCoSELayout.prototype.clearZeroDegreeMembers = function () {\n var self = this;\n var tiledZeroDegreePack = this.tiledZeroDegreePack = [];\n\n Object.keys(this.memberGroups).forEach(function (id) {\n var compoundNode = self.idToDummyNode[id]; // Get the dummy compound\n\n tiledZeroDegreePack[id] = self.tileNodes(self.memberGroups[id], compoundNode.paddingLeft + compoundNode.paddingRight);\n\n // Set the width and height of the dummy compound as calculated\n compoundNode.rect.width = tiledZeroDegreePack[id].width;\n compoundNode.rect.height = tiledZeroDegreePack[id].height;\n });\n};\n\nCoSELayout.prototype.repopulateCompounds = function () {\n for (var i = this.compoundOrder.length - 1; i >= 0; i--) {\n var lCompoundNode = this.compoundOrder[i];\n var id = lCompoundNode.id;\n var horizontalMargin = lCompoundNode.paddingLeft;\n var verticalMargin = lCompoundNode.paddingTop;\n\n this.adjustLocations(this.tiledMemberPack[id], lCompoundNode.rect.x, lCompoundNode.rect.y, horizontalMargin, verticalMargin);\n }\n};\n\nCoSELayout.prototype.repopulateZeroDegreeMembers = function () {\n var self = this;\n var tiledPack = this.tiledZeroDegreePack;\n\n Object.keys(tiledPack).forEach(function (id) {\n var compoundNode = self.idToDummyNode[id]; // Get the dummy compound by its id\n var horizontalMargin = compoundNode.paddingLeft;\n var verticalMargin = compoundNode.paddingTop;\n\n // Adjust the positions of nodes wrt its compound\n self.adjustLocations(tiledPack[id], compoundNode.rect.x, compoundNode.rect.y, horizontalMargin, verticalMargin);\n });\n};\n\nCoSELayout.prototype.getToBeTiled = function (node) {\n var id = node.id;\n //firstly check the previous results\n if (this.toBeTiled[id] != null) {\n return this.toBeTiled[id];\n }\n\n //only compound nodes are to be tiled\n var childGraph = node.getChild();\n if (childGraph == null) {\n this.toBeTiled[id] = false;\n return false;\n }\n\n var children = childGraph.getNodes(); // Get the children nodes\n\n //a compound node is not to be tiled if all of its compound children are not to be tiled\n for (var i = 0; i < children.length; i++) {\n var theChild = children[i];\n\n if (this.getNodeDegree(theChild) > 0) {\n this.toBeTiled[id] = false;\n return false;\n }\n\n //pass the children not having the compound structure\n if (theChild.getChild() == null) {\n this.toBeTiled[theChild.id] = false;\n continue;\n }\n\n if (!this.getToBeTiled(theChild)) {\n this.toBeTiled[id] = false;\n return false;\n }\n }\n this.toBeTiled[id] = true;\n return true;\n};\n\n// Get degree of a node depending of its edges and independent of its children\nCoSELayout.prototype.getNodeDegree = function (node) {\n var id = node.id;\n var edges = node.getEdges();\n var degree = 0;\n\n // For the edges connected\n for (var i = 0; i < edges.length; i++) {\n var edge = edges[i];\n if (edge.getSource().id !== edge.getTarget().id) {\n degree = degree + 1;\n }\n }\n return degree;\n};\n\n// Get degree of a node with its children\nCoSELayout.prototype.getNodeDegreeWithChildren = function (node) {\n var degree = this.getNodeDegree(node);\n if (node.getChild() == null) {\n return degree;\n }\n var children = node.getChild().getNodes();\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n degree += this.getNodeDegreeWithChildren(child);\n }\n return degree;\n};\n\nCoSELayout.prototype.performDFSOnCompounds = function () {\n this.compoundOrder = [];\n this.fillCompexOrderByDFS(this.graphManager.getRoot().getNodes());\n};\n\nCoSELayout.prototype.fillCompexOrderByDFS = function (children) {\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n if (child.getChild() != null) {\n this.fillCompexOrderByDFS(child.getChild().getNodes());\n }\n if (this.getToBeTiled(child)) {\n this.compoundOrder.push(child);\n }\n }\n};\n\n/**\n* This method places each zero degree member wrt given (x,y) coordinates (top left).\n*/\nCoSELayout.prototype.adjustLocations = function (organization, x, y, compoundHorizontalMargin, compoundVerticalMargin) {\n x += compoundHorizontalMargin;\n y += compoundVerticalMargin;\n\n var left = x;\n\n for (var i = 0; i < organization.rows.length; i++) {\n var row = organization.rows[i];\n x = left;\n var maxHeight = 0;\n\n for (var j = 0; j < row.length; j++) {\n var lnode = row[j];\n\n lnode.rect.x = x; // + lnode.rect.width / 2;\n lnode.rect.y = y; // + lnode.rect.height / 2;\n\n x += lnode.rect.width + organization.horizontalPadding;\n\n if (lnode.rect.height > maxHeight) maxHeight = lnode.rect.height;\n }\n\n y += maxHeight + organization.verticalPadding;\n }\n};\n\nCoSELayout.prototype.tileCompoundMembers = function (childGraphMap, idToNode) {\n var self = this;\n this.tiledMemberPack = [];\n\n Object.keys(childGraphMap).forEach(function (id) {\n // Get the compound node\n var compoundNode = idToNode[id];\n\n self.tiledMemberPack[id] = self.tileNodes(childGraphMap[id], compoundNode.paddingLeft + compoundNode.paddingRight);\n\n compoundNode.rect.width = self.tiledMemberPack[id].width;\n compoundNode.rect.height = self.tiledMemberPack[id].height;\n });\n};\n\nCoSELayout.prototype.tileNodes = function (nodes, minWidth) {\n var verticalPadding = CoSEConstants.TILING_PADDING_VERTICAL;\n var horizontalPadding = CoSEConstants.TILING_PADDING_HORIZONTAL;\n var organization = {\n rows: [],\n rowWidth: [],\n rowHeight: [],\n width: 0,\n height: minWidth, // assume minHeight equals to minWidth\n verticalPadding: verticalPadding,\n horizontalPadding: horizontalPadding\n };\n\n // Sort the nodes in ascending order of their areas\n nodes.sort(function (n1, n2) {\n if (n1.rect.width * n1.rect.height > n2.rect.width * n2.rect.height) return -1;\n if (n1.rect.width * n1.rect.height < n2.rect.width * n2.rect.height) return 1;\n return 0;\n });\n\n // Create the organization -> tile members\n for (var i = 0; i < nodes.length; i++) {\n var lNode = nodes[i];\n\n if (organization.rows.length == 0) {\n this.insertNodeToRow(organization, lNode, 0, minWidth);\n } else if (this.canAddHorizontal(organization, lNode.rect.width, lNode.rect.height)) {\n this.insertNodeToRow(organization, lNode, this.getShortestRowIndex(organization), minWidth);\n } else {\n this.insertNodeToRow(organization, lNode, organization.rows.length, minWidth);\n }\n\n this.shiftToLastRow(organization);\n }\n\n return organization;\n};\n\nCoSELayout.prototype.insertNodeToRow = function (organization, node, rowIndex, minWidth) {\n var minCompoundSize = minWidth;\n\n // Add new row if needed\n if (rowIndex == organization.rows.length) {\n var secondDimension = [];\n\n organization.rows.push(secondDimension);\n organization.rowWidth.push(minCompoundSize);\n organization.rowHeight.push(0);\n }\n\n // Update row width\n var w = organization.rowWidth[rowIndex] + node.rect.width;\n\n if (organization.rows[rowIndex].length > 0) {\n w += organization.horizontalPadding;\n }\n\n organization.rowWidth[rowIndex] = w;\n // Update compound width\n if (organization.width < w) {\n organization.width = w;\n }\n\n // Update height\n var h = node.rect.height;\n if (rowIndex > 0) h += organization.verticalPadding;\n\n var extraHeight = 0;\n if (h > organization.rowHeight[rowIndex]) {\n extraHeight = organization.rowHeight[rowIndex];\n organization.rowHeight[rowIndex] = h;\n extraHeight = organization.rowHeight[rowIndex] - extraHeight;\n }\n\n organization.height += extraHeight;\n\n // Insert node\n organization.rows[rowIndex].push(node);\n};\n\n//Scans the rows of an organization and returns the one with the min width\nCoSELayout.prototype.getShortestRowIndex = function (organization) {\n var r = -1;\n var min = Number.MAX_VALUE;\n\n for (var i = 0; i < organization.rows.length; i++) {\n if (organization.rowWidth[i] < min) {\n r = i;\n min = organization.rowWidth[i];\n }\n }\n return r;\n};\n\n//Scans the rows of an organization and returns the one with the max width\nCoSELayout.prototype.getLongestRowIndex = function (organization) {\n var r = -1;\n var max = Number.MIN_VALUE;\n\n for (var i = 0; i < organization.rows.length; i++) {\n\n if (organization.rowWidth[i] > max) {\n r = i;\n max = organization.rowWidth[i];\n }\n }\n\n return r;\n};\n\n/**\n* This method checks whether adding extra width to the organization violates\n* the aspect ratio(1) or not.\n*/\nCoSELayout.prototype.canAddHorizontal = function (organization, extraWidth, extraHeight) {\n\n var sri = this.getShortestRowIndex(organization);\n\n if (sri < 0) {\n return true;\n }\n\n var min = organization.rowWidth[sri];\n\n if (min + organization.horizontalPadding + extraWidth <= organization.width) return true;\n\n var hDiff = 0;\n\n // Adding to an existing row\n if (organization.rowHeight[sri] < extraHeight) {\n if (sri > 0) hDiff = extraHeight + organization.verticalPadding - organization.rowHeight[sri];\n }\n\n var add_to_row_ratio;\n if (organization.width - min >= extraWidth + organization.horizontalPadding) {\n add_to_row_ratio = (organization.height + hDiff) / (min + extraWidth + organization.horizontalPadding);\n } else {\n add_to_row_ratio = (organization.height + hDiff) / organization.width;\n }\n\n // Adding a new row for this node\n hDiff = extraHeight + organization.verticalPadding;\n var add_new_row_ratio;\n if (organization.width < extraWidth) {\n add_new_row_ratio = (organization.height + hDiff) / extraWidth;\n } else {\n add_new_row_ratio = (organization.height + hDiff) / organization.width;\n }\n\n if (add_new_row_ratio < 1) add_new_row_ratio = 1 / add_new_row_ratio;\n\n if (add_to_row_ratio < 1) add_to_row_ratio = 1 / add_to_row_ratio;\n\n return add_to_row_ratio < add_new_row_ratio;\n};\n\n//If moving the last node from the longest row and adding it to the last\n//row makes the bounding box smaller, do it.\nCoSELayout.prototype.shiftToLastRow = function (organization) {\n var longest = this.getLongestRowIndex(organization);\n var last = organization.rowWidth.length - 1;\n var row = organization.rows[longest];\n var node = row[row.length - 1];\n\n var diff = node.width + organization.horizontalPadding;\n\n // Check if there is enough space on the last row\n if (organization.width - organization.rowWidth[last] > diff && longest != last) {\n // Remove the last element of the longest row\n row.splice(-1, 1);\n\n // Push it to the last row\n organization.rows[last].push(node);\n\n organization.rowWidth[longest] = organization.rowWidth[longest] - diff;\n organization.rowWidth[last] = organization.rowWidth[last] + diff;\n organization.width = organization.rowWidth[instance.getLongestRowIndex(organization)];\n\n // Update heights of the organization\n var maxHeight = Number.MIN_VALUE;\n for (var i = 0; i < row.length; i++) {\n if (row[i].height > maxHeight) maxHeight = row[i].height;\n }\n if (longest > 0) maxHeight += organization.verticalPadding;\n\n var prevTotal = organization.rowHeight[longest] + organization.rowHeight[last];\n\n organization.rowHeight[longest] = maxHeight;\n if (organization.rowHeight[last] < node.height + organization.verticalPadding) organization.rowHeight[last] = node.height + organization.verticalPadding;\n\n var finalTotal = organization.rowHeight[longest] + organization.rowHeight[last];\n organization.height += finalTotal - prevTotal;\n\n this.shiftToLastRow(organization);\n }\n};\n\nCoSELayout.prototype.tilingPreLayout = function () {\n if (CoSEConstants.TILE) {\n // Find zero degree nodes and create a compound for each level\n this.groupZeroDegreeMembers();\n // Tile and clear children of each compound\n this.clearCompounds();\n // Separately tile and clear zero degree nodes for each level\n this.clearZeroDegreeMembers();\n }\n};\n\nCoSELayout.prototype.tilingPostLayout = function () {\n if (CoSEConstants.TILE) {\n this.repopulateZeroDegreeMembers();\n this.repopulateCompounds();\n }\n};\n\n// -----------------------------------------------------------------------------\n// Section: Tree Reduction methods\n// -----------------------------------------------------------------------------\n// Reduce trees \nCoSELayout.prototype.reduceTrees = function () {\n var prunedNodesAll = [];\n var containsLeaf = true;\n var node;\n\n while (containsLeaf) {\n var allNodes = this.graphManager.getAllNodes();\n var prunedNodesInStepTemp = [];\n containsLeaf = false;\n\n for (var i = 0; i < allNodes.length; i++) {\n node = allNodes[i];\n if (node.getEdges().length == 1 && !node.getEdges()[0].isInterGraph && node.getChild() == null) {\n prunedNodesInStepTemp.push([node, node.getEdges()[0], node.getOwner()]);\n containsLeaf = true;\n }\n }\n if (containsLeaf == true) {\n var prunedNodesInStep = [];\n for (var j = 0; j < prunedNodesInStepTemp.length; j++) {\n if (prunedNodesInStepTemp[j][0].getEdges().length == 1) {\n prunedNodesInStep.push(prunedNodesInStepTemp[j]);\n prunedNodesInStepTemp[j][0].getOwner().remove(prunedNodesInStepTemp[j][0]);\n }\n }\n prunedNodesAll.push(prunedNodesInStep);\n this.graphManager.resetAllNodes();\n this.graphManager.resetAllEdges();\n }\n }\n this.prunedNodesAll = prunedNodesAll;\n};\n\n// Grow tree one step \nCoSELayout.prototype.growTree = function (prunedNodesAll) {\n var lengthOfPrunedNodesInStep = prunedNodesAll.length;\n var prunedNodesInStep = prunedNodesAll[lengthOfPrunedNodesInStep - 1];\n\n var nodeData;\n for (var i = 0; i < prunedNodesInStep.length; i++) {\n nodeData = prunedNodesInStep[i];\n\n this.findPlaceforPrunedNode(nodeData);\n\n nodeData[2].add(nodeData[0]);\n nodeData[2].add(nodeData[1], nodeData[1].source, nodeData[1].target);\n }\n\n prunedNodesAll.splice(prunedNodesAll.length - 1, 1);\n this.graphManager.resetAllNodes();\n this.graphManager.resetAllEdges();\n};\n\n// Find an appropriate position to replace pruned node, this method can be improved\nCoSELayout.prototype.findPlaceforPrunedNode = function (nodeData) {\n\n var gridForPrunedNode;\n var nodeToConnect;\n var prunedNode = nodeData[0];\n if (prunedNode == nodeData[1].source) {\n nodeToConnect = nodeData[1].target;\n } else {\n nodeToConnect = nodeData[1].source;\n }\n var startGridX = nodeToConnect.startX;\n var finishGridX = nodeToConnect.finishX;\n var startGridY = nodeToConnect.startY;\n var finishGridY = nodeToConnect.finishY;\n\n var upNodeCount = 0;\n var downNodeCount = 0;\n var rightNodeCount = 0;\n var leftNodeCount = 0;\n var controlRegions = [upNodeCount, rightNodeCount, downNodeCount, leftNodeCount];\n\n if (startGridY > 0) {\n for (var i = startGridX; i <= finishGridX; i++) {\n controlRegions[0] += this.grid[i][startGridY - 1].length + this.grid[i][startGridY].length - 1;\n }\n }\n if (finishGridX < this.grid.length - 1) {\n for (var i = startGridY; i <= finishGridY; i++) {\n controlRegions[1] += this.grid[finishGridX + 1][i].length + this.grid[finishGridX][i].length - 1;\n }\n }\n if (finishGridY < this.grid[0].length - 1) {\n for (var i = startGridX; i <= finishGridX; i++) {\n controlRegions[2] += this.grid[i][finishGridY + 1].length + this.grid[i][finishGridY].length - 1;\n }\n }\n if (startGridX > 0) {\n for (var i = startGridY; i <= finishGridY; i++) {\n controlRegions[3] += this.grid[startGridX - 1][i].length + this.grid[startGridX][i].length - 1;\n }\n }\n var min = Integer.MAX_VALUE;\n var minCount;\n var minIndex;\n for (var j = 0; j < controlRegions.length; j++) {\n if (controlRegions[j] < min) {\n min = controlRegions[j];\n minCount = 1;\n minIndex = j;\n } else if (controlRegions[j] == min) {\n minCount++;\n }\n }\n\n if (minCount == 3 && min == 0) {\n if (controlRegions[0] == 0 && controlRegions[1] == 0 && controlRegions[2] == 0) {\n gridForPrunedNode = 1;\n } else if (controlRegions[0] == 0 && controlRegions[1] == 0 && controlRegions[3] == 0) {\n gridForPrunedNode = 0;\n } else if (controlRegions[0] == 0 && controlRegions[2] == 0 && controlRegions[3] == 0) {\n gridForPrunedNode = 3;\n } else if (controlRegions[1] == 0 && controlRegions[2] == 0 && controlRegions[3] == 0) {\n gridForPrunedNode = 2;\n }\n } else if (minCount == 2 && min == 0) {\n var random = Math.floor(Math.random() * 2);\n if (controlRegions[0] == 0 && controlRegions[1] == 0) {\n ;\n if (random == 0) {\n gridForPrunedNode = 0;\n } else {\n gridForPrunedNode = 1;\n }\n } else if (controlRegions[0] == 0 && controlRegions[2] == 0) {\n if (random == 0) {\n gridForPrunedNode = 0;\n } else {\n gridForPrunedNode = 2;\n }\n } else if (controlRegions[0] == 0 && controlRegions[3] == 0) {\n if (random == 0) {\n gridForPrunedNode = 0;\n } else {\n gridForPrunedNode = 3;\n }\n } else if (controlRegions[1] == 0 && controlRegions[2] == 0) {\n if (random == 0) {\n gridForPrunedNode = 1;\n } else {\n gridForPrunedNode = 2;\n }\n } else if (controlRegions[1] == 0 && controlRegions[3] == 0) {\n if (random == 0) {\n gridForPrunedNode = 1;\n } else {\n gridForPrunedNode = 3;\n }\n } else {\n if (random == 0) {\n gridForPrunedNode = 2;\n } else {\n gridForPrunedNode = 3;\n }\n }\n } else if (minCount == 4 && min == 0) {\n var random = Math.floor(Math.random() * 4);\n gridForPrunedNode = random;\n } else {\n gridForPrunedNode = minIndex;\n }\n\n if (gridForPrunedNode == 0) {\n prunedNode.setCenter(nodeToConnect.getCenterX(), nodeToConnect.getCenterY() - nodeToConnect.getHeight() / 2 - FDLayoutConstants.DEFAULT_EDGE_LENGTH - prunedNode.getHeight() / 2);\n } else if (gridForPrunedNode == 1) {\n prunedNode.setCenter(nodeToConnect.getCenterX() + nodeToConnect.getWidth() / 2 + FDLayoutConstants.DEFAULT_EDGE_LENGTH + prunedNode.getWidth() / 2, nodeToConnect.getCenterY());\n } else if (gridForPrunedNode == 2) {\n prunedNode.setCenter(nodeToConnect.getCenterX(), nodeToConnect.getCenterY() + nodeToConnect.getHeight() / 2 + FDLayoutConstants.DEFAULT_EDGE_LENGTH + prunedNode.getHeight() / 2);\n } else {\n prunedNode.setCenter(nodeToConnect.getCenterX() - nodeToConnect.getWidth() / 2 - FDLayoutConstants.DEFAULT_EDGE_LENGTH - prunedNode.getWidth() / 2, nodeToConnect.getCenterY());\n }\n};\n\nmodule.exports = CoSELayout;\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar coseBase = {};\n\ncoseBase.layoutBase = __webpack_require__(0);\ncoseBase.CoSEConstants = __webpack_require__(1);\ncoseBase.CoSEEdge = __webpack_require__(2);\ncoseBase.CoSEGraph = __webpack_require__(3);\ncoseBase.CoSEGraphManager = __webpack_require__(4);\ncoseBase.CoSELayout = __webpack_require__(6);\ncoseBase.CoSENode = __webpack_require__(5);\n\nmodule.exports = coseBase;\n\n/***/ })\n/******/ ]);\n});","'use strict';\nvar collection = require('../internals/collection');\nvar collectionStrong = require('../internals/collection-strong');\n\n// `Set` constructor\n// https://tc39.es/ecma262/#sec-set-objects\nmodule.exports = collection('Set', function (init) {\n return function Set() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionStrong);\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar powergraph = require(\"./powergraph\");\r\nvar linklengths_1 = require(\"./linklengths\");\r\nvar descent_1 = require(\"./descent\");\r\nvar rectangle_1 = require(\"./rectangle\");\r\nvar shortestpaths_1 = require(\"./shortestpaths\");\r\nvar geom_1 = require(\"./geom\");\r\nvar handledisconnected_1 = require(\"./handledisconnected\");\r\nvar EventType;\r\n(function (EventType) {\r\n EventType[EventType[\"start\"] = 0] = \"start\";\r\n EventType[EventType[\"tick\"] = 1] = \"tick\";\r\n EventType[EventType[\"end\"] = 2] = \"end\";\r\n})(EventType = exports.EventType || (exports.EventType = {}));\r\n;\r\nfunction isGroup(g) {\r\n return typeof g.leaves !== 'undefined' || typeof g.groups !== 'undefined';\r\n}\r\nvar Layout = (function () {\r\n function Layout() {\r\n var _this = this;\r\n this._canvasSize = [1, 1];\r\n this._linkDistance = 20;\r\n this._defaultNodeSize = 10;\r\n this._linkLengthCalculator = null;\r\n this._linkType = null;\r\n this._avoidOverlaps = false;\r\n this._handleDisconnected = true;\r\n this._running = false;\r\n this._nodes = [];\r\n this._groups = [];\r\n this._rootGroup = null;\r\n this._links = [];\r\n this._constraints = [];\r\n this._distanceMatrix = null;\r\n this._descent = null;\r\n this._directedLinkConstraints = null;\r\n this._threshold = 0.01;\r\n this._visibilityGraph = null;\r\n this._groupCompactness = 1e-6;\r\n this.event = null;\r\n this.linkAccessor = {\r\n getSourceIndex: Layout.getSourceIndex,\r\n getTargetIndex: Layout.getTargetIndex,\r\n setLength: Layout.setLinkLength,\r\n getType: function (l) { return typeof _this._linkType === \"function\" ? _this._linkType(l) : 0; }\r\n };\r\n }\r\n Layout.prototype.on = function (e, listener) {\r\n if (!this.event)\r\n this.event = {};\r\n if (typeof e === 'string') {\r\n this.event[EventType[e]] = listener;\r\n }\r\n else {\r\n this.event[e] = listener;\r\n }\r\n return this;\r\n };\r\n Layout.prototype.trigger = function (e) {\r\n if (this.event && typeof this.event[e.type] !== 'undefined') {\r\n this.event[e.type](e);\r\n }\r\n };\r\n Layout.prototype.kick = function () {\r\n while (!this.tick())\r\n ;\r\n };\r\n Layout.prototype.tick = function () {\r\n if (this._alpha < this._threshold) {\r\n this._running = false;\r\n this.trigger({ type: EventType.end, alpha: this._alpha = 0, stress: this._lastStress });\r\n return true;\r\n }\r\n var n = this._nodes.length, m = this._links.length;\r\n var o, i;\r\n this._descent.locks.clear();\r\n for (i = 0; i < n; ++i) {\r\n o = this._nodes[i];\r\n if (o.fixed) {\r\n if (typeof o.px === 'undefined' || typeof o.py === 'undefined') {\r\n o.px = o.x;\r\n o.py = o.y;\r\n }\r\n var p = [o.px, o.py];\r\n this._descent.locks.add(i, p);\r\n }\r\n }\r\n var s1 = this._descent.rungeKutta();\r\n if (s1 === 0) {\r\n this._alpha = 0;\r\n }\r\n else if (typeof this._lastStress !== 'undefined') {\r\n this._alpha = s1;\r\n }\r\n this._lastStress = s1;\r\n this.updateNodePositions();\r\n this.trigger({ type: EventType.tick, alpha: this._alpha, stress: this._lastStress });\r\n return false;\r\n };\r\n Layout.prototype.updateNodePositions = function () {\r\n var x = this._descent.x[0], y = this._descent.x[1];\r\n var o, i = this._nodes.length;\r\n while (i--) {\r\n o = this._nodes[i];\r\n o.x = x[i];\r\n o.y = y[i];\r\n }\r\n };\r\n Layout.prototype.nodes = function (v) {\r\n if (!v) {\r\n if (this._nodes.length === 0 && this._links.length > 0) {\r\n var n = 0;\r\n this._links.forEach(function (l) {\r\n n = Math.max(n, l.source, l.target);\r\n });\r\n this._nodes = new Array(++n);\r\n for (var i = 0; i < n; ++i) {\r\n this._nodes[i] = {};\r\n }\r\n }\r\n return this._nodes;\r\n }\r\n this._nodes = v;\r\n return this;\r\n };\r\n Layout.prototype.groups = function (x) {\r\n var _this = this;\r\n if (!x)\r\n return this._groups;\r\n this._groups = x;\r\n this._rootGroup = {};\r\n this._groups.forEach(function (g) {\r\n if (typeof g.padding === \"undefined\")\r\n g.padding = 1;\r\n if (typeof g.leaves !== \"undefined\") {\r\n g.leaves.forEach(function (v, i) {\r\n if (typeof v === 'number')\r\n (g.leaves[i] = _this._nodes[v]).parent = g;\r\n });\r\n }\r\n if (typeof g.groups !== \"undefined\") {\r\n g.groups.forEach(function (gi, i) {\r\n if (typeof gi === 'number')\r\n (g.groups[i] = _this._groups[gi]).parent = g;\r\n });\r\n }\r\n });\r\n this._rootGroup.leaves = this._nodes.filter(function (v) { return typeof v.parent === 'undefined'; });\r\n this._rootGroup.groups = this._groups.filter(function (g) { return typeof g.parent === 'undefined'; });\r\n return this;\r\n };\r\n Layout.prototype.powerGraphGroups = function (f) {\r\n var g = powergraph.getGroups(this._nodes, this._links, this.linkAccessor, this._rootGroup);\r\n this.groups(g.groups);\r\n f(g);\r\n return this;\r\n };\r\n Layout.prototype.avoidOverlaps = function (v) {\r\n if (!arguments.length)\r\n return this._avoidOverlaps;\r\n this._avoidOverlaps = v;\r\n return this;\r\n };\r\n Layout.prototype.handleDisconnected = function (v) {\r\n if (!arguments.length)\r\n return this._handleDisconnected;\r\n this._handleDisconnected = v;\r\n return this;\r\n };\r\n Layout.prototype.flowLayout = function (axis, minSeparation) {\r\n if (!arguments.length)\r\n axis = 'y';\r\n this._directedLinkConstraints = {\r\n axis: axis,\r\n getMinSeparation: typeof minSeparation === 'number' ? function () { return minSeparation; } : minSeparation\r\n };\r\n return this;\r\n };\r\n Layout.prototype.links = function (x) {\r\n if (!arguments.length)\r\n return this._links;\r\n this._links = x;\r\n return this;\r\n };\r\n Layout.prototype.constraints = function (c) {\r\n if (!arguments.length)\r\n return this._constraints;\r\n this._constraints = c;\r\n return this;\r\n };\r\n Layout.prototype.distanceMatrix = function (d) {\r\n if (!arguments.length)\r\n return this._distanceMatrix;\r\n this._distanceMatrix = d;\r\n return this;\r\n };\r\n Layout.prototype.size = function (x) {\r\n if (!x)\r\n return this._canvasSize;\r\n this._canvasSize = x;\r\n return this;\r\n };\r\n Layout.prototype.defaultNodeSize = function (x) {\r\n if (!x)\r\n return this._defaultNodeSize;\r\n this._defaultNodeSize = x;\r\n return this;\r\n };\r\n Layout.prototype.groupCompactness = function (x) {\r\n if (!x)\r\n return this._groupCompactness;\r\n this._groupCompactness = x;\r\n return this;\r\n };\r\n Layout.prototype.linkDistance = function (x) {\r\n if (!x) {\r\n return this._linkDistance;\r\n }\r\n this._linkDistance = typeof x === \"function\" ? x : +x;\r\n this._linkLengthCalculator = null;\r\n return this;\r\n };\r\n Layout.prototype.linkType = function (f) {\r\n this._linkType = f;\r\n return this;\r\n };\r\n Layout.prototype.convergenceThreshold = function (x) {\r\n if (!x)\r\n return this._threshold;\r\n this._threshold = typeof x === \"function\" ? x : +x;\r\n return this;\r\n };\r\n Layout.prototype.alpha = function (x) {\r\n if (!arguments.length)\r\n return this._alpha;\r\n else {\r\n x = +x;\r\n if (this._alpha) {\r\n if (x > 0)\r\n this._alpha = x;\r\n else\r\n this._alpha = 0;\r\n }\r\n else if (x > 0) {\r\n if (!this._running) {\r\n this._running = true;\r\n this.trigger({ type: EventType.start, alpha: this._alpha = x });\r\n this.kick();\r\n }\r\n }\r\n return this;\r\n }\r\n };\r\n Layout.prototype.getLinkLength = function (link) {\r\n return typeof this._linkDistance === \"function\" ? +(this._linkDistance(link)) : this._linkDistance;\r\n };\r\n Layout.setLinkLength = function (link, length) {\r\n link.length = length;\r\n };\r\n Layout.prototype.getLinkType = function (link) {\r\n return typeof this._linkType === \"function\" ? this._linkType(link) : 0;\r\n };\r\n Layout.prototype.symmetricDiffLinkLengths = function (idealLength, w) {\r\n var _this = this;\r\n if (w === void 0) { w = 1; }\r\n this.linkDistance(function (l) { return idealLength * l.length; });\r\n this._linkLengthCalculator = function () { return linklengths_1.symmetricDiffLinkLengths(_this._links, _this.linkAccessor, w); };\r\n return this;\r\n };\r\n Layout.prototype.jaccardLinkLengths = function (idealLength, w) {\r\n var _this = this;\r\n if (w === void 0) { w = 1; }\r\n this.linkDistance(function (l) { return idealLength * l.length; });\r\n this._linkLengthCalculator = function () { return linklengths_1.jaccardLinkLengths(_this._links, _this.linkAccessor, w); };\r\n return this;\r\n };\r\n Layout.prototype.start = function (initialUnconstrainedIterations, initialUserConstraintIterations, initialAllConstraintsIterations, gridSnapIterations, keepRunning, centerGraph) {\r\n var _this = this;\r\n if (initialUnconstrainedIterations === void 0) { initialUnconstrainedIterations = 0; }\r\n if (initialUserConstraintIterations === void 0) { initialUserConstraintIterations = 0; }\r\n if (initialAllConstraintsIterations === void 0) { initialAllConstraintsIterations = 0; }\r\n if (gridSnapIterations === void 0) { gridSnapIterations = 0; }\r\n if (keepRunning === void 0) { keepRunning = true; }\r\n if (centerGraph === void 0) { centerGraph = true; }\r\n var i, j, n = this.nodes().length, N = n + 2 * this._groups.length, m = this._links.length, w = this._canvasSize[0], h = this._canvasSize[1];\r\n var x = new Array(N), y = new Array(N);\r\n var G = null;\r\n var ao = this._avoidOverlaps;\r\n this._nodes.forEach(function (v, i) {\r\n v.index = i;\r\n if (typeof v.x === 'undefined') {\r\n v.x = w / 2, v.y = h / 2;\r\n }\r\n x[i] = v.x, y[i] = v.y;\r\n });\r\n if (this._linkLengthCalculator)\r\n this._linkLengthCalculator();\r\n var distances;\r\n if (this._distanceMatrix) {\r\n distances = this._distanceMatrix;\r\n }\r\n else {\r\n distances = (new shortestpaths_1.Calculator(N, this._links, Layout.getSourceIndex, Layout.getTargetIndex, function (l) { return _this.getLinkLength(l); })).DistanceMatrix();\r\n G = descent_1.Descent.createSquareMatrix(N, function () { return 2; });\r\n this._links.forEach(function (l) {\r\n if (typeof l.source == \"number\")\r\n l.source = _this._nodes[l.source];\r\n if (typeof l.target == \"number\")\r\n l.target = _this._nodes[l.target];\r\n });\r\n this._links.forEach(function (e) {\r\n var u = Layout.getSourceIndex(e), v = Layout.getTargetIndex(e);\r\n G[u][v] = G[v][u] = e.weight || 1;\r\n });\r\n }\r\n var D = descent_1.Descent.createSquareMatrix(N, function (i, j) {\r\n return distances[i][j];\r\n });\r\n if (this._rootGroup && typeof this._rootGroup.groups !== 'undefined') {\r\n var i = n;\r\n var addAttraction = function (i, j, strength, idealDistance) {\r\n G[i][j] = G[j][i] = strength;\r\n D[i][j] = D[j][i] = idealDistance;\r\n };\r\n this._groups.forEach(function (g) {\r\n addAttraction(i, i + 1, _this._groupCompactness, 0.1);\r\n x[i] = 0, y[i++] = 0;\r\n x[i] = 0, y[i++] = 0;\r\n });\r\n }\r\n else\r\n this._rootGroup = { leaves: this._nodes, groups: [] };\r\n var curConstraints = this._constraints || [];\r\n if (this._directedLinkConstraints) {\r\n this.linkAccessor.getMinSeparation = this._directedLinkConstraints.getMinSeparation;\r\n curConstraints = curConstraints.concat(linklengths_1.generateDirectedEdgeConstraints(n, this._links, this._directedLinkConstraints.axis, (this.linkAccessor)));\r\n }\r\n this.avoidOverlaps(false);\r\n this._descent = new descent_1.Descent([x, y], D);\r\n this._descent.locks.clear();\r\n for (var i = 0; i < n; ++i) {\r\n var o = this._nodes[i];\r\n if (o.fixed) {\r\n o.px = o.x;\r\n o.py = o.y;\r\n var p = [o.x, o.y];\r\n this._descent.locks.add(i, p);\r\n }\r\n }\r\n this._descent.threshold = this._threshold;\r\n this.initialLayout(initialUnconstrainedIterations, x, y);\r\n if (curConstraints.length > 0)\r\n this._descent.project = new rectangle_1.Projection(this._nodes, this._groups, this._rootGroup, curConstraints).projectFunctions();\r\n this._descent.run(initialUserConstraintIterations);\r\n this.separateOverlappingComponents(w, h, centerGraph);\r\n this.avoidOverlaps(ao);\r\n if (ao) {\r\n this._nodes.forEach(function (v, i) { v.x = x[i], v.y = y[i]; });\r\n this._descent.project = new rectangle_1.Projection(this._nodes, this._groups, this._rootGroup, curConstraints, true).projectFunctions();\r\n this._nodes.forEach(function (v, i) { x[i] = v.x, y[i] = v.y; });\r\n }\r\n this._descent.G = G;\r\n this._descent.run(initialAllConstraintsIterations);\r\n if (gridSnapIterations) {\r\n this._descent.snapStrength = 1000;\r\n this._descent.snapGridSize = this._nodes[0].width;\r\n this._descent.numGridSnapNodes = n;\r\n this._descent.scaleSnapByMaxH = n != N;\r\n var G0 = descent_1.Descent.createSquareMatrix(N, function (i, j) {\r\n if (i >= n || j >= n)\r\n return G[i][j];\r\n return 0;\r\n });\r\n this._descent.G = G0;\r\n this._descent.run(gridSnapIterations);\r\n }\r\n this.updateNodePositions();\r\n this.separateOverlappingComponents(w, h, centerGraph);\r\n return keepRunning ? this.resume() : this;\r\n };\r\n Layout.prototype.initialLayout = function (iterations, x, y) {\r\n if (this._groups.length > 0 && iterations > 0) {\r\n var n = this._nodes.length;\r\n var edges = this._links.map(function (e) { return ({ source: e.source.index, target: e.target.index }); });\r\n var vs = this._nodes.map(function (v) { return ({ index: v.index }); });\r\n this._groups.forEach(function (g, i) {\r\n vs.push({ index: g.index = n + i });\r\n });\r\n this._groups.forEach(function (g, i) {\r\n if (typeof g.leaves !== 'undefined')\r\n g.leaves.forEach(function (v) { return edges.push({ source: g.index, target: v.index }); });\r\n if (typeof g.groups !== 'undefined')\r\n g.groups.forEach(function (gg) { return edges.push({ source: g.index, target: gg.index }); });\r\n });\r\n new Layout()\r\n .size(this.size())\r\n .nodes(vs)\r\n .links(edges)\r\n .avoidOverlaps(false)\r\n .linkDistance(this.linkDistance())\r\n .symmetricDiffLinkLengths(5)\r\n .convergenceThreshold(1e-4)\r\n .start(iterations, 0, 0, 0, false);\r\n this._nodes.forEach(function (v) {\r\n x[v.index] = vs[v.index].x;\r\n y[v.index] = vs[v.index].y;\r\n });\r\n }\r\n else {\r\n this._descent.run(iterations);\r\n }\r\n };\r\n Layout.prototype.separateOverlappingComponents = function (width, height, centerGraph) {\r\n var _this = this;\r\n if (centerGraph === void 0) { centerGraph = true; }\r\n if (!this._distanceMatrix && this._handleDisconnected) {\r\n var x_1 = this._descent.x[0], y_1 = this._descent.x[1];\r\n this._nodes.forEach(function (v, i) { v.x = x_1[i], v.y = y_1[i]; });\r\n var graphs = handledisconnected_1.separateGraphs(this._nodes, this._links);\r\n handledisconnected_1.applyPacking(graphs, width, height, this._defaultNodeSize, 1, centerGraph);\r\n this._nodes.forEach(function (v, i) {\r\n _this._descent.x[0][i] = v.x, _this._descent.x[1][i] = v.y;\r\n if (v.bounds) {\r\n v.bounds.setXCentre(v.x);\r\n v.bounds.setYCentre(v.y);\r\n }\r\n });\r\n }\r\n };\r\n Layout.prototype.resume = function () {\r\n return this.alpha(0.1);\r\n };\r\n Layout.prototype.stop = function () {\r\n return this.alpha(0);\r\n };\r\n Layout.prototype.prepareEdgeRouting = function (nodeMargin) {\r\n if (nodeMargin === void 0) { nodeMargin = 0; }\r\n this._visibilityGraph = new geom_1.TangentVisibilityGraph(this._nodes.map(function (v) {\r\n return v.bounds.inflate(-nodeMargin).vertices();\r\n }));\r\n };\r\n Layout.prototype.routeEdge = function (edge, ah, draw) {\r\n if (ah === void 0) { ah = 5; }\r\n var lineData = [];\r\n var vg2 = new geom_1.TangentVisibilityGraph(this._visibilityGraph.P, { V: this._visibilityGraph.V, E: this._visibilityGraph.E }), port1 = { x: edge.source.x, y: edge.source.y }, port2 = { x: edge.target.x, y: edge.target.y }, start = vg2.addPoint(port1, edge.source.index), end = vg2.addPoint(port2, edge.target.index);\r\n vg2.addEdgeIfVisible(port1, port2, edge.source.index, edge.target.index);\r\n if (typeof draw !== 'undefined') {\r\n draw(vg2);\r\n }\r\n var sourceInd = function (e) { return e.source.id; }, targetInd = function (e) { return e.target.id; }, length = function (e) { return e.length(); }, spCalc = new shortestpaths_1.Calculator(vg2.V.length, vg2.E, sourceInd, targetInd, length), shortestPath = spCalc.PathFromNodeToNode(start.id, end.id);\r\n if (shortestPath.length === 1 || shortestPath.length === vg2.V.length) {\r\n var route = rectangle_1.makeEdgeBetween(edge.source.innerBounds, edge.target.innerBounds, ah);\r\n lineData = [route.sourceIntersection, route.arrowStart];\r\n }\r\n else {\r\n var n = shortestPath.length - 2, p = vg2.V[shortestPath[n]].p, q = vg2.V[shortestPath[0]].p, lineData = [edge.source.innerBounds.rayIntersection(p.x, p.y)];\r\n for (var i = n; i >= 0; --i)\r\n lineData.push(vg2.V[shortestPath[i]].p);\r\n lineData.push(rectangle_1.makeEdgeTo(q, edge.target.innerBounds, ah));\r\n }\r\n return lineData;\r\n };\r\n Layout.getSourceIndex = function (e) {\r\n return typeof e.source === 'number' ? e.source : e.source.index;\r\n };\r\n Layout.getTargetIndex = function (e) {\r\n return typeof e.target === 'number' ? e.target : e.target.index;\r\n };\r\n Layout.linkId = function (e) {\r\n return Layout.getSourceIndex(e) + \"-\" + Layout.getTargetIndex(e);\r\n };\r\n Layout.dragStart = function (d) {\r\n if (isGroup(d)) {\r\n Layout.storeOffset(d, Layout.dragOrigin(d));\r\n }\r\n else {\r\n Layout.stopNode(d);\r\n d.fixed |= 2;\r\n }\r\n };\r\n Layout.stopNode = function (v) {\r\n v.px = v.x;\r\n v.py = v.y;\r\n };\r\n Layout.storeOffset = function (d, origin) {\r\n if (typeof d.leaves !== 'undefined') {\r\n d.leaves.forEach(function (v) {\r\n v.fixed |= 2;\r\n Layout.stopNode(v);\r\n v._dragGroupOffsetX = v.x - origin.x;\r\n v._dragGroupOffsetY = v.y - origin.y;\r\n });\r\n }\r\n if (typeof d.groups !== 'undefined') {\r\n d.groups.forEach(function (g) { return Layout.storeOffset(g, origin); });\r\n }\r\n };\r\n Layout.dragOrigin = function (d) {\r\n if (isGroup(d)) {\r\n return {\r\n x: d.bounds.cx(),\r\n y: d.bounds.cy()\r\n };\r\n }\r\n else {\r\n return d;\r\n }\r\n };\r\n Layout.drag = function (d, position) {\r\n if (isGroup(d)) {\r\n if (typeof d.leaves !== 'undefined') {\r\n d.leaves.forEach(function (v) {\r\n d.bounds.setXCentre(position.x);\r\n d.bounds.setYCentre(position.y);\r\n v.px = v._dragGroupOffsetX + position.x;\r\n v.py = v._dragGroupOffsetY + position.y;\r\n });\r\n }\r\n if (typeof d.groups !== 'undefined') {\r\n d.groups.forEach(function (g) { return Layout.drag(g, position); });\r\n }\r\n }\r\n else {\r\n d.px = position.x;\r\n d.py = position.y;\r\n }\r\n };\r\n Layout.dragEnd = function (d) {\r\n if (isGroup(d)) {\r\n if (typeof d.leaves !== 'undefined') {\r\n d.leaves.forEach(function (v) {\r\n Layout.dragEnd(v);\r\n delete v._dragGroupOffsetX;\r\n delete v._dragGroupOffsetY;\r\n });\r\n }\r\n if (typeof d.groups !== 'undefined') {\r\n d.groups.forEach(Layout.dragEnd);\r\n }\r\n }\r\n else {\r\n d.fixed &= ~6;\r\n }\r\n };\r\n Layout.mouseOver = function (d) {\r\n d.fixed |= 4;\r\n d.px = d.x, d.py = d.y;\r\n };\r\n Layout.mouseOut = function (d) {\r\n d.fixed &= ~4;\r\n };\r\n return Layout;\r\n}());\r\nexports.Layout = Layout;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vV2ViQ29sYS9zcmMvbGF5b3V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEseUNBQTBDO0FBQzFDLDZDQUErSDtBQUMvSCxxQ0FBaUM7QUFDakMseUNBQThFO0FBQzlFLGlEQUEwQztBQUMxQywrQkFBdUQ7QUFDdkQsMkRBQWlFO0FBTzdELElBQVksU0FBOEI7QUFBMUMsV0FBWSxTQUFTO0lBQUcsMkNBQUssQ0FBQTtJQUFFLHlDQUFJLENBQUE7SUFBRSx1Q0FBRyxDQUFBO0FBQUMsQ0FBQyxFQUE5QixTQUFTLEdBQVQsaUJBQVMsS0FBVCxpQkFBUyxRQUFxQjtBQUFBLENBQUM7QUErQzNDLFNBQVMsT0FBTyxDQUFDLENBQU07SUFDbkIsT0FBTyxPQUFPLENBQUMsQ0FBQyxNQUFNLEtBQUssV0FBVyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE1BQU0sS0FBSyxXQUFXLENBQUM7QUFDOUUsQ0FBQztBQXdCRDtJQUFBO1FBQUEsaUJBa3lCQztRQWp5QlcsZ0JBQVcsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNyQixrQkFBYSxHQUF5QyxFQUFFLENBQUM7UUFDekQscUJBQWdCLEdBQVcsRUFBRSxDQUFDO1FBQzlCLDBCQUFxQixHQUFHLElBQUksQ0FBQztRQUM3QixjQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLHdCQUFtQixHQUFHLElBQUksQ0FBQztRQUczQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLFdBQU0sR0FBRyxFQUFFLENBQUM7UUFDWixZQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2IsZUFBVSxHQUFHLElBQUksQ0FBQztRQUNsQixXQUFNLEdBQTBCLEVBQUUsQ0FBQztRQUNuQyxpQkFBWSxHQUFHLEVBQUUsQ0FBQztRQUNsQixvQkFBZSxHQUFHLElBQUksQ0FBQztRQUN2QixhQUFRLEdBQVks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","/** klay.js version 0.4.1 build 201604131004 */\nvar klayregister;\nvar klaycallback;\n(function(){\nvar $wnd, $doc;if(typeof(window) !== 'undefined'){ $wnd = window; $doc = $wnd.document; }\nelse { $wnd = { Array: function(){} }; }\nfunction kI(){}\nfunction iI(){}\nfunction pb(){}\nfunction Ab(){}\nfunction Tt(){}\nfunction Jt(){}\nfunction Jq(){}\nfunction Vq(){}\nfunction Vs(){}\nfunction yl(){}\nfunction Yl(){}\nfunction gm(){}\nfunction Cu(){}\nfunction tJ(){}\nfunction NJ(){}\nfunction PJ(){}\nfunction PS(){}\nfunction sS(){}\nfunction yS(){}\nfunction AS(){}\nfunction MS(){}\nfunction RS(){}\nfunction TS(){}\nfunction lR(){}\nfunction HR(){}\nfunction IR(){}\nfunction KR(){}\nfunction WR(){}\nfunction AT(){}\nfunction FT(){}\nfunction HT(){}\nfunction JT(){}\nfunction LT(){}\nfunction NT(){}\nfunction sU(){}\nfunction uV(){}\nfunction xV(){}\nfunction EV(){}\nfunction HW(){}\nfunction UX(){}\nfunction XX(){}\nfunction ZX(){}\nfunction _X(){}\nfunction bY(){}\nfunction dY(){}\nfunction wY(){}\nfunction zY(){}\nfunction SY(){}\nfunction VY(){}\nfunction qZ(){}\nfunction tZ(){}\nfunction wZ(){}\nfunction AZ(){}\nfunction d$(){}\nfunction g$(){}\nfunction j$(){}\nfunction w$(){}\nfunction z$(){}\nfunction C$(){}\nfunction F$(){}\nfunction I$(){}\nfunction L$(){}\nfunction N$(){}\nfunction R$(){}\nfunction X$(){}\nfunction _$(){}\nfunction k0(){}\nfunction m0(){}\nfunction s0(){}\nfunction w0(){}\nfunction A0(){}\nfunction C0(){}\nfunction E0(){}\nfunction G0(){}\nfunction V0(){}\nfunction Z0(){}\nfunction _0(){}\nfunction _1(){}\nfunction b1(){}\nfunction e1(){}\nfunction k1(){}\nfunction q1(){}\nfunction u1(){}\nfunction R1(){}\nfunction X1(){}\nfunction Z1(){}\nfunction c2(){}\nfunction f2(){}\nfunction h2(){}\nfunction k2(){}\nfunction n2(){}\nfunction q2(){}\nfunction x2(){}\nfunction A2(){}\nfunction H2(){}\nfunction H4(){}\nfunction z4(){}\nfunction B4(){}\nfunction D4(){}\nfunction U4(){}\nfunction i3(){}\nfunction l3(){}\nfunction u3(){}\nfunction C3(){}\nfunction I3(){}\nfunction $5(){}\nfunction d7(){}\nfunction V7(){}\nfunction q8(){}\nfunction smb(){}\nfunction Wbb(){}\nfunction rcb(){}\nfunction Mcb(){}\nfunction Vdb(){}\nfunction hkb(){}\nfunction Kpb(){}\nfunction Spb(){}\nfunction aqb(){}\nfunction iqb(){}\nfunction pqb(){}\nfunction isb(){}\nfunction mvb(){}\nfunction zwb(){}\nfunction yfb(a){}\nfunction sP(a){}\nfunction XW(a){}\nfunction _t(){Wt()}\nfunction lI(){GP()}\nfunction J8(){G8()}\nfunction m8(){k8()}\nfunction CQ(){zQ()}\nfunction CV(){AV()}\nfunction q0(){p0()}\nfunction S0(){J0()}\nfunction y9(){w9()}\nfunction Bab(){zab()}\nfunction Qab(){Hab()}\nfunction cbb(){abb()}\nfunction sbb(){rbb()}\nfunction Ycb(){Xcb()}\nfunction Wfb(){Mfb()}\nfunction ft(){_s(this)}\nfunction uP(){sP(this)}\nfunction GU(){tU(this)}\nfunction ZW(){XW(this)}\nfunction ic(a){this.a=a}\nfunction sc(a){this.a=a}\nfunction $c(a){this.a=a}\nfunction sf(a){this.a=a}\nfunction Qg(a){this.a=a}\nfunction qh(a){this.a=a}\nfunction Vj(a){this.a=a}\nfunction Nk(a){this.a=a}\nfunction km(a){this.a=a}\nfunction dm(a){this.b=a}\nfunction En(a){this.a=a}\nfunction Hn(a){this.a=a}\nfunction Yp(a){this.a=a}\nfunction bq(a){this.a=a}\nfunction eq(a){this.a=a}\nfunction tq(a){this.a=a}\nfunction wq(a){this.a=a}\nfunction ku(a){this.a=a}\nfunction uu(a){this.a=a}\nfunction Gu(a){this.a=a}\nfunction Uu(a){this.a=a}\nfunction WJ(a){this.a=a}\nfunction rP(a){this.a=a}\nfunction $V(a){this.a=a}\nfunction tW(a){this.a=a}\nfunction yW(a){this.e=a}\nfunction fY(a){this.a=a}\nfunction hY(a){this.a=a}\nfunction lY(a){this.a=a}\nfunction nY(a){this.a=a}\nfunction CY(a){this.a=a}\nfunction JY(a){this.a=a}\nfunction SZ(a){this.a=a}\nfunction Z$(a){this.a=a}\nfunction b_(a){this.a=a}\nfunction d_(a){this.a=a}\nfunction f_(a){this.a=a}\nfunction w1(a){this.a=a}\nfunction y1(a){this.a=a}\nfunction E3(a){this.a=a}\nfunction q4(a){this.a=a}\nfunction x4(a){this.a=a}\nfunction F4(a){this.a=a}\nfunction $8(a){this.a=a}\nfunction a9(a){this.a=a}\nfunction l9(a){this.a=a}\nfunction C9(a){this.a=a}\nfunction k9(a){this.c=a}\nfunction wlb(a){this.a=a}\nfunction nxb(a){this.a=a}\nfunction wcb(a){this.a=a}\nfunction tdb(a){this.a=a}\nfunction ydb(a){this.a=a}\nfunction Ddb(a){this.a=a}\nfunction lkb(a){this.a=a}\nfunction klb(a){this.a=a}\nfunction llb(a){this.a=a}\nfunction inb(a){this.a=a}\nfunction wnb(a){this.d=a}\nfunction Snb(a){this.a=a}\nfunction Ynb(a){this.a=a}\nfunction aob(a){this.a=a}\nfunction fob(a){this.a=a}\nfunction Bob(a){this.b=a}\nfunction Gob(a){this.a=a}\nfunction Mob(a){this.a=a}\nfunction Tob(a){this.c=a}\nfunction opb(a){this.a=a}\nfunction Ipb(a){this.a=a}\nfunction rqb(a){this.a=a}\nfunction zqb(a){this.b=a}\nfunction Nqb(a){this.b=a}\nfunction mrb(a){this.c=a}\nfunction Trb(a){this.a=a}\nfunction Xrb(a){this.a=a}\nfunction Fsb(a){this.a=a}\nfunction ju(){this.a=[]}\nfunction ytb(a){this.a=a}\nfunction Lub(a){this.a=a}\nfunction u5(a){a.b=a.a}\nfunction vg(a){a.c=a.d.d}\nfunction sX(a,b){a.g=b}\nfunction bfb(a,b){a.k=b}\nfunction qfb(a,b){a.a=b}\nfunction rfb(a,b){a.b=b}\nfunction qW(a,b){a.e.k=b}\nfunction qu(a){return a.a}\nfunction yu(a){return a.a}\nfunction Mu(a){return a.a}\nfunction $u(a){return a.a}\nfunction rv(a){return a.a}\nfunction jv(){return null}\nfunction Fu(){return null}\nfunction Rh(){this.c=this}\nfunction tkb(){_s(this)}\nfunction ntb(){Ymb(this)}\nfunction b5(a){a5(this,a)}\nfunction GO(a){IO();$O(a)}\nfunction mI(a){a.a=new aJ}\nfunction IZ(a,b){a.a=b-a.a}\nfunction KZ(a,b){a.b=b-a.b}\nfunction Dq(){Dq=iI;new Jq}\nfunction nW(){nW=iI;new HW}\nfunction ni(){throw new Hmb}\nfunction ii(){throw new Hmb}\nfunction ji(){throw new Hmb}\nfunction li(){throw new Hmb}\nfunction mi(){throw new Hmb}\nfunction dd(){throw new Hmb}\nfunction pj(){throw new Hmb}\nfunction Wn(){throw new Hmb}\nfunction $n(){throw new Hmb}\nfunction qT(){this.a=new GU}\nfunction fU(){this.a=new GU}\nfunction cV(){this.a=new GU}\nfunction pV(){this.a=new GU}\nfunction l7(){this.a=new GU}\nfunction k7(){this.a=new d7}\nfunction A7(){this.a=new n7}\nfunction t8(){this.b=new GU}\nfunction jJ(){aJ.call(this)}\nfunction ZN(){UN.call(this)}\nfunction AP(){uP.call(this)}\nfunction DP(){uP.call(this)}\nfunction q7(){GU.call(this)}\nfunction alb(){ft.call(this)}\nfunction rlb(){ft.call(this)}\nfunction nkb(){ft.call(this)}\nfunction qkb(){ft.call(this)}\nfunction tlb(){ft.call(this)}\nfunction Vlb(){ft.call(this)}\nfunction Hmb(){ft.call(this)}\nfunction Wab(){this.f=new GU}\nfunction Ybb(){this.d=new GU}\nfunction jV(){this.a=new vtb}\nfunction vqb(){throw new Hmb}\nfunction wqb(){throw new Hmb}\nfunction xqb(){throw new Hmb}\nfunction yqb(){throw new Hmb}\nfunction Mqb(){throw new Hmb}\nfunction Uvb(){this.a=new GU}\nfunction it(){it=iI;ht=new pb}\nfunction bmb(){bmb=iI;new smb}\nfunction zb(){zb=iI;yb=new Ab}\nfunction Tq(){Tq=iI;Sq=new Vq}\nfunction dr(){dr=iI;cr=new er}\nfunction Gt(){Gt=iI;Ft=new Jt}\nfunction Bu(){Bu=iI;Au=new Cu}\nfunction fR(){fR=iI;eR=new lR}\nfunction VR(){VR=iI;UR=new WR}\nfunction jS(a){dS(a);return a}\nfunction jl(a){Gi();this.a=a}\nfunction vi(a){hi();this.a=a}\nfunction Uk(a){hi();this.a=a}\nfunction Zk(a){hi();this.a=a}\nfunction ds(a,b){a.i=b;b.f=a}\nfunction ycb(a,b){stb(a.b,b)}\nfunction nsb(){ft.call(this)}\nfunction osb(){ft.call(this)}\nfunction nvb(){ft.call(this)}\nfunction Ccb(){Bcb.call(this)}\nfunction Jcb(){Bcb.call(this)}\nfunction pkb(){nkb.call(this)}\nfunction Xlb(){rlb.call(this)}\nfunction gt(a){et.call(this,a)}\nfunction Vd(a){Md.call(this,a)}\nfunction uh(a){Md.call(this,a)}\nfunction Bk(a){Hj.call(this,a)}\nfunction Jk(a){dk.call(this,a)}\nfunction Lm(a){Em.call(this,a)}\nfunction nq(a){vm.call(this,a)}\nfunction ap(a){Ro.call(this,a)}\nfunction ir(a){Hj.call(this,a)}\nfunction Op(a,b){a.a.W().nb(b)}\nfunction emb(a,b){return a===b}\nfunction Zr(a){return !a?0:a.a}\nfunction Rs(a){return !a?0:a.d}\nfunction Ts(a){return !a?0:a.j}\nfunction zu(a){gt.call(this,a)}\nfunction $J(a){gt.call(this,a)}\nfunction _J(a){gt.call(this,a)}\nfunction EQ(a){_J.call(this,a)}\nfunction Tu(){Uu.call(this,{})}\nfunction y5(a){b5.call(this,a)}\nfunction H5(a){b5.call(this,a)}\nfunction WP(a,b,c){XP(a,b.b,c)}\nfunction a7(a,b,c){f6(a.c,b,c)}\nfunction qV(a,b,c){a.b.Fc(b,c)}\nfunction M9(a){$8.call(this,a)}\nfunction P9(a){$8.call(this,a)}\nfunction YY(){this.a=(sK(),qK)}\nfunction cZ(){this.a=(sK(),qK)}\nfunction vtb(){this.a=new ntb}\nfunction Vwb(){this.a=new iwb}\nfunction vT(){vT=iI;uT=new AT}\nfunction AV(){AV=iI;zV=new EV}\nfunction p0(){p0=iI;o0=new s0}\nfunction Ckb(a){xkb();return a}\nfunction Ixb(a){Dxb(a);return a}\nfunction ikb(a){et.call(this,a)}\nfunction okb(a){gt.call(this,a)}\nfunction slb(a){gt.call(this,a)}\nfunction Kb(a){this.c=$v(_b(a))}\nfunction FI(){this.a=0;this.b=0}\nfunction aJ(){OI(this);_I(this)}\nfunction cI(){aI==null&&(aI=[])}\nfunction Vvb(a){a.b=null;a.c=0}\nfunction mS(a,b){a.b=b;return a}\nfunction nS(a,b){a.c=b;return a}\nfunction oS(a,b){a.f=b;return a}\nfunction pS(a,b){a.g=b;return a}\nfunction S7(a,b){a.a=b;return a}\nfunction T7(a,b){a.f=b;return a}\nfunction U7(a,b){a.k=b;return a}\nfunction xc(a,b){return a.e-b.e}\nfunction H3(a,b){return a.d-b.d}\nfunction Klb(a){return a<0?-a:a}\nfunction hlb(a){return isNaN(a)}\nfunction gv(a){return new Gu(a)}\nfunction iv(a){return new lv(a)}\nfunction rkb(a){gt.call(this,a)}\nfunction ulb(a){gt.call(this,a)}\nfunction Ulb(a){gt.call(this,a)}\nfunction Wlb(a){gt.call(this,a)}\nfunction Imb(a){gt.call(this,a)}\nfunction et(a){this.f=a;_s(this)}\nfunction _2(){this.b=0;this.a=0}\nfunction Ws(){Ws=iI;Math.log(2)}\nfunction Ytb(){Ytb=iI;Xtb=$tb()}\nfunction Vtb(c,a,b){c.set(a,b)}\nfunction Wtb(c,a,b){c.set(a,b)}\nfunction Ot(a,b){Nt();Mt.dc(a,b)}\nfunction tv(a,b){return Skb(a,b)}\nfunction zm(a,b){return a.a.B(b)}\nfunction aP(a,b){return a.g[b.e]}\nfunction bP(a,b){return a.i[b.e]}\nfunction cP(a,b){return a.j[b.e]}\nfunction dP(a,b){return a.n[b.e]}\nfunction eP(a,b){return a.o[b.e]}\nfunction Ou(b,a){return a in b.a}\nfunction Tab(a,b){return a.b-b.b}\nfunction ndb(a,b){return a.d-b.d}\nfunction jgb(a,b){return a.i-b.i}\nfunction Nlb(a,b){return a>b?a:b}\nfunction Olb(a,b){return a>b?a:b}\nfunction Plb(a,b){return a>b?a:b}\nfunction Qlb(a,b){return ab?1:0}\nfunction xlb(a,b){return ab?1:0}\nfunction pvb(a){return a!=null?vb(a):0}\nfunction Ntb(a){this.a=aub();this.b=a}\nfunction fub(a){this.a=aub();this.b=a}\nfunction Cg(a){this.a=a;xg.call(this,a)}\nfunction o4(){n4();this.b=new q4(this)}\nfunction Oh(){Oh=iI;Nh=Jb(new Kb(', '))}\nfunction Gh(){Gh=iI;Fh=new Jh;Eh=new Kh}\nfunction Il(){Il=iI;Gl=new Yl;Hl=new gm}\nfunction xp(){xp=iI;vp=new Ap;wp=new Cp}\nfunction qs(){qs=iI;ps=new ts;os=new ws}\nfunction wJ(){wJ=iI;uJ=new NJ;vJ=new PJ}\nfunction Teb(a){a.g=new GU;a.b=new GU}\nfunction OI(a){a.a=new mvb;a.c=new mvb}\nfunction n4(){n4=iI;m4=new U4;l4=new u4}\nfunction Uc(){Mc.call(this,'IS_NULL',2)}\nfunction Kwb(){Gwb.call(this,'Head',1)}\nfunction Pwb(){Gwb.call(this,'Tail',3)}\nfunction pR(a,b){qR.call(this,a,b,null)}\nfunction lpb(a,b){ipb(a,0,a.length,b)}\nfunction x7(a,b){vU(b.a,a.a);return a.a}\nfunction CI(a,b){a.a*=b;a.b*=b;return a}\nfunction gl(a,b){Gi();this.a=a;this.b=b}\nfunction i9(a,b){return a.a[b.d.k][b.k]}\nfunction W9(a,b){return a.a[b.d.k][b.k]}\nfunction xJ(a,b){return kmb(a.b,b.mc())}\nfunction Swb(a,b){return qe(Xvb(a.a,b))}\nfunction Twb(a,b){return qe(Yvb(a.a,b))}\nfunction $T(a,b){return Wv(Dd(a.a,b),20)}\nfunction aw(a,b){return a!=null&&Vv(a,b)}\nfunction Qob(a){return a.a=b){throw new pkb}}\nfunction pl(a,b){_b(a);_b(b);return new Bl(a,b)}\nfunction ul(a,b){_b(a);_b(b);return new El(a,b)}\nfunction nmb(a,b){bmb();return a.lastIndexOf(b)}\nfunction rgb(a,b,c){return a0);return a.a.sb(a.c=--a.b)}\nfunction $f(a){a.b?$f(a.b):a.d.V()&&Wmb(a.f.b,a.e)}\nfunction wg(a){Yf(a.d);if(a.d.d!=a.c){throw new nsb}}\nfunction ksb(a,b){if(b[WAb]!=a[WAb]){throw new nsb}}\nfunction Pl(a,b){Il();_b(a);_b(b);return new tm(a,b)}\nfunction Zq(a,b){Gi();Yq.call(this,a,Yi(new opb(b)))}\nfunction mg(a,b,c,d){this.a=a;_f.call(this,a,b,c,d)}\nfunction GI(a){this.a=Math.cos(a);this.b=Math.sin(a)}\nfunction GQ(a,b,c){_J.call(this,a);this.b=b;this.a=c}\nfunction NR(a){this.b=new GU;this.a=new GU;this.c=a}\nfunction sY(a){this.c=new FI;this.a=new GU;this.b=a}\nfunction tu(){tu=iI;ru=new uu(false);su=new uu(true)}\nfunction o7(a,b){++a.d;return a.c[a.c.length]=b,true}\nfunction $ub(a,b){TI(a.d,b,a.b.b,a.b);++a.a;a.c=null}\nfunction stb(a,b){var c;c=a.a.db(b,a);return c==null}\nfunction cxb(a,b){var c;c=a.slice(0,b);return Cv(c,a)}\nfunction exb(a,b){var c;c=new Array(b);return Cv(c,a)}\nfunction usb(a,b,c){var d;d=a.b[b];a.b[b]=c;return d}\nfunction apb(a,b){var c;for(c=0;c0?new tI(a-1,b):new tI(a,b)}\nfunction Ib(a){_b(a);return aw(a,345)?Wv(a,345):xb(a)}\nfunction Rwb(a,b){return bwb(a.a,b,(xkb(),vkb))==null}\nfunction Po(a,b){var c;c=a.a.Y();$b(b,c);return c-1-b}\nfunction hu(a,b,c){var d;d=gu(a,b);iu(a,b,c);return d}\nfunction Nkb(a,b,c){var d;d=Mkb(a,b);$kb(c,d);return d}\nfunction Mkb(a,b){var c;c=new Kkb;c.i=a;c.d=b;return c}\nfunction Mk(a,b,c){this.a=a;bc(c,b);this.c=b;this.b=c}\nfunction Av(a,b,c){zxb(c==null||sv(a,c));return a[b]=c}\nfunction Pm(a){a.a=null;a.e=null;Ymb(a.b);a.d=0;++a.c}\nfunction Pmb(a){slb.call(this,(bmb(),a==null?Wxb:a))}\nfunction Omb(a){slb.call(this,(bmb(),a==null?Wxb:a))}\nfunction Om(a){var b;return b=a.f,!b?(a.f=new Pp(a)):b}\nfunction Jd(a){var b;return b=a.k,!b?(a.k=new Qg(a)):b}\nfunction Be(a){var b;b=a.e;return !b?(a.e=new Fp(a)):b}\nfunction Vg(a){var b;b=a.e;!b&&(a.e=b=a.gb());return b}\nfunction d6(a){var b,c;b=a.c.f.d;c=a.d.f.d;return b==c}\nfunction Gfb(a,b){var c;c=new Dfb(a);Afb(c,b);return c}\nfunction umb(a,b){a.a+=String.fromCharCode(b);return a}\nfunction hX(a){if(!a.a&&!!a.d){return a.d.b}return a.a}\nfunction _H(a){if(UH(a)){return a|0}return a.l|a.m<<22}\nfunction xo(a){Mh(a,Uyb);return $s(PH(PH(5,a),a/10|0))}\nfunction Smb(a,b){return ew(b)?Tmb(a,b):re(Ktb(a.d,b))}\nfunction tl(a){return aw(a,19)?Wv(a,19).Y():Ul(a.mb())}\nfunction pr(a){return a?new xtb((Oh(),a)):qr(null.mb())}\nfunction Tb(a,b){return gw(a)===gw(b)||a!=null&&rb(a,b)}\nfunction zT(a,b){return vT(),glb(Ixb(Yv(a)),Ixb(Yv(b)))}\nfunction Ep(a){return mp(),Wl(a.a.bb().mb(),(xp(),wp))}\nfunction Gi(){Gi=iI;hi();Fi=new gr((ypb(),ypb(),vpb))}\nfunction kr(){kr=iI;hi();jr=new lr((ypb(),ypb(),xpb))}\nfunction Exb(a,b){if(a==null){throw new Wlb((bmb(),b))}}\nfunction Zfb(a,b){Mfb();return (a-b<=0?0-(a-b):a-b)<0.2}\nfunction U0(a,b){return a.i.b0){return 1}return 0}\nfunction mP(){kP();return Bv(tv(Rz,1),uyb,171,0,[jP,gP,hP])}\nfunction gL(){eL();return Bv(tv(Fz,1),uyb,166,0,[cL,bL,dL])}\nfunction WM(){UM();return Bv(tv(Jz,1),uyb,149,0,[TM,SM,RM])}\nfunction FO(){DO();return Bv(tv(Pz,1),uyb,225,0,[BO,AO,CO])}\nfunction ZZ(){XZ();return Bv(tv(VB,1),uyb,221,0,[VZ,WZ,UZ])}\nfunction A8(){x8();return Bv(tv(_D,1),uyb,173,0,[w8,v8,u8])}\nfunction QH(a,b){return SH(Hv(UH(a)?YH(a):a,UH(b)?YH(b):b))}\nfunction XI(a){return a.b==0?null:(Bxb(a.b!=0),$I(a,a.a.a))}\nfunction zfb(a){a.d=a.d-15;a.b=a.b-15;a.c=a.c+15;a.a=a.a+15}\nfunction Rn(a){this.b=a;this.c=a;a.e=null;a.c=null;this.a=1}\nfunction nZ(a,b,c){this.d=a;this.b=new GU;this.c=b;this.a=c}\nfunction sfb(a,b){qfb(this,new HI(a.a,a.b));rfb(this,Eo(b))}\nfunction Xf(a,b){if(b===a){return true}Yf(a);return a.d.t(b)}\nfunction Oeb(a){if(a==neb||a==keb){return true}return false}\nfunction VO(a){if(!Qob(new Tob(zW(a.e)))){return}OO(a);QO(a)}\nfunction Y2(a,b){var c;c=Wv(vub(a.e,b),116);!!c&&(a.d=true)}\nfunction Lrb(a,b){var c;c=a.b.pb(b);Mrb(c,a.b.Y());return c}\nfunction a6(a){var b;b=e6(a,(sN(),rN));b+=e6(a,ZM);return b}\nfunction f6(a,b,c){j6(a,b,c,(sN(),ZM),a.f);j6(a,b,c,rN,a.n)}\nfunction PX(a,b){!!a.f&&BU(a.f.f,a);a.f=b;!!a.f&&vU(a.f.f,a)}\nfunction rX(a,b){!!a.d&&BU(a.d.a,a);a.d=b;!!a.d&&vU(a.d.a,a)}\nfunction eW(a,b){!!a.d&&BU(a.d.b,a);a.d=b;!!a.d&&vU(a.d.b,a)}\nfunction dW(a,b){!!a.c&&BU(a.c.e,a);a.c=b;!!a.c&&vU(a.c.e,a)}\nfunction Zdb(a){var b;b=Eo(a.b);Ue(b,a.c);Ue(b,a.i);return b}\nfunction Qxb(){if(Lxb==256){Kxb=Mxb;Mxb={};Lxb=0}++Lxb}\nfunction Gbb(){Gbb=iI;Fbb=new Hbb(pzb,0);Ebb=new Hbb(ozb,1)}\nfunction fgb(){fgb=iI;dgb=new ggb(ozb,0);egb=new ggb(pzb,1)}\nfunction hgb(){fgb();return Bv(tv(fF,1),uyb,223,0,[dgb,egb])}\nfunction xab(){vab();return Bv(tv(rE,1),uyb,242,0,[uab,tab])}\nfunction Ibb(){Gbb();return Bv(tv(BE,1),uyb,248,0,[Fbb,Ebb])}\nfunction Nbb(){Lbb();return Bv(tv(CE,1),uyb,247,0,[Jbb,Kbb])}\nfunction ncb(){lcb();return Bv(tv(JE,1),uyb,194,0,[jcb,kcb])}\nfunction Ohb(){Mhb();return Bv(tv(pF,1),uyb,174,0,[Khb,Lhb])}\nfunction Hpb(a){ypb();return aw(a,63)?new csb(a):new Rqb(a)}\nfunction Rm(a){var b;return b=a.g,Wv(!b?(a.g=new En(a)):b,20)}\nfunction Ktb(a,b){return Itb(a,b,Jtb(a,b==null?0:a.b.Vc(b)))}\nfunction tX(a){var b;return b=lX(a),'n_'+(b==null?Dlb(a.k):b)}\nfunction ob(a){return Ikb(tb(a))+'@'+(vb(a)>>>0).toString(16)}\nfunction ykb(a,b){return zkb(Ckb((Dxb(a),a)),Ckb((Dxb(b),b)))}\nfunction Tmb(a,b){return b==null?re(Ktb(a.d,null)):cub(a.e,b)}\nfunction Rr(a,b,c){return new Ur(a.c,pk(a.b,wk(a.d,b,c)),a.a)}\nfunction hw(a){return Math.max(Math.min(a,$xb),-2147483648)|0}\nfunction Ptb(a){this.e=a;this.b=this.e.a.entries();this.a=[]}\nfunction xf(a){this.c=a;this.b=new rnb((new inb(this.c.a)).a)}\nfunction Em(a){this.b=(Il(),Il(),Il(),Gl);this.a=Wv(_b(a),35)}\nfunction EJ(a,b,c){wJ();DJ.call(this,a,b);c!=null&&(this.c=c)}\nfunction cc(a,b,c){if(a<0||bc){throw new okb(Wb(a,b,c))}}\nfunction $b(a,b){if(a<0||a>=b){throw new okb(Ub(a,b))}return a}\nfunction ac(a,b){if(a==null){throw new Wlb((bmb(),b))}return a}\nfunction Dm(a){if(!Cm(a)){throw new nvb}a.c=a.b;return a.b.H()}\nfunction jI(a){function b(){}\n;b.prototype=a||{};return new b}\nfunction rr(a){var b;b=new wtb(op(a.length));zpb(b,a);return b}\nfunction Gub(a){var b;b=a.c.b.b;a.b=b;a.a=a.c.b;b.a=a.c.b.b=a}\nfunction jwb(a){this.b=null;!a&&(a=(hsb(),hsb(),gsb));this.a=a}\nfunction W6(a){this.b=a;this.a=new Fnb(this.b,this.b.c.length)}\nfunction Li(a){Gi();_b(a);return a?Ki(a):Ki(Bo(new Tob(null)))}\nfunction rt(a,b){var c=qt[a.charCodeAt(0)];return c==null?a:c}\nfunction Skb(a,b){var c=a.a=a.a||[];return c[b]||(c[b]=a.Oc(b))}\nfunction CU(a,b,c){var d;Gxb(b,c,a.c.length);d=c-b;hxb(a.c,b,d)}\nfunction Ur(a,b,c){Ch.call(this,b.a);this.c=a;this.b=b;this.a=c}\nfunction ko(a){Vm(a.c);a.e=a.a=a.c;a.c=a.c.c;++a.d;return a.a.f}\nfunction lo(a){Vm(a.e);a.c=a.a=a.e;a.e=a.e.e;--a.d;return a.a.f}\nfunction MX(a){return MI(Bv(tv(qz,1),Fzb,10,0,[a.f.i,a.i,a.a]))}\nfunction GK(){EK();return Bv(tv(Cz,1),uyb,107,0,[DK,AK,BK,CK])}\nfunction PK(){NK();return Bv(tv(Dz,1),uyb,122,0,[MK,KK,JK,LK])}\nfunction ON(){MN();return Bv(tv(Mz,1),uyb,139,0,[KN,LN,JN,IN])}\nfunction FN(){DN();return Bv(tv(Lz,1),uyb,150,0,[BN,CN,AN,zN])}\nfunction Nc(){Lc();return Bv(tv(Bw,1),uyb,136,0,[Ic,Hc,Jc,Kc])}\nfunction iT(){cT();return Bv(tv(yA,1),uyb,201,0,[$S,bT,_S,aT])}\nfunction wN(){sN();return Bv(tv(Kz,1),uyb,32,0,[qN,$M,ZM,pN,rN])}\nfunction xK(){sK();return Bv(tv(Bz,1),uyb,59,0,[qK,pK,oK,nK,rK])}\nfunction c8(){c8=iI;b8=Cc((Z7(),Bv(tv(WD,1),uyb,193,0,[X7,Y7])))}\nfunction _3(){_3=iI;$3=Cc((X3(),Bv(tv(iD,1),uyb,175,0,[V3,W3])))}\nfunction u9(){u9=iI;t9=Cc((p9(),Bv(tv(hE,1),uyb,192,0,[o9,n9])))}\nfunction Jhb(){Hhb();return Bv(tv(oF,1),uyb,140,0,[Fhb,Ghb,Ehb])}\nfunction Jgb(){Hgb();return Bv(tv(jF,1),uyb,218,0,[Fgb,Egb,Ggb])}\nfunction fjb(){djb();return Bv(tv(rF,1),uyb,219,0,[cjb,ajb,bjb])}\nfunction Sjb(){Qjb();return Bv(tv(sF,1),uyb,153,0,[Njb,Pjb,Ojb])}\nfunction ekb(){ckb();return Bv(tv(uF,1),uyb,172,0,[_jb,akb,bkb])}\nfunction Vmb(a,b,c){return b==null?Ltb(a.d,null,c):dub(a.e,b,c)}\nfunction wk(a,b,c){return new sk(a,false,null,(Gh(),Fh),true,b,c)}\nfunction tsb(a,b){return $sb(a.a,b)?usb(a,Wv(b,17).e,null):null}\nfunction ql(a){_b(a);return Ql((Il(),new Im(Dl(ul(a.a,new yl)))))}\nfunction Epb(a){ypb();if(!a){return nqb(),mqb}return new Ipb(a)}\nfunction Oo(a,b){var c,d;d=Qo(a,b);c=a.a.ub(d);return new bp(a,c)}\nfunction Cpb(a,b){var c,d;d=a.Y();for(c=0;cb){throw new okb(Vb(a,b,'index'))}return a}\nfunction Zf(a,b){var c;Yf(a);c=a.d.nb(b);if(c){--a.f.c;$f(a)}return c}\nfunction RT(a,b,c){var d;d=(_b(a),new IU((Oh(),a)));PT(new QT(d,b,c))}\nfunction cmb(a,b){return kmb((bmb(),a.toLowerCase()),b.toLowerCase())}\nfunction rmb(a,b){return kmb((bmb(),a.toLowerCase()),b.toLowerCase())}\nfunction Jwb(){Fwb();return Bv(tv(DH,1),uyb,138,0,[Bwb,Cwb,Dwb,Ewb])}\nfunction bxb(a,b,c,d){Array.prototype.splice.apply(a,[b,c].concat(d))}\nfunction TI(a,b,c,d){var e;e=new mvb;e.c=b;e.b=c;e.a=d;d.b=c.a=e;++a.b}\nfunction Sm(a,b){var c;c=Hpb(Bo(new mo(a,b)));Ml(new mo(a,b));return c}\nfunction Su(d,a,b){if(b){var c=b.gc();d.a[a]=c(b)}else{delete d.a[a]}}\nfunction iu(d,a,b){if(b){var c=b.gc();b=c(b)}else{b=undefined}d.a[a]=b}\nfunction Dfb(a){yfb(this);this.d=a.d;this.c=a.c;this.a=a.a;this.b=a.b}\nfunction n7(){this.g=new q7;this.c=new q7;this.a=new GU;this.k=new GU}\nfunction dR(){this.d=new OQ;this.a=new tV;this.c=new SV;this.b=new CV}\nfunction oR(){this.i=new GU;this.g=new FI;this.n=new xS;this.q=new xS}\nfunction _Y(a,b,c,d){this.e=a;this.b=new GU;this.d=b;this.a=c;this.c=d}\nfunction oT(){oT=iI;lT=new FT;mT=new HT;jT=new JT;kT=new LT;nT=new NT}\nfunction DO(){DO=iI;BO=new EO(ozb,0);AO=new EO(qzb,1);CO=new EO(pzb,2)}\nfunction IK(){IK=iI;HK=Cc((EK(),Bv(tv(Cz,1),uyb,107,0,[DK,AK,BK,CK])))}\nfunction RK(){RK=iI;QK=Cc((NK(),Bv(tv(Dz,1),uyb,122,0,[MK,KK,JK,LK])))}\nfunction QN(){QN=iI;PN=Cc((MN(),Bv(tv(Mz,1),uyb,139,0,[KN,LN,JN,IN])))}\nfunction HN(){HN=iI;GN=Cc((DN(),Bv(tv(Lz,1),uyb,150,0,[BN,CN,AN,zN])))}\nfunction pcb(){pcb=iI;ocb=Cc((lcb(),Bv(tv(JE,1),uyb,194,0,[jcb,kcb])))}\nfunction Qhb(){Qhb=iI;Phb=Cc((Mhb(),Bv(tv(pF,1),uyb,174,0,[Khb,Lhb])))}\nfunction Ao(a){_b(a);return aw(a,19)?new IU((Oh(),Wv(a,19))):Bo(a.mb())}\nfunction yY(a){return Ckb(Ixb(Xv(rJ(a,(Rib(),Vhb)))))&&rJ(a,uib)!=null}\nfunction UY(a){return Ckb(Ixb(Xv(rJ(a,(Rib(),Vhb)))))&&rJ(a,uib)!=null}\nfunction jkb(a,b,c,d){b==null&&(b=Wxb);a.a+=''+(bmb(),b.substr(c,d-c))}\nfunction Mrb(a,b){var c;for(c=0;c>22&azb;d=a<0?bzb:0;return Ev(b,c,d)}\nfunction nbb(){kbb();return Bv(tv(zE,1),uyb,141,0,[jbb,gbb,hbb,fbb,ibb])}\nfunction Sgb(){Pgb();return Bv(tv(kF,1),uyb,115,0,[Lgb,Kgb,Ngb,Mgb,Ogb])}\nfunction Zib(){Xib();return Bv(tv(qF,1),uyb,85,0,[Wib,Sib,Tib,Uib,Vib])}\nfunction zK(){zK=iI;yK=Cc((sK(),Bv(tv(Bz,1),uyb,59,0,[qK,pK,oK,nK,rK])))}\nfunction yN(){yN=iI;xN=Cc((sN(),Bv(tv(Kz,1),uyb,32,0,[qN,$M,ZM,pN,rN])))}\nfunction DM(){DM=iI;CM=Cc((zM(),Bv(tv(Hz,1),uyb,100,0,[yM,xM,uM,vM,wM])))}\nfunction F9(){F9=iI;E9=PQ(UQ(UQ(UQ(TQ(new WQ,(d0(),N_)),U_),r_),B_),M_)}\nfunction TT(a,b){var c,d;for(d=b.mb();d.G();){c=Wv(d.H(),55);ST(a,c,0,0)}}\nfunction VT(a,b,c){var d,e;for(e=a.mb();e.G();){d=Wv(e.H(),55);UT(d,b,c)}}\nfunction X8(a,b,c){var d,e;d=0;for(e=0;eb){throw new okb('Index: '+a+', Size: '+b)}}\nfunction Cxb(a,b){if(a<0||a>=b){throw new okb('Index: '+a+', Size: '+b)}}\nfunction uob(a,b){var c,d;c=b.yb();d=Wvb(a,c);return !!d&&ovb(d.e,b.zb())}\nfunction zbb(a,b){var c;c=a.d;if(b>0){return Wv(yU(c.a,b-1),9)}return null}\nfunction xv(a,b,c,d,e,f){var g;g=yv(e,d);e!=9&&Bv(tv(a,f),b,c,e,g);return g}\nfunction pd(a){var b;if(!od(a)){throw new nvb}a.d=1;b=a.c;a.c=null;return b}\nfunction _f(a,b,c,d){this.f=a;this.e=b;this.d=c;this.b=d;this.c=!d?null:d.d}\nfunction MH(b,c){if(b&&typeof b==Sxb){try{b.__gwt$exception=c}catch(a){}}}\nfunction wT(a,b){if(a.a.$b(b.d,a.b)>0){vU(a.c,new WS(b.c,b.d,a.d));a.b=b.d}}\nfunction W4(a,b){var c;c=glb(a.j,b.j);if(c==0){return glb(a.k,b.k)}return c}\nfunction C6(a){var b,c;c=Wv(yU(a.f,0),7);b=Wv(rJ(c,(Rib(),uib)),7);return b}\nfunction M6(a){var b,c;c=Wv(yU(a.f,0),7);b=Wv(rJ(c,(Rib(),uib)),7);return b}\nfunction B$(a,b){return glb(Ixb(Yv(rJ(a,(Rib(),Cib)))),Ixb(Yv(rJ(b,Cib))))}\nfunction Ujb(){Ujb=iI;Tjb=Cc((Qjb(),Bv(tv(sF,1),uyb,153,0,[Njb,Pjb,Ojb])))}\nfunction gkb(){gkb=iI;fkb=Cc((ckb(),Bv(tv(uF,1),uyb,172,0,[_jb,akb,bkb])))}\nfunction mK(){mK=iI;lK=Cc((iK(),Bv(tv(Az,1),uyb,103,0,[cK,fK,gK,hK,dK,eK])))}\nfunction aL(){aL=iI;_K=Cc((YK(),Bv(tv(Ez,1),uyb,133,0,[WK,UK,XK,SK,VK,TK])))}\nfunction QM(){QM=iI;PM=Cc((KM(),Bv(tv(Iz,1),uyb,28,0,[JM,IM,HM,EM,GM,FM])))}\nfunction k4(){k4=iI;j4=Cc((g4(),Bv(tv(jD,1),uyb,125,0,[e4,b4,f4,d4,c4,a4])))}\nfunction K1(){I1();return Bv(tv(GC,1),uyb,109,0,[G1,B1,E1,C1,D1,A1,F1,H1])}\nfunction qM(){oM();return Bv(tv(Gz,1),uyb,41,0,[gM,fM,iM,nM,mM,lM,jM,kM,hM])}\nfunction Bgb(){zgb();return Bv(tv(iF,1),uyb,123,0,[ygb,xgb,wgb,ugb,tgb,vgb])}\nfunction bhb(){_gb();return Bv(tv(lF,1),uyb,124,0,[Ygb,Xgb,$gb,Wgb,Zgb,Vgb])}\nfunction bK(){bK=iI;aK=new DJ('de.cau.cs.kieler.labels.labelManager',null)}\nfunction ixb(){if(Date.now){return Date.now()}return (new Date).getTime()}\nfunction Xsb(a){var b;b=Wv(cxb(a.b,a.b.length),11);return new atb(a.a,b,a.c)}\nfunction dmb(a,b){var c;c=(bmb(),b.length);return emb(imb(a,a.length-c,c),b)}\nfunction dwb(a,b){var c;c=new zwb;c.c=true;c.d=b.zb();return ewb(a,b.yb(),c)}\nfunction He(a,b){var c;c=b.yb();return mp(),new Fk(c,Kd(a.b,c,Wv(b.zb(),19)))}\nfunction BU(a,b){var c;c=zU(a,b,0);if(c==-1){return false}a.vb(c);return true}\nfunction Cv(a,b){uv(b)!=9&&Bv(tb(b),b._c,b.__elementTypeId$,uv(b),a);return a}\nfunction Rub(a){ksb(a.c.a.c,a);Bxb(a.b!=a.c.a.b);a.a=a.b;a.b=a.b.a;return a.a}\nfunction qnb(a){uxb(!!a.c);ksb(a.e,a);a.c.I();a.c=null;a.b=onb(a);lsb(a.e,a)}\nfunction Acb(a,b,c){a.a=b;a.c=c;a.b.a.Q();_I(a.d);a.e.a.c=xv(UF,syb,1,0,4,1)}\nfunction Ar(a,b,c){Bk.call(this,Fpb(_b(a),_b(b)));this.b=a;this.c=b;this.a=c}\nfunction j9(a,b,c,d){this.b=new l9(this);this.a=a;this.c=b;this.e=c;this.d=d}\nfunction xub(a){$mb.call(this,a,0);pub(this);this.b.b=this.b;this.b.a=this.b}\nfunction ywb(a,b){qob.call(this,a,b);this.a=xv(yH,syb,183,2,0,1);this.b=true}\nfunction Qmb(a,b){return ew(b)?b==null?!!Ktb(a.d,null):bub(a.e,b):!!Ktb(a.d,b)}\nfunction RR(a,b){return Ws(),(a-b>0?a-b:-(a-b))<=$yb||a==b||isNaN(a)&&isNaN(b)}\nfunction Xs(a,b){Ws();return (a-b>0?a-b:-(a-b))<=$yb||a==b||isNaN(a)&&isNaN(b)}\nfunction Z5(a){var b,c;b=true;do{b?(c=W5(a)):(c=U5(a));b=!b}while(c);S5(a,a.d)}\nfunction Ru(a,b,c){var d;if(b==null){throw new Vlb}d=Pu(a,b);Su(a,b,c);return d}\nfunction sJ(a,b,c){!a.n&&(a.n=new ntb);c==null?Wmb(a.n,b):Umb(a.n,b,c);return a}\nfunction zU(a,b,c){for(;c=a.a.c.length){vU(a.a,new aJ)}return Wv(yU(a.a,b),20)}\nfunction Fe(a,b){var c;c=Wv(rp(a.a,b),19);if(!c){return null}return Kd(a.b,b,c)}\nfunction XP(a,b,c){var d;d=Pu(a,Gzb);if(!d){d=new Tu;Ru(a,Gzb,d)}Ru(d.kc(),b,c)}\nfunction Okb(a,b,c,d,e){var f;f=Mkb(a,b);$kb(c,f);f.g=e?8:0;f.f=d;f.e=e;return f}\nfunction mo(a,b){var c;this.f=a;this.b=b;c=Wv(Smb(a.b,b),126);this.c=!c?null:c.b}\nfunction fJ(a,b){var c,d,e;for(d=0,e=b.length;d0&&(d+=dab(b));a.b[c]&&(d+=eab(b));return d}\nfunction vub(a,b){var c;c=Wv(Wmb(a.c,b),176);if(c){Hub(c);return c.e}return null}\nfunction $s(a){if(RH(a,$xb)>0){return $xb}if(RH(a,eyb)<0){return eyb}return _H(a)}\nfunction Ph(a){Oh();Mh(a,'size');return _H(VH(WH(a,8),Nyb)?WH(a,8):Nyb),new Amb}\nfunction ukb(a){skb.call(this,(bmb(),a==null?Wxb:xb(a)),aw(a,46)?Wv(a,46):null)}\nfunction HU(a){tU(this);wxb(a>=0,'Initial capacity must not be negative')}\nfunction JQ(){JQ=iI;HQ=VQ(UQ(UQ(new WQ,(d0(),O_)),C_),J_);IQ=TQ(new WQ,G_)}\nfunction LX(){LX=iI;IX=new UX;GX=new XX;HX=new ZX;FX=new _X;JX=new bY;KX=new dY}\nfunction Fwb(){Fwb=iI;Bwb=new Gwb('All',0);Cwb=new Kwb;Dwb=new Mwb;Ewb=new Pwb}\nfunction x8(){x8=iI;w8=new y8(DAb,0);v8=new y8('LONGEST_PATH',1);u8=new y8(zAb,2)}\nfunction Rv(){Rv=iI;Ov=Ev(azb,azb,524287);Pv=Ev(0,0,524288);Dv(1);Dv(2);Qv=Dv(0)}\nfunction M1(){M1=iI;L1=Cc((I1(),Bv(tv(GC,1),uyb,109,0,[G1,B1,E1,C1,D1,A1,F1,H1])))}\nfunction pbb(){pbb=iI;obb=Cc((kbb(),Bv(tv(zE,1),uyb,141,0,[jbb,gbb,hbb,fbb,ibb])))}\nfunction Ugb(){Ugb=iI;Tgb=Cc((Pgb(),Bv(tv(kF,1),uyb,115,0,[Lgb,Kgb,Ngb,Mgb,Ogb])))}\nfunction _ib(){_ib=iI;$ib=Cc((Xib(),Bv(tv(qF,1),uyb,85,0,[Wib,Sib,Tib,Uib,Vib])))}\nfunction zvb(a){tvb();xvb(this,_H(QH(SH(Lv(UH(a)?YH(a):a,24)),bBb)),_H(QH(a,bBb)))}\nfunction tb(a){return ew(a)?$F:cw(a)?HF:bw(a)?EF:_v(a)?a.$c:zv(a)?a.$c:a.$c||$y}\nfunction uv(a){return a.__elementTypeCategory$==null?9:a.__elementTypeCategory$}\nfunction Ht(a){var b,c;if(a.a){c=null;do{b=a.a;a.a=null;c=Lt(b,c)}while(a.a);a.a=c}}\nfunction It(a){var b,c;if(a.b){c=null;do{b=a.b;a.b=null;c=Lt(b,c)}while(a.b);a.b=c}}\nfunction oJ(a){nJ();var b,c;c=jzb;for(b=0;bc&&(c=a[b])}return c}\nfunction KQ(a,b){var c;c=Wv(Smb(a.b,b),106);if(!c){c=b.rc();Umb(a.b,b,c)}return c}\nfunction rub(a,b){var c;c=Wv(Smb(a.c,b),176);if(c){uub(a,c);return c.e}return null}\nfunction R2(a,b,c,d){var e;e=Wv(rub(a.e,b),116);e.b+=c;e.a+=d;tub(a.e,b,e);a.d=true}\nfunction gtb(a){var b;++a.a;for(b=a.c.a.length;a.a'+a.d.f+'('+a.d+')':'e_'+txb(a)}\nfunction gT(a,b){cT();return a==$S&&b==bT||a==bT&&b==$S||a==aT&&b==_S||a==_S&&b==aT}\nfunction hT(a,b){cT();return a==$S&&b==_S||a==$S&&b==aT||a==bT&&b==aT||a==bT&&b==_S}\nfunction Bhb(){zhb();return Bv(tv(nF,1),uyb,110,0,[shb,whb,thb,xhb,uhb,yhb,vhb,rhb])}\nfunction sM(){sM=iI;rM=Cc((oM(),Bv(tv(Gz,1),uyb,41,0,[gM,fM,iM,nM,mM,lM,jM,kM,hM])))}\nfunction UM(){UM=iI;TM=new VM('OUTSIDE',0);SM=new VM('INSIDE',1);RM=new VM('FIXED',2)}\nfunction Hhb(){Hhb=iI;Fhb=new Ihb(tzb,0);Ghb=new Ihb('TOP',1);Ehb=new Ihb('BOTTOM',2)}\nfunction mxb(){mxb=iI;lxb=new qxb;kxb=new oxb('ISO-LATIN-1');jxb=new oxb('ISO-8859-1')}\nfunction lcb(){lcb=iI;jcb=new mcb('CLASSIC',0);kcb=new mcb('IMPROVE_STRAIGHTNESS',1)}\nfunction kW(){this.e=new FI;this.a=new $W;this.d=new FI;this.b=new GU;this.c=new GU}\nfunction kdb(a,b,c){this.b=b;this.a=a;this.c=c;vU(this.a.e,this);vU(this.b.b,this)}\nfunction Afb(a,b){a.d=Qlb(a.d,b.d);a.c=Nlb(a.c,b.c);a.a=Nlb(a.a,b.a);a.b=Qlb(a.b,b.b)}\nfunction $I(a,b){var c;c=b.c;b.a.b=b.b;b.b.a=b.a;b.a=b.b=null;b.c=null;--a.b;return c}\nfunction Jl(a,b){Il();var c;_b(a);_b(b);c=false;while(b.G()){c=c|a.ib(b.H())}return c}\nfunction pnb(a){var b;ksb(a.e,a);Bxb(a.b);a.c=a.a;b=Wv(a.a.H(),21);a.b=onb(a);return b}\nfunction sm(a){var b;while(a.b.G()){b=a.b.H();if(a.a.D(b)){return b}}return a.d=2,null}\nfunction _sb(a,b){if(!!b&&a.b[b.e]==b){Av(a.b,b.e,null);--a.c;return true}return false}\nfunction TH(a){if(ezb0&&a.c0&&a.e!=0&&qI(a.g,b/a.j*a.g.d)}}\nfunction WV(a){if(a.b.d.f.g==(CX(),xX)){return Wv(rJ(a.b.d.f,(Rib(),uib)),7)}return a.b.d}\nfunction VV(a){if(a.b.c.f.g==(CX(),xX)){return Wv(rJ(a.b.c.f,(Rib(),uib)),7)}return a.b.c}\nfunction od(a){dc(a.d!=3);switch(a.d){case 2:return false;case 0:return true;}return qd(a)}\nfunction CZ(a){switch(a.e){case 2:return sN(),rN;case 4:return sN(),ZM;default:return a;}}\nfunction DZ(a){switch(a.e){case 1:return sN(),pN;case 3:return sN(),$M;default:return a;}}\nfunction Km(a){var b;if(aw(a,90)){b=Wv(a,90);return new Lm(b.a)}else{return Il(),new dm(a)}}\nfunction Fpb(a,b){ypb();var c;c=new otb(1);ew(a)?Vmb(c,a,b):Ltb(c.d,a,b);return new mrb(c)}\nfunction Is(a,b){if(!a.g){return a.e}else{a.g=Is(a.g,b);--a.a;a.j=XH(a.j,b.c);return Gs(a)}}\nfunction Js(a,b){if(!a.e){return a.g}else{a.e=Js(a.e,b);--a.a;a.j=XH(a.j,b.c);return Gs(a)}}\nfunction Ue(a,b){var c,d,e;Dxb(b);c=false;for(e=b.mb();e.G();){d=e.H();c=c|a.ib(d)}return c}\nfunction nr(a){var b,c,d;b=0;for(d=a.mb();d.G();){c=d.H();b+=c!=null?vb(c):0;b=~~b}return b}\nfunction BY(a){var b,c,d,e;for(c=a.a,d=0,e=c.length;d0?1:d<0?-1:0)}\nfunction r5(a,b,c){this.g=a;this.d=b;this.e=c;this.a=new GU;p5(this);ypb();Gpb(this.a,null)}\nfunction Os(a,b){Xb(b>0);this.b=a;this.c=b;this.j=b;this.a=1;this.d=1;this.e=null;this.g=null}\nfunction qcb(a){a.a=null;a.e=null;a.b.c=xv(UF,syb,1,0,4,1);a.f.c=xv(UF,syb,1,0,4,1);a.c=null}\nfunction qhb(){ohb();return Bv(tv(mF,1),uyb,113,0,[fhb,hhb,ihb,jhb,khb,lhb,nhb,ehb,ghb,mhb])}\nfunction uvb(a){return wvb(a,26)*1.4901161193847656E-8+wvb(a,27)*1.1102230246251565E-16}\nfunction Fo(a){return aw(a,87)?Ii(Wv(a,87)):aw(a,88)?Wv(a,88).a:aw(a,63)?new ap(a):new Ro(a)}\nfunction Udb(a){var b;b=Wv(rJ(a,(Rib(),hib)),32);return a.g==(CX(),xX)&&(b==(sN(),rN)||b==ZM)}\nfunction YT(a,b){if(ZT(a,b)){Fd(a.a,Wv(rJ(b,(Rib(),fib)),18),b);return true}else{return false}}\nfunction QQ(a,b){var c;if(b){for(c=0;c<6;c++){Wv(yU(a.a,c),18).jb(Wv(yU(b.a,c),19))}}return a}\nfunction rI(a,b){var c;if(a.b){return null}else{c=oI(a.e,a.f);QI(a.a,c);c.g=a;a.d=b;return c}}\nfunction hJ(a,b){var c,d;for(d=WI(a,0);d.b!=d.d.c;){c=Wv(_ub(d),10);c.a+=b.a;c.b+=b.b}return a}\nfunction J9(a,b){var c,d;for(c=0;c0?!a.g?0:Es(a.g,b,c):a.c}\nfunction rk(a,b){var c,d;if(!a.b){return false}d=a.e;c=a.a.$b(b,d);return c<0|c==0&a.d==(Gh(),Fh)}\nfunction qk(a,b){var c,d;if(!a.c){return false}d=a.g;c=a.a.$b(b,d);return c>0|c==0&a.f==(Gh(),Fh)}\nfunction SH(a){var b;b=a.h;if(b==0){return a.l+a.m*czb}if(b==bzb){return a.l+a.m*czb-dzb}return a}\nfunction MI(a){var b,c,d,e;b=new FI;for(d=0,e=a.length;d=e;f--){a[f+1]=a[f]}a[e]=d}\nfunction kab(a,b,c,d){var e,f;e=jab(a,b,c,d);e<0&&(e=-e-1);for(f=c-1;f>=e;f--){a[f+1]=a[f]}a[e]=d}\nfunction Xe(a,b){var c,d;Dxb(b);for(d=b.mb();d.G();){c=d.H();if(!a.kb(c)){return false}}return true}\nfunction Ll(a,b){Il();var c;_b(b);while(a.G()){c=a.H();if(!Udb(Wv(c,9))){return false}}return true}\nfunction wV(a,b){var c,d,e;c=b.k-a.k;if(c==0){d=a.e.a*a.e.b;e=b.e.a*b.e.b;return glb(d,e)}return c}\nfunction YH(a){var b,c,d,e;e=a;d=0;if(e<0){e+=dzb;d=bzb}c=hw(e/czb);b=hw(e-c*czb);return Ev(b,c,d)}\nfunction n6(a,b){a.c.c=xv(UF,syb,1,0,4,1);o6(a,a.e,b);o6(a,a.a,b);ypb();Gpb(a.c,null);return p6(a)}\nfunction c5(a,b,c){a.g=i5(a,b,(sN(),ZM),a.b);a.d=i5(a,c,ZM,a.b);if(a.g.c==0||a.d.c==0){return}f5(a)}\nfunction d5(a,b,c){a.g=i5(a,b,(sN(),rN),a.j);a.d=i5(a,c,rN,a.j);if(a.g.c==0||a.d.c==0){return}f5(a)}\nfunction pU(a,b,c){return new VN(Qlb(a.a,b.a)-c/2,Qlb(a.b,b.b)-c/2,Jlb(a.a-b.a)+c,Jlb(a.b-b.b)+c)}\nfunction onb(a){if(a.a.G()){return true}if(a.a!=a.d){return false}a.a=new Ptb(a.e.d);return a.a.G()}\nfunction xU(a,b){var c,d;c=b.ob();d=c.length;if(d==0){return false}gxb(a.c,a.c.length,c);return true}\nfunction S5(a,b){var c,d;for(c=0;c0;e--){f=e-1;c=c|Y5(a,b,f,e)}return c}\nfunction V5(a,b){var c,d,e,f;c=false;d=a.d[b].length;for(f=0;f>22);e=a.h+b.h+(d>>22);return Ev(c&azb,d&azb,e&bzb)}\nfunction Mv(a,b){var c,d,e;c=a.l-b.l;d=a.m-b.m+(c>>22);e=a.h-b.h+(d>>22);return Ev(c&azb,d&azb,e&bzb)}\nfunction LI(a,b){var c;for(c=0;c<(bmb(),b.length);c++){if(a==b.charCodeAt(c)){return true}}return false}\nfunction yP(a,b){var c;for(c=0;c<(bmb(),b.length);c++){if(a==b.charCodeAt(c)){return true}}return false}\nfunction rJ(a,b){var c,d;if(a.n){d=Smb(a.n,b);if(d!=null){return d}}c=zJ(b);aw(c,5)&&sJ(a,b,c);return c}\nfunction lJ(a){var b,c,d;b=new jJ;for(d=WI(a,0);d.b!=d.d.c;){c=Wv(_ub(d),10);rn(b,0,new II(c))}return b}\nfunction Q6(a,b,c){var d,e,f,g;g=new U6(b,c);f=0;for(e=T6(g);e.G();){d=Wv(e.H(),7);Umb(a.c,d,Elb(f++))}}\nfunction Fb(a,b,c){_b(b);if(c.G()){vmb(b,a.C(c.H()));while(c.G()){vmb(b,a.c);vmb(b,a.C(c.H()))}}return b}\nfunction g9(a,b,c,d,e){if(d){h9(a,b)}else{d9(a,b,e);e9(a,b,c)}if(b.c.length>1){Gpb(b,a.b);V9(a.c,b)}}\nfunction Bv(a,b,c,d,e){e.$c=a;e._c=b;e.ad=kI;e.__elementTypeId$=c;e.__elementTypeCategory$=d;return e}\nfunction vS(a,b,c){switch(c.e){case 2:a.b=b;break;case 1:a.c=b;break;case 4:a.d=b;break;case 3:a.a=b;}}\nfunction B6(a,b,c){var d,e;e=C6(c).g;d=w6(a,b,e).a;return d-Klb(Wv(Smb(a.c,b),24).a-Wv(Smb(a.c,c),24).a)}\nfunction glb(a,b){if(ab){return 1}if(a==b){return 0}return isNaN(a)?isNaN(b)?0:1:-1}\nfunction Yi(a){switch(a.Y()){case 0:return Fi;case 1:return new Er(a.mb().H());default:return new gr(a);}}\nfunction Nt(){Nt=iI;var a,b;b=!(!!Error.stackTraceLimit||'stack' in new Error);a=new _t;Mt=b?new Tt:a}\nfunction RP(){RP=iI;OP=new DJ('intCoordinates',(xkb(),xkb(),vkb));PP=new CJ('jsonObject');QP=new HI(0,0)}\nfunction XZ(){XZ=iI;VZ=new YZ('MIRROR_X',0);WZ=new YZ('TRANSPOSE',1);UZ=new YZ('MIRROR_AND_TRANSPOSE',2)}\nfunction Hgb(){Hgb=iI;Fgb=new Igb(tzb,0);Egb=new Igb('INCOMING_ONLY',1);Ggb=new Igb('OUTGOING_ONLY',2)}\nfunction Seb(){Ieb();return Bv(tv(_E,1),uyb,60,0,[meb,jeb,ieb,peb,oeb,Heb,Geb,neb,keb,leb,qeb,Eeb,Feb])}\nfunction b3(){b3=iI;var a,b,c,d;a3=new vsb(_E);for(b=Seb(),c=0,d=b.length;c0){return Dvb(b-1,a.a.c.length),AU(a.a,b-1)}else{throw new osb}}\nfunction p2(a){if(a.b.c.length-a.e.c.length<0){QX(a,(sN(),ZM));a.a.a=a.j.a}else{QX(a,(sN(),rN));a.a.a=0}}\nfunction $mb(a,b){wxb(a>=0,'Negative initial capacity');wxb(b>=0,'Non-positive load factor');Ymb(this)}\nfunction rnb(a){var b;this.e=a;this.d=new hub(this.e.e);this.a=this.d;this.b=onb(this);b=a[WAb];this[WAb]=b}\nfunction Kkb(){++Fkb;this.n=null;this.j=null;this.i=null;this.d=null;this.b=null;this.k=null;this.a=null}\nfunction fpb(a){var b,c,d,e;e=1;for(c=0,d=a.length;c=0){e=e.a[1]}else{d=e;e=e.a[0]}}return d}\nfunction Yvb(a,b){var c,d,e;d=null;e=a.b;while(e){c=a.a.$b(b,e.d);if(c<=0){e=e.a[0]}else{d=e;e=e.a[1]}}return d}\nfunction u0(a,b,c,d){var e,f;for(f=a.mb();f.G();){e=Wv(f.H(),33);e.i.a=b.a+(d.a-e.j.a)/2;e.i.b=b.b;b.b+=e.j.b+c}}\nfunction o$(a,b){var c;if(a.c.length==0){return}c=Wv(FU(a,xv(qB,Nzb,9,a.c.length,0,1)),51);lpb(c,new z$);l$(c,b)}\nfunction t$(a,b){var c;if(a.c.length==0){return}c=Wv(FU(a,xv(qB,Nzb,9,a.c.length,0,1)),51);lpb(c,new C$);l$(c,b)}\nfunction _Z(a){var b,c;b=a.g;if(b==(CX(),xX)){c=Wv(rJ(a,(Rib(),hib)),32);return c==(sN(),$M)||c==pN}return false}\nfunction Gc(a,b){var c;Dxb(b);c=a[':'+b];xxb(!!c,'Enum constant undefined: %s',Bv(tv(UF,1),syb,1,4,[b]));return c}\nfunction Zb(a,b,c){if(!a){throw new slb(fc('lowerEndpoint (%s) > upperEndpoint (%s)',Bv(tv(UF,1),syb,1,4,[b,c])))}}\nfunction kv(a){ev();throw new zu(\"Unexpected typeof result '\"+a+\"'; please report this bug to the GWT team\")}\nfunction tN(a){switch(a.e){case 1:return pN;case 2:return rN;case 3:return $M;case 4:return ZM;default:return qN;}}\nfunction vK(a){switch(a.e){case 2:return pK;case 1:return oK;case 4:return nK;case 3:return rK;default:return qK;}}\nfunction Dkb(a){if(a>=48&&a<58){return a-48}if(a>=97&&a<97){return a-97+10}if(a>=65&&a<65){return a-65+10}return -1}\nfunction td(a,b){var c,d;for(d=Ep(Be(a.P()));d.b.G();){c=Wv(zm(d,d.b.H()),19);if(c.kb(b)){return true}}return false}\nfunction js(a){var b;if(!is(a)){throw new nvb}b=new fs(a.c,a.a);a.b=b;a.a.i==a.c.a?(a.a=null):(a.a=a.a.i);return b}\nfunction pp(a,b){mp();var c;if(a===b){return true}else if(aw(b,57)){c=Wv(b,57);return mr(nj(a),c.bb())}return false}\nfunction Gq(a,b,c,d){Dq();Mh(c,'oldCount');Mh(d,'newCount');if(a.Cb(b)==c){a.Gb(b,d);return true}else{return false}}\nfunction Bh(a,b,c,d,e){_b(c);_b(e);return Rr(new Ur(a.c,pk(a.b,new sk(a.d,true,b,c,false,null,(Gh(),Fh))),a.a),d,e)}\nfunction ck(a){hi();switch(a.Y()){case 0:return kr(),jr;case 1:return new Gr(a.mb().H());default:return new lr(a);}}\nfunction PH(a,b){var c;if(UH(a)&&UH(b)){c=a+b;if(ezb=d||bc){break}else e>=b&&++d}return d}\nfunction sn(a,b,c){var d,e,f,g;Dxb(c);g=false;f=WI(a,b);for(e=WI(c,0);e.b!=e.d.c;){d=_ub(e);$ub(f,d);g=true}return g}\nfunction Uf(a,b){var c,d,e;if(b.V()){return false}e=a.Y();c=a.d.jb(b);if(c){d=a.d.Y();a.f.c+=d-e;e==0&&Vf(a)}return c}\nfunction qJ(a,b){var c;if(!b){return a}c=!b.n?(ypb(),ypb(),wpb):b.n;c.V()||(!a.n?(a.n=new ptb(c)):he(a.n,c));return a}\nfunction Gb(b,c,d){var e;try{Fb(b,c,d)}catch(a){a=OH(a);if(aw(a,181)){e=a;throw new ukb(e)}else throw NH(a)}return c}\nfunction Qb(b,c,d){var e;try{Pb(b,c,d)}catch(a){a=OH(a);if(aw(a,181)){e=a;throw new ukb(e)}else throw NH(a)}return c}\nfunction NH(a){var b;if(aw(a,164)){b=Wv(a,164);if(gw(b.b)!==gw((it(),ht))){return gw(b.b)===gw(ht)?null:b.b}}return a}\nfunction SW(a,b){var c;c=Wv(rJ(hX(a),(Rib(),zib)),9);while(c){if(c==b){return true}c=Wv(rJ(hX(c),zib),9)}return false}\nfunction EZ(a){switch(Wv(rJ(a,(Rib(),mib)),140).e){case 1:sJ(a,mib,(Hhb(),Ehb));break;case 2:sJ(a,mib,(Hhb(),Ghb));}}\nfunction Kk(a){hi();switch(a.c){case 0:return kr(),jr;case 1:return new Gr(Sl(new jtb(a)));default:return new Jk(a);}}\nfunction Ti(a){Gi();var b,c;for(b=0,c=a.length;b-129&&a<128){b=a+128;c=(Glb(),Flb)[b];!c&&(c=Flb[b]=new wlb(a));return c}return new wlb(a)}\nfunction R5(a){var b,c;b=Z4(a.b,a.d);c=$xb;while(c>b){S5(a,a.d);if(b==0){c=0;break}W5(a);U5(a);c=b;b=Z4(a.b,a.d)}a.c=c}\nfunction yvb(){tvb();var a,b,c;c=svb+++ixb();a=hw(Math.floor(c*FAb))&bBb;b=hw(c-a*aBb);this.a=a^1502;this.b=b^_Ab}\nfunction vb(a){return ew(a)?Pxb(a):cw(a)?hw((Dxb(a),a)):bw(a)?Ckb((Dxb(a),a))?1231:1237:_v(a)?a.v():zv(a)?txb(a):txb(a)}\nfunction AQ(a,b,c){var d,e,f;e=new jQ;e.d=c;d=UP(e,b);f=new dR;Ckb(Ixb(Xv(rJ(d,yQ))))?YQ(f,d,new sI):BQ(a,f,d);ZP(e,d)}\nfunction E6(a,b,c,d){var e,f,g,h;h=new U6(b,d);g=0;for(f=T6(h);f.G();){e=Wv(f.H(),7);Umb(a.i,e,Elb(g++))}Umb(c,b,Elb(g))}\nfunction c6(a,b){var c,d,e,f,g;c=0;g=0;for(e=0,f=b.length;e=1?pK:nK}return c}\nfunction Cm(a){_b(a.b);if(a.b.G()){return true}while(a.a.G()){_b(a.b=a.Wb(a.a.H()));if(a.b.G()){return true}}return false}\nfunction m7(a){if(a.d!=a.c.d||a.i!=a.g.d){a.a.c=xv(UF,syb,1,0,4,1);xU(a.a,a.c);xU(a.a,a.g);a.d=a.c.d;a.i=a.g.d}return a.a}\nfunction Yf(a){var b;if(a.b){Yf(a.b);if(a.b.d!=a.c){throw new nsb}}else if(a.d.V()){b=Wv(Smb(a.f.b,a.e),19);!!b&&(a.d=b)}}\nfunction H9(a,b,c,d,e){var f,g,h,i;i=Co(a);g9(b,i,d,e,c);f=0;for(h=new Tob(i);h.ab){avb(c);break}}$ub(c,b)}\nfunction dub(a,b,c){var d;d=Utb(a.a,b);Wtb(a.a,b,c===undefined?null:c);if(d===undefined){++a.c;msb(a.b)}else{++a.d}return d}\nfunction qgb(a,b,c){if((b-a<=0?0-(b-a):b-a)uAb?a-c>uAb:c-a>uAb}\nfunction Qgb(a){switch(a.e){case 0:return Kgb;case 1:return Lgb;case 2:return Mgb;case 3:return Ngb;default:return Ogb;}}\nfunction uS(a,b){switch(b.e){case 2:return a.b;case 1:return a.c;case 4:return a.d;case 3:return a.a;default:return false;}}\nfunction vN(a){sN();switch(a.e){case 4:return $M;case 1:return ZM;case 3:return pN;case 2:return rN;default:return qN;}}\nfunction c7(a,b){if(b==a.c){return a.d}else if(b==a.d){return a.c}else{throw new slb('Node '+b+' not part of edge '+a)}}\nfunction zO(a,b){var c;if(Zsb(a.a,b)){return Wv(Zsb(a.a,b)?a.b[b.e]:null,62)}else{c=new ZN;Wsb(a.a,b);usb(a,b.e,c);return c}}\nfunction Zeb(a,b){var c,d,e,f;f=a.g.tb();c=0;while(f.G()){d=Ixb(Yv(f.H()));e=d-b;if(e>RAb){return c}else e>SAb&&++c}return c}\nfunction Usb(a){var b,c,d,e;c=(b=Wv(Hkb((d=a.$c,e=d.f,e==IF?d:e)),11),new atb(b,Wv(exb(b,b.length),11),0));Wsb(c,a);return c}\nfunction yR(a,b){var c,d;for(d=new Tob(b);d.ab&&d.$b(a[f-1],a[f])>0;--f){g=a[f];Av(a,f,a[f-1]);Av(a,f-1,g)}}}\nfunction k3(a){var b,c;if(!MM(Wv(rJ(a,(eM(),TL)),28))){for(c=new Tob(a.f);c.a %s',Bv(tv(UF,1),syb,1,4,[Elb(b),Elb(c)]));d=a.length;c=c=0;c--){a.j=(b=new N5(a.e,a.d,c,1),new b7(c,a.d,b));d=d|O5(a,c)}return d}\nfunction k6(a){this.f=(mp(),new ntb);this.n=new ntb;this.k=new ntb;this.g=new vtb;this.i=new Vr((Tq(),Sq));this.j=a;c6(this,a)}\nfunction vsb(a){var b;this.a=(b=Wv(a.e&&a.e(),11),new atb(b,Wv(exb(b,b.length),11),0));this.b=xv(UF,syb,1,this.a.a.length,4,1)}\nfunction jf(a,b){var c;if(b===a){return true}if(!aw(b,18)){return false}c=Wv(b,18);if(c.Y()!=a.Y()){return false}return a.lb(c)}\nfunction Reb(a){Ieb();switch(a.e){case 1:return meb;case 2:return ieb;case 3:return oeb;case 4:return Geb;default:return Feb;}}\nfunction pgb(a,b){switch(b.e){case 1:return a.e.d;case 2:return a.e.c;case 3:return a.e.a;case 4:return a.e.b;default:return 0;}}\nfunction xO(){uO();return Bv(tv(Oz,1),uyb,67,0,[rO,qO,sO,iO,hO,jO,mO,lO,kO,pO,oO,nO,fO,eO,gO,cO,bO,dO,_N,$N,aO,tO])}\nfunction zM(){zM=iI;yM=new AM(szb,0);xM=new AM('JUSTIFIED',1);uM=new AM('BEGIN',2);vM=new AM(qzb,3);wM=new AM('END',4)}\nfunction DN(){DN=iI;BN=new EN('PORTS',0);CN=new EN('PORT_LABELS',1);AN=new EN('NODE_LABELS',2);zN=new EN('MINIMUM_SIZE',3)}\nfunction kP(){kP=iI;jP=new lP('UNKNOWN',0);gP=new lP('ABOVE',1);hP=new lP('BELOW',2);iP=new DJ('de.cau.cs.kieler.labelSide',jP)}\nfunction Qjb(){Qjb=iI;Njb=new Rjb('EQUALLY_DISTRIBUTED',0);Pjb=new Rjb('NORTH_STACKED',1);Ojb=new Rjb('NORTH_SEQUENCE',2)}\nfunction gI(){fI={};!Array.isArray&&(Array.isArray=function(a){return Object.prototype.toString.call(a)==='[object Array]'})}\nfunction SR(a,b){return Ws(),Ws(),((a-b>0?a-b:-(a-b))<=$yb||a==b||isNaN(a)&&isNaN(b)?0:ab?1:Ys(isNaN(a),isNaN(b)))>0}\nfunction TR(a,b){return Ws(),Ws(),((a-b>0?a-b:-(a-b))<=$yb||a==b||isNaN(a)&&isNaN(b)?0:ab?1:Ys(isNaN(a),isNaN(b)))<0}\nfunction Veb(a){var b,c;a.d||cfb(a);c=new jJ;b=a.b.mb();b.H();while(b.G()){QI(c,Wv(b.H(),92).a)}Bxb(c.b!=0);$I(c,c.c.b);return c}\nfunction $db(a){var b,c,d,e;e=new Wub;b=new IU(a.c);Dpb(b);for(d=new Tob(b);d.ab.f){return 1}else if(a.gb.g){return 1}return a.b-b.b}\nfunction S8(a,b){if(b.c==a){return b.d}else if(b.d==a){return b.c}throw new slb('Input edge is not connected to the input port.')}\nfunction q5(a){var b;if(a.c==0){return}b=Wv(yU(a.a,a.b),128);b.b==1?(++a.b,a.b0.5&&f<50){e=ofb(d);c=$eb(d,e,true);b=Jlb(c.b);++f}return $eb(a,e,false)}\nfunction jfb(a){var b,c,d,e,f;d=gfb(a);b=rAb;f=0;e=0;while(b>0.5&&f<50){e=nfb(d);c=$eb(d,e,true);b=Jlb(c.a);++f}return $eb(a,e,false)}\nfunction QR(a){var b,c,d;this.a=new Wub;this.e=new vtb;this.f=0;for(c=0,d=a.length;c2000){vt=a;wt=$wnd.setTimeout(Et,10)}}if(ut++==0){Ht((Gt(),Ft));return true}return false}\nfunction kS(a){var b,c;for(c=new Tob(a.a.b);c.a0),b.a.sb(b.c=--b.b))}\nfunction a$(a){var b;if(!LM(Wv(rJ(a,(eM(),TL)),28))){return}b=a.c;b$((Cxb(0,b.c.length),Wv(b.c[0],16)));b$(Wv(yU(b,b.c.length-1),16))}\nfunction NV(a,b,c){nI(c,'Compound graph preprocessor',1);a.a=new xk;RV(a,b,null);MV(a,b);sJ(b,(Rib(),bib),a.a);a.a=null;Ymb(a.b);pI(c)}\nfunction P0(a){var b,c;b=Wv(Dm(Uh(iX(a))),12);c=Wv(Dm(Uh(mX(a))),12);return !Ckb(Ixb(Xv(rJ(b,(Rib(),Iib)))))||!Ckb(Ixb(Xv(rJ(c,Iib))))}\nfunction O6(a,b,c){if(b.g==(CX(),AX)&&c.g==zX){a.d=L6(b,(sN(),pN));a.b=L6(b,$M)}if(c.g==AX&&b.g==zX){a.d=L6(c,(sN(),$M));a.b=L6(c,pN)}}\nfunction _8(a,b,c){var d,e,f,g;f=b.g;g=c.g;if(f!=g){return f.e-g.e}else{d=a.a[b.k];e=a.a[c.k];return !d&&!e?0:!d?-1:!e?1:glb(d.a,e.a)}}\nfunction jab(a,b,c,d){var e,f,g,h;f=b;e=c-1;while(f<=e){g=f+e>>>1;h=a[g];if(hd){e=g-1}else{return g}}return -(f+1)}\nfunction Id(a){return aw(a,137)?(ypb(),new dsb(Wv(a,137))):aw(a,18)?(ypb(),new Frb(Wv(a,18))):aw(a,20)?Hpb(Wv(a,20)):(ypb(),new zqb(a))}\nfunction Kd(a,b,c){return aw(c,137)?new Lg(a,b,Wv(c,137)):aw(c,18)?new Kg(a,b,Wv(c,18)):aw(c,20)?Ld(a,b,Wv(c,20),null):new _f(a,b,c,null)}\nfunction tn(b,c){var d;d=b.ub(c);try{return d.H()}catch(a){a=OH(a);if(aw(a,74)){throw new okb(\"Can't get element \"+c)}else throw NH(a)}}\nfunction rp(b,c){mp();_b(b);try{return b.cb(c)}catch(a){a=OH(a);if(aw(a,119)){return null}else if(aw(a,76)){return null}else throw NH(a)}}\nfunction Qu(f,a){var b=f.a;var c;a=String(a);b.hasOwnProperty(a)&&(c=b[a]);var d=(ev(),dv)[typeof c];var e=d?d(c):kv(typeof c);return e}\nfunction kgb(a,b,c,d){if(bb.e){return 1}else if(a.fb.f){return 1}return txb(a)-txb(b)}\nfunction QZ(a){switch(a.e){case 1:return sN(),rN;case 4:return sN(),$M;case 3:return sN(),ZM;case 2:return sN(),pN;default:return sN(),qN;}}\nfunction Ki(a){var b,c;b=cxb(a.c,a.c.length);switch(b.length){case 0:return Fi;case 1:c=new Er(b[0]);return c;default:return new gr(Ti(b));}}\nfunction EY(a){var b,c,d,e;d=xv(ow,syb,64,a.c.length,0,1);e=0;for(c=new Tob(a);c.a=a.b>>1){d=a.c;for(c=a.b;c>b;--c){d=d.b}}else{d=a.a.a;for(c=0;c0&&(e.b+=b);return e}\nfunction eU(a,b){var c,d,e;e=new FI;for(d=a.mb();d.G();){c=Wv(d.H(),55);UT(c,0,e.b);e.b+=c.e.b+b;e.a=Nlb(e.a,c.e.a)}e.a>0&&(e.a+=b);return e}\nfunction tub(a,b,c){var d,e,f;e=Wv(Smb(a.c,b),176);if(!e){d=new Jub(a,b,c);Umb(a.c,b,d);Gub(d);return null}else{f=job(e,c);uub(a,e);return f}}\nfunction y3(a,b){if(!Keb(a.b).kb(b.c)){return false}return Oeb(a.b)?!(rgb(b.d,a.c,a.a)&&rgb(b.a,a.c,a.a)):rgb(b.d,a.c,a.a)&&rgb(b.a,a.c,a.a)}\nfunction s6(a,b){return a.ch6(a.d,q6(b.a,b.b))?-1:a.c==b.c&&q6(a.a,a.b)==q6(a.a,a.b)?0:1}\nfunction L5(a,b,c){if(a.e){switch(a.b){case 1:g5(a.c,b,c);break;case 0:h5(a.c,b,c);}}else{e5(a.c,b,c)}a.a[b.k][c.k]=a.c.i;a.a[c.k][b.k]=a.c.e}\nfunction LW(a,b,c){switch(c.e){case 1:a.a=b.a/2;a.b=0;break;case 2:a.a=b.a;a.b=b.b/2;break;case 3:a.a=b.a/2;a.b=b.b;break;case 4:a.a=0;a.b=b.b/2;}}\nfunction Jeb(a){switch(a.e){case 8:return sN(),$M;case 9:return sN(),pN;case 10:return sN(),ZM;case 11:return sN(),rN;default:return sN(),qN;}}\nfunction Qt(a){var b,c,d;b='Ot';d=Slb(a.length,5);for(c=0;c=c+1&&(a.splice(0,c+1),undefined);break}}return a}\nfunction Vv(a,b){if(ew(a)){return !!Uv[b]}else if(a._c){return !!a._c[b]}else if(cw(a)){return !!Tv[b]}else if(bw(a)){return !!Sv[b]}return false}\nfunction jQ(){RP();this.i=(mp(),new ntb);this.a=new ntb;this.k=new ntb;this.j=new ntb;this.b=new ntb;this.n=new ntb;this.f=new ntb;this.e=new ntb}\nfunction r$(a,b){var c,d;if(b.a.R(a)){return}else{d=Wv(rJ(a,(Rib(),hib)),32);c=Wv(yU(a.f,0),7);d==(sN(),$M)?QX(c,pN):d==pN&&QX(c,$M);b.a.db(a,b)}}\nfunction bbb(a){var b,c;c=Plb(1,Wv(rJ(a,(Rib(),Eib)),24).a);a.c.f.g==(CX(),AX)&&a.d.f.g==AX?(b=1):a.c.f.g==AX||a.d.f.g==AX?(b=2):(b=8);return c*b}\nfunction P1(a){var b,c,d,e,f;f=Wv(rJ(a,(Rib(),uib)),7);b=Wv(FU(a.b,xv(dB,gAb,12,a.b.c.length,0,1)),47);for(d=0,e=b.length;de&&Av(b,e,null);return b}\nfunction npb(a,b){var c,d,e;e=a.a.length;b.lengthe&&Av(b,e,null);return b}\nfunction xb(a){return ew(a)?a:cw(a)?ilb((Dxb(a),a)):bw(a)?Bkb(Ckb((Dxb(a),a))):_v(a)?a.w():zv(a)?ob(a):a.toString?a.toString():'[JavaScriptObject]'}\nfunction A6(a){var b,c,d,e,f;f=0;for(c=a.b,d=0,e=c.length;d0);if((b&-b)==b){return hw(b*wvb(a,31)*4.6566128730773926E-10)}do{c=wvb(a,31);d=c%b}while(c-d+(b-1)<0);return hw(d)}\nfunction zcb(a,b){if(a.c.f==b){return a.d.f}else if(a.d.f==b){return a.c.f}else{throw new slb('Node '+b+' is neither source nor target of edge '+a)}}\nfunction Ekb(a,b,c){vxb(a>=0&&a<=1114111);if(a>=ayb){b[c++]=55296+(a-ayb>>10&1023)&byb;b[c]=56320+(a-ayb&1023)&byb;return 2}else{b[c]=a&byb;return 1}}\nfunction Ol(a,b){Il();var c,d;while(a.G()){if(!b.G()){return false}c=a.H();d=b.H();if(!(gw(c)===gw(d)||c!=null&&rb(c,d))){return false}}return !b.G()}\nfunction JS(a){var b,c,d;Vvb(a.b.a);a.a=xv(kA,syb,25,a.c.b.a.b.c.length,0,1);b=0;for(d=new Tob(a.c.b.a.b);d.af&&Av(b,f,null);return b}\nfunction qX(a,b,c){if(!!c&&(b<0||b>c.a.c.length)){throw new slb('index must be >= 0 and <= layer node count')}!!a.d&&BU(a.d.a,a);a.d=c;!!c&&uU(c.a,b,a)}\nfunction Zvb(a,b,c,d,e,f,g,h){var i,j;if(!d){return}i=d.a[0];!!i&&Zvb(a,b,c,i,e,f,g,h);$vb(a,c,d.d,e,f,g,h)&&b.ib(d);j=d.a[1];!!j&&Zvb(a,b,c,j,e,f,g,h)}\nfunction Gxb(a,b,c){if(a<0){throw new okb(jyb+a+' < 0')}if(b>c){throw new okb('toIndex: '+b+' > size '+c)}if(a>b){throw new slb(jyb+a+' > toIndex: '+b)}}\nfunction ee(a,b){var c,d,e;c=b.yb();e=b.zb();d=a.cb(c);if(!(gw(e)===gw(d)||e!=null&&rb(e,d))){return false}if(d==null&&!a.R(c)){return false}return true}\nfunction h1(a,b,c){var d;d=b.c.f;if(d.g==(CX(),zX)){sJ(a,(Rib(),qib),Wv(rJ(d,qib),7));sJ(a,rib,Wv(rJ(d,rib),7))}else{sJ(a,(Rib(),qib),b.c);sJ(a,rib,c.d)}}\nfunction w2(a,b,c){var d;d=b.c.f;if(d.g==(CX(),zX)){sJ(a,(Rib(),qib),Wv(rJ(d,qib),7));sJ(a,rib,Wv(rJ(d,rib),7))}else{sJ(a,(Rib(),qib),b.c);sJ(a,rib,c.d)}}\nfunction at(a,b,c){var d,e,f,g,h;bt(a);for(e=(a.i==null&&(a.i=xv(_F,Txb,46,0,0,1)),a.i),f=0,g=e.length;f>>28]|b[a>>24&15]<<4|b[a>>20&15]<<8|b[a>>16&15]<<12|b[a>>12&15]<<16|b[a>>8&15]<<20|b[a>>4&15]<<24|b[a&15]<<28}\nfunction ZV(a,b,c){var d,e;if(b.c==(djb(),bjb)&&c.c==ajb){return -1}else if(b.c==ajb&&c.c==bjb){return 1}d=aW(b.a,a.a);e=aW(c.a,a.a);return b.c==bjb?e-d:d-e}\nfunction L7(a){var b,c,d,e,f;e=$xb;f=null;for(d=new Tob(a.d);d.a0||!g&&h==0)){return false}return true}\nfunction Yj(a){hi();var b,c;if(!a.G()){return kr(),jr}c=a.H();if(!a.G()){return new Gr(c)}b=new Wub;stb(b,_b(c));do{stb(b,_b(a.H()))}while(a.G());return ck(b)}\nfunction m6(a,b,c){a.e=b;a.a=c;a.d=n6(a,(sN(),ZM));a.d+=n6(a,rN);j6(a,b,c,ZM,a.f);j6(a,b,c,rN,a.n);a.b=n6(a,ZM);a.b+=n6(a,rN);j6(a,c,b,ZM,a.f);j6(a,c,b,rN,a.n)}\nfunction hmb(a){var b,c,d;c=(bmb(),a.length);d=0;while(dd&&a.charCodeAt(b-1)<=32){--b}return d>0||b>19;j=b.h>>19;if(i!=j){return j-i}e=a.h;h=b.h;if(e!=h){return e-h}d=a.m;g=b.m;if(d!=g){return d-g}c=a.l;f=b.l;return c-f}\nfunction K7(a){var b,c,d,e;for(c=(e=(new Snb(a.p.a)).a.bb().mb(),new Ynb(e));c.a.G();){b=(d=Wv(c.a.H(),21),Wv(d.yb(),89));if(b.e&&a.b[b.b]<0){return b}}return null}\nfunction TN(a,b){var c,d,e,f,g;d=Qlb(a.d,b.d);f=Qlb(a.e,b.e);e=Nlb(a.d+a.c,b.d+b.c);g=Nlb(a.e+a.b,b.e+b.b);if(e=b.length){throw new okb('Greedy SwitchDecider: Free layer layer not in graph.')}this.b=b[a];this.c=new r6(this.b);this.d=new R6(this.b)}\nfunction _n(a,b){var c;this.f=a;this.b=this.f.c;c=a.d;bc(b,c);if(b>=(c/2|0)){this.e=a.e;this.d=c;while(b++0){Yn(this)}}this.a=null}\nfunction qS(a){var b,c,d;for(c=new Tob(a.a.b);c.a0&&(a.g=Ls(a.g));return Ks(a);case 2:Cs(a.e)<0&&(a.e=Ks(a.e));return Ls(a);default:a.d=1+Plb(Rs(a.e),Rs(a.g));return a;}}\nfunction k5(a,b){this.f=(mp(),new ntb);this.b=new ntb;this.j=new ntb;this.a=a;this.c=b;this.c>0&&j5(this,this.c-1,(sN(),ZM));this.c0&&Lr(a,b,c);return 0}e=xv(mw,Yyb,26,1,12,1);d=Ns(f,a.d,b,c,e);Us(a.c,f,d);return e[0]}\nfunction l$(a,b){var c,d,e,f,g;e=Wv(rJ(b,(Rib(),Jib)),15).a*Wv(rJ(b,(Mjb(),qjb)),15).a;g=a[0].i.a+a[0].j.a;for(f=1;f=0;b--){rvb[b]=d;d*=0.5}c=1;for(a=24;a>=0;a--){qvb[a]=c;c*=0.5}}\nfunction f5(a){while(a.g.c!=0&&a.d.c!=0){if(o5(a.g).c>o5(a.d).c){a.i+=a.g.c;q5(a.d)}else if(o5(a.d).c>o5(a.g).c){a.e+=a.d.c;q5(a.g)}else{a.i+=n5(a.g);a.e+=n5(a.d);q5(a.g);q5(a.d)}}}\nfunction TP(a){if(!a){throw new EQ('An element is null. The origin of an edge could not be determined, this might be due to an inconsistency within the internal element mappings.')}}\nfunction UP(a,b){var c,d;Ymb(a.i);Ymb(a.a);Ymb(a.k);Ymb(a.j);Ymb(a.b);Ymb(a.n);Ymb(a.f);Ymb(a.e);if(a.d){d=Pu(a.d,OP.b);!!d&&!!d.ic()&&(a.c=d.ic().a)}c=fQ(a,b,null);bQ(a,b);return c}\nfunction kfb(a){var b,c,d,e,f,g;d=hfb(gfb(a));b=rAb;f=0;e=0;while(b>0.5&&f<50){e=ofb(d);c=$eb(d,e,true);b=Jlb(c.b);++f}g=Yv(tn(Eo(a.g),Eo(a.g).b-1));return $eb(a,(Dxb(g),g)-e,false)}\nfunction lfb(a){var b,c,d,e,f,g;d=hfb(gfb(a));b=rAb;f=0;e=0;while(b>0.5&&f<50){e=nfb(d);c=$eb(d,e,true);b=Jlb(c.a);++f}g=Yv(tn(Eo(a.g),Eo(a.g).b-1));return $eb(a,(Dxb(g),g)-e,false)}\nfunction Ze(a){var b,c,d,e;e=new Bmb('[');b=false;for(d=a.mb();d.G();){c=d.H();b?(e.a+=', ',e):(b=true);ymb(e,c===a?'(this Collection)':(bmb(),c==null?Wxb:xb(c)))}e.a+=']';return e.a}\nfunction ie(a){var b,c,d,e;e=new Bmb('{');b=false;for(d=a.bb().mb();d.G();){c=Wv(d.H(),21);b?(e.a+=', ',e):(b=true);ymb(e,je(a,c.yb()));e.a+='=';ymb(e,je(a,c.zb()))}e.a+='}';return e.a}\nfunction Ks(a){var b;dc(!!a.g);b=a.g;a.g=b.e;b.e=a;b.j=a.j;b.a=a.a;a.a=1+Zr(a.e)+Zr(a.g);a.j=PH(PH(a.c,Ts(a.e)),Ts(a.g));a.d=1+Plb(Rs(a.e),Rs(a.g));b.d=1+Plb(Rs(b.e),Rs(b.g));return b}\nfunction Ls(a){var b;dc(!!a.e);b=a.e;a.e=b.g;b.g=a;b.j=a.j;b.a=a.a;a.a=1+Zr(a.e)+Zr(a.g);a.j=PH(PH(a.c,Ts(a.e)),Ts(a.g));a.d=1+Plb(Rs(a.e),Rs(a.g));b.d=1+Plb(Rs(b.e),Rs(b.g));return b}\nfunction ZO(a){var b;if(!Qob(new Tob(AW(a.e)))){return}b=Wv(oW(a.e,(eM(),TL)),28);b==(KM(),FM)?SO(a.e):b==GM?TO(a.e):Ckb(Ixb(Xv(oW(a.e,AL))))||a.e.e.j.a==0&&a.e.e.j.b==0?UO(a.e):WO(a)}\nfunction s3(a,b,c){var d,e,f;e=new Tob(a);if(e.ah?e:h}}return e}\nfunction sT(a,b){oT();var c;if(a.c==b.c){if(a.b==b.b||gT(a.b,b.b)){c=dT(a.b)?1:-1;if(a.a&&!b.a){return c}else if(!a.a&&b.a){return -c}}return xlb(a.b.e,b.b.e)}else{return glb(a.c,b.c)}}\nfunction nU(a){var b,c;c=xI(MI(Bv(tv(qz,1),Fzb,10,0,[a.f.i,a.i,a.a])));b=a.f.e;switch(a.g.e){case 1:c.b-=b.d;break;case 2:c.a+=b.c;break;case 3:c.b+=b.a;break;case 4:c.a-=b.b;}return c}\nfunction z6(a,b){var c;c=0;if(b.g==(CX(),BX)){if(C6(b).f!=a.a){D6(a,C6(b).f);a.e=true}a.e?++a.g:(c+=a.f)}else if(b.g==zX){a.e?(c+=a.g):++a.f}else if(b.g==AX){D6(a,b);a.e=false}return c}\nfunction HV(a,b,c,d,e){var f,g,h,i;i=null;for(h=new Tob(d);h.a0){f%2>0&&(d+=h[f+1]);f=(f-1)/2|0;++h[f]}}return d}\nfunction aeb(a,b,c){var d,e,f,g;a.e=b;if(c){for(e=(g=(new Snb(a.a.a)).a.bb().mb(),new Ynb(g));e.a.G();){d=(f=Wv(e.a.H(),21),Wv(f.yb(),12));sJ(d,(Rib(),Mib),a.e);QX(d.c,b.a);QX(d.d,b.b)}}}\nfunction g4(){g4=iI;e4=new h4(tzb,0);b4=new h4(ozb,1);f4=new h4(pzb,2);d4=new h4('LEFT_RIGHT_CONSTRAINT_LOCKING',3);c4=new h4('LEFT_RIGHT_CONNECTION_LOCKING',4);a4=new h4('EDGE_LENGTH',5)}\nfunction N5(a,b,c,d){var e;this.b=d;this.e=a.a;e=b[c];this.d=vv(KH,[Txb,xAb],[227,26],13,[e.length,e.length],2);this.a=vv(mw,[Txb,Yyb],[52,26],12,[e.length,e.length],2);this.c=new k5(b,c)}\nfunction fwb(a,b,c,d){var e,f;f=b;e=f.d==null||a.a.$b(c.d,f.d)>0?1:0;while(f.a[e]!=c){f=f.a[e];e=a.a.$b(c.d,f.d)>0?1:0}f.a[e]=d;d.b=c.b;d.a[0]=c.a[0];d.a[1]=c.a[1];c.a[0]=null;c.a[1]=null}\nfunction ZQ(a,b,c){var d,e,f,g;nI(c,Tzb,1);NQ(a.d,b);g=sV(a.a,b);if(g.Y()==1){_Q(Wv(g.sb(0),55),c)}else{f=1/g.Y();for(e=g.mb();e.G();){d=Wv(e.H(),55);_Q(d,rI(c,f))}}qV(a.a,g,b);bR(b);pI(c)}\nfunction o6(a,b,c){var d,e,f,g,h;h=new U6(b,c);for(g=T6(h);g.G();){f=Wv(g.H(),7);for(e=Uh(Sh((Gi(),new gr(Ti(Bv(tv(UF,1),syb,1,4,[f.b,f.e]))))));Cm(e);){d=Wv(Dm(e),12);bW(d)||l6(a,b,f,d)}}}\nfunction _6(a,b){var c,d,e;e=nX(a,b);for(d=e.mb();d.G();){c=Wv(d.H(),7);if(rJ(c,(Rib(),Bib))!=null||Cm(Uh(Sh((Gi(),new gr(Ti(Bv(tv(UF,1),syb,1,4,[c.b,c.e])))))))){return true}}return false}\nfunction Efb(a){var b,c;if(sl(a)){throw new slb(TAb)}for(c=WI(a,0);c.b!=c.d.c;){b=Wv(_ub(c),10);this.d=Qlb(this.d,b.b);this.c=Nlb(this.c,b.a);this.a=Nlb(this.a,b.b);this.b=Qlb(this.b,b.a)}}\nfunction wI(a,b,c){if(b<0||c<0){throw new slb('The highx must be bigger then lowx and the highy must be bigger then lowy')}a.a<0?(a.a=0):a.a>b&&(a.a=b);a.b<0?(a.b=0):a.b>c&&(a.b=c);return a}\nfunction nX(a,b){switch(b.e){case 1:return pl(a.f,(LX(),HX));case 2:return pl(a.f,(LX(),FX));case 3:return pl(a.f,(LX(),JX));case 4:return pl(a.f,(LX(),KX));default:return ypb(),ypb(),vpb;}}\nfunction K0(a){var b,c,d,e;for(e=(Il(),new Im(Dl(ul(a.a,new yl))));Cm(e);){d=Wv(Dm(e),9);d.g==(CX(),yX)&&sJ(d,(Rib(),pib),(kP(),hP));for(c=Uh(mX(d));Cm(c);){b=Wv(Dm(c),12);M0(b,(kP(),hP))}}}\nfunction L0(a){var b,c,d,e;for(e=(Il(),new Im(Dl(ul(a.a,new yl))));Cm(e);){d=Wv(Dm(e),9);d.g==(CX(),yX)&&sJ(d,(Rib(),pib),(kP(),gP));for(c=Uh(mX(d));Cm(c);){b=Wv(Dm(c),12);M0(b,(kP(),gP))}}}\nfunction cdb(a,b){this.b=new vtb;switch(a){case 0:this.d=new Ddb(this);break;case 1:this.d=new tdb(this);break;case 2:this.d=new ydb(this);break;default:throw new rlb;}this.c=b;this.a=0.2*b}\nfunction uW(a){var b,c,d,e;if(!a.b){a.b=new GU;for(c=new Tob(a.a.c);c.a=ayb){b=55296+(a-ayb>>10&1023)&byb;c=56320+(a-ayb&1023)&byb;return String.fromCharCode(b)+(''+String.fromCharCode(c))}else{return String.fromCharCode(a&byb)}}\nfunction KV(a,b,c,d){var e,f,g;e=hX(c);f=PW(e);g=new RX;PX(g,c);switch(d.e){case 1:QX(g,tN(vN(f)));break;case 2:QX(g,vN(f));}sJ(g,(Rib(),tib),Wv(rJ(b,tib),15));sJ(b,uib,g);Umb(a.b,g,b);return g}\nfunction l6(a,b,c,d){var e;vU(a.c,new t6(a,c,d,Wv(Smb(a.k,c),24).a));if(d6(d)&&(b==a.e?d.d.f!=a.a&&d.c.f!=a.a:d.d.f!=a.e&&d.c.f!=a.e)){e=c==d.c?d.d:d.c;vU(a.c,new t6(a,e,d,Wv(Smb(a.k,e),24).a))}}\nfunction fe(a,b){var c,d,e;if(b===a){return true}if(!aw(b,57)){return false}e=Wv(b,57);if(a.Y()!=e.Y()){return false}for(d=e.bb().mb();d.G();){c=Wv(d.H(),21);if(!a._(c)){return false}}return true}\nfunction $Z(a,b){var c,d,e;d=new uX(a);qJ(d,b);sJ(d,(Rib(),gib),b);sJ(d,(eM(),TL),(KM(),FM));sJ(d,lL,(iK(),eK));sX(d,(CX(),xX));c=new RX;PX(c,d);QX(c,(sN(),rN));e=new RX;PX(e,d);QX(e,ZM);return d}\nfunction O7(a,b){var c,d,e;e=$xb;for(d=new Tob(m7(b));d.ae?f:e}return f}\nfunction M7(a){var b,c,d,e,f;f=$xb;e=$xb;for(d=new Tob(m7(a));d.a0&&l8(a,f,c))}}b.k=0}\nfunction Bfb(a,b){yfb(this);if(0>b){throw new slb('Top must be smaller or equal to bottom.')}else if(0>a){throw new slb('Left must be smaller or equal to right.')}this.d=0;this.c=a;this.a=b;this.b=0}\nfunction Ffb(a){var b,c,d;yfb(this);if(a.length==0){throw new slb(TAb)}for(c=0,d=a.length;cc){return Vb(a,c,'start index')}if(b<0||b>c){return Vb(b,c,'end index')}return fc('end index (%s) must not be less than start index (%s)',Bv(tv(UF,1),syb,1,4,[Elb(b),Elb(a)]))}\nfunction SP(a){if(!('id' in a.a)){throw new FQ(\"Every graph element must specify an 'id' property.\",a)}if(!Pu(a,'id').lc()){throw new FQ(\"Invalid format for 'id'. Must be a string, was \"+Pu(a,'id').$c,a)}}\nfunction f3(a,b){var c,d,e,f,g,h,i;i=a.b;for(d=Wv(qsb(a3,a),20).mb();d.G();){c=Wv(d.H(),75);for(h=(f=(new Snb(c.c.a)).a.bb().mb(),new Ynb(f));h.a.G();){g=(e=Wv(h.a.H(),21),Wv(e.yb(),7));Anb(b,g);J2(g,i)}}}\nfunction _db(a,b){var c,d,e;for(e=new Tob(b.e);e.a1){throw new slb('In straight hyperEdges there may be only one edge.')}QI((e=(new Snb(c.a)).a.bb().mb(),d=Wv((new Ynb(e)).a.H(),21),Wv(d.yb(),12)).a,new HI(b,a.b))}\nfunction no(a,b,c){var d,e;this.f=a;d=Wv(Smb(a.b,b),126);e=!d?0:d.a;bc(c,e);if(c>=(e/2|0)){this.e=!d?null:d.c;this.d=e;while(c++0){ko(this)}}this.b=b;this.a=null}\nfunction HP(a,b){if(typeof klaycallback===Zxb){klaycallback(b)}else{typeof document!==Czb?Rxb(a(b)):typeof module===Sxb&&module.exports&&Rxb(a(b));typeof document===Czb&&typeof self!==Czb&&self.postMessage(b)}}\nfunction _P(a,b){var c,d,e,f;if('x' in a.a){e=Wv(Pu(a,'x'),104);b.i.a=e.a}if('y' in a.a){f=Wv(Pu(a,'y'),104);b.i.b=f.a}if(Jzb in a.a){d=Wv(Pu(a,Jzb),104);b.j.a=d.a}if(Kzb in a.a){c=Wv(Pu(a,Kzb),104);b.j.b=c.a}}\nfunction lgb(a,b,c){var d,e;igb(this);b==(fgb(),dgb)?stb(this.g,a.c):stb(this.o,a.c);c==dgb?stb(this.g,a.d):stb(this.o,a.d);stb(this.c,a);d=MX(a.c).b;e=MX(a.d).b;kgb(this,d,e,e);this.f=Zfb(MX(a.c).b,MX(a.d).b)}\nfunction p5(a){var b,c,d,e,f,g;g=new U6(a.d,a.e);for(f=T6(g);f.G();){e=Wv(f.H(),7);d=a.e==(sN(),rN)?e.b:e.e;for(c=new Tob(d);c.a>1);jpb(b,a,i,j,-e,f);jpb(b,a,j,h,-e,f);if(f.$b(a[j-1],a[j])<=0){while(ch?d:h}}return d-e}\nfunction DQ(a){var b;b=new Tu;Ru(b,'type',new lv((Gkb($z),$z.n)));Ru(b,Dzb,new lv(a.f));!!a.b&&Ru(b,'value',a.b);!!a.a&&Ru(b,'context',a.a);Ru(b,Ezb,new lv(Hb(new Kb('\\n'),new wnb(new opb((a.g==null&&(a.g=Pt(a)),a.g))))));return b}\nfunction D5(a,b){if(a.cb.c){return 1}else if(a.bb.b){return 1}else if(a.a!=b.a){return a.a.b-b.a.b}else if(a.d==0&&b.d==1){return -1}else if(a.d==1&&b.d==0){return 1}return 0}\nfunction cn(a,b){var c,d,e,f,g;if(b===a){return true}if(!aw(b,20)){return false}g=Wv(b,20);if(a.Y()!=g.Y()){return false}f=g.mb();for(d=a.mb();d.G();){c=d.H();e=f.H();if(!(gw(c)===gw(e)||c!=null&&rb(c,e))){return false}}return true}\nfunction st(b){var c=(!qt&&(qt=tt()),qt);var d=b.replace(/[\\x00-\\x1f\\xad\\u0600-\\u0603\\u06dd\\u070f\\u17b4\\u17b5\\u200b-\\u200f\\u2028-\\u202e\\u2060-\\u2064\\u206a-\\u206f\\ufeff\\ufff9-\\ufffb\"\\\\]/g,function(a){return rt(a,c)});return '\"'+d+'\"'}\nfunction ER(a,b){var c,d,e,f,g,h,i;e=b==1?wR:vR;for(d=(g=(new Snb(e.a)).a.bb().mb(),new Ynb(g));d.a.G();){c=(f=Wv(d.a.H(),21),Wv(f.yb(),59));for(i=Wv(Dd(a.f.c,c),18).mb();i.G();){h=Wv(i.H(),27);BU(a.b.b,h.b);BU(a.b.a,Wv(h.b,25).f)}}}\nfunction aR(a,b,c){var d,e,f,g;nI(c,'Recursive layout',2);if(b.b.c.length!=0){g=1/b.b.c.length;for(f=new Tob(b.b);f.a=2147483648&&(d-=4294967296);return d}}\nfunction MW(a,b,c){var d,e,f;if(b==c){return}d=b;do{vI(a,d.d);f=Wv(rJ(d,(Rib(),zib)),9);if(f){e=d.a;uI(a,e.b,e.d);vI(a,f.i);d=hX(f)}}while(f);d=c;do{EI(a,d.d);f=Wv(rJ(d,(Rib(),zib)),9);if(f){e=d.a;DI(a,e.b,e.d);EI(a,f.i);d=hX(f)}}while(f)}\nfunction n3(a,b){var c,d,e,f,g,h;c=new GU;h=new Um;for(e=(g=(new Snb(a.a)).a.bb().mb(),new Ynb(g));e.a.G();){d=(f=Wv(e.a.H(),21),Wv(f.yb(),12));Nm(h,d.c,d,null);Nm(h,d.d,d,null)}while(h.a){vU(c,m3(h,b,LM(Wv(rJ(b,(eM(),TL)),28))))}return c}\nfunction B7(a,b){var c,d,e,f,g;for(f=new Tob(a.e.a);f.a0&&e0}else if(e<0&&-e0}return false}\nfunction Odb(a,b,c,d,e){var f,g;if(!yI(MI(Bv(tv(qz,1),Fzb,10,0,[e.f.i,e.i,e.a])),c)){b.c==e?rn(b.a,0,new II(c)):QI(b.a,new II(c));if(d&&!ttb(a.a,c)){g=Wv(rJ(b,(eM(),CL)),44);if(!g){g=new jJ;sJ(b,CL,g)}f=new II(c);TI(g,f,g.c.b,g.c);stb(a.a,f)}}}\nfunction Pdb(a){var b,c,d,e,f,g,h;b=0;for(d=new Tob(a.a);d.a(h-g<=0?0-(h-g):h-g)?b:h-g<=0?0-(h-g):h-g}}}return b}\nfunction yo(a,b){var c,d,e;if(gw(b)===gw(_b(a))){return true}if(!aw(b,20)){return false}d=Wv(b,20);e=a.Y();if(e!=d.Y()){return false}if(aw(d,63)){for(c=0;c=0){return e}else{f=1;for(h=new Tob(b.f);h.ai+1?f:i+1}}}H8(a,b,f);return f}}\nfunction edb(a,b,c){var d,e,f,g,h,i;d=0;if(a.b!=0&&b.b!=0){f=WI(a,0);g=WI(b,0);h=Ixb(Yv(_ub(f)));i=Ixb(Yv(_ub(g)));e=true;do{h>i-c&&h>b;f=a.m>>b|c<<22-b;e=a.l>>b|a.m<<22-b}else if(b<44){g=d?bzb:0;f=c>>b-22;e=a.m>>b-22|c<<44-b}else{g=d?bzb:0;f=d?azb:0;e=c>>b-44}return Ev(e&azb,f&azb,g&bzb)}\nfunction O9(a,b){switch(a.e){case 1:switch(b.e){case 1:return 1;case 4:return 2;case 3:return 3;case 2:return 4;}break;case 2:switch(b.e){case 1:return 1;case 2:return 2;case 3:return 3;case 4:return 4;}break;default:throw new slb(GAb);}return 0}\nfunction hZ(a,b,c){var d,e,f,g,h,i;d=new GU;d.c[d.c.length]=b;i=b;h=0;do{i=mZ(a,i);!!i&&(d.c[d.c.length]=i,true);++h}while(i);g=(c-(d.c.length-1)*a.d.d)/d.c.length;for(f=new Tob(d);f.a=a.g.d){b=a.f;b.e=Is(a.e,b);b.g=a.g;b.a=a.a-1;b.j=XH(a.j,c);return Gs(b)}else{b=a.i;b.g=Js(a.g,b);b.e=a.e;b.a=a.a-1;b.j=XH(a.j,c);return Gs(b)}}\nfunction e2(a){var b,c,d,e,f,g;for(e=new Tob(a.a);e.af.k?QX(g,pN):g.g==pN&&f.k>d.k&&QX(g,$M)}}}\nfunction q3(a,b,c){var d,e,f,g,h,i,j;j=a.b;g=0;for(f=new Tob(a.a.b);f.a0?e+a.i[1]*b+a.n[1]:0,a.o[3]>0?e+a.i[3]*b+a.n[3]:0);f=Nlb(a.o[4]>0?c+a.i[4]*b+a.n[4]:0,a.o[2]>0?c+a.i[2]*b+a.n[2]:0);return new HI(g,f)}\nfunction b$(a){var b,c,d,e,f,g;g=Wv(FU(a.a,xv(qB,Nzb,9,a.a.c.length,0,1)),51);lpb(g,new g$);c=null;for(e=0,f=g.length;e0){return Mr(a,b,c.g)}else if(d==0){switch(a.b.f.e){case 0:return PH(b._b(c),b.ac(c.g));case 1:return b.ac(c.g);default:throw new tkb;}}else{return PH(PH(b.ac(c.g),b._b(c)),Mr(a,b,c.e))}}\nfunction Nr(a,b,c){var d;if(!c){return 0}d=a.d.$b(a.b.e,c.b);if(d<0){return Nr(a,b,c.e)}else if(d==0){switch(a.b.d.e){case 0:return PH(b._b(c),b.ac(c.e));case 1:return b.ac(c.e);default:throw new tkb;}}else{return PH(PH(b.ac(c.e),b._b(c)),Nr(a,b,c.g))}}\nfunction z2(a,b,c,d){var e,f,g,h;g=new uX(a);sX(g,(CX(),zX));sJ(g,(Rib(),uib),b);sJ(g,(eM(),TL),(KM(),FM));sJ(g,qib,c);sJ(g,rib,d);f=new RX;QX(f,(sN(),rN));PX(f,g);h=new RX;QX(h,ZM);PX(h,g);eW(b,f);e=new hW;qJ(e,b);sJ(e,CL,null);dW(e,h);eW(e,d);return g}\nfunction e6(a,b){var c,d,e,f,g,h,i,j,k,l;c=0;for(g=a.j,h=0,i=g.length;hb.c){return 1}else if(a.bb.b){return 1}else if(a.a!=b.a){return txb(a.a)-txb(b.a)}else if(a.d==(vab(),uab)&&b.d==tab){return -1}else if(a.d==tab&&b.d==uab){return 1}return 0}\nfunction R4(a){var b,c,d,e,f,g;e=new aJ;for(d=new Tob(a.d.a);d.a1){b=x7(y7(new A7,a.b++),a.d);for(g=WI(e,0);g.b!=g.d.c;){f=Wv(_ub(g),61);f7(i7(h7(j7(g7(new k7,1),0),b),f))}}}\nfunction p3(a,b,c,d){var e,f,g,h,i,j;j=0;for(g=new Tob(a.a.b);g.ac.a&&(f=Plb(f,g.a-c.a-1))}return f}\nfunction RZ(a){var b,c;b=Wv(rJ(a,(eM(),HL)),15).a;c=Wv(rJ(a,IL),15).a;sJ(a,IL,new llb(b));sJ(a,HL,new llb(c));switch(Wv(rJ(a,lL),103).e){case 1:sJ(a,lL,(iK(),hK));break;case 2:sJ(a,lL,(iK(),dK));break;case 3:sJ(a,lL,(iK(),fK));break;case 4:sJ(a,lL,(iK(),gK));}}\nfunction N0(a){var b,c,d,e,f;for(e=(Il(),new Im(Dl(ul(a.a,new yl))));Cm(e);){d=Wv(Dm(e),9);if(d.g==(CX(),yX)){f=P0(d)?(kP(),hP):(kP(),gP);sJ(d,(Rib(),pib),f)}for(c=Uh(mX(d));Cm(c);){b=Wv(Dm(c),12);f=Ckb(Ixb(Xv(rJ(b,(Rib(),Iib)))))?(kP(),gP):(kP(),hP);M0(b,f)}}}\nfunction O0(a){var b,c,d,e,f;for(e=(Il(),new Im(Dl(ul(a.a,new yl))));Cm(e);){d=Wv(Dm(e),9);if(d.g==(CX(),yX)){f=P0(d)?(kP(),gP):(kP(),hP);sJ(d,(Rib(),pib),f)}for(c=Uh(mX(d));Cm(c);){b=Wv(Dm(c),12);f=Ckb(Ixb(Xv(rJ(b,(Rib(),Iib)))))?(kP(),hP):(kP(),gP);M0(b,f)}}}\nfunction jdb(a,b,c){var d,e,f;for(f=new Tob(a.e);f.a0){d.b.c-=d.c;d.b.c<=0&&d.b.f>0&&QI(b,d.b)}}for(e=new Tob(a.b);e.a0){d.a.f-=d.c;d.a.f<=0&&d.a.c>0&&QI(c,d.a)}}}\nfunction agb(a,b,c){var d,e,f;for(f=new Tob(a.j);f.a0){d.b.e-=d.c;d.b.e<=0&&d.b.k>0&&QI(b,d.b)}}for(e=new Tob(a.d);e.a0){d.a.k-=d.c;d.a.k<=0&&d.a.e>0&&QI(c,d.a)}}}\nfunction tj(a){var b,c,d,e,f;f=a.d.c+a.e.c;switch(f){case 0:return dr(),cr;case 1:d=Wv(Sl(new rnb((new inb(a)).a)),21);return Bj(d.yb(),d.zb());default:e=(mp(),new wub);for(c=new rnb((new inb(a)).a);c.b;){b=pnb(c);tub(e,_b(b.yb()),_b(b.zb()))}return new ir(e);}}\nfunction DS(a,b,c){var d,e,f;for(e=new Tob(a.b.a.b);e.a0){!(tK(a.b.d)&&d.q.d)&&!(uK(a.b.d)&&d.q.b)&&(d.j.e+=0>f/2-0.5?0:f/2-0.5);!(tK(a.b.d)&&d.q.a)&&!(uK(a.b.d)&&d.q.c)&&(d.j.b-=f-1)}}}\nfunction R9(a,b){switch(a.e){case 1:switch(b.e){case 1:return HAb;case 4:return 0.5;case 3:return IAb;case 2:return JAb;}break;case 2:switch(b.e){case 1:return HAb;case 2:return 0.5;case 3:return IAb;case 4:return JAb;}break;default:throw new slb(GAb);}return 0}\nfunction rT(a,b){var c,d,e,f;f=new Fnb(a,0);c=(Bxb(f.b0);f.a.sb(f.c=--f.b);Anb(f,e);Bxb(f.b1){++f;++g}}if(!LM(Wv(rJ(c,(eM(),TL)),28))&&h){++f;++g}Umb(e,c,Elb(f));return g}\nfunction nfb(a){var b,c,d,e,f,g,h,i,j,k,l,m;g=a.b.mb();h=Wv(g.H(),92);k=h.a.a;j=k>RAb;i=kRAb;i=kRAb;i=kRAb;i=k0;Sr(a.i,Elb(h6(a,b.d)),1)>0;utb(a.g,b);d+=g6(a,b,a.i)}else{stb(a.g,b);Lr(a.i,Elb(h6(a,b.c)),1);Lr(a.i,Elb(h6(a,b.d)),1)}}else{e=Pr(a.i,Elb(Wv(Smb(a.k,c),24).a));d+=a.g.a.Y()-e}return d}\nfunction Keb(a){switch(a.e){case 0:return veb;case 1:return seb;case 2:return reb;case 3:return yeb;case 4:return xeb;case 5:return Deb;case 6:return Ceb;case 7:return web;case 8:return teb;case 9:return ueb;case 11:return Aeb;case 10:return zeb;default:return Beb;}}\nfunction Leb(a){switch(a.e){case 0:return neb;case 1:return meb;case 2:return jeb;case 3:return ieb;case 4:return peb;case 5:return oeb;case 6:return Heb;case 7:return Geb;case 8:return leb;case 9:return keb;case 10:return Eeb;case 11:return qeb;default:return Feb;}}\nfunction Meb(a){switch(a.e){case 0:return oeb;case 1:return Heb;case 2:return Geb;case 3:return neb;case 4:return meb;case 5:return jeb;case 6:return ieb;case 7:return peb;case 8:return leb;case 9:return keb;case 10:return Eeb;case 11:return qeb;default:return Feb;}}\nfunction Neb(a){switch(a.e){case 0:return jeb;case 1:return ieb;case 2:return peb;case 3:return oeb;case 4:return Heb;case 5:return Geb;case 6:return neb;case 7:return meb;case 8:return leb;case 9:return keb;case 10:return Eeb;case 11:return qeb;default:return Feb;}}\nfunction fcb(a){var b,c,d,e,f,g,h,i;c=(mp(),new wub);h=new Yub((Oh(),new opb(a.f)));for(g=(e=(new Snb(h.a)).a.bb().mb(),new Ynb(e));g.a.G();){f=(d=Wv(g.a.H(),21),Wv(d.yb(),9));if(!f){Fmb();break}i=a.i[f.k];b=Wv(rub(c,i),20);if(!b){b=new GU;tub(c,i,b)}b.ib(f)}return c}\nfunction CS(a,b,c){var d,e,f;for(e=new Tob(a.b.a.b);e.a0){!(tK(a.b.d)&&d.q.d)&&!(uK(a.b.d)&&d.q.b)&&(d.j.e-=0>f/2-0.5?0:f/2-0.5);!(tK(a.b.d)&&d.q.a)&&!(uK(a.b.d)&&d.q.c)&&(d.j.b+=0>f-1?0:f-1)}}}\nfunction T6(a){var b,c,d;d=a.a.f;switch(a.b){case 0:return new Tob(a.a.f);case 1:return Pl((c=new W6(d),c),S6(a));case 2:switch(a.c.e){case 2:case 1:return Pl(new Tob(d),S6(a));case 3:case 4:return Pl((b=new W6(d),b),S6(a));}}throw new Imb('PortOrder not implemented.')}\nfunction CT(a,b){var c;if(!!a.d&&(b.c!=a.e.c||hT(a.e.b,b.b))){vU(a.f,a.d);a.a=a.d.d+a.d.c;a.d=null;a.e=null}eT(b.b)?(a.c=b):(a.b=b);if(b.b==(cT(),$S)&&!b.a||b.b==_S&&b.a||b.b==aT&&b.a||b.b==bT&&!b.a){if(!!a.c&&!!a.b){c=new VN(a.a,a.c.d,b.c-a.a,a.b.d-a.c.d);a.d=c;a.e=b}}}\nfunction Cbb(a,b,c,d){this.e=a;this.j=Wv(rJ(a,(Rib(),Kib)),134);this.f=xv(qB,Nzb,9,b,0,1);this.b=xv(HF,Txb,184,b,6,1);this.a=xv(qB,Nzb,9,b,0,1);this.d=xv(HF,Txb,184,b,6,1);this.i=xv(qB,Nzb,9,b,0,1);this.g=xv(HF,Txb,184,b,6,1);this.n=xv(HF,Txb,184,b,6,1);this.k=c;this.c=d}\nfunction P6(a,b,c){var d,e;if(b.g==(CX(),BX)&&c.g==BX){if(!LM(Wv(rJ(Wv(rJ(b,(Rib(),uib)),9),(eM(),TL)),28))||Wv(rJ(b,uib),9)!=Wv(rJ(c,uib),9)){return}if(I6(b)||I6(c)){a.d=1;a.b=1;return}e=Wv(yU(b.f,0),7).g;d=Wv(yU(c.f,0),7).g;M6(b).g==(sN(),$M)?H6(a,b,c,e,d):H6(a,c,b,d,e)}}\nfunction f7(a){if(!a.a.c||!a.a.d){throw new ulb((Gkb(QD),QD.j+' must have a source and target '+(Gkb(UD),UD.j)+' specified.'))}if(a.a.c==a.a.d){throw new ulb('Network simplex does not support self-loops: '+a.a+' '+a.a.c+' '+a.a.d)}o7(a.a.c.g,a.a);o7(a.a.d.c,a.a);return a.a}\nfunction H6(a,b,c,d,e){if(d==(sN(),ZM)&&e==ZM){N6(a,b)>N6(a,c)?(a.d=K6(a,c)):(a.b=K6(a,b))}else if(d==rN&&e==rN){N6(a,b)N6(a,c)){a.d=K6(a,c);a.b=K6(a,b)}}else{if(N6(a,b)0&&f>0?(g.k=b++):d>0?(g.k=c++):f>0?(g.k=e++):(g.k=c++);}}Gpb(a.f,new Z1)}\nfunction i0(a,b,c,d){var e,f,g,h,i;if(c.d.f==b.f){return}e=new uX(a);sX(e,(CX(),zX));sJ(e,(Rib(),uib),c);sJ(e,(eM(),TL),(KM(),FM));d.c[d.c.length]=e;g=new RX;PX(g,e);QX(g,(sN(),rN));h=new RX;PX(h,e);QX(h,ZM);i=c.d;eW(c,g);f=new hW;qJ(f,c);sJ(f,CL,null);dW(f,h);eW(f,i);j0(e,g,h)}\nfunction W2(a){var b,c,d,e,f,g,h,i,j;g=rAb;i=rAb;h=null;for(c=new Sub(new Lub(a.e));c.b!=c.c.a.b;){b=Rub(c);if(Wv(b.d,60).c==1){d=Wv(b.e,116).a;j=Wv(b.e,116).b;e=g-d>uAb;f=d-guAb;if(e||f){i=Wv(b.e,116).b;g=Wv(b.e,116).a;h=Wv(b.d,60);if(i==0&&g==0){return h}}}}return h}\nfunction i1(a,b){var c,d,e,f,g,h;f=a.d;h=Wv(rJ(a,(eM(),dM)),15).a;if(h<0){h=0;sJ(a,dM,new llb(h))}b.j.b=h;g=Math.floor(h/2);d=new RX;QX(d,(sN(),rN));PX(d,b);d.i.b=g;e=new RX;QX(e,ZM);PX(e,b);e.i.b=g;eW(a,d);c=new hW;qJ(c,a);sJ(c,CL,null);dW(c,e);eW(c,f);h1(b,a,c);f1(a,c);return c}\nfunction OZ(a){var b,c;c=Wv(rJ(a,(Mjb(),vjb)),85);b=Wv(rJ(a,(Rib(),mib)),140);if(c==(Xib(),Tib)){sJ(a,vjb,Wib);sJ(a,mib,(Hhb(),Ghb))}else if(c==Vib){sJ(a,vjb,Wib);sJ(a,mib,(Hhb(),Ehb))}else if(b==(Hhb(),Ghb)){sJ(a,vjb,Tib);sJ(a,mib,Fhb)}else if(b==Ehb){sJ(a,vjb,Vib);sJ(a,mib,Fhb)}}\nfunction QO(a){var b,c,d,e,f;for(d=new Tob(zW(a.e));d.aRAb){this.b.ib(c);h=false}this.b.ib(i)}h&&this.b.ib(c)}\nfunction G7(a){var b,c,d,e;J7(a,a.n);if(a.d.c.length>0){dpb(a.c);while(R7(a,Wv(Rob(new Tob(a.e.a)),61))0?c:0;d.i.b=c+Wjb(a.a,f,h)}else{d.i.b=(Dxb(g),g)}}i=Wjb(a.a,f,h);d.i.b0&&(a.charCodeAt(0)==45||a.charCodeAt(0)==43)?1:0;for(b=e;b$xb){throw new Ylb(dyb+a+'\"')}return f}\nfunction H$(a,b,c,d){var e,f,g,h;e=Wv(nX(b,(sN(),rN)).mb().H(),7);f=Wv(nX(b,ZM).mb().H(),7);for(h=new Tob(a.f);h.ag?0:g)g?0:g:i,(0>(jg?0:g)g?0:g:i)));g=j;j+=h;d=Wv(yU(a.c,f),9);c=new dX(k);c.j.b=b.j.b;Fd(a.b,b,c);vU(d.c,c)}BU(a.g.c,b);vU(a.i,(e=new PY(a,b),e))}\nfunction p8(a,b,c){var d,e,f,g,h,i,j,k,l;b.k=1;f=b.d;for(l=oX(b,(djb(),bjb)).mb();l.G();){k=Wv(l.H(),7);for(e=new Tob(k.e);e.am+i&&d.I()}for(g=new Tob(n);g.auAb;f=d-guAb;if(e||f){i=Wv(b.e,116).b;g=Wv(b.e,116).a;h=Wv(b.d,60);if(i==0&&g==0){return h}}}}return h}\nfunction P4(a,b){var c,d,e,f,g;a.d=b;Ymb(a.b);a.c=false;h:for(d=new Tob(a.d.c);d.ai){new kdb(b,a,h-i)}else if(h>0&&i>0){new kdb(a,b,0);new kdb(b,a,0)}}\nfunction c3(a,b){var c,d,e,f,g,h,i,j,k;j=new GU;k=null;for(d=Wv(qsb(a3,a),20).mb();d.G();){c=Wv(d.H(),75);for(i=(f=(new Snb(c.c.a)).a.bb().mb(),new Ynb(f));i.a.G();){g=(e=Wv(i.a.H(),21),Wv(e.yb(),7));Anb(b,g);J2(g,a.b)}xU(j,c.b);k=a.a}Dpb(j);K2(j,k);for(h=new Tob(j);h.ac.k&&h1){c?(g=rY(b.d)+1):(g=rY(j.d)-1);h=Wv(yU(a.a.c,g),16);rX(j,h)}vY(a,j,c)}}return b}\nfunction Hcb(a,b){var c,d,e,f;b.d?(e=a.a.c==(Gbb(),Fbb)?iX(b.b):mX(b.b)):(e=a.a.c==(Gbb(),Ebb)?iX(b.b):mX(b.b));f=false;for(d=(Il(),new Im(Dl(ul(e.a,new yl))));Cm(d);){c=Wv(Dm(d),12);if(a.c.a[c.c.f.d.k]===a.c.a[c.d.f.d.k]){continue}f=true;if(ttb(a.b,a.a.f[zcb(c,b.b).k])){b.c=true;b.a=c;return b}}b.c=f;b.a=null;return b}\nfunction K4(a,b,c){var d,e,f,g;d=Wv(rJ(a.d,(eM(),pL)),15).a;for(f=new Tob(a.a.b);f.aRAb){f=b;g=0;while((b-f<=0?0-(b-f):b-f)0&&vS(this.n,true,(sK(),pK));a.g==(CX(),xX)&&wS(this.n,false,false,false,false)}\nfunction UT(a,b,c){var d,e,f,g,h,i,j,k,l,m;f=new HI(b,c);for(k=new Tob(a.b);k.ad?l:d;if(h>a.j.a){j=(h-a.j.a)/2;g.b=Nlb(g.b,j);g.c=Nlb(g.c,j)}}\nfunction ST(a,b,c,d){var e,f,g,h,i,j,k,l,m,n;g=uI(b.d,c,d);for(l=new Tob(b.b);l.a=40;g&&Q7(a);H7(a);G7(a);c=K7(a);d=0;while(!!c&&dj){m=0;n+=i+b;i=0}UT(g,m,n);c=Nlb(c,m+k.a);i=Nlb(i,k.b);m+=k.a+b}return new HI(c+b,n+i+b)}\nfunction Nm(a,b,c,d){var e,f,g;g=new Sn(b,c);if(!a.a){a.a=a.e=g;Umb(a.b,b,new Rn(g));++a.c}else if(!d){a.e.b=g;g.d=a.e;a.e=g;e=Wv(Smb(a.b,b),126);if(!e){Umb(a.b,b,new Rn(g));++a.c}else{++e.a;f=e.c;f.c=g;g.e=f;e.c=g}}else{e=Wv(Smb(a.b,b),126);++e.a;g.d=d.d;g.e=d.e;g.b=d;g.c=d;!d.e?(Wv(Smb(a.b,b),126).b=g):(d.e.c=g);!d.d?(a.a=g):(d.d.b=g);d.d=g;d.e=g}++a.d;return g}\nfunction hS(a){var b,c,d,e,f,g,h,i;if(a.e){throw new ulb((Gkb(nA),'The '+nA.j+Yzb))}a.d==(sK(),qK)&&gS(a,oK);for(c=new Tob(a.a.a);c.a0){i=a.g;if(!i){e[0]=0;return Bs(a,c,d)}g=i.d;a.g=zs(i,b,c,d,e);e[0]==0&&++a.a;a.j=PH(a.j,d);return a.g.d==g?a:Gs(a)}e[0]=a.c;j=PH(a.c,d);Xb(RH(j,$xb)<=0);a.c+=d;a.j=PH(a.j,d);return a}\nfunction iJ(b,c){var d,e,f,g,h,i;f=fmb(c,',|;|\\\\(|\\\\)|\\\\[|\\\\]|\\\\{|\\\\}| |\\t|\\n');_I(b);try{e=0;h=0;g=0;i=0;while(e0){h%2==0?(g=clb(f[e])):(i=clb(f[e]));h>0&&h%2!=0&&QI(b,new HI(g,i));++h}++e}}catch(a){a=OH(a);if(aw(a,130)){d=a;throw new slb('The given string does not match the expected format for vectors.'+d)}else throw NH(a)}}\nfunction _bb(a,b,c){var d,e,f,g,h,i,j,k;e=true;for(g=new Tob(b.c);g.aj&&d>j){j=Ixb(c.n[h.k])+Ixb(c.d[h.k])+h.j.b+h.e.a}else{e=false;a.a&&(Fmb(),Emb);break}}if(!e){break}}a.a&&(Fmb(),Emb);return e}\nfunction Jv(a){var b,c,d,e,f,g,h,i;if(isNaN(a)){return Rv(),Qv}if(a<-9223372036854775808){return Rv(),Pv}if(a>=9223372036854775807){return Rv(),Ov}e=false;if(a<0){e=true;a=-a}d=0;if(a>=dzb){d=hw(a/dzb);a-=d*dzb}c=0;if(a>=czb){c=hw(a/czb);a-=c*czb}b=hw(a);f=Ev(b,c,d);e&&(g=~f.l+1&azb,h=~f.m+(g==0?1:0)&azb,i=~f.h+(g==0&&h==0?1:0)&bzb,f.l=g,f.m=h,f.h=i,undefined);return f}\nfunction JO(a){var b,c,d,e,f,g,h;e=DW(a);if(Qob(new Tob(e))){h=new VN(0,0,a.e.j.a,a.e.j.b);for(c=new Tob(e);c.ai+n){o=k.i+l.i;l.a=(l.i*l.a+k.i*k.a)/o;l.i=o;k.g=l;c=true}}f=h;k=l}}return c}\nfunction XY(a){var b,c,d,e,f,g;if(gw(rJ(a,(eM(),TL)))===gw((KM(),GM))||gw(rJ(a,TL))===gw(FM)){for(g=new Tob(a.f);g.ag){return sN(),ZM}break;case 4:case 3:if(k<0){return sN(),$M}else if(k+c>f){return sN(),pN}}i=(j+h/2)/g;d=(k+c/2)/f;return i+d<=1&&i-d<=0?(sN(),rN):i+d>=1&&i-d>=0?(sN(),ZM):d<0.5?(sN(),$M):(sN(),pN)}\nfunction pP(a,b,c,d,e,f,g){var h,i,j,k,l,m;m=new UN;for(j=b.mb();j.G();){h=Wv(j.H(),627);for(l=new Tob(sW(h));l.a0&&QI(a.e,f)}else{a.c[g]-=j+1;a.c[g]<=0&&a.a[g]>0&&QI(a.d,f)}}}}}\nfunction tcb(a,b){var c,d,e,f,g,h,i,j,k;for(g=new Tob(b.c);g.ah&&(h=Wv(rJ(c,Eib),24).a)}for(d=Uh(iX(i));Cm(d);){c=Wv(Dm(d),12);i.d!=c.c.f.d&&Wv(rJ(c,(Rib(),Eib)),24).a==h&&vU(k,new RJ(c.c.f,c))}Gpb(k,a.c);uU(a.b,i.k,k)}}}\nfunction ucb(a,b){var c,d,e,f,g,h,i,j,k;for(g=new Tob(b.c);g.ah&&(h=Wv(rJ(c,Eib),24).a)}for(d=Uh(mX(i));Cm(d);){c=Wv(Dm(d),12);i.d!=c.d.f.d&&Wv(rJ(c,(Rib(),Eib)),24).a==h&&vU(k,new RJ(c.d.f,c))}Gpb(k,a.c);uU(a.f,i.k,k)}}}\nfunction g3(a){b3();var b,c,d,e,f,g,h,i,j,k;this.b=new i3;this.c=new GU;this.a=new GU;for(i=Seb(),j=0,k=i.length;j0){e=h.length;while(e>0&&h[e-1]==''){--e}e0?As(a,c,d):a}a.e=Ns(g,b,c,d,e);d==0&&e[0]!=0?--a.a:d>0&&e[0]==0&&++a.a;a.j=PH(a.j,d-e[0]);return Gs(a)}else if(f>0){h=a.g;if(!h){e[0]=0;return d>0?Bs(a,c,d):a}a.g=Ns(h,b,c,d,e);d==0&&e[0]!=0?--a.a:d>0&&e[0]==0&&++a.a;a.j=PH(a.j,d-e[0]);return Gs(a)}e[0]=a.c;if(d==0){return Fs(a)}a.j=PH(a.j,d-a.c);a.c=d;return a}\nfunction Q7(a){var b,c,d,e,f,g,h;a.o=new Uvb;d=new aJ;for(g=new Tob(a.e.a);g.a0;h=c7(b,f);c?p7(h.c,b):p7(h.g,b);m7(h).c.length==1&&(TI(d,h,d.c.b,d.c),true);e=new RJ(f,b);Tvb(a.o,e);BU(a.e.a,f)}}\nfunction Hs(a,b,c,d,e){var f,g,h;f=b.$b(c,a.b);if(f<0){g=a.e;if(!g){e[0]=0;return a}a.e=Hs(g,b,c,d,e);if(e[0]>0){if(d>=e[0]){--a.a;a.j=XH(a.j,e[0])}else{a.j=XH(a.j,d)}}return e[0]==0?a:Gs(a)}else if(f>0){h=a.g;if(!h){e[0]=0;return a}a.g=Hs(h,b,c,d,e);if(e[0]>0){if(d>=e[0]){--a.a;a.j=XH(a.j,e[0])}else{a.j=XH(a.j,d)}}return Gs(a)}e[0]=a.c;if(d>=a.c){return Fs(a)}else{a.c-=d;a.j=XH(a.j,d);return a}}\nfunction BQ(a,b,c){var d,e,f,g,h,i,j,k;for(i=new Tob(c.b);i.a0||c==0&&b.f==(Gh(),Fh)){h=b.g;i=b.f}}}else{e=b.c;h=b.g;i=b.f}if(d&&e){c=a.a.$b(f,h);if(c>0||c==0&&g==(Gh(),Fh)&&i==(Gh(),Fh)){f=h;g=(Gh(),Fh);i=Eh}}return new sk(a.a,d,f,g,e,h,i)}\nfunction h0(a,b,c,d){var e,f,g,h,i,j,k;if(c.c.f==b.f){return}e=new uX(a);sX(e,(CX(),zX));sJ(e,(Rib(),uib),c);sJ(e,(eM(),TL),(KM(),FM));d.c[d.c.length]=e;g=new RX;PX(g,e);QX(g,(sN(),rN));h=new RX;PX(h,e);QX(h,ZM);eW(c,g);f=new hW;qJ(f,c);sJ(f,CL,null);dW(f,h);eW(f,b);j0(e,g,h);j=new Fnb(c.b,0);while(j.b=d&&l.a>=d&&(m.a=d);o.a<=c&&l.a<=c&&(p.a=c-10);b.c.a.Y()==1?fJ(h.a,Bv(tv(qz,1),Fzb,10,0,[m,n,q,p])):fJ(h.a,Bv(tv(qz,1),Fzb,10,0,[m,n,e,q,p]))}}\nfunction cW(a,b){var c,d,e,f,g,h;f=a.c;g=a.d;dW(a,null);eW(a,null);b&&Ckb(Ixb(Xv(rJ(g,(Rib(),kib)))))?dW(a,VW(g.f,(djb(),bjb),(sN(),ZM))):dW(a,g);b&&Ckb(Ixb(Xv(rJ(f,(Rib(),yib)))))?eW(a,VW(f.f,(djb(),ajb),(sN(),rN))):eW(a,f);for(d=new Tob(a.b);d.a0&&!!j[d]&&(o=Wjb(a.b,j[d],i));p=Nlb(p,e.d.c.b+o)}for(f=new Tob(k.f);f.aIxb(W9(g.g,g.d[0]).a)){Bxb(i.b>0);i.a.sb(i.c=--i.b);Anb(i,g);e=true}else if(!!h.e&&h.e.Y()>0){f=(!h.e&&(h.e=new GU),h.e).nb(b);j=(!h.e&&(h.e=new GU),h.e).nb(c);if(f||j){(!h.e&&(h.e=new GU),h.e).ib(g);++g.c}}}e||(d.c[d.c.length]=g,true)}\nfunction s2(a,b,c,d){var e,f,g,h,i,j,k,l,m,n,o;if(c.d.f==b.f){return}e=new uX(a);sX(e,(CX(),zX));sJ(e,(Rib(),uib),c);sJ(e,(eM(),TL),(KM(),FM));d.c[d.c.length]=e;g=new RX;PX(g,e);QX(g,(sN(),rN));h=new RX;PX(h,e);QX(h,ZM);i=c.d;eW(c,g);f=new hW;qJ(f,c);sJ(f,CL,null);dW(f,h);eW(f,i);j=Wv(yU(g.b,0),12).c;k=j.f;l=k.g;m=Wv(yU(h.e,0),12).d;n=m.f;o=n.g;l==zX?sJ(e,qib,Wv(rJ(k,qib),7)):sJ(e,qib,j);o==zX?sJ(e,rib,Wv(rJ(n,rib),7)):sJ(e,rib,m)}\nfunction $6(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r;if(h=a.b[b],i=a.b[c],(j=Wv(rJ(h,(Rib(),oib)),20),!!j&&j.Y()!=0&&j.kb(i))||(k=h.g!=(CX(),zX)&&i.g!=zX,l=Wv(rJ(h,nib),9),m=Wv(rJ(i,nib),9),n=!!l&&l!=h||!!m&&m!=i,o=l!=m,p=_6(h,(sN(),$M)),q=_6(i,pN),r=n&&o||p||q,k&&r)||h.g==(CX(),BX)&&i.g==AX||i.g==(CX(),BX)&&h.g==AX){return false}g=a.b[b];d=a.b[c];m6(a.c,g,d);G6(a.d,g,d);f=M5(a.a,g,d)+a.c.d+a.d.d;e=M5(a.a,d,g)+a.c.b+a.d.b;return f>e}\nfunction v2(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p;g=b;m=b.d;k=b.c.f;n=b.d.f;l=rY(k.d);o=rY(n.d);for(h=l;h0&&LI(c.charCodeAt(d-1),gzb)){--d}if(f>=d){throw new slb('The given string does not contain any numbers.')}g=fmb(c.substr(f,d-f),',|;|\\r|\\n');if(g.length!=2){throw new slb('Exactly two numbers are expected, '+g.length+' were found.')}try{b.a=clb(hmb(g[0]));b.b=clb(hmb(g[1]))}catch(a){a=OH(a);if(aw(a,130)){e=a;throw new slb(hzb+e)}else throw NH(a)}}\nfunction Qdb(a,b,c){var d,e,f,g,h,i,j,k,l;i=c+b.d.c.a;for(l=new Tob(b.f);l.a1;for(h=Uh(Sh((Gi(),new gr(Ti(Bv(tv(UF,1),syb,1,4,[k.b,k.e]))))));Cm(h);){g=Wv(Dm(h),12);j=g.c==k?g.d:g.c;Jlb(MI(Bv(tv(qz,1),Fzb,10,0,[j.f.i,j.i,j.a])).b-f.b)>1&&Odb(a,g,f,e,k)}}}\nfunction FR(a,b){var c,d,e,f,g,h;for(g=new rnb((new inb(a.f.b)).a);g.b;){f=pnb(g);e=Wv(f.yb(),251);if(b==1){if(e.yc()!=(sK(),rK)&&e.yc()!=nK){continue}}else{if(e.yc()!=(sK(),oK)&&e.yc()!=pK){continue}}d=Wv(Wv(f.zb(),27).b,25);h=Wv(Wv(f.zb(),27).a,78);c=h.c;switch(e.yc().e){case 2:d.j.d=a.e.a;d.j.c=Nlb(1,d.j.c+c);break;case 1:d.j.d=d.j.d+c;d.j.c=Nlb(1,d.j.c-c);break;case 4:d.j.e=a.e.b;d.j.b=Nlb(1,d.j.b+c);break;case 3:d.j.e=d.j.e+c;d.j.b=Nlb(1,d.j.b-c);}}}\nfunction bdb(a,b,c,d,e){var f,g,h,i,j,k,l,m,n;m=(mp(),new ntb);h=new GU;adb(a,c,a.d.Mc(),h,m);adb(a,d,a.d.Nc(),h,m);i=new Fnb(h,0);while(i.bl||d+e>i){throw new nkb}if(((j.g&1)==0||(j.g&4)!=0)&&k!=h){if(a===c&&bd;){c[g]=a[--b]}}else{for(g=d+e;d0&&dxb(a,b,c,d,e,true)}\nfunction cR(a,b,c){var d,e,f,g,h;d=Wv(rJ(a,(Mjb(),jjb)),18);c.a>b.a&&(d.kb((zgb(),tgb))?(a.d.a+=(c.a-b.a)/2):d.kb(vgb)&&(a.d.a+=c.a-b.a));c.b>b.b&&(d.kb((zgb(),xgb))?(a.d.b+=(c.b-b.b)/2):d.kb(wgb)&&(a.d.b+=c.b-b.b));if(Wv(rJ(a,(Rib(),jib)),18).kb((ohb(),hhb))&&(c.a>b.a||c.b>b.b)){for(h=new Tob(a.b);h.a0){return As(a,c,e)}return a}a.e=Ms(h,b,c,d,e,f);if(f[0]==d){e==0&&f[0]!=0?--a.a:e>0&&f[0]==0&&++a.a;a.j=PH(a.j,e-f[0])}return Gs(a)}else if(g>0){i=a.g;if(!i){f[0]=0;if(d==0&&e>0){return Bs(a,c,e)}return a}a.g=Ms(i,b,c,d,e,f);if(f[0]==d){e==0&&f[0]!=0?--a.a:e>0&&f[0]==0&&++a.a;a.j=PH(a.j,e-f[0])}return Gs(a)}f[0]=a.c;if(d==a.c){if(e==0){return Fs(a)}a.j=PH(a.j,e-a.c);a.c=e}return a}\nfunction gfb(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q;i=a.e;n=a.f;g=a.d;o=a.c;k=o-1;p=a.g;l=Eo(a.g.xb(1,a.g.Y()-1));j=new GU;for(c=0;c=0){return false}else if(!!c.e&&e==(CX(),wX)&&e!=c.e){return false}else{b.k=c.b;vU(c.f,b)}c.e=e;if(e==(CX(),zX)||e==BX||e==wX){for(g=new Tob(b.f);g.a0){vS(a.n,false,(sK(),oK));vS(a.n,true,pK)}}\nfunction tP(b,c){var d,e,f,g,h,i,j,k,l,m;h=0;while(h<(bmb(),c.length)&&yP(c.charCodeAt(h),fzb)){++h}d=c.length;while(d>0&&yP(c.charCodeAt(d-1),gzb)){--d}if(h0){d=new IU(Wv(Dd(a.a,f),18));Gpb(d,new $V(b));e=new Fnb(f.b,0);while(e.bv)){i=2;g=$xb}else if(i==0){i=1;g=A}else{i=0;g=A}}else{n=A>=g||g-A0&&(i=a.i.a/f);break;case 2:case 4:e=a.f.j.b;e>0&&(i=a.i.b/e);}sJ(a,(Rib(),Cib),i)}h=a.j;if(d){a.a.a=d.a;a.a.b=d.b}else if(b!=IM&&b!=JM&&g!=qN){switch(g.e){case 1:a.a.a=h.a/2;break;case 2:a.a.a=h.a;a.a.b=h.b/2;break;case 3:a.a.a=h.a/2;a.a.b=h.b;break;case 4:a.a.b=h.b/2;}}else{a.a.a=h.a/2;a.a.b=h.b/2}}\nfunction zJ(a){var b,c,d,e;if(aw(a.a,10)){return xI(Wv(a.a,10))}else if(aw(a.a,66)){return Xsb(Wv(a.a,86))}else if(aw(a.a,50)){return Wv(a.a,50).Wc()}else if(aw(a.a,191)){b=new Vwb;e=(d=new rwb((new wwb((new Gob(Wv(a.a,191).a)).a)).b),new Mob(d));while(Bnb(e.a.a)){Rwb(b,(c=pwb(e.a),c.yb()))}return b}else if(aw(a.a,13)){return new IU(Wv(a.a,13))}else if(aw(a.a,44)){b=new jJ;e=WI(Wv(a.a,44),0);while(e.b!=e.d.c){QI(b,Wv(_ub(e),10))}return b}else if(aw(a.a,58)){b=new aJ;e=WI(Wv(a.a,58),0);while(e.b!=e.d.c){QI(b,_ub(e))}return b}else{return a.a}}\nfunction o1(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o;h=0;o=0;i=Xob(a.f,a.f.length);f=a.d;g=a.i;d=a.a;e=a.b;do{n=0;for(k=new Tob(a.p);k.ap?m:p}o=MI(Bv(tv(qz,1),Fzb,10,0,[a.f.i,a.i,a.a])).b;kgb(this,o,n,m);for(i=(f=(new Snb(b.a)).a.bb().mb(),new Ynb(f));i.a.G();){h=(e=Wv(i.a.H(),21),Wv(e.yb(),27));stb(this.c,Wv(h.b,12))}this.f=false}\nfunction cQ(a,b,c,d){var e,f,g,h,i,j;h=(eM(),KL).b;if(h in b.a&&Pu(b,h).ic().a){return}j=Pu(b,Dzb);if(!j){throw new GQ(\"Labels must have a property 'text'.\",null,b)}else if(!j.lc()){throw new GQ(\"A label's 'text' property must be a string.\",j,b)}i=j.lc().a;f=new dX(i);sJ(f,(Rib(),uib),b);Umb(a.f,f,b);_P(b,f);hQ(b,f);aw(c,9)?vU(Wv(c,9).c,f):aw(c,12)?vU(Wv(c,12).b,f):aw(c,7)&&vU(Wv(c,7).c,f);if(aw(c,12)){g=Wv(rJ(f,tL),107);_P(b,f);sJ(f,tL,g);e=Wv(rJ(d,jib),18);switch(g.e){case 2:case 3:e.ib((ohb(),ghb));case 1:case 0:e.ib((ohb(),ehb));sJ(f,tL,(EK(),AK));}}}\nfunction UW(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r;f=0;g=0;for(j=new Tob(a.a);j.a0.5?(r-=g*2*(o-0.5)):o<0.5&&(r+=f*2*(0.5-o));e=h.e.b;rq.a-p-k&&(r=q.a-p-k);h.i.a=b+r}}\nfunction Kv(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D,F,G;c=a.l&8191;d=a.l>>13|(a.m&15)<<9;e=a.m>>4&8191;f=a.m>>17|(a.h&255)<<5;g=(a.h&1048320)>>8;h=b.l&8191;i=b.l>>13|(b.m&15)<<9;j=b.m>>4&8191;k=b.m>>17|(b.h&255)<<5;l=(b.h&1048320)>>8;B=c*h;C=d*h;D=e*h;F=f*h;G=g*h;if(i!=0){C+=c*i;D+=d*i;F+=e*i;G+=f*i}if(j!=0){D+=c*j;F+=d*j;G+=e*j}if(k!=0){F+=c*k;G+=d*k}l!=0&&(G+=c*l);n=B&azb;o=(C&511)<<13;m=n+o;q=B>>22;r=C>>9;s=(D&262143)<<4;t=(F&31)<<17;p=q+r+s+t;v=D>>18;w=F>>5;A=(G&4095)<<8;u=v+w+A;p+=m>>22;m&=azb;u+=p>>22;p&=azb;u&=bzb;return Ev(m,p,u)}\nfunction jZ(a,b,c,d){var e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w;q=a.d.c.c.c.length;if(c>=q-1){return null}e=new GU;e.c[e.c.length]=b;u=b;g=c;o=-1;h=Wv(yU(a.d.c.c,c),16);for(n=0;n1&&g1&&g>1){k=fZ(a,u);h=Wv(yU(a.d.c.c,g),16);l=Wv(yU(a.d.c.c,g-1),16);w=Wv(p.sb(m++),24).a;r=Slb(w,l.a.c.length);qX(u,r,l);qX(k,t,h);t=r;!!u&&(e.c[e.c.length]=u,true);u=k;--v;++f;--g}s=(d-(e.c.length-1)*a.d.d)/e.c.length;for(j=new Tob(e);j.ad?0:d;if(!!b.o&&!!f.o&&aw(b,82)&&aw(f,82)&&!sr(or(Wv(b,82).d,Wv(f,82).d))){e=x7(new A7,a.d);h=hw(Llb(f.g.a-b.g.a));f7(i7(h7(j7(g7(new k7,0>h?0:h),1),e),a.c[b.f.d]));f7(i7(h7(j7(g7(new k7,0>-h?0:-h),1),e),a.c[f.f.d]))}else{j=1;(aw(b,82)&&aw(f,93)||aw(f,82)&&aw(b,93))&&(j=2);f7(i7(h7(j7(g7(new k7,hw(d)),j),a.c[b.f.d]),a.c[f.f.d]))}}}}\nfunction tQ(){tQ=iI;sQ=new vtb;rQ=uQ(Bv(tv(rz,1),syb,79,0,[(eM(),kL),xL]));oQ=uQ(Bv(tv(rz,1),syb,79,0,[ML,UL,(Mjb(),Hjb),yL,(Rib(),Eib),Kjb,Cjb]));kQ=uQ(Bv(tv(rz,1),syb,79,0,[mL,qL,KL,wL,BL,EL,FL,$L,_L,AL,gjb,mjb,njb,xjb,rjb,yjb,Ijb,Djb,ijb]));nQ=uQ(Bv(tv(rz,1),syb,79,0,[IL,HL,DL,dM,LL,Dib,Xhb,Rhb,Jib,Ejb,qjb,wjb]));mQ=uQ(Bv(tv(rz,1),syb,79,0,[WL,lL,sL,uL,tL,vL,zL,NL,OL,PL,QL,RL,TL,VL,hjb,ljb,zjb,ojb,kjb,Ajb,Bjb,sjb,tjb,vjb,Fjb,Gjb,Jjb,Ljb,ujb]));lQ=uQ(Bv(tv(rz,1),syb,79,0,[JL,aM,bM,jjb]));qQ=uQ(Bv(tv(rz,1),syb,79,0,[jL,oL,CL,GL,SL,YL]));pQ=uQ(Bv(tv(rz,1),syb,79,0,[(RP(),OP)]))}\nfunction AR(a){var b,c,d,e,f,g,h;b=0;for(f=new Tob(a.b.a);f.a$yb)&&h<10);oS(a.c,new KR);AR(a);iS(a.c);gR(a.f)}\nfunction tT(a){oT();var b,c,d,e,f,g,h;h=new qT;for(c=new Tob(a);c.a=h.b.c)&&(h.b=b);if(!h.c||b.c<=h.c.c){h.d=h.c;h.c=b}(!h.e||b.d>=h.e.d)&&(h.e=b);(!h.f||b.d<=h.f.d)&&(h.f=b)}d=new xT((cT(),$S));RT(a,mT,new opb(Bv(tv(JA,1),syb,160,0,[d])));g=new xT(bT);RT(a,lT,new opb(Bv(tv(JA,1),syb,160,0,[g])));e=new xT(_S);RT(a,kT,new opb(Bv(tv(JA,1),syb,160,0,[e])));f=new xT(aT);RT(a,jT,new opb(Bv(tv(JA,1),syb,160,0,[f])));rT(d.c,$S);rT(e.c,_S);rT(f.c,aT);rT(g.c,bT);h.a.c=xv(UF,syb,1,0,4,1);xU(h.a,d.c);xU(h.a,Fo(e.c));xU(h.a,f.c);xU(h.a,Fo(g.c));return h}\nfunction $O(a){var b,c,d,e,f,g,h,i,j,k;e=Wv(vW(a,(eM(),DL)),15).a;for(h=new Tob(uW(a));h.a0){p=(Cxb(0,i.c.length),Wv(i.c[0],12));e=(Cxb(0,n.c.length),Wv(n.c[0],12));s=e.d.b;f=zU(s,e,0);fW(p,e.d,f);dW(e,null);eW(e,null);o=p.a;b&&QI(o,new II(t));for(d=WI(e.a,0);d.b!=d.d.c;){c=Wv(_ub(d),10);QI(o,new II(c))}r=p.b;for(m=new Tob(e.b);m.ag)&&stb(a.c,Wv(q.b,12))}}++h}f=g}}}}\nfunction _9(a,b,c){var d,e,f,g,h,i;this.g=a;h=b.d.length;i=c.d.length;this.d=xv(qB,Nzb,9,h+i,0,1);for(g=0;g0?Z9(this,this.f/this.a):W9(b.g,b.d[0]).a!=null&&W9(c.g,c.d[0]).a!=null?Z9(this,(Ixb(W9(b.g,b.d[0]).a)+Ixb(W9(c.g,c.d[0]).a))/2):W9(b.g,b.d[0]).a!=null?Z9(this,W9(b.g,b.d[0]).a):W9(c.g,c.d[0]).a!=null&&Z9(this,W9(c.g,c.d[0]).a)}\nfunction x9(a,b){var c,d,e,f,g,h,i,j,k,l,m;switch(a.g.e){case 1:d=Wv(rJ(a,(Rib(),uib)),12);c=Wv(rJ(d,vib),44);!c?(c=new jJ):Ckb(Ixb(Xv(rJ(d,Iib))))&&(c=lJ(c));j=Wv(rJ(a,qib),7);k=MI(Bv(tv(qz,1),Fzb,10,0,[j.f.i,j.i,j.a]));if(b<=k.a){return k.b}TI(c,k,c.a,c.a.a);l=Wv(rJ(a,rib),7);m=MI(Bv(tv(qz,1),Fzb,10,0,[l.f.i,l.i,l.a]));if(m.a<=b){return m.b}TI(c,m,c.c.b,c.c);i=WI(c,0);g=Wv(_ub(i),10);h=Wv(_ub(i),10);while(h.a=2){_I(a.a);d=0;for(m=WI(c,0);m.b!=m.d.c;){l=Wv(_ub(m),10);if(d==0){b=EI(EI(new HI(l.a,l.b),a.c.i),a.c.f.i);a.c.a.a=b.a;a.c.a.b=b.b}else if(d==c.b-1){b=EI(EI(new HI(l.a,l.b),a.d.i),a.d.f.i);a.d.a.a=b.a;a.d.a.b=b.b}else{QI(a.a,l)}++d}}if(k){for(i=WI(a.a,0);i.b!=i.d.c;){h=Wv(_ub(i),10);g.a=Nlb(g.a,h.a);g.b=Nlb(g.b,h.b)}}for(f=new Tob(a.b);f.a0&&sJ(g,$hb,(xkb(),xkb(),wkb));h=Wv(rJ(g,(eM(),TL)),28);h==(KM(),JM)?IM:h!=IM&&d.ib((ohb(),khb));Ckb(Ixb(Xv(rJ(g,qL))))&&d.ib((ohb(),fhb));if(Ckb(Ixb(Xv(rJ(g,AL))))){d.ib((ohb(),jhb));d.ib(ihb);sJ(g,TL,IM)}return g}\nfunction iR(a,b){b.V()&&wS(a.n,true,true,true,true);b.t((sN(),eN))&&wS(a.n,true,true,true,false);b.t(_M)&&wS(a.n,false,true,true,true);b.t(mN)&&wS(a.n,true,true,false,true);b.t(oN)&&wS(a.n,true,false,true,true);b.t(fN)&&wS(a.n,false,true,true,false);b.t(aN)&&wS(a.n,false,true,false,true);b.t(nN)&&wS(a.n,true,false,false,true);b.t(lN)&&wS(a.n,true,false,true,false);b.t(jN)&&wS(a.n,true,true,true,true);b.t(cN)&&wS(a.n,true,true,true,true);b.t(jN)&&wS(a.n,true,true,true,true);b.t(bN)&&wS(a.n,true,true,true,true);b.t(kN)&&wS(a.n,true,true,true,true);b.t(iN)&&wS(a.n,true,true,true,true);b.t(hN)&&wS(a.n,true,true,true,true)}\nfunction n1(a,b){var c,d,e,f,g,h,i,j,k,l;i=true;e=0;j=a.f[b.k];k=b.j.b+a.n;c=a.c[b.k][2];DU(a.a,j,Elb(Wv(yU(a.a,j),24).a-1+c));DU(a.b,j,Ixb(Yv(yU(a.b,j)))-k+c*a.e);++j;if(j>=a.i){++a.i;vU(a.a,Elb(1));vU(a.b,k)}else{d=a.c[b.k][1];DU(a.a,j,Elb(Wv(yU(a.a,j),24).a+1-d));DU(a.b,j,Ixb(Yv(yU(a.b,j)))+k-d*a.e)}(a.q==(I1(),B1)&&(Wv(yU(a.a,j),24).a>a.j||Wv(yU(a.a,j-1),24).a>a.j)||a.q==E1&&(Ixb(Yv(yU(a.b,j)))>a.k||Ixb(Yv(yU(a.b,j-1)))>a.k))&&(i=false);for(g=Uh(iX(b));Cm(g);){f=Wv(Dm(g),12);h=f.c.f;if(a.f[h.k]==j){l=n1(a,h);e=e+Wv(l.a,24).a;i=i&&Ckb(Ixb(Xv(l.b)))}}a.f[b.k]=j;e=e+a.c[b.k][0];return new RJ(Elb(e),(xkb(),i?wkb:vkb))}\nfunction WW(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r;m=new II(a.j);r=b.a/m.a;h=b.b/m.b;p=b.a-m.a;f=b.b-m.b;if(c){e=gw(rJ(a,(eM(),TL)))===gw((KM(),FM));for(o=new Tob(a.f);o.a=1){if(q-g>0&&l>=0){i.i.a+=p;i.i.b+=f*g}else if(q-g<0&&k>=0){i.i.a+=p*q;i.i.b+=f}}}a.j.a=b.a;a.j.b=b.b;sJ(a,(eM(),aM),(DN(),d=Wv(Hkb(Lz),11),new atb(d,Wv(exb(d,d.length),11),0)))}\nfunction C7(a){var b,c,d,e,f,g,h,i,j,k;d=new GU;for(g=new Tob(a.e.a);g.a-1){for(e=WI(h,0);e.b!=e.d.c;){d=Wv(_ub(e),77);d.n=g}while(h.b!=0){d=Wv(un(h,0),77);for(c=new Tob(d.d);c.a0){a.a=j+(p-1)*f;b.d.b+=a.a;b.e.b+=a.a}}if(q.a.Y()!=0){o=new cdb(1,f);p=bdb(o,b,q,r,b.e.b+j-b.d.b);p>0&&(b.e.b+=j+(p-1)*f)}}\nfunction Xt(a,b){var c,d,e,f,g,h,i,j,k;if((bmb(),b.length)==0){return a.fc(Yxb,Xxb,-1,-1)}k=hmb(b);emb(k.substr(0,3),'at ')&&(k=imb(k,3,k.length-3));k=k.replace(/\\[.*?\\]/g,'');g=k.indexOf('(');if(g==-1){g=k.indexOf('@');if(g==-1){j=k;k=''}else{j=hmb(imb(k,g+1,k.length-(g+1)));k=hmb(k.substr(0,g))}}else{c=k.indexOf(')',g);j=k.substr(g+1,c-(g+1));k=hmb(k.substr(0,g))}g=mmb(k,lmb(46));g!=-1&&(k=imb(k,g+1,k.length-(g+1)));(k.length==0||emb(k,'Anonymous function'))&&(k=Xxb);h=nmb(j,lmb(58));e=omb(j,lmb(58),h-1);i=-1;d=-1;f=Yxb;if(h!=-1&&e!=-1){f=j.substr(0,e);i=St(j.substr(e+1,h-(e+1)));d=St(imb(j,h+1,j.length-(h+1)))}return a.fc(f,k,i,d)}\nfunction idb(a){var b,c,d,e,f,g,h,i,j,k;j=new GU;h=new GU;for(g=new Tob(a);g.a-1){for(f=new Tob(h);f.a0){continue}i.i=Slb(i.i,e.i-1);--i.f;i.f==0&&(h.c[h.c.length]=i,true)}}}}\nfunction PV(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p;if(!Ckb(Ixb(Xv(rJ(c,(eM(),$L)))))){return}for(h=new Tob(c.f);h.a0);g.a.sb(g.c=--g.b);Anb(g,d);$ub(j,d);J2(d,i.g);avb(j);avb(j);e.a.eb(d)!=null}}}}}\nfunction IP(b){var c,d,e,f,g,h,i,j,k;g=new Uu(b);f=Pu(g,'graph');j=Pu(g,'success');e=Pu(g,'error');h=Pu(g,'options');try{if(!f||!f.kc()){throw new $J(\"Mandatory parameter missing, 'graph' must be specified\")}AQ(new CQ,f.kc(),h?h.kc():null);i=f.kc().a;!!j&&!!j.kc()?HP(j.kc().a,i):HP(null,i)}catch(a){a=OH(a);if(aw(a,73)){k=a;!!e&&!!e.kc()?HP(e.kc().a,DQ(k).a):HP(null,DQ(k).a)}else if(aw(a,54)){c=a;d=new Tu;Ru(d,'type',new lv(Ikb(c.$c)));c.bc()!=null?Ru(d,Dzb,new lv(c.bc())):Ru(d,Dzb,new lv('null (sic)'));Ru(d,Ezb,new lv(Hb(new Kb('\\n'),new wnb(new opb((c.g==null&&(c.g=Pt(c)),c.g))))));!!e&&!!e.kc()?HP(e.kc().a,d.a):HP(null,d.a);at(c,(Fmb(),Dmb),'')}else throw NH(a)}}\nfunction e9(a,b,c){var d,e,f,g,h,i,j,k,l,m;if(c){d=-1;k=new Fnb(b,0);while(k.b0&&c.c==0){!b&&(b=new GU);b.c[b.c.length]=c}}if(b){while(b.c.length!=0){c=Wv(AU(b,0),102);if(!!c.b&&c.b.c.length>0){for(f=(!c.b&&(c.b=new GU),new Tob(c.b));f.azU(a,c,0)){return new RJ(e,c)}}else if(Ixb(W9(e.g,e.d[0]).a)>Ixb(W9(c.g,c.d[0]).a)){return new RJ(e,c)}}}for(h=(!c.e&&(c.e=new GU),c.e).mb();h.G();){g=Wv(h.H(),102);i=(!g.b&&(g.b=new GU),g.b);Fxb(0,i.c.length);fxb(i.c,0,c);g.c==i.c.length&&(b.c[b.c.length]=g,true)}}}return null}\nfunction R0(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p;l=(mp(),new ntb);for(k=(Il(),new Im(Dl(ul(a.a,new yl))));Cm(k);){j=Wv(Dm(k),9);e=Q0(j,(sN(),ZM));for(d=new Tob(e);d.a0&&(f.a=Nlb(f.a,e+a.q.b+a.q.c));c>0&&(f.b=Nlb(f.b,c+a.q.d+a.q.a))}else{e>0&&(f.a=Nlb(f.a,e));c>0&&(f.b=Nlb(f.b,c))}}pW(a.e,f)}\nfunction ewb(a,b,c){var d,e,f,g,h,i,j,k,l,m,n;if(!a.b){return false}g=null;m=null;i=new ywb(null,null);e=1;i.a[1]=a.b;l=i;while(l.a[e]){j=e;h=m;m=l;l=l.a[e];d=a.a.$b(b,l.d);e=d<0?0:1;d==0&&(!c.c||ovb(l.e,c.d))&&(g=l);if(!(!!l&&l.b)&&!awb(l.a[e])){if(awb(l.a[1-e])){m=m.a[j]=hwb(l,e)}else if(!awb(l.a[1-e])){n=m.a[1-j];if(n){if(!awb(n.a[1-j])&&!awb(n.a[j])){m.b=false;n.b=true;l.b=true}else{f=h.a[1]==m?1:0;awb(n.a[j])?(h.a[f]=gwb(m,j)):awb(n.a[1-j])&&(h.a[f]=hwb(m,j));l.b=h.a[f].b=true;h.a[f].a[0].b=false;h.a[f].a[1].b=false}}}}}if(g){c.b=true;c.d=g.e;if(l!=g){k=new ywb(l.d,l.e);fwb(a,i,g,k);m==g&&(m=k)}m.a[m.a[1]==l?1:0]=l.a[!l.a[0]?1:0];--a.c}a.b=i.a[1];!!a.b&&(a.b.b=false);return c.b}\nfunction v$(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s;d=Wv(rJ(a,(eM(),TL)),28);i=a.e;h=a.a;c=Wv(rJ(a,(Rib(),Xhb)),15).a;j=i.a+h.b+h.c+2*c;k=0-h.d-c-a.d.b;n=i.b+h.d+h.a+2*c-a.d.b;l=new GU;o=new GU;for(f=(m=(new Snb(b.a)).a.bb().mb(),new Ynb(m));f.a.G();){e=(g=Wv(f.a.H(),21),Wv(g.yb(),9));switch(d.e){case 1:case 2:case 3:m$(e);break;case 4:p=Wv(rJ(e,SL),10);q=!p?0:p.a;e.i.a=j*Ixb(Yv(rJ(e,Cib)))-q;fX(e,true,false);break;case 5:r=Wv(rJ(e,SL),10);s=!r?0:r.a;e.i.a=Ixb(Yv(rJ(e,Cib)))-s;fX(e,true,false);i.a=Nlb(i.a,e.i.a+e.j.a/2);}switch(Wv(rJ(e,hib),32).e){case 1:e.i.b=k;l.c[l.c.length]=e;break;case 3:e.i.b=n;o.c[o.c.length]=e;}}switch(d.e){case 1:case 2:o$(l,a);o$(o,a);break;case 3:t$(l,a);t$(o,a);}}\nfunction OY(a){var b,c,d,e,f,g;d=Wv(rJ(a.a.g,(eM(),JL)),86);if(jf(d,(oM(),b=Wv(Hkb(Gz),11),new atb(b,Wv(exb(b,b.length),11),0))));else if(Xe(d,Usb(gM))){c=Wv(Wv(Dd(a.a.b,a.b),20).sb(0),33);a.b.i.a=c.i.a;a.b.i.b=c.i.b}else if(Xe(d,Usb(iM))){e=Wv(yU(a.a.c,a.a.c.c.length-1),9);f=Wv(Wv(Dd(a.a.b,a.b),20).sb(Wv(Dd(a.a.b,a.b),20).Y()-1),33);g=e.j.a-(f.i.a+f.j.a);a.b.i.a=a.a.g.j.a-g-a.b.j.a;a.b.i.b=f.i.b}else if(Xe(d,Vsb(mM,Bv(tv(Gz,1),uyb,41,0,[fM])))){c=Wv(Wv(Dd(a.a.b,a.b),20).sb(0),33);a.b.i.a=(a.a.g.j.a-a.b.j.a)/2;a.b.i.b=c.i.b}else if(Xe(d,Usb(mM))){c=Wv(Wv(Dd(a.a.b,a.b),20).sb(0),33);a.b.i.b=c.i.b}else if(Xe(d,Usb(fM))){c=Wv(Wv(Dd(a.a.b,a.b),20).sb(0),33);a.b.i.a=(a.a.g.j.a-a.b.j.a)/2;a.b.i.b=c.i.b}return null}\nfunction NZ(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q;for(o=new Tob(a);o.ar?i:r;for(t=new Tob(k.f);t.a=j&&v>=q){m+=o.i.b+p.i.b+p.a.b-u;++h}}}}if(c){for(g=new Tob(s.b);g.a=j&&v>=q){m+=o.i.b+p.i.b+p.a.b-u;++h}}}}}if(h>0){w+=m/h;++n}}if(n>0){b.a=e*w/n;b.i=n}else{b.a=0;b.i=0}}\nfunction Kab(a,b,c,d){var e,f,g,h,i,j,k,l,m,n,o,p,q,r,s;n=b.c.length;m=0;for(l=new Tob(a.c);l.a=0){i=null;h=new Fnb(k.a,j+1);while(h.b0){a.a[b.d.k][b.k].d+=wvb(a.e,24)*FAb*0.07000000029802322-0.03500000014901161;a.a[b.d.k][b.k].a=a.a[b.d.k][b.k].d/a.a[b.d.k][b.k].b}}\nfunction Sbb(a,b){var c,d,e,f,g,h,i,j,k,l,m;for(e=new Tob(a.a.c);e.aVzb||b.k==Jbb&&k0){d+=f.b.c.length+f.e.c.length;Umb(b,f,Elb(d))}}}else{for(h=nX(i,(sN(),ZM)).mb();h.G();){f=Wv(h.H(),7);d+=f.b.c.length+f.e.c.length}for(g=nX(i,ZM).mb();g.G();){f=Wv(g.H(),7);f.b.c.length+f.e.c.length>0&&Umb(b,f,Elb(d))}}}for(j=a.length-1;j>=0;j--){i=a[j];if(LM(Wv(rJ(i,(eM(),TL)),28))){for(m=nX(i,(sN(),rN)).mb();m.G();){l=Wv(m.H(),7);if(l.b.c.length+l.e.c.length>0){e+=l.b.c.length+l.e.c.length;Umb(c,l,Elb(e))}}}else{for(n=nX(i,(sN(),rN)).mb();n.G();){l=Wv(n.H(),7);e+=l.b.c.length+l.e.c.length}for(m=nX(i,rN).mb();m.G();){l=Wv(m.H(),7);l.b.c.length+l.e.c.length>0&&Umb(c,l,Elb(e))}}}}\nfunction wfb(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q,r;m=sgb(a.g);o=sgb(b.g);n=vI(xI(a.i),a.a);p=vI(xI(b.i),b.a);i=vI(new HI(n.a,n.b),CI(new GI(m),1.3*c));q=vI(new HI(p.a,p.b),CI(new GI(o),1.3*d));h=Jlb(i.a-q.a);hq?j:q}c.e.b+=j-h.b;for(l=new Tob(a.a);l.a1){b=Qlb(f,a.c);j=(l=new uX(a.e.c),sX(l,(CX(),wX)),sJ(l,(eM(),TL),Wv(rJ(j,TL),28)),sJ(l,JL,Wv(rJ(j,JL),86)),l.k=a.e.b++,vU(a.b,l),l.j.b=j.j.b,l.j.a=b,m=new RX,QX(m,(sN(),ZM)),PX(m,j),m.i.a=l.j.a,m.i.b=l.j.b/2,n=new RX,QX(n,rN),PX(n,l),n.i.b=l.j.b/2,n.i.a=-n.j.a,o=new hW,dW(o,m),eW(o,n),l);vU(a.e.c.b,j);--k;f-=a.c+a.e.d}new HY(a.d,a.b,a.c);for(h=new Tob(e);h.ab.a||b.p>a.a){return}c=0;d=0;for(l=(g=(new Snb(a.o.a)).a.bb().mb(),new Ynb(g));l.a.G();){j=(e=Wv(l.a.H(),21),Wv(e.yb(),7));qgb(MI(Bv(tv(qz,1),Fzb,10,0,[j.f.i,j.i,j.a])).b,b.p,b.a)&&++c}for(m=(h=(new Snb(a.g.a)).a.bb().mb(),new Ynb(h));m.a.G();){j=(e=Wv(m.a.H(),21),Wv(e.yb(),7));qgb(MI(Bv(tv(qz,1),Fzb,10,0,[j.f.i,j.i,j.a])).b,b.p,b.a)&&--c}for(n=(i=(new Snb(b.o.a)).a.bb().mb(),new Ynb(i));n.a.G();){j=(e=Wv(n.a.H(),21),Wv(e.yb(),7));qgb(MI(Bv(tv(qz,1),Fzb,10,0,[j.f.i,j.i,j.a])).b,a.p,a.a)&&++d}for(k=(f=(new Snb(b.g.a)).a.bb().mb(),new Ynb(f));k.a.G();){j=(e=Wv(k.a.H(),21),Wv(e.yb(),7));qgb(MI(Bv(tv(qz,1),Fzb,10,0,[j.f.i,j.i,j.a])).b,a.p,a.a)&&--d}if(c1){for(i=WI(Eo(nX(b,rN)),0);i.b!=i.d.c;){h=Wv(_ub(i),7);if(h.b.c.length==0){e=new RX;QX(e,rN);e.j.a=h.j.a;e.j.b=h.j.b;PX(e,d);sJ(e,uib,rJ(h,uib));PX(h,null)}else{PX(g,d)}}}sJ(b,uib,null);sJ(b,Vhb,(null,vkb));sX(b,wX);sJ(d,(eM(),TL),Wv(rJ(b,TL),28));sJ(d,JL,Wv(rJ(b,JL),86));uU(a.b,0,d);return d}\nfunction NW(a,b,c,d,e,f,g){var h,i,j,k,l,m;l=c;j=new uX(g);sX(j,(CX(),xX));sJ(j,(Rib(),iib),e);sJ(j,(eM(),TL),(KM(),FM));sJ(j,tib,Wv(rJ(a,LL),15));i=Wv(rJ(a,SL),10);!i&&(i=new HI(e.a/2,e.b/2));sJ(j,SL,i);k=new RX;PX(k,j);if(!(b!=IM&&b!=JM)){h=f!=(sK(),qK)?f:pK;d>0?(l=vN(h)):(l=tN(vN(h)));sJ(a,WL,l)}switch(l.e){case 4:sJ(j,(Mjb(),vjb),(Xib(),Tib));sJ(j,dib,(Hgb(),Ggb));j.j.b=e.b;QX(k,(sN(),ZM));k.i.b=i.b;break;case 2:sJ(j,(Mjb(),vjb),(Xib(),Vib));sJ(j,dib,(Hgb(),Egb));j.j.b=e.b;QX(k,(sN(),rN));k.i.b=i.b;break;case 1:sJ(j,mib,(Hhb(),Ghb));j.j.a=e.a;QX(k,(sN(),pN));k.i.a=i.a;break;case 3:sJ(j,mib,(Hhb(),Ehb));j.j.a=e.a;QX(k,(sN(),$M));k.i.a=i.a;}if(b==EM||b==GM||b==FM){m=0;switch(l.e){case 4:case 2:m=null.cd;b==GM&&(m/=null.cd);break;case 1:case 3:m=null.cd;b==GM&&(m/=null.cd);}sJ(j,Cib,m)}sJ(j,hib,l);return j}\nfunction LP(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t;j=new jJ;r=(mp(),new ntb);Umb(r,a,MP(a));d=(Mh(2,Vyb),new HU(2));!!a.c&&vU(d,a.c);!!a.d&&vU(d,a.d);for(n=new Tob(d);n.a1&&(TI(j,o,j.c.b,j.c),true);bvb(c)}}}o=p}}}return j}\nfunction m1(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p;a.n=Wv(rJ(a.g,(Rib(),Jib)),15).a*Wv(rJ(a.g,(Mjb(),Ejb)),15).a;a.e=a.n*Wv(rJ(a.g,qjb),15).a;a.i=a.g.c.c.length;h=a.i-1;m=0;a.j=0;a.k=0;a.a=Co(xv(PF,Txb,24,a.i,0,1));a.b=Co(xv(HF,Txb,184,a.i,6,1));for(g=new Tob(a.g.c);g.a0&&vU(a.p,k);vU(a.o,k)}b-=d;n=i+b;j+=b*a.e;DU(a.a,h,Elb(n));DU(a.b,h,j);a.j=Plb(a.j,n);a.k=Nlb(a.k,j);a.d+=b;b+=p}}\nfunction sN(){sN=iI;var a;qN=new uN(szb,0);$M=new uN('NORTH',1);ZM=new uN('EAST',2);pN=new uN('SOUTH',3);rN=new uN('WEST',4);dN=(ypb(),new Frb((a=Wv(Hkb(Kz),11),new atb(a,Wv(exb(a,a.length),11),0))));eN=Kk(Vsb($M,Bv(tv(Kz,1),uyb,32,0,[])));_M=Kk(Vsb(ZM,Bv(tv(Kz,1),uyb,32,0,[])));mN=Kk(Vsb(pN,Bv(tv(Kz,1),uyb,32,0,[])));oN=Kk(Vsb(rN,Bv(tv(Kz,1),uyb,32,0,[])));jN=Kk(Vsb($M,Bv(tv(Kz,1),uyb,32,0,[pN])));cN=Kk(Vsb(ZM,Bv(tv(Kz,1),uyb,32,0,[rN])));lN=Kk(Vsb($M,Bv(tv(Kz,1),uyb,32,0,[rN])));fN=Kk(Vsb($M,Bv(tv(Kz,1),uyb,32,0,[ZM])));nN=Kk(Vsb(pN,Bv(tv(Kz,1),uyb,32,0,[rN])));aN=Kk(Vsb(ZM,Bv(tv(Kz,1),uyb,32,0,[pN])));iN=Kk(Vsb($M,Bv(tv(Kz,1),uyb,32,0,[ZM,rN])));bN=Kk(Vsb(ZM,Bv(tv(Kz,1),uyb,32,0,[pN,rN])));kN=Kk(Vsb($M,Bv(tv(Kz,1),uyb,32,0,[pN,rN])));gN=Kk(Vsb($M,Bv(tv(Kz,1),uyb,32,0,[ZM,pN])));hN=Kk(Vsb($M,Bv(tv(Kz,1),uyb,32,0,[ZM,pN,rN])))}\nfunction q$(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C;u=new GU;for(m=new Tob(a.c);m.a=b.length)return {'done':true};var a=b[d++];return {'value':[a,c.get(a)],'done':false}}}};if(!Ztb()){e.prototype.createObject=function(){return {}};e.prototype.get=function(a){return this.obj[':'+a]};e.prototype.set=function(a,b){this.obj[':'+a]=b};e.prototype[$Ab]=function(a){delete this.obj[':'+a]};e.prototype.keys=function(){var a=[];for(var b in this.obj){b.charCodeAt(0)==58&&a.push(b.substring(1))}return a}}return e}\nfunction fQ(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u;k=new kW;sJ(k,PP,b);Umb(a.e,b,k);sJ(k,(Rib(),zib),c);!!a.d&&iQ(a.d,k,false);hQ(b,k);if(Lzb in b.a){q=k.a;r=Wv(Pu(b,Lzb),69);p=Wv(Pu(r,'left'),104);!!p&&(q.b=p.a);t=Wv(Pu(r,'top'),104);!!t&&(q.d=t.a);s=Wv(Pu(r,'right'),104);!!s&&(q.c=s.a);e=Wv(Pu(r,Azb),104);!!e&&(q.a=e.a)}l=(d=Wv(Hkb(mF),11),new atb(d,Wv(exb(d,d.length),11),0));sJ(k,jib,l);a.g==null&&(a.g=Xv(rJ(k,(zQ(),yQ))));if(Mzb in b.a){u=Pu(b,Mzb);if(!u.hc()){throw new GQ(\"The 'children' property of nodes must be an array.\",u,b)}j=u.hc();if(j.a.length>0){!!c&&sJ(c,sib,k);h=xv(qB,Nzb,9,j.a.length,0,1);for(n=0;nB[i]&&(q=i);for(l=new Tob(a.b.c);l.a1){vU(f,new mgb(q,v,c));for(o=(l=(new Snb(v.a)).a.bb().mb(),new Ynb(l));o.a.G();){n=(j=Wv(o.a.H(),21),Wv(j.yb(),27));BU(e,n.b)}}if(g.a.Y()>1){vU(f,new mgb(q,g,c));for(o=(l=(new Snb(g.a)).a.bb().mb(),new Ynb(l));o.a.G();){n=(j=Wv(o.a.H(),21),Wv(j.yb(),27));BU(e,n.b)}}}}\nfunction dab(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A;e=0;s=0;r=(mp(),new ntb);d=new ntb;f=new ntb;A=new ntb;fab(a,f,A);b=null;q=0;w=0;t=true;i=true;for(m=0,o=a.length;mb.j.d){p=a.c[b.f.d];s=a.c[m.f.d];if(p==s){continue}f7(i7(h7(j7(g7(new k7,1),100),p),s))}}}}}}}\nfunction t3(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o;g=new z3(a);h=Ao(pl(b,g));Gpb(h,new C3);e=a.b;switch(e.c){case 2:i=new E3(e.a);c=Al(pl(h,i));od(c)?(j=Wv(pd(c),91).b):(j=15);i=new E3(Jeb(e));c=Al(pl(h,i));od(c)?(f=Wv(pd(c),91).b):(f=15);i=new E3(e.b);c=Al(pl(h,i));od(c)?(k=Wv(pd(c),91).b):(k=15);d=p3(a,j,f,k);stb(b,new w3(d,a.c,a.e,a.a.c.f,e.a));stb(b,new w3(d,a.c,a.e,a.a.c.f,Jeb(e)));stb(b,new w3(d,a.c,a.e,a.a.c.f,e.b));break;case 1:i=new E3(e.a);c=Al(pl(h,i));od(c)?(j=Wv(pd(c),91).b):(j=15);i=new E3(e.b);c=Al(pl(h,i));od(c)?(k=Wv(pd(c),91).b):(k=15);d=q3(a,j,k);stb(b,new w3(d,a.c,a.e,a.a.c.f,e.a));stb(b,new w3(d,a.c,a.e,a.a.c.f,e.b));break;case 0:i=new E3(e.a);c=Al(pl(h,i));od(c)?(j=Wv(pd(c),91).b):(j=15);d=(l=a.b,m=xfb(a.a.c,a.a.d,j),Ue(a.a.a,Veb(m)),n=s3(a.a.b,m.a,l),o=new Dfb((!m.k&&(m.k=new Efb(Xeb(m))),m.k)),zfb(o),!n?o:Gfb(o,n));stb(b,new w3(d,a.c,a.e,a.a.c.f,e.a));break;default:throw new slb('The loopside must be defined.');}return d}\nfunction Pbb(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v;for(h=new Tob(a.a.c);h.a0){d=l.Y();j=hw(Math.floor((d+1)/2))-1;e=hw(Math.ceil((d+1)/2))-1;if(b.k==Kbb){for(k=e;k>=j;k--){if(b.a[u.k]==u){p=Wv(l.sb(k),27);o=Wv(p.a,9);if(!ttb(c,p.b)&&n>a.b.e[o.k]){b.a[o.k]=u;b.f[u.k]=b.f[o.k];b.a[u.k]=b.f[u.k];n=a.b.e[o.k]}}}}else{for(k=j;k<=e;k++){if(b.a[u.k]==u){r=Wv(l.sb(k),27);q=Wv(r.a,9);if(!ttb(c,r.b)&&n0||c.k==Kbb&&er?n:r}else{c.n[b.k]=d>(n>r?n:r)?d:n>r?n:r}}}else{q=a.d.f;p=Rbb(a,c.i[b.k]);m=Rbb(a,c.i[l.k]);if(c.k==Kbb){o=Ixb(c.n[b.k])+Ixb(c.d[g.k])+g.j.b+g.e.a+q-(Ixb(c.n[l.k])+Ixb(c.d[j.k])-j.e.d);Xbb(p,m,o)}else{o=Ixb(c.n[b.k])+Ixb(c.d[g.k])-g.e.d-Ixb(c.n[l.k])-Ixb(c.d[j.k])-j.j.b-j.e.a-q;Xbb(p,m,o)}}}else{r=a.e.Ic(r,b,g)}g=c.a[g.k]}while(g!=b);ycb(a.e,b)}\nfunction sZ(a,b,c,d){var e,f,g,h,i,j,k,l,m,n,o,p,q,r,s;m=false;l=false;if(MM(Wv(rJ(d,(eM(),TL)),28))){g=false;h=false;t:for(o=new Tob(d.f);o.a=d.j.b/2}else{s=!l}if(s){r=Wv(rJ(d,(Rib(),Qib)),20);if(!r){f=new GU;sJ(d,Qib,f)}else if(m){f=r}else{e=Wv(rJ(d,Yhb),20);if(!e){f=new GU;sJ(d,Yhb,f)}else{r.Y()<=e.Y()?(f=r):(f=e)}}}else{e=Wv(rJ(d,(Rib(),Yhb)),20);if(!e){f=new GU;sJ(d,Yhb,f)}else if(l){f=e}else{r=Wv(rJ(d,Qib),20);if(!r){f=new GU;sJ(d,Qib,f)}else{e.Y()<=r.Y()?(f=e):(f=r)}}}f.ib(a);sJ(a,(Rib(),Zhb),c);if(b.d==c){eW(b,null);c.b.c.length+c.e.c.length==0&&PX(c,null)}else{dW(b,null);c.b.c.length+c.e.c.length==0&&PX(c,null)}_I(b.a)}\nfunction rU(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t;c=new bV(b);c.a||kU(b);j=jU(b);i=new xk;q=new oV;for(p=new Tob(b.b);p.aj.k){++b;n=true}if(!!o&&!!j&&o.k>j.k){++b;p=true}if(!!m&&!!h&&m.kh.k){++b;i=true}if(!!m&&!!h&&m.kj.k){++b;k=true}i&&k&&h==j&&--b}}}}}return b}\nfunction Oab(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D;for(t=a.a,u=0,v=t.length;u0){l=Wv(yU(m.d.a,g-1),9);B=Xjb(a.b,m,l);q=m.i.b-m.e.d-(l.i.b+l.j.b+l.e.a+B)}else{q=m.i.b-m.e.d}j=q1&&(g=Qlb(g,Jlb(Wv(tn(h.a,1),10).b-k.b)))}}}}}else{for(p=new Tob(b.f);p.ae){f=m.a-e;g=$xb;d.c=xv(UF,syb,1,0,4,1);e=m.a}if(m.a>=e){d.c[d.c.length]=h;h.a.b>1&&(g=Qlb(g,Jlb(Wv(tn(h.a,h.a.b-2),10).b-m.b)))}}}}}if(d.c.length!=0&&f>b.j.a/2&&g>b.j.b/2){n=new RX;PX(n,b);QX(n,(sN(),$M));n.i.a=b.j.a/2;r=new RX;PX(r,b);QX(r,pN);r.i.a=b.j.a/2;r.i.b=b.j.b;for(i=new Tob(d);i.a=j.b?dW(h,r):dW(h,n)}else{j=Wv(ZI(h.a),10);q=h.a.b==0?MX(h.c):Wv(VI(h.a),10);q.b>=j.b?eW(h,r):eW(h,n)}l=Wv(rJ(h,(eM(),CL)),44);!!l&&Ve(l,j,true)}b.i.a=e-b.j.a/2}}\nfunction N2(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t;r=new GU;s=new GU;t=new GU;for(f=new Tob(b);f.a50?(r.c[r.c.length]=e,true):e.k>0?(s.c[s.c.length]=e,true):(t.c[t.c.length]=e,true)}if(s.c.length==1&&r.c.length==0){xU(r,s);s.c=xv(UF,syb,1,0,4,1)}r.c.length!=0&&Zsb(U2(a.a),(Ieb(),meb))&&Zsb(U2(a.a),(Ieb(),oeb))?L2(a,r):xU(s,r);s.c.length==0||M2(a,s);if(t.c.length!=0){c=V2(a.a);if(c.c!=0){k=new Tob(t);i=(_b(c),Nl((new vl(c)).a));while(k.a1){p=Wv(nm(i),60);aeb(e,p,true);Sob(k);Y2(a.a,p)}}}m=t.c.length;d=O2(a);n=new GU;g=m/T2(a.a).c|0;for(h=0;h3){xU(n,(Ieb(),Ieb(),geb));o-=4}switch(o){case 3:vU(n,Meb(d));case 2:q=Leb(Meb(d));do{q=Leb(q)}while(!Zsb(U2(a.a),q));n.c[n.c.length]=q;q=Neb(Meb(d));do{q=Neb(q)}while(!Zsb(U2(a.a),q));n.c[n.c.length]=q;break;case 1:vU(n,Meb(d));}l=new Tob(n);j=new Tob(t);while(l.a1&&(a.c[l]=true):t.g==rN&&t.e.c.length+t.b.c.length>1&&(a.d[l]=true)}if(q.g==(CX(),BX)){++i[l];g[l]=true}}}c=true;p=true;for(h=0;h0;r=v.e.c.length>0;j&&r?(m.c[m.c.length]=v,true):j?(p.c[p.c.length]=v,true):r&&(u.c[u.c.length]=v,true)}for(o=new Tob(p);o.a=p){if(u>p){o.c=xv(UF,syb,1,0,4,1);p=u}o.c[o.c.length]=g}}if(o.c.length!=0){n=Wv(yU(o,vvb(b,o.c.length)),77);H.a.eb(n)!=null;n.i=q++;agb(n,F,B);o.c=xv(UF,syb,1,0,4,1)}}w=a.c.length+1;for(h=new Tob(a);h.aG.i){vnb(c);BU(G.d,d);if(d.c>0){d.a=G;vU(G.j,d);d.b=C;vU(C.d,d)}}}}}\nfunction OO(a){var b,c,d;for(d=new Lsb((new Fsb(a.c)).a);htb(d.a);){c=(d.b=itb(d.a),new Psb(d.c,d.b));b=Wv(c.b.b[c.a.e],62);switch(Wv(c.a,67).e){case 0:b.d=0;b.e=-(b.b+a.d);break;case 1:b.d=(a.e.e.j.a-b.c)/2;b.e=-(b.b+a.d);break;case 2:b.d=a.e.e.j.a-b.c;b.e=-(b.b+a.d);break;case 3:b.d=0;b.e=a.e.e.j.b+a.d;break;case 4:b.d=(a.e.e.j.a-b.c)/2;b.e=a.e.e.j.b+a.d;break;case 5:b.d=a.e.e.j.a-b.c;b.e=a.e.e.j.b+a.d;break;case 6:b.d=-(b.c+a.d);b.e=0;break;case 7:b.d=-(b.c+a.d);b.e=(a.e.e.j.b-b.b)/2;break;case 8:b.d=-(b.c+a.d);b.e=a.e.e.j.b-b.b;break;case 9:b.d=a.e.e.j.a+a.d;b.e=0;break;case 10:b.d=a.e.e.j.a+a.d;b.e=(a.e.e.j.b-b.b)/2;break;case 11:b.d=a.e.e.j.a+a.d;b.e=a.e.e.j.b-b.b;break;case 12:b.d=a.q.b+a.d;b.e=a.q.d+a.d;break;case 13:b.d=(a.e.e.j.a-b.c)/2;b.e=a.q.d+a.d;break;case 14:b.d=a.e.e.j.a-a.q.c-b.c-a.d;b.e=a.q.d+a.d;break;case 15:b.d=a.q.b+a.d;b.e=(a.e.e.j.b-b.b)/2;break;case 16:b.d=(a.e.e.j.a-b.c)/2;b.e=(a.e.e.j.b-b.b)/2;break;case 17:b.d=a.e.e.j.a-a.q.c-b.c-a.d;b.e=(a.e.e.j.b-b.b)/2;break;case 18:b.d=a.q.b+a.d;b.e=a.e.e.j.b-a.q.a-b.b-a.d;break;case 19:b.d=(a.e.e.j.a-b.c)/2;b.e=a.e.e.j.b-a.q.a-b.b-a.d;break;case 20:b.d=a.e.e.j.a-a.q.c-b.c-a.d;b.e=a.e.e.j.b-a.q.a-b.b-a.d;}}}\nfunction ddb(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D,F,G,H,I;F=new aJ;B=new aJ;o=-1;for(s=new Tob(a);s.a=m){if(u>m){l.c=xv(UF,syb,1,0,4,1);m=u}l.c[l.c.length]=q}}if(l.c.length!=0){k=Wv(yU(l,vvb(b,l.c.length)),80);cwb(H.a,k)!=null;k.d=n++;jdb(k,F,B);l.c=xv(UF,syb,1,0,4,1)}}w=a.c.length+1;for(r=new Tob(a);r.aG.d){vnb(c);BU(G.b,d);if(d.c>0){d.a=G;vU(G.e,d);d.b=C;vU(C.b,d)}}}}}\nfunction e0(a){switch(a.e){case 14:return new wY;case 37:return new SY;case 8:return new YY;case 30:return new cZ;case 38:return new qZ;case 3:return new tZ;case 47:case 1:return new SZ((XZ(),WZ));case 4:return new wZ;case 49:return new AZ;case 23:return new $5;case 13:return new d$;case 34:return new j$;case 40:return new w$;case 35:return new F$;case 44:return new o4;case 28:return new I$;case 39:return new L$;case 27:return new N$;case 6:return new R$;case 31:return new m0;case 9:return new q0;case 43:return new w0;case 17:return new A0;case 18:return new G0;case 29:return new S0;case 11:return new q1;case 12:return new Z0;case 36:return new _0;case 46:case 0:return new SZ((XZ(),VZ));case 41:return new b1;case 15:return new e1;case 33:return new k1;case 42:return new R1;case 22:return new X1;case 19:return new k0;case 10:return new _1;case 7:return new c2;case 24:return new f2;case 21:return new h2;case 16:return new n2;case 45:return new q2;case 26:return new x2;case 20:return new A2;case 25:return new H2;case 5:return new l3;case 32:return new u3;case 48:case 2:return new SZ((XZ(),UZ));default:throw new slb('No implementation is available for the layout processor '+(a.d!=null?a.d:''+a.e));}}\nfunction PO(a){var b,c,d,e,f,g,h;c=a.e.e.j;a.b?(b=Wv(oW(a.e,(eM(),jL)),65)):(b=new EP(a.k,a.k,a.k,a.k));e=c.a;(a.b||a.g[1]!=(zM(),xM))&&(e-=b.b+b.c);f=c.a;(a.b||a.g[3]!=(zM(),xM))&&(f-=b.b+b.c);g=c.b;(a.b||a.g[4]!=(zM(),xM))&&(g-=b.d+b.a);d=c.b;(a.b||a.g[2]!=(zM(),xM))&&(d-=b.d+b.a);if(aP(a,(sN(),$M))==(zM(),xM)){a.j[1]=(e-dP(a,$M))/bP(a,$M);a.f=a.b?b.b+(eP(a,$M)==1?a.j[1]:0):a.j[1]}else{a.j[1]=a.k;h=dP(a,$M)+a.j[1]*(eP(a,$M)-1);switch(aP(a,$M).e){case 2:a.f=b.b;break;case 3:a.f=b.b+(e-h)/2;break;case 4:a.f=c.a-h-b.c;}}if(aP(a,pN)==xM){a.j[3]=(f-dP(a,pN))/bP(a,pN);a.r=c.a-(a.b?b.c+(eP(a,pN)==1?a.j[3]:0):a.j[3])}else{a.j[3]=a.k;h=dP(a,pN)+a.j[3]*(eP(a,pN)-1);switch(aP(a,pN).e){case 2:a.r=h+b.b;break;case 3:a.r=c.a-(f-h)/2-b.c;break;case 4:a.r=c.a-b.c;}}if(aP(a,rN)==xM){a.j[4]=(g-dP(a,rN))/bP(a,rN);a.s=c.b-(a.b?b.a+(eP(a,rN)==1?a.j[4]:0):a.j[4])}else{a.j[4]=a.k;h=dP(a,rN)+a.j[4]*(eP(a,rN)-1);switch(aP(a,rN).e){case 2:a.s=h+b.d;break;case 3:a.s=c.b-(g-h)/2-b.a;break;case 4:a.s=c.b-b.a;}}if(aP(a,ZM)==xM){a.j[2]=(d-dP(a,ZM))/bP(a,ZM);a.a=a.b?b.d+(eP(a,ZM)==1?a.j[2]:0):a.j[2]}else{a.j[2]=a.k;h=dP(a,ZM)+a.j[2]*(eP(a,ZM)-1);switch(aP(a,ZM).e){case 2:a.a=b.d;break;case 3:a.a=b.d+(d-h)/2;break;case 4:a.a=c.b-h-b.a;}}}\nfunction hab(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D,F,G,H,I;G=0;g=0;l=b[0].d;B=c[0].d;for(o=0,q=c.length;o0){u=(Bxb(A.b>0),Wv(A.a.sb(A.c=--A.b),7));w=0;for(f=new Tob(u.b);f.a0){if(u.g==(sN(),$M)){a.a[u.k]=G;++G}else{a.a[u.k]=G+s+t;++t}g+=w}}G+=t}else{r=0;for(v=new Tob(m.f);v.a0){++G;g+=r}}}C=xv(mw,Yyb,26,g,12,1);i=0;for(n=0,p=b.length;n0){j%2>0&&(d+=H[j+1]);j=(j-1)/2|0;++H[j]}}return d}\nfunction BV(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D,F,G,H,I,J;nI(b,'Compound graph postprocessor',1);c=Ckb(Ixb(Xv(rJ(a,(Mjb(),gjb)))));h=Wv(rJ(a,(Rib(),bib)),144);l=new vtb;for(w=h.W().mb();w.G();){v=Wv(w.H(),12);g=new IU(h.U(v));Gpb(g,new $V(a));F=VV((Cxb(0,g.c.length),Wv(g.c[0],114)));H=WV(Wv(yU(g,g.c.length-1),114));_I(v.a);C=F.f;SW(H.f,C)?(B=Wv(rJ(C,sib),55)):(B=hX(C));o=Wv(rJ(v,(eM(),CL)),44);if(ol(g,zV)){if(!o){o=new jJ;sJ(v,CL,o)}else{_I(o)}}else !!o&&sJ(v,CL,null);q=null;for(f=new Tob(g);f.adAb;J=Jlb(q.b-t.b)>dAb;(!c&&I&&J||c&&(I||J))&&QI(v.a,D)}Ue(v.a,d);d.b==0?(q=D):(q=(Bxb(d.b!=0),Wv(d.c.b.c,10)));s=Wv(rJ(r,CL),44);if(s){n=new jJ;gJ(n,0,s);hJ(n,u);Ue(o,n)}if(WV(e)==H){if(hX(H.f)!=e.a){u=new FI;MW(u,hX(H.f),B)}sJ(v,Pib,u)}p=new Fnb(r.b,0);while(p.bF?l:F}for(d=new Tob(C.e);d.aF?B:F}}sJ(u,Fab,Elb(l));sJ(u,Gab,Elb(B))}}r=0;for(n=new Tob(b.c);n.a0&&j>0&&WW(r,new HI(C,j),true)}}p=Nlb(p,r.i.a+r.j.a);q=Nlb(q,r.i.b+r.j.b);for(n=new Tob(r.c);n.a1){A=xv(LF,Txb,15,a.a.length,0,1);j=Do(a.a.length);p=0;o=0;c=2*b.d.a.c.length+1;H:for(w=new Tob(b.f);w.a0){A[v.k]=new llb(G/(v.b.c.length+v.e.c.length));p=Rlb(p,A[v.k].a);o=Olb(o,A[v.k].a)}else r&&(A[v.k]=new llb(G))}q=(!b.d?-1:zU(b.d.a,b,0))+1;n=b.d.a.c.length+1;for(i=new Tob(j);i.af.j.e+f.j.b){o.d=true}else{o.d=true;o.c=true}}}d.b!=d.d.c&&(b=c)}if(o){g=Wv(Smb(u,i.d.f),25);if(b.bg.j.e+g.j.b){o.d=true}else{o.d=true;o.c=true}}}}for(j=Uh(iX(s));Cm(j);){i=Wv(Dm(j),12);if(i.a.b!=0){b=Wv(VI(i.a),10);if(i.d.g==(sN(),$M)){C=new X4(b,new HI(b.a,f.j.e),f,i);C.c=true;B.c[B.c.length]=C}if(i.d.g==pN){C=new X4(b,new HI(b.a,f.j.e+f.j.b),f,i);C.d=true;B.c[B.c.length]=C}}}}}if(B.c.length!=0){ypb();Gpb(B,null);n=(Cxb(0,B.c.length),Wv(B.c[0],142));e=new L3(n,a.d);for(m=1;mc&&(C=o.a.db(s,o),C==null)}L=new vtb;p=new vtb;for(u=(G=(new Snb(K.a)).a.bb().mb(),new Ynb(G));u.a.G();){s=(l=Wv(u.a.H(),21),Wv(l.yb(),9));g=b==1?mX(s):iX(s);for(j=(Il(),new Im(Dl(ul(g.a,new yl))));Cm(j);){i=Wv(Dm(j),12);rY(s.d)!=rY(i.d.f.d)&&stb(L,i.d.f)}}for(v=(H=(new Snb(o.a)).a.bb().mb(),new Ynb(H));v.a.G();){s=(l=Wv(v.a.H(),21),Wv(l.yb(),9));g=b==1?mX(s):iX(s);for(j=(Il(),new Im(Dl(ul(g.a,new yl))));Cm(j);){i=Wv(Dm(j),12);rY(s.d)!=rY(i.d.f.d)&&stb(p,i.d.f)}}if(aZ){Fmb()}B=Wv(yU(a.d.c.c,d+(b==1?1:-1)),16);q=eyb;r=$xb;for(m=0;mm?q:m):p.a.R(s)&&(r=r1||tl(Sh(new gr(Ti(Bv(tv(UF,1),syb,1,4,[t.b,t.e])))))>1)&&f.ib((ohb(),ihb));if(gw(rJ(p,(Mjb(),kjb)))===gw((p9(),n9))&&!(Hzb in c.a)){d=new jJ;try{i=Pu(c,Hzb).hc();for(g=0;g0&&(a.a[R.k]=$++)}}else{L=0;for(S=new Tob(D.f);S.a0&&++$}}eb=0;for(H=0,K=c.length;H0){R=(Bxb(V.b>0),Wv(V.a.sb(V.c=--V.b),7));U=0;for(h=new Tob(R.b);h.a0){if(R.g==(sN(),$M)){a.a[R.k]=eb;++eb}else{a.a[R.k]=eb+M+O;++O}}}eb+=O}else{L=0;for(S=new Tob(D.f);S.a0&&++eb}}T=(mp(),new ntb);n=new Wub;for(F=0,I=b.length;Fj.b&&(j.b=W)}else if(R.f.d==Z){Wj.c&&(j.c=W)}}}ipb(o,0,o.length,(hsb(),hsb(),gsb));db=xv(mw,Yyb,26,o.length,12,1);d=xv(mw,Yyb,26,eb+1,12,1);for(q=0;q0){w%2>0&&(e+=hb[w+1]);w=(w-1)/2|0;++hb[w]}}B=xv(sE,syb,156,o.length*2,0,1);for(t=0;t1?(b.c=Skb(this,a-1)):(b.c=this);return b};_.Pc=function Rkb(){Gkb(this);return this.b};_.Qc=function Tkb(){return Ikb(this)};_.Rc=function Vkb(){return Jkb(this)};_.Sc=function Xkb(){return (this.g&4)!=0};_.Tc=function Ykb(){return (this.g&1)!=0};_.w=function _kb(){return ((this.g&2)!=0?'interface ':(this.g&1)!=0?'':'class ')+(Gkb(this),this.n)};_.g=0;var Fkb=1;hI(119,72,{3:1,119:1,54:1,46:1},alb);hI(29,72,cyb,rlb,slb);hI(95,72,Vxb,nkb,okb);hI(231,1,{3:1,231:1});var blb;hI(24,231,{3:1,23:1,24:1,231:1},wlb);_.F=function ylb(a){return vlb(this,Wv(a,24))};_.t=function zlb(a){return aw(a,24)&&Wv(a,24).a==this.a};_.v=function Alb(){return this.a};_.w=function Clb(){return Dlb(this.a)};_.a=0;Uv={3:1,345:1,23:1,2:1};hI(350,1,fyb,smb);_.$b=function tmb(a,b){return rmb($v(a),$v(b))};hI(257,95,Vxb,Cmb);hI(145,1,{23:1,145:1});_.F=function Kmb(a){return Jmb(this,Wv(a,145))};_.t=function Lmb(a){var b;if(a===this){return true}if(!aw(a,145)){return false}b=Wv(a,145);return emb(this.a,b.a)};_.v=function Mmb(){return Pxb(this.a)};_.w=function Nmb(){return this.a};hI(358,29,cyb,Omb);hI(256,29,{3:1,54:1,29:1,46:1,256:1},Pmb);hI(185,145,gyb);var jxb,kxb,lxb;hI(289,185,gyb,oxb);_.Zc=function pxb(a,b,c){var d,e;d=xv(jw,hyb,26,c,12,1);for(e=0;ec){throw new okb(iyb)}}g=xv(jw,hyb,26,f,12,1);k=0;h=0;for(i=0;i0){d=a[b+i++];if((d&192)!=128){throw new slb('Invalid UTF8 sequence at '+(b+i-1)+', byte='+(d>>>0).toString(16))}e=e<<6|d&63}k+=Ekb(e,g,k)}return g};var UF=Nkb(kyb,'Object',1);var _F=Nkb(kyb,'Throwable',46);var KF=Nkb(kyb,'Exception',54);var VF=Nkb(kyb,'RuntimeException',72);var Zy=Nkb(lyb,'JavaScriptException',164);var ez=Nkb(myb,'StackTraceCreator/Collector',642);var bz=Nkb(myb,'StackTraceCreator/CollectorLegacy',356);var dz=Nkb(myb,'StackTraceCreator/CollectorModern',643);var cz=Nkb(myb,'StackTraceCreator/CollectorModernNoSourceMap',357);var wF=Nkb(nyb,'IOException',181);var zF=Nkb(nyb,'UnsupportedEncodingException',351);var GF=Nkb(kyb,'Class',288);var FF=Nkb(kyb,'ClassCastException',119);var MF=Nkb(kyb,'IllegalArgumentException',29);var OF=Nkb(kyb,'IndexOutOfBoundsException',95);var TF=Nkb(kyb,'Number',231);var PF=Nkb(kyb,'Integer',24);var $F=Nkb(kyb,'String',2);var XF=Nkb(kyb,'String/1',350);var ZF=Nkb(kyb,'StringIndexOutOfBoundsException',257);var bG=Nkb(oyb,'Charset',145);var cG=Nkb(oyb,'IllegalCharsetNameException',358);var dG=Nkb(oyb,'UnsupportedCharsetException',256);var JH=Nkb(pyb,'EmulatedCharset',185);var HH=Nkb(pyb,'EmulatedCharset/LatinCharset',289);var IH=Nkb(pyb,'EmulatedCharset/UtfCharset',355);hI(669,1,{3:1});var sw=Nkb(qyb,'Optional',669);hI(601,669,{3:1},Ab);_.t=function Bb(a){return a===this};_.v=function Cb(){return 2040732332};_.w=function Db(){return 'Optional.absent()'};_.A=function Eb(a){_b(a);return zb(),yb};var yb;var nw=Nkb(qyb,'Absent',601);var ow=Pkb(qyb,'Function');hI(208,1,{},Kb);_.C=function Lb(a){return Ib(a)};var rw=Nkb(qyb,'Joiner',208);hI(363,208,{},Nb);_.C=function Ob(a){return Mb(this,a)};var pw=Nkb(qyb,'Joiner/1',363);hI(362,1,{},Rb);var qw=Nkb(qyb,'Joiner/MapJoiner',362);var tw=Pkb(qyb,'Predicate');var gc;hI(244,1,{68:1,244:1,3:1},ic);_.D=function jc(a){var b;for(b=0;b0};_.H=function kd(){if(this.b>=this.c){throw new nvb}return Lk(this,this.b++)};_.L=function ld(){return this.b};_.M=function md(){if(this.b<=0){throw new nvb}return Lk(this,--this.b)};_.N=function nd(){return this.b-1};_.b=0;_.c=0;var Dw=Nkb(xyb,'AbstractIndexedListIterator',378);hI(428,108,wyb);_.G=function rd(){return od(this)};_.H=function sd(){return pd(this)};_.d=1;var Ew=Nkb(xyb,'AbstractIterator',428);hI(653,1,{144:1});_.P=function vd(){var a;return a=this.f,!a?(this.f=this.S()):a};_.T=function wd(){return new Bf(this.P())};_.t=function xd(a){return Mp(this,a)};_.v=function yd(){return this.P().v()};_.V=function zd(){return this.Y()==0};_.W=function Ad(){return ud(this)};_.w=function Bd(){return this.P().w()};var Xw=Nkb(xyb,'AbstractMultimap',653);hI(294,653,zyb);_.Q=function Nd(){Cd(this)};_.R=function Od(a){return Qmb(this.b,a)};_.S=function Pd(){return new Ie(this,this.b)};_.T=function Qd(){return new If(this,this.b)};_.$=function Rd(){return Id(this.Z())};_.U=function Sd(a){return Dd(this,a)};_.X=function Td(a){return Gd(this,a)};_.Y=function Ud(){return this.c};_.c=0;var Uw=Nkb(xyb,'AbstractMapBasedMultimap',294);hI(600,294,zyb);_.Z=function Xd(){return new HU(this.a)};_.$=function Yd(){return Gi(),Gi(),Fi};_.U=function $d(a){return Wv(Dd(this,a),20)};_.X=function _d(a){return Wv(Gd(this,a),20)};_.P=function Wd(){var a;return a=this.f,!a?(this.f=new Ie(this,this.b)):a};_.t=function Zd(a){return Mp(this,a)};var Fw=Nkb(xyb,'AbstractListMultimap',600);hI(388,1,Ayb);_.G=function ae(){return this.b.b||this.d.G()};_.H=function be(){var a;if(!this.d.G()){a=pnb(this.b);a.yb();this.a=Wv(a.zb(),19);this.d=this.a.mb()}return this.d.H()};_.I=function ce(){this.d.I();this.a.V()&&qnb(this.b);--this.c.c};var Kw=Nkb(xyb,'AbstractMapBasedMultimap/Itr',388);hI(389,388,Ayb,de);var Gw=Nkb(xyb,'AbstractMapBasedMultimap/1',389);hI(638,1,Byb);_.Q=function ke(){this.bb().Q()};_._=function le(a){return ee(this,a)};_.R=function me(a){return !!ge(this,a,false)};_.ab=function ne(a){var b,c,d;for(c=this.bb().mb();c.G();){b=Wv(c.H(),21);d=b.zb();if(gw(a)===gw(d)||a!=null&&rb(a,d)){return true}}return false};_.t=function oe(a){return fe(this,a)};_.cb=function pe(a){return re(ge(this,a,false))};_.v=function se(){return Apb(this.bb())};_.V=function te(){return this.Y()==0};_.W=function ue(){return new Snb(this)};_.db=function ve(a,b){throw new Imb('Put not supported on this map')};_.eb=function we(a){return re(ge(this,a,true))};_.Y=function xe(){return this.bb().Y()};_.w=function ye(){return ie(this)};_.fb=function ze(){return new aob(this)};var tG=Nkb(Cyb,'AbstractMap',638);hI(654,638,Byb);_.bb=function Ce(){return Ae(this)};_.W=function De(){var a;a=this.d;return !a?(this.d=new Bf(this)):a};_.fb=function Ee(){return Be(this)};var ny=Nkb(xyb,'Maps/ViewCachingAbstractMap',654);hI(262,654,Byb,Ie);_.cb=function Ne(a){return Fe(this,a)};_.eb=function Qe(a){return Ge(this,a)};_.Q=function Je(){this.a==this.b.b?Cd(this.b):Ml(new xf(this))};_.R=function Ke(a){return qp(this.a,a)};_.hb=function Le(){return new sf(this)};_.gb=function(){return this.hb()};_.t=function Me(a){return this===a||fe(this.a,a)};_.v=function Oe(){return Apb(new inb(this.a))};_.W=function Pe(){return ud(this.b)};_.Y=function Re(){return Zmb(this.a)};_.w=function Se(){return ie(this.a)};var Jw=Nkb(xyb,'AbstractMapBasedMultimap/AsMap',262);hI(640,1,Dyb);_.ib=function $e(a){return Te()};_.jb=function _e(a){return Ue(this,a)};_.Q=function af(){We(this)};_.kb=function bf(a){return Ve(this,a,false)};_.lb=function cf(a){return Xe(this,a)};_.V=function df(){return this.Y()==0};_.nb=function ef(a){return Ve(this,a,true)};_.ob=function ff(){return this.pb(xv(UF,syb,1,this.Y(),4,1))};_.pb=function gf(a){return Ye(this,a)};_.w=function hf(){return Ze(this)};var eG=Nkb(Cyb,'AbstractCollection',640);hI(641,640,Eyb);_.t=function kf(a){return jf(this,a)};_.v=function lf(){return Apb(this)};var zG=Nkb(Cyb,'AbstractSet',641);hI(649,641,Eyb);var Jy=Nkb(xyb,'Sets/ImprovedAbstractSet',649);hI(655,649,Eyb);_.Q=function nf(){this.qb().Q()};_.kb=function of(a){return mf(this,a)};_.V=function pf(){return this.qb().V()};_.nb=function qf(a){var b;if(this.kb(a)){b=Wv(a,21);return this.qb().W().nb(b.yb())}return false};_.Y=function rf(){return this.qb().Y()};var ky=Nkb(xyb,'Maps/EntrySet',655);hI(387,655,Eyb,sf);_.kb=function tf(a){return Qh(new inb(this.a.a),a)};_.mb=function uf(){return new xf(this.a)};_.qb=function vf(){return this.a};_.nb=function wf(a){var b;if(!Qh(new inb(this.a.a),a)){return false}b=Wv(a,21);Hd(this.a.b,b.yb());return true};var Hw=Nkb(xyb,'AbstractMapBasedMultimap/AsMap/AsMapEntries',387);hI(299,1,Ayb,xf);_.H=function zf(){var a;return a=pnb(this.b),this.a=Wv(a.zb(),19),He(this.c,a)};_.G=function yf(){return this.b.b};_.I=function Af(){qnb(this.b);this.c.b.c-=this.a.Y();this.a.Q()};var Iw=Nkb(xyb,'AbstractMapBasedMultimap/AsMap/AsMapIterator',299);hI(260,649,Eyb,Bf);_.Q=function Cf(){this.b.Q()};_.kb=function Df(a){return this.b.R(a)};_.V=function Ef(){return this.b.V()};_.mb=function Ff(){return mp(),Wl(this.b.bb().mb(),(xp(),vp))};_.nb=function Gf(a){if(this.b.R(a)){this.b.eb(a);return true}return false};_.Y=function Hf(){return this.b.Y()};var ly=Nkb(xyb,'Maps/KeySet',260);hI(386,260,Eyb,If);_.Q=function Jf(){var a;Ml((a=this.b.bb().mb(),new Pf(this,a)))};_.lb=function Kf(a){return this.b.W().lb(a)};_.t=function Lf(a){return this===a||this.b.W().t(a)};_.v=function Mf(){return this.b.W().v()};_.mb=function Nf(){var a;return a=this.b.bb().mb(),new Pf(this,a)};_.nb=function Of(a){var b,c;c=0;b=Wv(this.b.eb(a),19);if(b){c=b.Y();b.Q();this.a.c-=c}return c>0};var Mw=Nkb(xyb,'AbstractMapBasedMultimap/KeySet',386);hI(300,1,Ayb,Pf);_.G=function Qf(){return this.c.G()};_.H=function Rf(){this.a=Wv(this.c.H(),21);return this.a.yb()};_.I=function Sf(){var a;ec(!!this.a);a=Wv(this.a.zb(),19);this.c.I();this.b.a.c-=a.Y();a.Q()};var Lw=Nkb(xyb,'AbstractMapBasedMultimap/KeySet/1',300);hI(216,640,Dyb,_f);_.ib=function ag(a){return Tf(this,a)};_.jb=function bg(a){return Uf(this,a)};_.Q=function cg(){Wf(this)};_.kb=function dg(a){return Yf(this),this.d.kb(a)};_.lb=function eg(a){return Yf(this),this.d.lb(a)};_.t=function fg(a){return Xf(this,a)};_.v=function gg(){return Yf(this),this.d.v()};_.mb=function hg(){return Yf(this),new xg(this)};_.nb=function ig(a){return Zf(this,a)};_.Y=function jg(){return Yf(this),this.d.Y()};_.w=function kg(){Yf(this);return xb(this.d)};var Pw=Nkb(xyb,'AbstractMapBasedMultimap/WrappedCollection',216);var sH=Pkb(Cyb,'List');hI(297,216,Fyb,mg);_.rb=function ng(a,b){var c;Yf(this);c=this.d.V();Wv(this.d,20).rb(a,b);++this.a.c;c&&Vf(this)};_.sb=function og(a){Yf(this);return Wv(this.d,20).sb(a)};_.tb=function pg(){Yf(this);return new Cg(this)};_.ub=function qg(a){Yf(this);return new Dg(this,a)};_.vb=function rg(a){var b;Yf(this);b=Wv(this.d,20).vb(a);--this.a.c;$f(this);return b};_.wb=function sg(a,b){Yf(this);return Wv(this.d,20).wb(a,b)};_.xb=function tg(a,b){Yf(this);return Ld(this.a,this.e,Wv(this.d,20).xb(a,b),!this.b?this:this.b)};var Rw=Nkb(xyb,'AbstractMapBasedMultimap/WrappedList',297);hI(385,297,Gyb,ug);var Nw=Nkb(xyb,'AbstractMapBasedMultimap/RandomAccessWrappedList',385);hI(189,1,Ayb,xg);_.G=function zg(){return wg(this),this.b.G()};_.H=function Ag(){return wg(this),this.b.H()};_.I=function Bg(){this.b.I();--this.d.f.c;$f(this.d)};var Ow=Nkb(xyb,'AbstractMapBasedMultimap/WrappedCollection/WrappedIterator',189);hI(298,189,Hyb,Cg,Dg);_.J=function Eg(a){var b;b=lg(this.a)==0;(wg(this),Wv(this.b,96)).J(a);++this.a.a.c;b&&Vf(this.a)};_.K=function Fg(){return (wg(this),Wv(this.b,96)).K()};_.L=function Gg(){return (wg(this),Wv(this.b,96)).L()};_.M=function Hg(){return (wg(this),Wv(this.b,96)).M()};_.N=function Ig(){return (wg(this),Wv(this.b,96)).N()};_.O=function Jg(a){(wg(this),Wv(this.b,96)).O(a)};var Qw=Nkb(xyb,'AbstractMapBasedMultimap/WrappedList/WrappedListIterator',298);hI(295,216,Eyb,Kg);var Sw=Nkb(xyb,'AbstractMapBasedMultimap/WrappedSet',295);hI(296,216,Iyb,Lg);var Tw=Nkb(xyb,'AbstractMapBasedMultimap/WrappedSortedSet',296);hI(668,1,Jyb);_.t=function Mg(a){var b;if(aw(a,21)){b=Wv(a,21);return Tb(this.yb(),b.yb())&&Tb(this.zb(),b.zb())}return false};_.v=function Ng(){var a,b;a=this.yb();b=this.zb();return (a==null?0:vb(a))^(b==null?0:vb(b))};_.Ab=function Og(a){throw new Hmb};_.w=function Pg(){return this.yb()+'='+this.zb()};var Vw=Nkb(xyb,Kyb,668);hI(390,640,Dyb,Qg);_.Q=function Rg(){Cd(this.a)};_.kb=function Sg(a){return td(this.a,a)};_.mb=function Tg(){return new de(this.a)};_.Y=function Ug(){return this.a.c};var Ww=Nkb(xyb,'AbstractMultimap/Values',390);hI(656,640,Lyb);_.ib=function Wg(a){return this.Bb(a,1),true};_.Bb=function Xg(a,b){throw new Hmb};_.jb=function Yg(a){return Eq(this,a)};_.Q=function Zg(){Ml(this.Eb())};_.kb=function $g(a){return this.Cb(a)>0};_.Cb=function _g(a){var b,c;for(c=Vg(this).mb();c.G();){b=Wv(c.H(),83);if(Tb(b.Zb(),a)){return b.Yb()}}return 0};_.gb=function ah(){return new qh(this)};_.bb=function bh(){return Vg(this)};_.t=function dh(a){return Fq(this,a)};_.v=function eh(){return Vg(this).v()};_.V=function fh(){return Vg(this).V()};_.mb=function gh(){return Dq(),new Oq(this,Vg(this).mb())};_.nb=function hh(a){return this.Fb(a,1)>0};_.Fb=function ih(a,b){throw new Hmb};_.Gb=function jh(a,b){var c,d;return Dq(),Mh(b,'count'),c=this.Cb(a),d=b-c,d>0?this.Bb(a,d):d<0&&this.Fb(a,-d),c};_.Hb=function kh(a,b,c){return Gq(this,a,b,c)};_.Y=function lh(){return Hq(this)};_.w=function mh(){return xb(Vg(this))};var Zw=Nkb(xyb,'AbstractMultiset',656);hI(657,649,Eyb);_.Q=function nh(){this.Ib().Q()};_.kb=function oh(a){var b,c;if(aw(a,83)){c=Wv(a,83);if(c.Yb()<=0){return false}b=this.Ib().Cb(c.Zb());return b==c.Yb()}return false};_.nb=function ph(a){var b,c,d,e;if(aw(a,83)){c=Wv(a,83);b=c.Zb();d=c.Yb();if(d!=0){e=this.Ib();return e.Hb(b,d,0)}}return false};var xy=Nkb(xyb,'Multisets/EntrySet',657);hI(396,657,Eyb,qh);_.mb=function rh(){return this.a.Eb()};_.Ib=function sh(){return this.a};_.Y=function th(){return this.a.Db()};var Yw=Nkb(xyb,'AbstractMultiset/EntrySet',396);hI(384,294,zyb);_.Z=function wh(){return new wtb(op(this.a))};_.$=function xh(){return hi(),kr(),jr};_.U=function zh(a){return Wv(Dd(this,a),18)};_.X=function Ah(a){return Wv(Gd(this,a),18)};_.P=function vh(){var a;return a=this.f,!a?(this.f=new Ie(this,this.b)):a};_.t=function yh(a){return Mp(this,a)};var $w=Nkb(xyb,'AbstractSetMultimap',384);hI(342,656,Lyb);var _w=Nkb(xyb,'AbstractSortedMultiset',342);hI(280,600,zyb,Dh);_.a=0;var ax=Nkb(xyb,'ArrayListMultimap',280);hI(159,17,Myb);var Eh,Fh;var dx=Okb(xyb,'BoundType',159,IF,Ih);hI(623,159,Myb,Jh);var bx=Okb(xyb,'BoundType/1',623,dx,null);hI(624,159,Myb,Kh);var cx=Okb(xyb,'BoundType/2',624,dx,null);var Nh;hI(234,1,Oyb);_.w=function Th(){return Vl(this.c.mb())};var fx=Nkb(xyb,'FluentIterable',234);hI(170,234,Oyb,Vh);_.mb=function Wh(){return Uh(this)};var ex=Nkb(xyb,'FluentIterable/2',170);hI(664,1,{});_.w=function Xh(){return xb(irb(this.a.d).b)};var mx=Nkb(xyb,'ForwardingObject',664);hI(665,664,Dyb);_.ib=function Yh(a){return irb(this.a.d),vqb()};_.jb=function Zh(a){return irb(this.a.d),wqb()};_.Q=function $h(){irb(this.a.d);xqb()};_.kb=function _h(a){return Irb(irb(this.a.d),a)};_.lb=function ai(a){return Jrb(irb(this.a.d),a)};_.V=function bi(){return irb(this.a.d).b.V()};_.mb=function ci(){var a;return a=irb(this.a.d).b.mb(),new Trb(a)};_.nb=function di(a){return irb(this.a.d),yqb()};_.Y=function ei(){return irb(this.a.d).b.Y()};_.ob=function fi(){return Krb(irb(this.a.d))};_.pb=function gi(a){return Lrb(irb(this.a.d),a)};var gx=Nkb(xyb,'ForwardingCollection',665);hI(660,640,Pyb);_.mb=function ti(){return this.Kb()};_.ib=function oi(a){return ii()};_.jb=function pi(a){return ji()};_.Q=function qi(){li()};_.kb=function ri(a){return a!=null&&Ve(this,a,false)};_.Jb=function si(){switch(this.Y()){case 0:return Gi(),Gi(),Fi;case 1:return Gi(),new Er(this.Kb().H());default:return new Zq(this,this.ob());}};_.nb=function ui(a){return mi()};var sx=Nkb(xyb,'ImmutableCollection',660);hI(316,660,Pyb,vi);_.mb=function Ai(){return Xl(this.a.mb())};_.kb=function wi(a){return a!=null&&this.a.kb(a)};_.lb=function xi(a){return this.a.lb(a)};_.V=function yi(){return this.a.V()};_.Kb=function zi(){return Xl(this.a.mb())};_.Y=function Bi(){return this.a.Y()};_.ob=function Ci(){return this.a.ob()};_.pb=function Di(a){return this.a.pb(a)};_.w=function Ei(){return xb(this.a)};var hx=Nkb(xyb,'ForwardingImmutableCollection',316);hI(87,660,Qyb);_.mb=function Pi(){return this.Kb()};_.tb=function Qi(){return this.Lb(0)};_.ub=function Si(a){return this.Lb(a)};_.xb=function Xi(a,b){return this.Mb(a,b)};_.rb=function Ji(a,b){throw new Hmb};_.t=function Mi(a){return yo(this,a)};_.v=function Ni(){return zo(this)};_.Kb=function Oi(){return this.Lb(0)};_.Lb=function Ri(a){return Hi(this,a)};_.vb=function Ui(a){throw new Hmb};_.wb=function Vi(a,b){throw new Hmb};_.Mb=function Wi(a,b){var c;return Yi((c=new Mo(this),new Mnb(c,a,b)))};var Fi;var wx=Nkb(xyb,'ImmutableList',87);hI(667,87,Qyb);_.mb=function gj(){return Xl(this.Nb().mb())};_.xb=function jj(a,b){return Yi(this.Nb().xb(a,b))};_.kb=function _i(a){return Zi(this,a)};_.lb=function aj(a){return this.Nb().lb(a)};_.t=function bj(a){return this.Nb().t(a)};_.sb=function cj(a){return $i(this,a)};_.v=function dj(){return this.Nb().v()};_.V=function ej(){return this.Nb().V()};_.Kb=function fj(){return Xl(this.Nb().mb())};_.Y=function hj(){return this.Nb().Y()};_.Mb=function ij(a,b){return Yi(this.Nb().xb(a,b))};_.ob=function kj(){return this.Nb().pb(xv(UF,syb,1,this.Nb().Y(),4,1))};_.pb=function lj(a){return this.Nb().pb(a)};_.w=function mj(){return xb(this.Nb())};var ix=Nkb(xyb,'ForwardingImmutableList',667);hI(524,1,Ryb);_.bb=function wj(){return nj(this)};_.W=function Aj(){return oj(this)};_.fb=function Gj(){return this.Rb()};_.Q=function qj(){throw new Hmb};_.R=function rj(a){return this.cb(a)!=null};_.ab=function sj(a){return this.Rb().kb(a)};_.Pb=function uj(){return new Uk(this)};_.Qb=function vj(){return new Zk(this)};_.t=function xj(a){return pp(this,a)};_.v=function yj(){return nj(this).v()};_.V=function zj(){return this.Y()==0};_.db=function Cj(a,b){return pj()};_.eb=function Dj(a){throw new Hmb};_.w=function Ej(){var a;return mp(),a=umb(Ph(this.Y()),123),Qb(lp,a,nj(this).mb()),a.a+='}',a.a};_.Rb=function Fj(){if(this.g){return this.g}return this.g=this.Qb()};_.e=null;_.f=null;_.g=null;var Cx=Nkb(xyb,'ImmutableMap',524);hI(320,524,Ryb);_.R=function Ij(a){return qp(this.d,a)};_.ab=function Jj(a){return hrb(this.d,a)};_.Ob=function Kj(){return ck(new Vj(this))};_.Pb=function Lj(){return ck(krb(this.d))};_.Qb=function Mj(){return hi(),new vi(lrb(this.d))};_.t=function Nj(a){return jrb(this.d,a)};_.cb=function Oj(a){return a==null?null:rp(this.d,a)};_.v=function Pj(){return this.d.c.v()};_.V=function Qj(){return this.d.c.V()};_.Y=function Rj(){return this.d.c.Y()};_.w=function Sj(){return xb(this.d.c)};var kx=Nkb(xyb,'ForwardingImmutableMap',320);hI(666,665,Eyb);_.t=function Tj(a){return a===this||Drb(irb(this.a.d),a)};_.v=function Uj(){return irb(this.a.d).b.v()};var nx=Nkb(xyb,'ForwardingSet',666);hI(523,666,Eyb,Vj);_.kb=function Wj(b){if(aw(b,21)&&Wv(b,21).yb()==null){return false}try{return Irb(irb(this.a.d),b)}catch(a){a=OH(a);if(aw(a,119)){return false}else throw NH(a)}};_.pb=function Xj(a){var b;b=Lrb(irb(this.a.d),a);irb(this.a.d).b.Y()=e){f.Q()}else{d=f.mb();for(c=0;c0||this.c.G()};_.H=function Qq(){if(!(this.d>0||this.c.G())){throw new nvb}if(this.d==0){this.b=Wv(this.c.H(),83);this.f=this.d=this.b.Yb()}--this.d;this.a=true;return this.b.Zb()};_.I=function Rq(){ec(this.a);this.f==1?this.c.I():this.e.Fb(this.b.Zb(),1)>0;--this.f;this.a=false};_.a=false;_.d=0;_.f=0;var zy=Nkb(xyb,'Multisets/MultisetIteratorImpl',303);hI(622,659,{3:1,56:1},Vq);_.$b=function Wq(a,b){return Uq(Wv(a,23),Wv(b,23))};_.w=function Xq(){return 'Ordering.natural()'};var Sq;var By=Nkb(xyb,'NaturalOrdering',622);hI(343,661,Qyb,Zq);_.ub=function br(a){return Hi(this.b,a)};_.Sb=function $q(){return this.a};_.sb=function _q(a){return $i(this.b,a)};_.Lb=function ar(a){return Hi(this.b,a)};var Dy=Nkb(xyb,'RegularImmutableAsList',343);hI(559,275,Ryb,er);_.Tb=function fr(){return this.a};var cr;var Ey=Nkb(xyb,'RegularImmutableBiMap',559);hI(53,667,Qyb,gr);_.Nb=function hr(){return this.a};var Fy=Nkb(xyb,'RegularImmutableList',53);hI(321,320,Ryb,ir);var Gy=Nkb(xyb,'RegularImmutableMap',321);hI(265,315,Syb,lr);var jr;var Hy=Nkb(xyb,'RegularImmutableSet',265);hI(650,641,Eyb);var Ky=Nkb(xyb,'Sets/SetView',650);hI(377,650,Eyb,tr);_.kb=function ur(a){return ttb(this.b,a)&&ttb(this.c,a)};_.lb=function vr(a){return Xe(this.b,a)&&Xe(this.c,a)};_.V=function wr(){return sr(this)};_.mb=function xr(){var a;return Pl((a=(new Snb(this.b.a)).a.bb().mb(),new Ynb(a)),this.a)};_.Y=function yr(){var a;return Ul(Pl((a=(new Snb(this.b.a)).a.bb().mb(),new Ynb(a)),this.a))};var Iy=Nkb(xyb,'Sets/2',377);hI(328,275,Ryb,zr,Ar);_.fb=function Dr(){return hi(),new Gr(this.c)};_.Tb=function Br(){var a;a=this.a;return !a?(this.a=new Ar(this.c,this.b,this)):a};_.Ub=function Cr(){return hi(),new Gr(this.c)};var Ly=Nkb(xyb,'SingletonImmutableBiMap',328);hI(127,667,Qyb,Er);_.Nb=function Fr(){return this.a};var My=Nkb(xyb,'SingletonImmutableList',127);hI(135,663,Syb,Gr);_.mb=function Jr(){return Il(),new dm(this.a)};_.kb=function Hr(a){return rb(this.a,a)};_.Kb=function Ir(){return Il(),new dm(this.a)};_.Y=function Kr(){return 1};var Ny=Nkb(xyb,'SingletonImmutableSet',135);hI(285,342,{207:1,3:1,22:1,19:1},Ur,Vr);_.Bb=function Wr(a,b){return Lr(this,a,b)};_.Cb=function Xr(a){return Pr(this,a)};_.Db=function Yr(){return $s(Or(this,(qs(),os)))};_.Eb=function $r(){return new ks(this)};_.Fb=function _r(a,b){return Sr(this,a,b)};_.Gb=function as(a,b){return Tr(this,a,b)};_.Hb=function bs(a,b,c){var d,e,f;Mh(c,'newCount');Mh(b,'oldCount');Xb(ok(this.b,a));f=this.c.a;if(!f){if(b==0){c>0&&Lr(this,a,c);return true}else{return false}}e=xv(mw,Yyb,26,1,12,1);d=Ms(f,this.d,a,b,c,e);Us(this.c,f,d);return e[0]==b};_.Y=function cs(){return $s(Or(this,(qs(),ps)))};var Wy=Nkb(xyb,'TreeMultiset',285);hI(619,658,{83:1},fs);_.Yb=function gs(){var a;a=this.b.c;return a==0?Pr(this.a,this.b.b):a};_.Zb=function hs(){return this.b.b};var Py=Nkb(xyb,'TreeMultiset/1',619);hI(620,1,Ayb,ks);_.H=function ms(){return js(this)};_.G=function ls(){return is(this)};_.I=function ns(){ec(!!this.b);Tr(this.c,this.b.b.b,0);this.b=null};var Qy=Nkb(xyb,'TreeMultiset/2',620);hI(205,17,Zyb);var os,ps;var Ty=Okb(xyb,'TreeMultiset/Aggregate',205,IF,ss);hI(617,205,Zyb,ts);_._b=function us(a){return a.c};_.ac=function vs(a){return !a?0:a.j};var Ry=Okb(xyb,'TreeMultiset/Aggregate/1',617,Ty,null);hI(618,205,Zyb,ws);_._b=function xs(a){return 1};_.ac=function ys(a){return !a?0:a.a};var Sy=Okb(xyb,'TreeMultiset/Aggregate/2',618,Ty,null);hI(206,658,{83:1,206:1},Os);_.Yb=function Ps(){return this.c};_.Zb=function Qs(){return this.b};_.w=function Ss(){return Dq(),pq(new Lq(this.b,this.c))};_.a=0;_.c=0;_.d=0;_.j=0;var Uy=Nkb(xyb,'TreeMultiset/AvlNode',206);hI(616,1,{},Vs);var Vy=Nkb(xyb,'TreeMultiset/Reference',616);var $y=Nkb(lyb,'JavaScriptObject$',0);var qt;hI(628,1,{});var _y=Nkb(lyb,'Scheduler',628);var ut=0,vt=0,wt=-1;hI(360,628,{},Jt);var Ft;var az=Nkb(myb,'SchedulerImpl',360);hI(646,1,{});_.hc=function bu(){return null};_.ic=function cu(){return null};_.jc=function du(){return null};_.kc=function eu(){return null};_.lc=function fu(){return null};var nz=Nkb(_yb,'JSONValue',646);hI(214,646,{214:1},ju,ku);_.t=function lu(a){if(!aw(a,214)){return false}return this.a==Wv(a,214).a};_.gc=function mu(){return qu};_.v=function nu(){return txb(this.a)};_.hc=function ou(){return this};_.w=function pu(){var a,b,c;c=new Bmb('[');for(b=0,a=this.a.length;b0&&(c.a+=',',c);xmb(c,gu(this,b))}c.a+=']';return c.a};var fz=Nkb(_yb,'JSONArray',214);hI(292,646,{},uu);_.gc=function vu(){return yu};_.ic=function wu(){return this};_.w=function xu(){return Bkb(this.a)};_.a=false;var ru,su;var gz=Nkb(_yb,'JSONBoolean',292);hI(371,72,Vxb,zu);var hz=Nkb(_yb,'JSONException',371);hI(435,646,{},Cu);_.gc=function Du(){return Fu};_.w=function Eu(){return Wxb};var Au;var iz=Nkb(_yb,'JSONNull',435);hI(104,646,{104:1},Gu);_.t=function Hu(a){if(!aw(a,104)){return false}return this.a==Wv(a,104).a};_.gc=function Iu(){return Mu};_.v=function Ju(){return hw(Ixb(this.a))};_.jc=function Ku(){return this};_.w=function Lu(){return this.a+''};_.a=0;var jz=Nkb(_yb,'JSONNumber',104);hI(69,646,{69:1},Tu,Uu);_.t=function Vu(a){if(!aw(a,69)){return false}return this.a==Wv(a,69).a};_.gc=function Wu(){return $u};_.v=function Xu(){return txb(this.a)};_.kc=function Yu(){return this};_.w=function Zu(){var a,b,c,d,e,f;f=new Bmb('{');a=true;e=Nu(this,xv($F,Txb,2,0,5,1));for(c=0,d=e.length;c>16&byb|b^d<<16};_.mb=function UJ(){return new WJ(this)};_.w=function VJ(){return this.a==null&&this.b==null?'pair(null,null)':this.a==null?'pair(null,'+xb(this.b)+')':this.b==null?'pair('+xb(this.a)+',null)':'pair('+xb(this.a)+','+xb(this.b)+')'};var xz=Nkb(mzb,'Pair',27);hI(431,1,Ayb,WJ);_.G=function XJ(){return !this.c&&(!this.b&&this.a.a!=null||this.a.b!=null)};_.H=function YJ(){if(!this.c&&!this.b&&this.a.a!=null){this.b=true;return this.a.a}else if(!this.c&&this.a.b!=null){this.c=true;return this.a.b}throw new nvb};_.I=function ZJ(){this.c&&this.a.b!=null?(this.a.b=null):this.b&&this.a.a!=null&&(this.a.a=null);throw new tlb};_.b=false;_.c=false;var wz=Nkb(mzb,'Pair/1',431);hI(228,72,Vxb,$J);var yz=Nkb(nzb,'UnsupportedConfigurationException',228);hI(99,72,Vxb,_J);var zz=Nkb(nzb,'UnsupportedGraphException',99);var aK;hI(103,17,{103:1,3:1,23:1,17:1},jK);var cK,dK,eK,fK,gK,hK;var Az=Okb(rzb,'Alignment',103,IF,kK);var lK;hI(59,17,{59:1,3:1,23:1,17:1},wK);var nK,oK,pK,qK,rK;var Bz=Okb(rzb,'Direction',59,IF,xK);var yK;hI(107,17,{107:1,3:1,23:1,17:1},FK);var AK,BK,CK,DK;var Cz=Okb(rzb,'EdgeLabelPlacement',107,IF,GK);var HK;hI(122,17,{122:1,3:1,23:1,17:1},OK);var JK,KK,LK,MK;var Dz=Okb(rzb,'EdgeRouting',122,IF,PK);var QK;hI(133,17,{133:1,3:1,23:1,17:1},ZK);var SK,TK,UK,VK,WK,XK;var Ez=Okb(rzb,'EdgeType',133,IF,$K);var _K;hI(166,17,{166:1,3:1,23:1,17:1},fL);var bL,cL,dL;var Fz=Okb(rzb,'HierarchyHandling',166,IF,gL);var hL;var jL,kL,lL,mL,nL,oL,pL,qL,rL,sL,tL,uL,vL,wL,xL,yL,zL,AL,BL,CL,DL,EL,FL,GL,HL,IL,JL,KL,LL,ML,NL,OL,PL,QL,RL,SL,TL,UL,VL,WL,XL,YL,ZL,$L,_L,aM,bM,cM,dM;hI(41,17,{41:1,3:1,23:1,17:1},pM);var fM,gM,hM,iM,jM,kM,lM,mM,nM;var Gz=Okb(rzb,'NodeLabelPlacement',41,IF,qM);var rM;hI(100,17,{100:1,3:1,23:1,17:1},AM);var uM,vM,wM,xM,yM;var Hz=Okb(rzb,'PortAlignment',100,IF,BM);var CM;hI(28,17,{28:1,3:1,23:1,17:1},NM);var EM,FM,GM,HM,IM,JM;var Iz=Okb(rzb,'PortConstraints',28,IF,OM);var PM;hI(149,17,{149:1,3:1,23:1,17:1},VM);var RM,SM,TM;var Jz=Okb(rzb,'PortLabelPlacement',149,IF,WM);var XM;hI(32,17,{32:1,3:1,23:1,17:1},uN);var ZM,$M,_M,aN,bN,cN,dN,eN,fN,gN,hN,iN,jN,kN,lN,mN,nN,oN,pN,qN,rN;var Kz=Okb(rzb,'PortSide',32,IF,wN);var xN;hI(150,17,{150:1,3:1,23:1,17:1},EN);var zN,AN,BN,CN;var Lz=Okb(rzb,'SizeConstraint',150,IF,FN);var GN;hI(139,17,{139:1,3:1,23:1,17:1},NN);var IN,JN,KN,LN;var Mz=Okb(rzb,'SizeOptions',139,IF,ON);var PN;hI(62,1,{62:1},UN,VN);_.t=function WN(a){var b;if(a==null||!aw(a,62)){return false}b=Wv(a,62);return ovb(this.d,b.d)&&ovb(this.e,b.e)&&ovb(this.c,b.c)&&ovb(this.b,b.b)};_.v=function XN(){return fpb(Bv(tv(UF,1),syb,1,4,[this.d,this.e,this.c,this.b]))};_.w=function YN(){return 'Rect[x='+this.d+',y='+this.e+',w='+this.c+',h='+this.b+']'};_.b=0;_.c=0;_.d=0;_.e=0;var Tz=Nkb(wzb,'Rectangle',62);hI(283,62,{283:1,62:1},ZN);_.a=0;var Nz=Nkb(xzb,'LabelGroup',283);hI(67,17,{67:1,3:1,23:1,17:1},vO);var $N,_N,aO,bO,cO,dO,eO,fO,gO,hO,iO,jO,kO,lO,mO,nO,oO,pO,qO,rO,sO,tO;var Oz=Okb(xzb,'LabelLocation',67,IF,xO);hI(225,17,{225:1,3:1,23:1,17:1},EO);var AO,BO,CO;var Pz=Okb(xzb,'TextAlignment',225,IF,FO);var HO;hI(589,1,{},fP);_.a=0;_.b=false;_.d=0;_.f=0;_.k=0;_.r=0;_.s=0;var Qz=Nkb(wzb,'LabelAndNodeSizeProcessor/NodeData',589);hI(171,17,{171:1,3:1,23:1,17:1},lP);var gP,hP,iP,jP;var Rz=Okb(wzb,'LabelSide',171,IF,mP);hI(590,1,{},rP);_.b=true;_.c=true;_.d=true;_.e=true;var Sz=Nkb(wzb,zzb,590);hI(121,1,Bzb);_.t=function wP(a){var b;if(aw(a,121)){b=Wv(a,121);return this.d==b.d&&this.a==b.a&&this.b==b.b&&this.c==b.c}else{return false}};_.v=function xP(){var a,b;a=hw(Ixb(this.b))<<16;a|=hw(Ixb(this.a))&byb;b=hw(Ixb(this.c))<<16;b|=hw(Ixb(this.d))&byb;return a^b};_.w=function zP(){return '[top='+this.d+',left='+this.b+',bottom='+this.a+',right='+this.c+']'};_.a=0;_.b=0;_.c=0;_.d=0;var Wz=Nkb(wzb,'Spacing',121);hI(232,121,Bzb,AP,BP,CP);var Uz=Nkb(wzb,'Spacing/Insets',232);hI(65,121,{286:1,121:1,65:1,3:1,5:1},DP,EP,FP);var Vz=Nkb(wzb,'Spacing/Margins',65);hI(364,1,{},jQ);_.c=false;_.d=null;_.g=null;var OP,PP,QP;var Xz=Nkb(Ozb,'JsonGraphImporter',364);var kQ,lQ,mQ,nQ,oQ,pQ,qQ,rQ,sQ;hI(417,14,lzb,xQ);var Yz=Nkb(Ozb,'LayoutOptionResolver/DummyProperty',417);hI(348,1,{},CQ);var yQ;var Zz=Nkb(Ozb,'RecursiveLGraphLayout',348);hI(73,99,{73:1,3:1,54:1,46:1},EQ,FQ,GQ);var $z=Nkb(Ozb,'UnsupportedJsonGraphException',73);hI(380,1,{},OQ);var HQ,IQ;var _z=Nkb(Szb,'GraphConfigurator',380);hI(49,1,{},WQ);var aA=Nkb(Szb,'IntermediateProcessingConfiguration',49);hI(365,1,{},dR);var bA=Nkb(Szb,'KlayLayered',365);hI(577,1,{},kR);_.i=0;var eR;var eA=Nkb(Wzb,'ComponentsToCGraphTransformer',577);var UR;hI(578,1,{},lR);_.tc=function mR(a,b){return Qlb(a.wc(),b.wc())};_.uc=function nR(a,b){return Qlb(a.xc(),b.xc())};var cA=Nkb(Wzb,'ComponentsToCGraphTransformer/1',578);hI(25,1,{25:1});_.k=0;_.o=null;_.p=true;_.r=Vzb;var kA=Nkb(Xzb,'CNode',25);hI(198,25,{198:1,25:1},pR,qR);_.vc=function rR(){this.b.d=this.j.d;this.b.e=this.j.e};_.wc=function sR(){return this.a!=null?Ixb(this.a):this.c.i};_.xc=function tR(){return this.a!=null?Ixb(this.a):this.c.i};_.w=function uR(){return ''};var dA=Nkb(Wzb,'ComponentsToCGraphTransformer/CRectNode',198);hI(549,1,{},HR);var vR,wR;var hA=Nkb(Wzb,'OneDimensionalComponentsCompaction',549);hI(550,1,Tyb,IR);_.B=function JR(a){return xR(),xkb(),Wv(Wv(a,27).a,25).f.f!=0?wkb:vkb};var fA=Nkb(Wzb,'OneDimensionalComponentsCompaction/lambda$0$Type',550);hI(551,1,Tyb,KR);_.B=function LR(a){return xR(),xkb(),uS(Wv(Wv(a,27).a,25).n,Wv(Wv(a,27).b,59))||Wv(Wv(a,27).a,25).f.f!=0&&uS(Wv(Wv(a,27).a,25).n,Wv(Wv(a,27).b,59))?wkb:vkb};var gA=Nkb(Wzb,'OneDimensionalComponentsCompaction/lambda$1$Type',551);hI(324,1,{},NR);var iA=Nkb(Xzb,'CGraph',324);hI(78,1,{78:1},QR);_.b=0;_.c=0;_.d=0;_.f=0;_.i=true;_.j=Vzb;var jA=Nkb(Xzb,'CGroup',78);hI(470,1,{},WR);_.tc=function XR(a,b){return Nlb(a.wc(),b.wc())};_.uc=function YR(a,b){return Nlb(a.xc(),b.xc())};var lA=Nkb(Xzb,'ISpacingsHandler/1',470);hI(323,1,{},rS);_.e=false;var ZR,$R,_R;var nA=Nkb(Xzb,'OneDimensionalCompactor',323);hI(554,1,Tyb,sS);_.B=function tS(a){return aS(),xkb(),Wv(Wv(a,27).a,25).f.f!=0?wkb:vkb};var mA=Nkb(Xzb,'OneDimensionalCompactor/lambda$0$Type',554);hI(335,1,{},xS);_.a=false;_.b=false;_.c=false;_.d=false;var oA=Nkb(Xzb,'Quadruplet',335);hI(587,1,{},yS);_.Cc=function zS(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s;k=Uzb;for(d=new Tob(a.a.b);d.ad.j.d||d.j.d==f.j.d&&d.j.cm){w=0;A+=l+u;l=0}p=f.d;UT(f,w+p.a,A+p.b);p.a=0;p.b=0;c=Nlb(c,w+s.a);l=Nlb(l,s.b);w+=s.a+u}b.e.a=c;b.e.b=A+l;r=Wv(rJ(b,Jib),15).a;if(Ckb(Ixb(Xv(rJ(e,(Mjb(),ijb)))))){d=new sU;iU(d,a,r);for(k=a.mb();k.G();){j=Wv(k.H(),55);vI(BI(j.d),d.e)}vI(BI(b.e),d.a)}TT(b,a)};var YA=Nkb(aAb,'SimpleRowGraphPlacer',432);hI(433,1,fyb,xV);_.$b=function yV(a,b){return wV(Wv(a,55),Wv(b,55))};var XA=Nkb(aAb,'SimpleRowGraphPlacer/1',433);hI(369,1,eAb,CV);_.sc=function DV(a,b){BV(a,b)};var zV;var $A=Nkb(fAb,'CompoundGraphPostprocessor',369);hI(370,1,_zb,EV);_.D=function FV(a){var b;return b=Wv(rJ(Wv(a,114).b,(eM(),CL)),44),!!b&&b.b!=0};var ZA=Nkb(fAb,'CompoundGraphPostprocessor/1',370);hI(368,1,eAb,SV);_.sc=function TV(a,b){NV(this,a,b)};var aB=Nkb(fAb,'CompoundGraphPreprocessor',368);hI(187,1,{187:1},UV);_.c=false;var _A=Nkb(fAb,'CompoundGraphPreprocessor/ExternalPort',187);hI(114,1,{114:1},XV);_.w=function YV(){return zc(this.c)+':'+gW(this.b)};var cB=Nkb(fAb,'CrossHierarchyEdge',114);hI(310,1,fyb,$V);_.$b=function _V(a,b){return ZV(this,Wv(a,114),Wv(b,114))};var bB=Nkb(fAb,'CrossHierarchyEdgeComparator',310);hI(147,131,{179:1,131:1,147:1,3:1});_.k=0;var lB=Nkb(hAb,'LGraphElement',147);hI(12,147,{179:1,131:1,12:1,147:1,3:1},hW);_.w=function iW(){return gW(this)};var dB=Nkb(hAb,'LEdge',12);hI(55,147,{179:1,131:1,55:1,147:1,3:1,22:1},kW);_.mb=function lW(){return new Tob(this.c)};_.w=function mW(){if(this.c.c.length==0){return 'G-unlayered'+Ze(this.b)}else if(this.b.c.length==0){return 'G-layered'+Ze(this.c)}return 'G[layerless'+Ze(this.b)+', layers'+Ze(this.c)+']'};var mB=Nkb(hAb,'LGraph',55);hI(273,1,{});_.pc=function rW(){return this.e.j};var eB=Nkb(hAb,'LGraphAdapters/AbstractLShapeAdapter',273);hI(240,1,{627:1},tW);_.b=null;var fB=Nkb(hAb,'LGraphAdapters/LEdgeAdapter',240);hI(325,1,{},wW);_.pc=function xW(){return this.a.e};_.b=null;_.c=false;var gB=Nkb(hAb,'LGraphAdapters/LGraphAdapter',325);hI(224,273,{129:1,224:1},yW);var hB=Nkb(hAb,'LGraphAdapters/LLabelAdapter',224);hI(555,273,{626:1},BW);_.a=null;_.b=null;_.c=false;var iB=Nkb(hAb,'LGraphAdapters/LNodeAdapter',555);hI(556,273,{161:1},FW);_.a=null;_.b=null;_.c=null;_.d=false;var jB=Nkb(hAb,'LGraphAdapters/LPortAdapter',556);hI(557,1,fyb,HW);_.$b=function IW(a,b){return GW(Wv(a,7),Wv(b,7))};var kB=Nkb(hAb,'LGraphAdapters/PortComparator',557);hI(168,1,{168:1},ZW,$W);_.t=function _W(a){var b;if(aw(a,168)){b=Wv(a,168);return this.d==b.d&&this.a==b.a&&this.b==b.b&&this.c==b.c}else{return false}};_.v=function aX(){var a,b;a=hw(Ixb(this.b))<<16;a|=hw(Ixb(this.a))&byb;b=hw(Ixb(this.c))<<16;b|=hw(Ixb(this.d))&byb;return a^b};_.w=function bX(){return 'Insets[top='+this.d+',left='+this.b+',bottom='+this.a+',right='+this.c+']'};_.a=0;_.b=0;_.c=0;_.d=0;var nB=Nkb(hAb,'LInsets',168);hI(165,147,{179:1,131:1,147:1,165:1,3:1});var CB=Nkb(hAb,'LShape',165);hI(33,165,{179:1,131:1,147:1,33:1,165:1,3:1},dX);_.w=function eX(){return this.a==null?'l_'+this.k:'l_'+this.a};var oB=Nkb(hAb,'LLabel',33);hI(9,165,{179:1,131:1,147:1,9:1,165:1,3:1},uX);_.w=function vX(){return tX(this)};var qB=Nkb(hAb,'LNode',9);hI(132,17,{132:1,3:1,23:1,17:1},DX);var wX,xX,yX,zX,AX,BX;var pB=Okb(hAb,'LNode/NodeType',132,IF,EX);hI(7,165,{179:1,131:1,147:1,7:1,165:1,3:1},RX);_.w=function SX(){var a;return a=OX(this),a==null?'p_'+this.k:'p_'+a};var FX,GX,HX,IX,JX,KX;var BB=Nkb(hAb,'LPort',7);hI(399,1,_zb,UX);_.D=function VX(a){return TX(a)};var rB=Nkb(hAb,'LPort/1',399);hI(400,1,_zb,XX);_.D=function YX(a){return WX(a)};var sB=Nkb(hAb,'LPort/2',400);hI(401,1,_zb,ZX);_.D=function $X(a){return Wv(a,7).g==(sN(),$M)};var tB=Nkb(hAb,'LPort/3',401);hI(402,1,_zb,_X);_.D=function aY(a){return Wv(a,7).g==(sN(),ZM)};var uB=Nkb(hAb,'LPort/4',402);hI(403,1,_zb,bY);_.D=function cY(a){return Wv(a,7).g==(sN(),pN)};var vB=Nkb(hAb,'LPort/5',403);hI(404,1,_zb,dY);_.D=function eY(a){return Wv(a,7).g==(sN(),rN)};var wB=Nkb(hAb,'LPort/6',404);hI(190,1,Oyb,fY);_.mb=function gY(){var a;a=new Tob(this.a.b);return new hY(a)};var yB=Nkb(hAb,'LPort/7',190);hI(405,1,Ayb,hY);_.H=function jY(){return Wv(Rob(this.a),12).c};_.G=function iY(){return Qob(this.a)};_.I=function kY(){Sob(this.a)};var xB=Nkb(hAb,'LPort/7/1',405);hI(169,1,Oyb,lY);_.mb=function mY(){var a;return a=new Tob(this.a.e),new nY(a)};var AB=Nkb(hAb,'LPort/8',169);hI(304,1,Ayb,nY);_.H=function pY(){return Wv(Rob(this.a),12).d};_.G=function oY(){return Qob(this.a)};_.I=function qY(){Sob(this.a)};var zB=Nkb(hAb,'LPort/8/1',304);hI(16,147,{179:1,131:1,147:1,16:1,3:1,22:1},sY);_.mb=function tY(){return new Tob(this.a)};_.w=function uY(){return 'L_'+zU(this.b.c,this,0)+Ze(this.a)};var DB=Nkb(hAb,'Layer',16);hI(437,1,eAb,wY);_.sc=function xY(a,b){var c,d,e,f,g,h,i;nI(b,'Big nodes intermediate-processing',1);this.a=a;for(f=new Tob(this.a.c);f.af?50:f;c=new GU;n=f+this.d;for(k=new Tob(l);k.an){m=1;d=g.j.a;while(d>f){++m;d=(g.j.a-(m-1)*this.d)/m}vU(c,new _Y(this,g,m,d))}}for(h=new Tob(c);h.ah?50:h;c=new GU;p=h+this.d;for(m=new Tob(n);m.ap){o=1;d=i.j.a;while(d>h){++o;d=(i.j.a-(o-1)*this.d)/o}vU(c,new nZ(this,i,o))}}for(j=new Tob(c);j.a0||k.g==rN&&k.b.c.length-k.e.c.length<0)){c=false;break}if(k.g==rN){for(e=new Tob(k.e);e.a0&&E$((Cxb(0,c.c.length),Wv(c.c[0],16)),a);c.c.length>1&&E$(Wv(yU(c,c.c.length-1),16),a);pI(b)};var bC=Nkb(jAb,'HierarchicalPortPositionProcessor',454);hI(471,1,eAb,I$);_.sc=function J$(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p;nI(b,'Hyperedge merging',1);n=new Fnb(a.c,0);while(n.bo+1){m=(i+o)/2|0;vU(l,new RJ(j,(Cxb(m,h.c.length),Wv(h.c[m],9))))}else if(o>i+1){m=((o-i)/2|0)-1;vU(l,new RJ(j,(Cxb(m,n.c.length),Wv(n.c[m],9))))}}}}for(r=new Tob(l);r.a=2){k=true;q=(Cxb(1,j.c.length),Wv(j.c[1],16));for(n=new Tob(f.a);n.a=2){k=true;r=Wv(yU(j,j.c.length-2),16);for(n=new Tob(g.a);n.ac?i:c}a.e.b=i-j;a.d.b-=j;pI(b)};var zC=Nkb(jAb,'LayerSizeAndGraphHeightCalculator',496);hI(497,1,eAb,b1);_.sc=function d1(a,b){var c,d,e,f,g;nI(b,'Edge joining',1);c=Ckb(Ixb(Xv(rJ(a,(Mjb(),gjb)))));for(e=new Tob(a.c);e.athis.j){this.q=B1;o1(this,e)}break;case 4:this.q=(I1(),H1);o1(this,e);i=0;for(d=new Tob(this.b);d.athis.k){this.q=E1;o1(this,e)}break;case 6:l=hw(Llb(this.f.length*j/100));o1(this,new w1(l));break;case 5:k=hw(Llb(this.d*j/100));o1(this,new y1(k));break;default:o1(this,e);}p1(this,a);pI(b)};_.d=0;_.e=0;_.i=0;_.j=0;_.k=0;_.n=0;var HC=Nkb(jAb,'NodePromotion',491);hI(492,1,Tyb,u1);_.B=function v1(a){return xkb(),xkb(),wkb};var DC=Nkb(jAb,'NodePromotion/lambda$0$Type',492);hI(493,1,Tyb,w1);_.B=function x1(a){return r1(this.a,a)};_.a=0;var EC=Nkb(jAb,'NodePromotion/lambda$1$Type',493);hI(494,1,Tyb,y1);_.B=function z1(a){return s1(this.a,a)};_.a=0;var FC=Nkb(jAb,'NodePromotion/lambda$2$Type',494);hI(109,17,{109:1,3:1,23:1,17:1},J1);var A1,B1,C1,D1,E1,F1,G1,H1;var GC=Okb(jAb,'NodePromotionStrategy',109,IF,K1);var L1;hI(500,1,eAb,R1);_.sc=function S1(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u;nI(b,sAb,1);n=Wv(rJ(a,(eM(),uL)),122);for(e=new Tob(a.c);e.a=2){o=true;l=new Tob(f.f);c=Wv(Rob(l),7);while(l.ac){pI(b);return}D=0;f=rAb;do{++D;c=G/D/(o*D);m=f;f=c-d<=0?0-(c-d):c-d}while(c>d);mD?1:D)|0;j=B;u=B;J=true;while(j=B&&(J=true);++u;++j}k=new Fnb(a.c,0);while(k.b '+this.a+' '+zc(this.c)};_.a=0;_.b=0;_.d=0;var cD=Nkb(jAb,'SplineSelfLoopRouter/LoopPadding',91);hI(521,1,_zb,z3);_.D=function A3(a){return y3(this,Wv(a,91))};_.a=0;_.c=0;var _C=Nkb(jAb,'SplineSelfLoopRouter/LoopPadding/EnclosingPredicate',521);hI(520,1,fyb,C3);_.$b=function D3(a,b){return B3(Wv(a,91),Wv(b,91))};var aD=Nkb(jAb,'SplineSelfLoopRouter/LoopPadding/MarginComparator',520);hI(196,1,_zb,E3);_.D=function F3(a){return Wv(a,91).c==this.a};var bD=Nkb(jAb,'SplineSelfLoopRouter/LoopPadding/PortSidePredicate',196);hI(195,1,{195:1},G3);_.c=0;_.d=0;_.e=0;var eD=Nkb(jAb,'SplineSelfLoopRouter/SelfLoopEdge',195);hI(519,1,fyb,I3);_.$b=function J3(a,b){return H3(Wv(a,195),Wv(b,195))};var dD=Nkb(jAb,'SplineSelfLoopRouter/SelfLoopEdge/StepSizeComparator',519);hI(82,25,{25:1,82:1},L3);_.vc=function M3(){var a,b,c,d;for(b=WI(this.a,0);b.b!=b.d.c;){a=Wv(_ub(b),10);a.a=this.j.d}for(d=WI(this.c,0);d.b!=d.d.c;){c=Wv(_ub(d),10);c.a=this.j.d}};_.wc=function N3(){return this.b};_.xc=function O3(){return this.e};_.w=function P3(){return Ze(new Snb(this.d.a))};_.b=0;_.e=0;var gD=Nkb(vAb,'CLEdge',82);hI(93,25,{25:1,93:1},Q3);_.vc=function R3(){this.b.i.a=this.j.d+this.b.e.b};_.wc=function S3(){if(this.b.g==(CX(),xX)){return 0}return this.a};_.xc=function T3(){if(this.b.g==(CX(),xX)){return 0}return this.c};_.w=function U3(){return xb(rJ(this.b,(Rib(),uib)))};_.a=0;_.c=0;var hD=Nkb(vAb,'CLNode',93);hI(175,17,{175:1,3:1,23:1,17:1},Y3);var V3,W3;var iD=Okb(vAb,'ConstraintCalculationStrategy',175,IF,Z3);var $3;hI(125,17,{125:1,3:1,23:1,17:1},h4);var a4,b4,c4,d4,e4,f4;var jD=Okb(vAb,'GraphCompactionStrategy',125,IF,i4);var j4;hI(455,1,eAb,o4);_.sc=function p4(a,b){var c,d,e;d=Wv(rJ(a,(Mjb(),Fjb)),125);if(d==(g4(),e4)){return}nI(b,'Horizontal Compaction',1);this.a=a;e=new Q4;c=new rS(P4(e,a));pS(c,this.b);switch(Wv(rJ(a,Gjb),175).e){case 1:nS(c,l4);break;default:nS(c,(aS(),$R));}switch(d.e){case 1:hS(c);break;case 2:hS(gS(c,(sK(),pK)));break;case 3:hS(bS(gS(hS(c),(sK(),pK))));break;case 4:hS(bS(oS(gS(hS(c),(sK(),pK)),new H4)));break;case 5:hS(mS(c,m4));}gS(c,(sK(),oK));c.e=true;L4(e);pI(b)};var l4,m4;var sD=Nkb(vAb,'HorizontalGraphCompactor',455);hI(462,1,{},q4);_.tc=function r4(a,b){var c,d,e;if(aw(a,82)&&aw(b,82)&&!sr(or(Wv(a,82).d,Wv(b,82).d))){return 0}c=null;aw(a,93)&&(c=Wv(a,93).b);d=null;aw(b,93)&&(d=Wv(b,93).b);if(!!c&&c.g==(CX(),xX)||!!d&&d.g==(CX(),xX)){return 0}e=Wv(rJ(this.a.a,(Rib(),Kib)),134);return Vjb(e,c?c.g:(CX(),zX),d?d.g:(CX(),zX))};_.uc=function s4(a,b){if(aw(a,82)&&aw(b,82)&&!sr(or(Wv(a,82).d,Wv(b,82).d))){return 1}return Qlb(a.xc(),b.xc())};var kD=Nkb(vAb,'HorizontalGraphCompactor/1',462);hI(456,317,{},u4);_.Dc=function v4(a){var b,c,d;this.b=a;ES(this,new z4,this.a);ES(this,new B4,this.a);b=Uzb;for(d=new Tob(this.b.a.b);d.a0&&(this.a[T.k]=eb++)}}else{N=0;for(U=new Tob(G.f);U.a0&&++eb}}jb=0;for(J=0,M=b.length;J0){T=(Bxb(X.b>0),Wv(X.a.sb(X.c=--X.b),7));W=0;for(g=new Tob(T.b);g.a0){if(T.g==(sN(),$M)){this.a[T.k]=jb;++jb}else{this.a[T.k]=jb+O+Q;++Q}}}jb+=Q}else{N=0;for(U=new Tob(G.f);U.a0&&++jb}}V=new ntb;p=new vtb;for(H=0,K=a.length;Hl.c&&(l.c=Y)}else if(T.f.d==db){Yl.d&&(l.d=Y)}}}ipb(q,0,q.length,(hsb(),hsb(),gsb));ib=xv(mw,Yyb,26,q.length,12,1);c=xv(mw,Yyb,26,jb+1,12,1);for(s=0;s0){w%2>0&&(d+=mb[w+1]);w=(w-1)/2|0;++mb[w]}}D=xv(BD,syb,158,q.length*2,0,1);for(v=0;v0){q=(Bxb(t.b>0),Wv(t.a.sb(t.c=--t.b),7));s=0;for(e=new Tob(q.b);e.a0){if(q.g==(sN(),$M)){this.a[q.k]=B;++B}else{this.a[q.k]=B+o+p;++p}f+=s}}B+=p}else{n=0;for(r=new Tob(i.f);r.a0){++B;f+=n}}}v=xv(mw,Yyb,26,f,12,1);g=0;for(j=0,l=a.length;j0};_.I=function Z6(){throw new Hmb};var MD=Nkb(wAb,'PortIterable/1',344);hI(336,1,{},b7);var OD=Nkb(wAb,'SwitchDecider',336);hI(89,1,{89:1},d7);_.w=function e7(){return 'NEdge[id='+this.b+' w='+this.f+' d='+this.a+']'};_.a=1;_.b=0;_.e=false;_.f=0;var QD=Nkb(yAb,'NEdge',89);hI(157,1,{},k7);var PD=Nkb(yAb,'NEdge/NEdgeBuilder',157);hI(278,1,{},l7);var RD=Nkb(yAb,'NGraph',278);hI(61,1,{61:1},n7);_.b=0;_.d=-1;_.e=0;_.i=-1;_.j=false;var UD=Nkb(yAb,'NNode',61);hI(333,13,bAb,q7);_.rb=function r7(a,b){++this.d;Fxb(a,this.c.length);fxb(this.c,a,b)};_.ib=function s7(a){return o7(this,a)};_.jb=function t7(a){++this.d;return xU(this,a)};_.Q=function u7(){++this.d;this.c=xv(UF,syb,1,0,4,1)};_.vb=function v7(a){++this.d;return AU(this,a)};_.nb=function w7(a){return p7(this,a)};var SD=Nkb(yAb,'NNode/ChangeAwareArrayList',333);hI(199,1,{},A7);var TD=Nkb(yAb,'NNode/NNodeBuilder',199);hI(595,1,{},V7);_.a=false;_.f=$xb;_.j=0;var VD=Nkb(yAb,'NetworkSimplex',595);hI(193,17,{180:1,193:1,3:1,23:1,17:1},$7);_.rc=function _7(){switch(this.e){case 0:return new g8;case 1:return new m8;default:throw new slb('No implementation is available for the cycle breaker '+(this.d!=null?this.d:''+this.e));}};var X7,Y7;var WD=Okb(AAb,'CycleBreakingStrategy',193,IF,a8);var b8;hI(539,1,BAb,g8);_.qc=function h8(a){return d8};_.sc=function i8(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,A,B,C,D,F,G,H,I,J;nI(b,'Greedy cycle removal',1);r=a.b;J=r.c.length;this.a=xv(mw,Yyb,26,J,12,1);this.c=xv(mw,Yyb,26,J,12,1);this.b=xv(mw,Yyb,26,J,12,1);h=0;for(p=new Tob(r);p.a0?C+1:1}for(e=new Tob(u.e);e.a0?C+1:1}}this.c[h]==0?QI(this.d,n):this.a[h]==0&&QI(this.e,n);++h}m=-1;l=1;j=new GU;D=Wv(rJ(a,(Rib(),Gib)),154);while(J>0){while(this.d.b!=0){G=Wv(YI(this.d),9);this.b[G.k]=m--;f8(this,G);--J}while(this.e.b!=0){H=Wv(YI(this.e),9);this.b[H.k]=l++;f8(this,H);--J}if(J>0){k=eyb;for(q=new Tob(r);q.a=k){if(s>k){j.c=xv(UF,syb,1,0,4,1);k=s}j.c[j.c.length]=n}}}i=Wv(yU(j,vvb(D,j.c.length)),9);this.b[i.k]=l++;f8(this,i);--J}}F=r.c.length+1;for(h=0;hthis.b[I]){cW(c,true);sJ(a,cib,(xkb(),xkb(),wkb))}}}}this.a=null;this.c=null;this.b=null;_I(this.e);_I(this.d);pI(b)};var d8;var XD=Nkb(AAb,'GreedyCycleBreaker',539);hI(540,1,BAb,m8);_.qc=function n8(a){return j8};_.sc=function o8(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p;nI(b,'Interactive cycle breaking',1);k=new GU;for(m=new Tob(a.b);m.a0&&l8(this,g,k)}for(d=new Tob(k);d.ag?h+1:g;p=new Fnb(c,0);d=null;while(p.b=g){Bxb(p.b>0);p.a.sb(p.c=--p.b);break}else if(n.a>h){if(!d){vU(n.b,j);n.c=Qlb(n.c,h);n.a=Nlb(n.a,g);d=n}else{xU(d.b,n.b);d.a=Nlb(d.a,n.a);vnb(p)}}}if(!d){d=new t8;d.c=h;d.a=g;Anb(p,d);vU(d.b,j)}}f=a.c;i=0;for(o=new Tob(c);o.a0){c+=g.i.a+g.j.a/2;++j}for(l=new Tob(g.f);l.a0;G++){k=wvb(F,1)!=0;j=k?0:q-1;i=this.b[j];C=wvb(F,1)!=0?A:t;H9(i,f,k,false,true);g=$xb;h=true;do{J9(this.b,this.k);D=g;g=0;g+=bab(this.f,i,j);if(k){for(r=1;r=0;r--){l=this.b[r];X8(C,i,(djb(),ajb));H9(l,f,false,!h,false);g+=bab(this.f,l,r);this.c[r]||this.d[r+1]?(g+=lab(this.e,l,i)):(g+=hab(this.i,l,i));i=l}j=0}h=false;k=!k}while(g0);if(gd?f:d}if(f>g){for(k=oX(a,c).mb();k.G();){j=Wv(k.H(),7);m[j.k]=b+O9(c,j.g)-g}return f-g}return 0}};var lE=Nkb(EAb,'LayerTotalPortDistributor',327);hI(274,326,{},P9);_.Hc=function Q9(a,b,c){var d,e,f,g,h,i,j,k,l,m,n;l=this.a;if(LM(Wv(rJ(a,(eM(),TL)),28))){switch(c.e){case 1:{e=0;f=0;for(k=new Tob(a.f);k.a');a0?B:0;o.c=d;o.d=Wv(Smb(u,k.c.f),61);o7(o.c.g,o);o7(o.d.c,o);F=new d7;F.f=bbb(k);F.a=B<0?-B:0;F.c=d;F.d=Wv(Smb(u,k.d.f),61);o7(F.c.g,F);o7(F.d.c,F)}}}f=Wv(rJ(a,(Mjb(),Kjb)),24).a*hw(Math.sqrt(t));F7(S7(T7(W7(e),f),false),rI(b,1));for(q=new Tob(e.a);q.aAbb(d))&&(j=d)}}!j&&(j=(Cxb(0,n.c.length),Wv(n.c[0],81)));for(m=new Tob(a.c);m.a0){c=m.b+(l-1)*m.a;!!i&&(c+=m.b);c'+this.b};_.c=0;var SE=Nkb(PAb,'OrthogonalRoutingGenerator/Dependency',118);hI(80,1,{80:1,23:1},odb);_.F=function pdb(a){return ndb(this,Wv(a,80))};_.t=function qdb(a){var b;if(aw(a,80)){b=Wv(a,80);return this.d==b.d}return false};_.v=function rdb(){return this.d};_.w=function sdb(){var a,b,c,d;a=new Bmb('{');d=new Tob(this.g);while(d.adAb){e=new HI(i,l);QI(c.a,e);_cb(this.a,c,a,e,false);f=new HI(k,l);QI(c.a,f);_cb(this.a,c,a,f,false)}}}};_.Lc=function vdb(a){return a.f.i.a+a.i.a+a.a.a};_.Mc=function wdb(){return sN(),pN};_.Nc=function xdb(){return sN(),$M};var UE=Nkb(PAb,'OrthogonalRoutingGenerator/NorthToSouthRoutingStrategy',580);hI(581,1,{},ydb);_.Kc=function zdb(a,b){var c,d,e,f,g,h,i,j,k,l;l=b-a.i*this.a.c;for(h=new Tob(a.g);h.adAb){e=new HI(i,l);QI(c.a,e);_cb(this.a,c,a,e,false);f=new HI(k,l);QI(c.a,f);_cb(this.a,c,a,f,false)}}}};_.Lc=function Adb(a){return a.f.i.a+a.i.a+a.a.a};_.Mc=function Bdb(){return sN(),$M};_.Nc=function Cdb(){return sN(),pN};var VE=Nkb(PAb,'OrthogonalRoutingGenerator/SouthToNorthRoutingStrategy',581);hI(579,1,{},Ddb);_.Kc=function Edb(a,b){var c,d,e,f,g,h,i,j,k,l;l=b+a.i*this.a.c;for(h=new Tob(a.g);h.adAb){e=new HI(l,i);QI(c.a,e);_cb(this.a,c,a,e,true);f=new HI(l,k);QI(c.a,f);_cb(this.a,c,a,f,true)}}}};_.Lc=function Fdb(a){return a.f.i.b+a.i.b+a.a.b};_.Mc=function Gdb(){return sN(),ZM};_.Nc=function Hdb(){return sN(),rN};var WE=Nkb(PAb,'OrthogonalRoutingGenerator/WestToEastRoutingStrategy',579);hI(535,1,BAb,Rdb);_.qc=function Sdb(a){var b,c;c=Wv(rJ(a,(Rib(),jib)),18);b=new WQ;if(c.kb((ohb(),khb))||Ckb(Ixb(Xv(rJ(a,(Mjb(),rjb)))))){QQ(b,Kdb);c.kb(lhb)&&QQ(b,Ldb)}c.kb(ehb)&&QQ(b,Idb);c.kb(ghb)&&QQ(b,Jdb);return b};_.sc=function Tdb(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v;nI(b,'Polyline edge routing',1);l=Wv(rJ(a,(Rib(),Jib)),15).a;c=Wv(rJ(a,(Mjb(),qjb)),15).a;q=0;if(a.c.c.length!=0){r=Pdb(Wv(yU(a.c,0),16));q=0.4*c*r}f=new Fnb(a.c,0);while(f.b0&&(q-=l);UW(e,q);i=0;for(k=new Tob(e.a);k.a(p-o<=0?0-(p-o):p-o)?h:p-o<=0?0-(p-o):p-o}switch(j.g.e){case 0:case 4:case 1:case 3:Qdb(this,j,q);}i=i>h?i:h}if(f.br?i:r;Bxb(f.b>0);f.a.sb(f.c=--f.b)}g=0.4*c*i;!d&&f.b0){n=(t+1)*this.a;n=0&&(L+=(t+2)*this.a)}r=A;i=j}while(A);for(d=new Tob(I);d.a('+this.c+') '+this.b};_.c=0;var eF=Nkb(QAb,'SplineEdgeRouter/Dependency',117);hI(223,17,{223:1,3:1,23:1,17:1},ggb);var dgb,egb;var fF=Okb(QAb,'SplineEdgeRouter/SideToProcess',223,IF,hgb);hI(77,1,{77:1,23:1},lgb,mgb);_.F=function ngb(a){return jgb(this,Wv(a,77))};_.a=0;_.b=0;_.e=0;_.f=false;_.i=0;_.k=0;_.n=0;_.p=0;var gF=Nkb(QAb,'SplineEdgeRouter/SplineHyperEdge',77);hI(123,17,{123:1,3:1,23:1,17:1},Agb);var tgb,ugb,vgb,wgb,xgb,ygb;var iF=Okb(VAb,'ContentAlignment',123,IF,Bgb);var Cgb;hI(218,17,{218:1,3:1,23:1,17:1},Igb);var Egb,Fgb,Ggb;var jF=Okb(VAb,'EdgeConstraint',218,IF,Jgb);hI(115,17,{115:1,3:1,23:1,17:1},Rgb);var Kgb,Lgb,Mgb,Ngb,Ogb;var kF=Okb(VAb,'EdgeLabelSideSelection',115,IF,Sgb);var Tgb;hI(124,17,{124:1,3:1,23:1,17:1},ahb);var Vgb,Wgb,Xgb,Ygb,Zgb,$gb;var lF=Okb(VAb,'FixedAlignment',124,IF,bhb);var chb;hI(113,17,{113:1,3:1,23:1,17:1},phb);var ehb,fhb,ghb,hhb,ihb,jhb,khb,lhb,mhb,nhb;var mF=Okb(VAb,'GraphProperties',113,IF,qhb);hI(110,17,{110:1,3:1,23:1,17:1},Ahb);_.a=false;_.b=false;_.c=false;var rhb,shb,thb,uhb,vhb,whb,xhb,yhb;var nF=Okb(VAb,'GreedySwitchType',110,IF,Bhb);var Chb;hI(140,17,{140:1,3:1,23:1,17:1},Ihb);var Ehb,Fhb,Ghb;var oF=Okb(VAb,'InLayerConstraint',140,IF,Jhb);hI(174,17,{174:1,3:1,23:1,17:1},Nhb);var Khb,Lhb;var pF=Okb(VAb,'InteractiveReferencePoint',174,IF,Ohb);var Phb;var Rhb,Shb,Thb,Uhb,Vhb,Whb,Xhb,Yhb,Zhb,$hb,_hb,aib,bib,cib,dib,eib,fib,gib,hib,iib,jib,kib,lib,mib,nib,oib,pib,qib,rib,sib,tib,uib,vib,wib,xib,yib,zib,Aib,Bib,Cib,Dib,Eib,Fib,Gib,Hib,Iib,Jib,Kib,Lib,Mib,Nib,Oib,Pib,Qib;hI(85,17,{85:1,3:1,23:1,17:1},Yib);var Sib,Tib,Uib,Vib,Wib;var qF=Okb(VAb,'LayerConstraint',85,IF,Zib);var $ib;hI(219,17,{219:1,3:1,23:1,17:1},ejb);var ajb,bjb,cjb;var rF=Okb(VAb,'PortType',219,IF,fjb);var gjb,hjb,ijb,jjb,kjb,ljb,mjb,njb,ojb,pjb,qjb,rjb,sjb,tjb,ujb,vjb,wjb,xjb,yjb,zjb,Ajb,Bjb,Cjb,Djb,Ejb,Fjb,Gjb,Hjb,Ijb,Jjb,Kjb,Ljb;hI(153,17,{153:1,3:1,23:1,17:1},Rjb);var Njb,Ojb,Pjb;var sF=Okb(VAb,'SelfLoopPlacement',153,IF,Sjb);var Tjb;hI(134,1,{134:1},$jb);_.a=0;_.b=0;_.c=0;_.d=0;_.e=0;_.f=0;var tF=Nkb(VAb,'Spacings',134);hI(172,17,{172:1,3:1,23:1,17:1},dkb);var _jb,akb,bkb;var uF=Okb(VAb,'WideNodesStrategy',172,IF,ekb);var fkb;hI(644,1,{});var xF=Nkb(nyb,'OutputStream',644);hI(645,644,{});var vF=Nkb(nyb,'FilterOutputStream',645);hI(291,645,{},hkb);var yF=Nkb(nyb,'PrintStream',291);hI(255,1,{});_.w=function mkb(){return this.a};var AF=Nkb(kyb,'AbstractStringBuilder',255);hI(621,95,Vxb,pkb);var BF=Nkb(kyb,'ArrayIndexOutOfBoundsException',621);hI(290,72,Vxb,qkb,rkb);var CF=Nkb(kyb,'ArrayStoreException',290);hI(252,46,Uxb);var JF=Nkb(kyb,'Error',252);hI(84,252,Uxb,tkb,ukb);var DF=Nkb(kyb,'AssertionError',84);Sv={3:1,349:1,23:1};var vkb,wkb;var EF=Nkb(kyb,'Boolean',349);Tv={3:1,23:1,184:1,231:1};var HF=Nkb(kyb,'Double',184);hI(15,231,{3:1,23:1,15:1,231:1},klb,llb);_.F=function mlb(a){return jlb(this,Wv(a,15))};_.t=function nlb(a){return aw(a,15)&&Wv(a,15).a==this.a};_.v=function olb(){return hw(this.a)};_.w=function plb(){return qlb(this.a)};_.a=0;var LF=Nkb(kyb,'Float',15);hI(101,72,Vxb,tlb,ulb);var NF=Nkb(kyb,'IllegalStateException',101);var Flb;var Hlb;hI(608,72,Vxb,Ulb);var QF=Nkb(kyb,'NegativeArraySizeException',608);hI(76,72,{3:1,54:1,76:1,46:1},Vlb,Wlb);var RF=Nkb(kyb,'NullPointerException',76);hI(130,29,{3:1,54:1,29:1,130:1,46:1},Xlb,Ylb);var SF=Nkb(kyb,'NumberFormatException',130);hI(146,1,{3:1,146:1},Zlb);_.t=function $lb(a){var b;if(aw(a,146)){b=Wv(a,146);return this.c==b.c&&ovb(this.d,b.d)&&ovb(this.a,b.a)&&ovb(this.b,b.b)}return false};_.v=function _lb(){return fpb(Bv(tv(UF,1),syb,1,4,[Elb(this.c),this.a,this.d,this.b]))};_.w=function amb(){return this.a+'.'+this.d+'('+(this.b!=null?this.b:'Unknown Source')+(this.c>=0?':'+this.c:'')+')'};_.c=0;var WF=Nkb(kyb,'StackTraceElement',146);hI(98,255,{345:1},zmb,Amb,Bmb);var YF=Nkb(kyb,'StringBuilder',98);var Dmb,Emb;hI(45,72,{3:1,54:1,46:1,45:1},Hmb,Imb);var aG=Nkb(kyb,'UnsupportedOperationException',45);hI(213,638,Byb);_.Q=function _mb(){Ymb(this)};_.R=function anb(a){return Qmb(this,a)};_.ab=function bnb(a){return Rmb(this,a,this.e)||Rmb(this,a,this.d)};_.bb=function cnb(){return new inb(this)};_.cb=function dnb(a){return Smb(this,a)};_.db=function enb(a,b){return Umb(this,a,b)};_.eb=function fnb(a){return Wmb(this,a)};_.Y=function gnb(){return Zmb(this)};var hG=Nkb(Cyb,'AbstractHashMap',213);hI(120,641,Eyb,inb);_.Q=function jnb(){this.a.Q()};_.kb=function knb(a){return hnb(this,a)};_.mb=function lnb(){return new rnb(this.a)};_.nb=function mnb(a){var b;if(hnb(this,a)){b=Wv(a,21).yb();this.a.eb(b);return true}return false};_.Y=function nnb(){return this.a.Y()};var gG=Nkb(Cyb,'AbstractHashMap/EntrySet',120);hI(148,1,Ayb,rnb);_.H=function tnb(){return pnb(this)};_.G=function snb(){return this.b};_.I=function unb(){qnb(this)};_.b=false;var fG=Nkb(Cyb,'AbstractHashMap/EntrySetIterator',148);hI(162,1,Ayb,wnb);_.G=function xnb(){return this.b0};_.L=function Inb(){return this.b};_.M=function Jnb(){return Dnb(this)};_.N=function Knb(){return this.b-1};_.O=function Lnb(a){Enb(this,a)};var jG=Nkb(Cyb,'AbstractList/ListIteratorImpl',43);hI(258,647,Fyb,Mnb);_.rb=function Nnb(a,b){Fxb(a,this.b);this.c.rb(this.a+a,b);++this.b};_.sb=function Onb(a){Cxb(a,this.b);return this.c.sb(this.a+a)};_.vb=function Pnb(a){var b;Cxb(a,this.b);b=this.c.vb(this.a+a);--this.b;return b};_.wb=function Qnb(a,b){Cxb(a,this.b);return this.c.wb(this.a+a,b)};_.Y=function Rnb(){return this.b};_.a=0;_.b=0;var kG=Nkb(Cyb,'AbstractList/SubList',258);hI(36,641,Eyb,Snb);_.Q=function Tnb(){this.a.Q()};_.kb=function Unb(a){return this.a.R(a)};_.mb=function Vnb(){var a;return a=this.a.bb().mb(),new Ynb(a)};_.nb=function Wnb(a){if(this.a.R(a)){this.a.eb(a);return true}return false};_.Y=function Xnb(){return this.a.Y()};var nG=Nkb(Cyb,'AbstractMap/1',36);hI(40,1,Ayb,Ynb);_.G=function Znb(){return this.a.G()};_.H=function $nb(){var a;return a=Wv(this.a.H(),21),a.yb()};_.I=function _nb(){this.a.I()};var mG=Nkb(Cyb,'AbstractMap/1/1',40);hI(211,640,Dyb,aob);_.Q=function bob(){this.a.Q()};_.kb=function cob(a){return this.a.ab(a)};_.mb=function dob(){var a;return a=this.a.bb().mb(),new fob(a)};_.Y=function eob(){return this.a.Y()};var pG=Nkb(Cyb,'AbstractMap/2',211);hI(212,1,Ayb,fob);_.G=function gob(){return this.a.G()};_.H=function hob(){var a;return a=Wv(this.a.H(),21),a.zb()};_.I=function iob(){this.a.I()};var oG=Nkb(Cyb,'AbstractMap/2/1',212);hI(210,1,{210:1,21:1});_.t=function kob(a){var b;if(!aw(a,21)){return false}b=Wv(a,21);return ovb(this.d,b.yb())&&ovb(this.e,b.zb())};_.yb=function lob(){return this.d};_.zb=function mob(){return this.e};_.v=function nob(){return pvb(this.d)^pvb(this.e)};_.Ab=function oob(a){return job(this,a)};_.w=function pob(){return this.d+'='+this.e};var qG=Nkb(Cyb,'AbstractMap/AbstractEntry',210);hI(163,210,{210:1,163:1,21:1},qob);var rG=Nkb(Cyb,'AbstractMap/SimpleEntry',163);hI(652,1,Jyb);_.t=function rob(a){var b;if(!aw(a,21)){return false}b=Wv(a,21);return ovb(this.yb(),b.yb())&&ovb(this.zb(),b.zb())};_.v=function sob(){return pvb(this.yb())^pvb(this.zb())};_.w=function tob(){return this.yb()+'='+this.zb()};var sG=Nkb(Cyb,Kyb,652);hI(639,638,Byb);_._=function wob(a){return uob(this,a)};_.R=function xob(a){return vob(this,a)};_.bb=function yob(){return new Bob(this)};_.cb=function zob(a){return re(Wvb(this,a))};_.W=function Aob(){return new Gob(this)};var xG=Nkb(Cyb,'AbstractNavigableMap',639);hI(287,641,Eyb,Bob);_.kb=function Cob(a){return aw(a,21)&&uob(this.b,Wv(a,21))};_.mb=function Dob(){return new rwb(this.b)};_.nb=function Eob(a){var b;if(aw(a,21)){b=Wv(a,21);return dwb(this.b,b)}return false};_.Y=function Fob(){return this.b.c};var uG=Nkb(Cyb,'AbstractNavigableMap/EntrySet',287);hI(229,641,Iyb,Gob);_.Q=function Hob(){Vvb(this.a)};_.kb=function Iob(a){return vob(this.a,a)};_.mb=function Job(){var a;return a=new rwb((new wwb(this.a)).b),new Mob(a)};_.nb=function Kob(a){if(vob(this.a,a)){cwb(this.a,a);return true}return false};_.Y=function Lob(){return this.a.c};var wG=Nkb(Cyb,'AbstractNavigableMap/NavigableKeySet',229);hI(230,1,Ayb,Mob);_.G=function Nob(){return Bnb(this.a.a)};_.H=function Oob(){var a;return a=pwb(this.a),a.yb()};_.I=function Pob(){qwb(this.a)};var vG=Nkb(Cyb,'AbstractNavigableMap/NavigableKeySet/1',230);hI(4,1,Ayb,Tob);_.G=function Uob(){return Qob(this)};_.H=function Vob(){return Rob(this)};_.I=function Wob(){Sob(this)};_.a=0;_.b=-1;var AG=Nkb(Cyb,'ArrayList/1',4);hI(94,647,XAb,opb);_.kb=function ppb(a){return dn(this,a)!=-1};_.sb=function qpb(a){return mpb(this,a)};_.wb=function rpb(a,b){var c;c=(Cxb(a,this.a.length),this.a[a]);Av(this.a,a,b);return c};_.Y=function spb(){return this.a.length};_.ob=function tpb(){return npb(this,xv(UF,syb,1,this.a.length,4,1))};_.pb=function upb(a){return npb(this,a)};var CG=Nkb(Cyb,'Arrays/ArrayList',94);var vpb,wpb,xpb;hI(413,1,fyb,Ipb);_.$b=function Jpb(a,b){return zT(b,a)};var DG=Nkb(Cyb,'Collections/2',413);hI(406,647,XAb,Kpb);_.kb=function Lpb(a){return false};_.sb=function Mpb(a){Cxb(a,0);return null};_.mb=function Npb(){return ypb(),Rpb(),Qpb};_.tb=function Opb(){return ypb(),Rpb(),Qpb};_.Y=function Ppb(){return 0};var FG=Nkb(Cyb,'Collections/EmptyList',406);hI(407,1,Hyb,Spb);_.J=function Tpb(a){throw new Hmb};_.G=function Upb(){return false};_.K=function Vpb(){return false};_.H=function Wpb(){throw new nvb};_.L=function Xpb(){return 0};_.M=function Ypb(){throw new nvb};_.N=function Zpb(){return -1};_.I=function $pb(){throw new tlb};_.O=function _pb(a){throw new tlb};var Qpb;var EG=Nkb(Cyb,'Collections/EmptyListIterator',407);hI(409,638,Ryb,aqb);_.R=function bqb(a){return false};_.ab=function cqb(a){return false};_.bb=function dqb(){return ypb(),xpb};_.cb=function eqb(a){return null};_.W=function fqb(){return ypb(),xpb};_.Y=function gqb(){return 0};_.fb=function hqb(){return ypb(),vpb};var GG=Nkb(Cyb,'Collections/EmptyMap',409);hI(408,641,Syb,iqb);_.kb=function jqb(a){return false};_.mb=function kqb(){return ypb(),Rpb(),Qpb};_.Y=function lqb(){return 0};var HG=Nkb(Cyb,'Collections/EmptySet',408);hI(410,1,fyb,pqb);_.$b=function qqb(a,b){return oqb(Wv(a,23),Wv(b,23))};var mqb;var IG=Nkb(Cyb,'Collections/ReverseComparator',410);hI(411,647,{3:1,22:1,19:1,20:1},rqb);_.kb=function sqb(a){return ovb(this.a,a)};_.sb=function tqb(a){Cxb(a,1);return this.a};_.Y=function uqb(){return 1};var JG=Nkb(Cyb,'Collections/SingletonList',411);hI(217,1,Dyb,zqb);_.ib=function Aqb(a){return vqb()};_.jb=function Bqb(a){return wqb()};_.Q=function Cqb(){xqb()};_.kb=function Dqb(a){return this.b.kb(a)};_.lb=function Eqb(a){return this.b.lb(a)};_.V=function Fqb(){return this.b.V()};_.mb=function Gqb(){return new Nqb(this.b.mb())};_.nb=function Hqb(a){return yqb()};_.Y=function Iqb(){return this.b.Y()};_.ob=function Jqb(){return this.b.ob()};_.pb=function Kqb(a){return this.b.pb(a)};_.w=function Lqb(){return xb(this.b)};var LG=Nkb(Cyb,'Collections/UnmodifiableCollection',217);hI(152,1,Ayb,Nqb);_.G=function Oqb(){return this.b.G()};_.H=function Pqb(){return this.b.H()};_.I=function Qqb(){Mqb()};var KG=Nkb(Cyb,'Collections/UnmodifiableCollectionIterator',152);hI(233,217,Fyb,Rqb);_.rb=function Sqb(a,b){throw new Hmb};_.t=function Tqb(a){return this.a.t(a)};_.sb=function Uqb(a){return this.a.sb(a)};_.v=function Vqb(){return this.a.v()};_.V=function Wqb(){return this.a.V()};_.tb=function Xqb(){return new arb(this.a.ub(0))};_.ub=function Yqb(a){return new arb(this.a.ub(a))};_.vb=function Zqb(a){throw new Hmb};_.wb=function $qb(a,b){throw new Hmb};_.xb=function _qb(a,b){return new Rqb(this.a.xb(a,b))};var NG=Nkb(Cyb,'Collections/UnmodifiableList',233);hI(309,152,Hyb,arb);_.J=function brb(a){throw new Hmb};_.K=function crb(){return this.a.K()};_.L=function drb(){return this.a.L()};_.M=function erb(){return this.a.M()};_.N=function frb(){return this.a.N()};_.O=function grb(a){throw new Hmb};var MG=Nkb(Cyb,'Collections/UnmodifiableListIterator',309);hI(305,1,Byb,mrb);_.Q=function nrb(){throw new Hmb};_.R=function orb(a){return this.c.R(a)};_.ab=function prb(a){return hrb(this,a)};_.bb=function qrb(){return irb(this)};_.t=function rrb(a){return jrb(this,a)};_.cb=function srb(a){return this.c.cb(a)};_.v=function trb(){return this.c.v()};_.V=function urb(){return this.c.V()};_.W=function vrb(){return krb(this)};_.db=function wrb(a,b){throw new Hmb};_.eb=function xrb(a){throw new Hmb};_.Y=function yrb(){return this.c.Y()};_.w=function zrb(){return xb(this.c)};_.fb=function Arb(){return lrb(this)};var RG=Nkb(Cyb,'Collections/UnmodifiableMap',305);hI(151,217,Eyb,Frb);_.t=function Grb(a){return Drb(this,a)};_.v=function Hrb(){return this.b.v()};var TG=Nkb(Cyb,'Collections/UnmodifiableSet',151);hI(412,151,Eyb,Nrb);_.kb=function Orb(a){return Irb(this,a)};_.lb=function Prb(a){return Jrb(this,a)};_.mb=function Qrb(){var a;return a=this.b.mb(),new Trb(a)};_.ob=function Rrb(){return Krb(this)};_.pb=function Srb(a){return Lrb(this,a)};var QG=Nkb(Cyb,'Collections/UnmodifiableMap/UnmodifiableEntrySet',412);hI(263,1,Ayb,Trb);_.H=function Vrb(){return new Xrb(Wv(this.a.H(),21))};_.G=function Urb(){return this.a.G()};_.I=function Wrb(){throw new Hmb};var OG=Nkb(Cyb,'Collections/UnmodifiableMap/UnmodifiableEntrySet/1',263);hI(306,1,Jyb,Xrb);_.t=function Yrb(a){return this.a.t(a)};_.yb=function Zrb(){return this.a.yb()};_.zb=function $rb(){return this.a.zb()};_.v=function _rb(){return this.a.v()};_.Ab=function asb(a){throw new Hmb};_.w=function bsb(){return xb(this.a)};var PG=Nkb(Cyb,'Collections/UnmodifiableMap/UnmodifiableEntrySet/UnmodifiableEntry',306);hI(307,233,Gyb,csb);var SG=Nkb(Cyb,'Collections/UnmodifiableRandomAccessList',307);hI(308,151,Iyb,dsb);_.t=function esb(a){return this.a.t(a)};_.v=function fsb(){return this.a.v()};var UG=Nkb(Cyb,'Collections/UnmodifiableSortedSet',308);var gsb;hI(522,1,fyb,isb);_.$b=function jsb(a,b){Dxb(a);Dxb(b);return Akb(Wv(a,23),b)};var VG=Nkb(Cyb,'Comparators/1',522);hI(202,72,Vxb,nsb);var WG=Nkb(Cyb,'ConcurrentModificationException',202);hI(609,72,Vxb,osb);var XG=Nkb(Cyb,'EmptyStackException',609);hI(319,638,Byb,vsb);_.db=function Bsb(a,b){return ssb(this,a,b)};_.Q=function wsb(){psb(this)};_.R=function xsb(a){return Ysb(this.a,a)};_.ab=function ysb(a){var b,c;for(c=new jtb(this.a);c.a min_width) || df > packingOptions.FLOAT_EPSILON) {\r\n if (flag != 1) {\r\n var x1 = right - (right - left) / packingOptions.GOLDEN_SECTION;\r\n var f_x1 = step(data, x1);\r\n }\r\n if (flag != 0) {\r\n var x2 = left + (right - left) / packingOptions.GOLDEN_SECTION;\r\n var f_x2 = step(data, x2);\r\n }\r\n dx = Math.abs(x1 - x2);\r\n df = Math.abs(f_x1 - f_x2);\r\n if (f_x1 < curr_best_f) {\r\n curr_best_f = f_x1;\r\n curr_best = x1;\r\n }\r\n if (f_x2 < curr_best_f) {\r\n curr_best_f = f_x2;\r\n curr_best = x2;\r\n }\r\n if (f_x1 > f_x2) {\r\n left = x1;\r\n x1 = x2;\r\n f_x1 = f_x2;\r\n flag = 1;\r\n }\r\n else {\r\n right = x2;\r\n x2 = x1;\r\n f_x2 = f_x1;\r\n flag = 0;\r\n }\r\n if (iterationCounter++ > 100) {\r\n break;\r\n }\r\n }\r\n step(data, curr_best);\r\n }\r\n function step(data, max_width) {\r\n line = [];\r\n real_width = 0;\r\n real_height = 0;\r\n global_bottom = init_y;\r\n for (var i = 0; i < data.length; i++) {\r\n var o = data[i];\r\n put_rect(o, max_width);\r\n }\r\n return Math.abs(get_real_ratio() - desired_ratio);\r\n }\r\n function put_rect(rect, max_width) {\r\n var parent = undefined;\r\n for (var i = 0; i < line.length; i++) {\r\n if ((line[i].space_left >= rect.height) && (line[i].x + line[i].width + rect.width + packingOptions.PADDING - max_width) <= packingOptions.FLOAT_EPSILON) {\r\n parent = line[i];\r\n break;\r\n }\r\n }\r\n line.push(rect);\r\n if (parent !== undefined) {\r\n rect.x = parent.x + parent.width + packingOptions.PADDING;\r\n rect.y = parent.bottom;\r\n rect.space_left = rect.height;\r\n rect.bottom = rect.y;\r\n parent.space_left -= rect.height + packingOptions.PADDING;\r\n parent.bottom += rect.height + packingOptions.PADDING;\r\n }\r\n else {\r\n rect.y = global_bottom;\r\n global_bottom += rect.height + packingOptions.PADDING;\r\n rect.x = init_x;\r\n rect.bottom = rect.y;\r\n rect.space_left = rect.height;\r\n }\r\n if (rect.y + rect.height - real_height > -packingOptions.FLOAT_EPSILON)\r\n real_height = rect.y + rect.height - init_y;\r\n if (rect.x + rect.width - real_width > -packingOptions.FLOAT_EPSILON)\r\n real_width = rect.x + rect.width - init_x;\r\n }\r\n ;\r\n function get_entire_width(data) {\r\n var width = 0;\r\n data.forEach(function (d) { return width += d.width + packingOptions.PADDING; });\r\n return width;\r\n }\r\n function get_real_ratio() {\r\n return (real_width / real_height);\r\n }\r\n}\r\nexports.applyPacking = applyPacking;\r\nfunction separateGraphs(nodes, links) {\r\n var marks = {};\r\n var ways = {};\r\n var graphs = [];\r\n var clusters = 0;\r\n for (var i = 0; i < links.length; i++) {\r\n var link = links[i];\r\n var n1 = link.source;\r\n var n2 = link.target;\r\n if (ways[n1.index])\r\n ways[n1.index].push(n2);\r\n else\r\n ways[n1.index] = [n2];\r\n if (ways[n2.index])\r\n ways[n2.index].push(n1);\r\n else\r\n ways[n2.index] = [n1];\r\n }\r\n for (var i = 0; i < nodes.length; i++) {\r\n var node = nodes[i];\r\n if (marks[node.index])\r\n continue;\r\n explore_node(node, true);\r\n }\r\n function explore_node(n, is_new) {\r\n if (marks[n.index] !== undefined)\r\n return;\r\n if (is_new) {\r\n clusters++;\r\n graphs.push({ array: [] });\r\n }\r\n marks[n.index] = clusters;\r\n graphs[clusters - 1].array.push(n);\r\n var adjacent = ways[n.index];\r\n if (!adjacent)\r\n return;\r\n for (var j = 0; j < adjacent.length; j++) {\r\n explore_node(adjacent[j], false);\r\n }\r\n }\r\n return graphs;\r\n}\r\nexports.separateGraphs = separateGraphs;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlZGlzY29ubmVjdGVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vV2ViQ29sYS9zcmMvaGFuZGxlZGlzY29ubmVjdGVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUksSUFBSSxjQUFjLEdBQUc7SUFDakIsT0FBTyxFQUFFLEVBQUU7SUFDWCxjQUFjLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7SUFDdEMsYUFBYSxFQUFFLE1BQU07SUFDckIsY0FBYyxFQUFFLEdBQUc7Q0FDdEIsQ0FBQztBQUdGLFNBQWdCLFlBQVksQ0FBQyxNQUFpQixFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLGFBQWlCLEVBQUUsV0FBa0I7SUFBckMsOEJBQUEsRUFBQSxpQkFBaUI7SUFBRSw0QkFBQSxFQUFBLGtCQUFrQjtJQUVsRyxJQUFJLE1BQU0sR0FBRyxDQUFDLEVBQ1YsTUFBTSxHQUFHLENBQUMsRUFFVixTQUFTLEdBQUcsQ0FBQyxFQUNiLFVBQVUsR0FBRyxDQUFDLEVBRWQsYUFBYSxHQUFHLE9BQU8sYUFBYSxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQ3hFLFNBQVMsR0FBRyxPQUFPLFNBQVMsS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUU1RCxVQUFVLEdBQUcsQ0FBQyxFQUNkLFdBQVcsR0FBRyxDQUFDLEVBQ2YsU0FBUyxHQUFHLENBQUMsRUFFYixhQUFhLEdBQUcsQ0FBQyxFQUNqQixJQUFJLEdBQUcsRUFBRSxDQUFDO0lBRWQsSUFBSSxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUM7UUFDbEIsT0FBTztJQVVYLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNyQixLQUFLLENBQUMsTUFBTSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQzdCLElBQUcsV0FBVyxFQUFFO1FBQ1osNEJBQTRCLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDeEM7SUFHRCxTQUFTLFlBQVksQ0FBQyxNQUFNO1FBRXhCLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDO1lBQ3RCLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQzFCLENBQUMsQ0FBQyxDQUFDO1FBRUgsU0FBUyxtQkFBbUIsQ0FBQyxLQUFLO1lBQzlCLElBQUksS0FBSyxHQUFHLE1BQU0sQ0FBQyxTQUFTLEVBQUUsS0FBSyxHQUFHLE1BQU0sQ0FBQyxTQUFTLEVBQ2xELEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQztZQUV6QixLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLEtBQUssS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztnQkFDN0QsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUMsTUFBTSxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO2dCQUMvRCxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNQLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ1AsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQ2pDLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUNqQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDakMsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDckMsQ0FBQyxDQUFDLENBQUM7WUFFSCxLQUFLLENBQUMsS0FBSyxHQUFHLEtBQUssR0FBRyxLQUFLLENBQUM7WUFDNUIsS0FBSyxDQUFDLE1BQU0sR0FBRyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ2pDLENBQUM7SUFDTCxDQUFDO0lBdUNELFNBQVMsNEJBQTRCLENBQUMsTUFBTTtRQUN4QyxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQztZQUV0QixJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBRTVCLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsSUFBSTtnQkFDMUIsTUFBTSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUNuQixNQUFNLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDdkIsQ0FBQyxDQUFDLENBQUM7WUFFSCxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQzNCLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFHM0IsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3ZFLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsR0FBRyxTQUFTLEdBQUcsQ0FBQyxHQUFHLFVBQVUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMs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","\"use strict\";\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar layout_1 = require(\"./layout\");\r\nvar LayoutAdaptor = (function (_super) {\r\n __extends(LayoutAdaptor, _super);\r\n function LayoutAdaptor(options) {\r\n var _this = _super.call(this) || this;\r\n var self = _this;\r\n var o = options;\r\n if (o.trigger) {\r\n _this.trigger = o.trigger;\r\n }\r\n if (o.kick) {\r\n _this.kick = o.kick;\r\n }\r\n if (o.drag) {\r\n _this.drag = o.drag;\r\n }\r\n if (o.on) {\r\n _this.on = o.on;\r\n }\r\n _this.dragstart = _this.dragStart = layout_1.Layout.dragStart;\r\n _this.dragend = _this.dragEnd = layout_1.Layout.dragEnd;\r\n return _this;\r\n }\r\n LayoutAdaptor.prototype.trigger = function (e) { };\r\n ;\r\n LayoutAdaptor.prototype.kick = function () { };\r\n ;\r\n LayoutAdaptor.prototype.drag = function () { };\r\n ;\r\n LayoutAdaptor.prototype.on = function (eventType, listener) { return this; };\r\n ;\r\n return LayoutAdaptor;\r\n}(layout_1.Layout));\r\nexports.LayoutAdaptor = LayoutAdaptor;\r\nfunction adaptor(options) {\r\n return new LayoutAdaptor(options);\r\n}\r\nexports.adaptor = adaptor;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRhcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL1dlYkNvbGEvc3JjL2FkYXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsbUNBQWlEO0FBRTdDO0lBQW1DLGlDQUFNO0lBYXJDLHVCQUFhLE9BQU87UUFBcEIsWUFDSSxpQkFBTyxTQXlCVjtRQXJCRyxJQUFJLElBQUksR0FBRyxLQUFJLENBQUM7UUFDaEIsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDO1FBRWhCLElBQUssQ0FBQyxDQUFDLE9BQU8sRUFBRztZQUNiLEtBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQztTQUM1QjtRQUVELElBQUssQ0FBQyxDQUFDLElBQUksRUFBRTtZQUNULEtBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztTQUN0QjtRQUVELElBQUssQ0FBQyxDQUFDLElBQUksRUFBRTtZQUNULEtBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztTQUN0QjtRQUVELElBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNQLEtBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztTQUNsQjtRQUVELEtBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSSxDQUFDLFNBQVMsR0FBRyxlQUFNLENBQUMsU0FBUyxDQUFDO1FBQ25ELEtBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSSxDQUFDLE9BQU8sR0FBRyxlQUFNLENBQUMsT0FBTyxDQUFDOztJQUNqRCxDQUFDO0lBcENELCtCQUFPLEdBQVAsVUFBUSxDQUFRLElBQUcsQ0FBQztJQUFBLENBQUM7SUFDckIsNEJBQUksR0FBSixjQUFRLENBQUM7SUFBQSxDQUFDO0lBQ1YsNEJBQUksR0FBSixjQUFRLENBQUM7SUFBQSxDQUFDO0lBQ1YsMEJBQUUsR0FBRixVQUFHLFNBQTZCLEVBQUUsUUFBb0IsSUFBVyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUM7SUFBQSxDQUFDO0lBa0NwRixvQkFBQztBQUFELENBQUMsQUF4Q0QsQ0FBbUMsZUFBTSxHQXdDeEM7QUF4Q1ksc0NBQWE7QUE2QzFCLFNBQWdCLE9BQU8sQ0FBRSxPQUFPO0lBQzVCLE9BQU8sSUFBSSxhQUFhLENBQUUsT0FBTyxDQUFFLENBQUM7QUFDeEMsQ0FBQztBQUZELDBCQUVDIn0=","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar rectangle_1 = require(\"./rectangle\");\r\nvar vpsc_1 = require(\"./vpsc\");\r\nvar shortestpaths_1 = require(\"./shortestpaths\");\r\nvar NodeWrapper = (function () {\r\n function NodeWrapper(id, rect, children) {\r\n this.id = id;\r\n this.rect = rect;\r\n this.children = children;\r\n this.leaf = typeof children === 'undefined' || children.length === 0;\r\n }\r\n return NodeWrapper;\r\n}());\r\nexports.NodeWrapper = NodeWrapper;\r\nvar Vert = (function () {\r\n function Vert(id, x, y, node, line) {\r\n if (node === void 0) { node = null; }\r\n if (line === void 0) { line = null; }\r\n this.id = id;\r\n this.x = x;\r\n this.y = y;\r\n this.node = node;\r\n this.line = line;\r\n }\r\n return Vert;\r\n}());\r\nexports.Vert = Vert;\r\nvar LongestCommonSubsequence = (function () {\r\n function LongestCommonSubsequence(s, t) {\r\n this.s = s;\r\n this.t = t;\r\n var mf = LongestCommonSubsequence.findMatch(s, t);\r\n var tr = t.slice(0).reverse();\r\n var mr = LongestCommonSubsequence.findMatch(s, tr);\r\n if (mf.length >= mr.length) {\r\n this.length = mf.length;\r\n this.si = mf.si;\r\n this.ti = mf.ti;\r\n this.reversed = false;\r\n }\r\n else {\r\n this.length = mr.length;\r\n this.si = mr.si;\r\n this.ti = t.length - mr.ti - mr.length;\r\n this.reversed = true;\r\n }\r\n }\r\n LongestCommonSubsequence.findMatch = function (s, t) {\r\n var m = s.length;\r\n var n = t.length;\r\n var match = { length: 0, si: -1, ti: -1 };\r\n var l = new Array(m);\r\n for (var i = 0; i < m; i++) {\r\n l[i] = new Array(n);\r\n for (var j = 0; j < n; j++)\r\n if (s[i] === t[j]) {\r\n var v = l[i][j] = (i === 0 || j === 0) ? 1 : l[i - 1][j - 1] + 1;\r\n if (v > match.length) {\r\n match.length = v;\r\n match.si = i - v + 1;\r\n match.ti = j - v + 1;\r\n }\r\n ;\r\n }\r\n else\r\n l[i][j] = 0;\r\n }\r\n return match;\r\n };\r\n LongestCommonSubsequence.prototype.getSequence = function () {\r\n return this.length >= 0 ? this.s.slice(this.si, this.si + this.length) : [];\r\n };\r\n return LongestCommonSubsequence;\r\n}());\r\nexports.LongestCommonSubsequence = LongestCommonSubsequence;\r\nvar GridRouter = (function () {\r\n function GridRouter(originalnodes, accessor, groupPadding) {\r\n var _this = this;\r\n if (groupPadding === void 0) { groupPadding = 12; }\r\n this.originalnodes = originalnodes;\r\n this.groupPadding = groupPadding;\r\n this.leaves = null;\r\n this.nodes = originalnodes.map(function (v, i) { return new NodeWrapper(i, accessor.getBounds(v), accessor.getChildren(v)); });\r\n this.leaves = this.nodes.filter(function (v) { return v.leaf; });\r\n this.groups = this.nodes.filter(function (g) { return !g.leaf; });\r\n this.cols = this.getGridLines('x');\r\n this.rows = this.getGridLines('y');\r\n this.groups.forEach(function (v) {\r\n return v.children.forEach(function (c) { return _this.nodes[c].parent = v; });\r\n });\r\n this.root = { children: [] };\r\n this.nodes.forEach(function (v) {\r\n if (typeof v.parent === 'undefined') {\r\n v.parent = _this.root;\r\n _this.root.children.push(v.id);\r\n }\r\n v.ports = [];\r\n });\r\n this.backToFront = this.nodes.slice(0);\r\n this.backToFront.sort(function (x, y) { return _this.getDepth(x) - _this.getDepth(y); });\r\n var frontToBackGroups = this.backToFront.slice(0).reverse().filter(function (g) { return !g.leaf; });\r\n frontToBackGroups.forEach(function (v) {\r\n var r = rectangle_1.Rectangle.empty();\r\n v.children.forEach(function (c) { return r = r.union(_this.nodes[c].rect); });\r\n v.rect = r.inflate(_this.groupPadding);\r\n });\r\n var colMids = this.midPoints(this.cols.map(function (r) { return r.pos; }));\r\n var rowMids = this.midPoints(this.rows.map(function (r) { return r.pos; }));\r\n var rowx = colMids[0], rowX = colMids[colMids.length - 1];\r\n var coly = rowMids[0], colY = rowMids[rowMids.length - 1];\r\n var hlines = this.rows.map(function (r) { return ({ x1: rowx, x2: rowX, y1: r.pos, y2: r.pos }); })\r\n .concat(rowMids.map(function (m) { return ({ x1: rowx, x2: rowX, y1: m, y2: m }); }));\r\n var vlines = this.cols.map(function (c) { return ({ x1: c.pos, x2: c.pos, y1: coly, y2: colY }); })\r\n .concat(colMids.map(function (m) { return ({ x1: m, x2: m, y1: coly, y2: colY }); }));\r\n var lines = hlines.concat(vlines);\r\n lines.forEach(function (l) { return l.verts = []; });\r\n this.verts = [];\r\n this.edges = [];\r\n hlines.forEach(function (h) {\r\n return vlines.forEach(function (v) {\r\n var p = new Vert(_this.verts.length, v.x1, h.y1);\r\n h.verts.push(p);\r\n v.verts.push(p);\r\n _this.verts.push(p);\r\n var i = _this.backToFront.length;\r\n while (i-- > 0) {\r\n var node = _this.backToFront[i], r = node.rect;\r\n var dx = Math.abs(p.x - r.cx()), dy = Math.abs(p.y - r.cy());\r\n if (dx < r.width() / 2 && dy < r.height() / 2) {\r\n p.node = node;\r\n break;\r\n }\r\n }\r\n });\r\n });\r\n lines.forEach(function (l, li) {\r\n _this.nodes.forEach(function (v, i) {\r\n v.rect.lineIntersections(l.x1, l.y1, l.x2, l.y2).forEach(function (intersect, j) {\r\n var p = new Vert(_this.verts.length, intersect.x, intersect.y, v, l);\r\n _this.verts.push(p);\r\n l.verts.push(p);\r\n v.ports.push(p);\r\n });\r\n });\r\n var isHoriz = Math.abs(l.y1 - l.y2) < 0.1;\r\n var delta = function (a, b) { return isHoriz ? b.x - a.x : b.y - a.y; };\r\n l.verts.sort(delta);\r\n for (var i = 1; i < l.verts.length; i++) {\r\n var u = l.verts[i - 1], v = l.verts[i];\r\n if (u.node && u.node === v.node && u.node.leaf)\r\n continue;\r\n _this.edges.push({ source: u.id, target: v.id, length: Math.abs(delta(u, v)) });\r\n }\r\n });\r\n }\r\n GridRouter.prototype.avg = function (a) { return a.reduce(function (x, y) { return x + y; }) / a.length; };\r\n GridRouter.prototype.getGridLines = function (axis) {\r\n var columns = [];\r\n var ls = this.leaves.slice(0, this.leaves.length);\r\n while (ls.length > 0) {\r\n var overlapping = ls.filter(function (v) { return v.rect['overlap' + axis.toUpperCase()](ls[0].rect); });\r\n var col = {\r\n nodes: overlapping,\r\n pos: this.avg(overlapping.map(function (v) { return v.rect['c' + axis](); }))\r\n };\r\n columns.push(col);\r\n col.nodes.forEach(function (v) { return ls.splice(ls.indexOf(v), 1); });\r\n }\r\n columns.sort(function (a, b) { return a.pos - b.pos; });\r\n return columns;\r\n };\r\n GridRouter.prototype.getDepth = function (v) {\r\n var depth = 0;\r\n while (v.parent !== this.root) {\r\n depth++;\r\n v = v.parent;\r\n }\r\n return depth;\r\n };\r\n GridRouter.prototype.midPoints = function (a) {\r\n var gap = a[1] - a[0];\r\n var mids = [a[0] - gap / 2];\r\n for (var i = 1; i < a.length; i++) {\r\n mids.push((a[i] + a[i - 1]) / 2);\r\n }\r\n mids.push(a[a.length - 1] + gap / 2);\r\n return mids;\r\n };\r\n GridRouter.prototype.findLineage = function (v) {\r\n var lineage = [v];\r\n do {\r\n v = v.parent;\r\n lineage.push(v);\r\n } while (v !== this.root);\r\n return lineage.reverse();\r\n };\r\n GridRouter.prototype.findAncestorPathBetween = function (a, b) {\r\n var aa = this.findLineage(a), ba = this.findLineage(b), i = 0;\r\n while (aa[i] === ba[i])\r\n i++;\r\n return { commonAncestor: aa[i - 1], lineages: aa.slice(i).concat(ba.slice(i)) };\r\n };\r\n GridRouter.prototype.siblingObstacles = function (a, b) {\r\n var _this = this;\r\n var path = this.findAncestorPathBetween(a, b);\r\n var lineageLookup = {};\r\n path.lineages.forEach(function (v) { return lineageLookup[v.id] = {}; });\r\n var obstacles = path.commonAncestor.children.filter(function (v) { return !(v in lineageLookup); });\r\n path.lineages\r\n .filter(function (v) { return v.parent !== path.commonAncestor; })\r\n .forEach(function (v) { return obstacles = obstacles.concat(v.parent.children.filter(function (c) { return c !== v.id; })); });\r\n return obstacles.map(function (v) { return _this.nodes[v]; });\r\n };\r\n GridRouter.getSegmentSets = function (routes, x, y) {\r\n var vsegments = [];\r\n for (var ei = 0; ei < routes.length; ei++) {\r\n var route = routes[ei];\r\n for (var si = 0; si < route.length; si++) {\r\n var s = route[si];\r\n s.edgeid = ei;\r\n s.i = si;\r\n var sdx = s[1][x] - s[0][x];\r\n if (Math.abs(sdx) < 0.1) {\r\n vsegments.push(s);\r\n }\r\n }\r\n }\r\n vsegments.sort(function (a, b) { return a[0][x] - b[0][x]; });\r\n var vsegmentsets = [];\r\n var segmentset = null;\r\n for (var i = 0; i < vsegments.length; i++) {\r\n var s = vsegments[i];\r\n if (!segmentset || Math.abs(s[0][x] - segmentset.pos) > 0.1) {\r\n segmentset = { pos: s[0][x], segments: [] };\r\n vsegmentsets.push(segmentset);\r\n }\r\n segmentset.segments.push(s);\r\n }\r\n return vsegmentsets;\r\n };\r\n GridRouter.nudgeSegs = function (x, y, routes, segments, leftOf, gap) {\r\n var n = segments.length;\r\n if (n <= 1)\r\n return;\r\n var vs = segments.map(function (s) { return new vpsc_1.Variable(s[0][x]); });\r\n var cs = [];\r\n for (var i = 0; i < n; i++) {\r\n for (var j = 0; j < n; j++) {\r\n if (i === j)\r\n continue;\r\n var s1 = segments[i], s2 = segments[j], e1 = s1.edgeid, e2 = s2.edgeid, lind = -1, rind = -1;\r\n if (x == 'x') {\r\n if (leftOf(e1, e2)) {\r\n if (s1[0][y] < s1[1][y]) {\r\n lind = j, rind = i;\r\n }\r\n else {\r\n lind = i, rind = j;\r\n }\r\n }\r\n }\r\n else {\r\n if (leftOf(e1, e2)) {\r\n if (s1[0][y] < s1[1][y]) {\r\n lind = i, rind = j;\r\n }\r\n else {\r\n lind = j, rind = i;\r\n }\r\n }\r\n }\r\n if (lind >= 0) {\r\n cs.push(new vpsc_1.Constraint(vs[lind], vs[rind], gap));\r\n }\r\n }\r\n }\r\n var solver = new vpsc_1.Solver(vs, cs);\r\n solver.solve();\r\n vs.forEach(function (v, i) {\r\n var s = segments[i];\r\n var pos = v.position();\r\n s[0][x] = s[1][x] = pos;\r\n var route = routes[s.edgeid];\r\n if (s.i > 0)\r\n route[s.i - 1][1][x] = pos;\r\n if (s.i < route.length - 1)\r\n route[s.i + 1][0][x] = pos;\r\n });\r\n };\r\n GridRouter.nudgeSegments = function (routes, x, y, leftOf, gap) {\r\n var vsegmentsets = GridRouter.getSegmentSets(routes, x, y);\r\n for (var i = 0; i < vsegmentsets.length; i++) {\r\n var ss = vsegmentsets[i];\r\n var events = [];\r\n for (var j = 0; j < ss.segments.length; j++) {\r\n var s = ss.segments[j];\r\n events.push({ type: 0, s: s, pos: Math.min(s[0][y], s[1][y]) });\r\n events.push({ type: 1, s: s, pos: Math.max(s[0][y], s[1][y]) });\r\n }\r\n events.sort(function (a, b) { return a.pos - b.pos + a.type - b.type; });\r\n var open = [];\r\n var openCount = 0;\r\n events.forEach(function (e) {\r\n if (e.type === 0) {\r\n open.push(e.s);\r\n openCount++;\r\n }\r\n else {\r\n openCount--;\r\n }\r\n if (openCount == 0) {\r\n GridRouter.nudgeSegs(x, y, routes, open, leftOf, gap);\r\n open = [];\r\n }\r\n });\r\n }\r\n };\r\n GridRouter.prototype.routeEdges = function (edges, nudgeGap, source, target) {\r\n var _this = this;\r\n var routePaths = edges.map(function (e) { return _this.route(source(e), target(e)); });\r\n var order = GridRouter.orderEdges(routePaths);\r\n var routes = routePaths.map(function (e) { return GridRouter.makeSegments(e); });\r\n GridRouter.nudgeSegments(routes, 'x', 'y', order, nudgeGap);\r\n GridRouter.nudgeSegments(routes, 'y', 'x', order, nudgeGap);\r\n GridRouter.unreverseEdges(routes, routePaths);\r\n return routes;\r\n };\r\n GridRouter.unreverseEdges = function (routes, routePaths) {\r\n routes.forEach(function (segments, i) {\r\n var path = routePaths[i];\r\n if (path.reversed) {\r\n segments.reverse();\r\n segments.forEach(function (segment) {\r\n segment.reverse();\r\n });\r\n }\r\n });\r\n };\r\n GridRouter.angleBetween2Lines = function (line1, line2) {\r\n var angle1 = Math.atan2(line1[0].y - line1[1].y, line1[0].x - line1[1].x);\r\n var angle2 = Math.atan2(line2[0].y - line2[1].y, line2[0].x - line2[1].x);\r\n var diff = angle1 - angle2;\r\n if (diff > Math.PI || diff < -Math.PI) {\r\n diff = angle2 - angle1;\r\n }\r\n return diff;\r\n };\r\n GridRouter.isLeft = function (a, b, c) {\r\n return ((b.x - a.x) * (c.y - a.y) - (b.y - a.y) * (c.x - a.x)) <= 0;\r\n };\r\n GridRouter.getOrder = function (pairs) {\r\n var outgoing = {};\r\n for (var i = 0; i < pairs.length; i++) {\r\n var p = pairs[i];\r\n if (typeof outgoing[p.l] === 'undefined')\r\n outgoing[p.l] = {};\r\n outgoing[p.l][p.r] = true;\r\n }\r\n return function (l, r) { return typeof outgoing[l] !== 'undefined' && outgoing[l][r]; };\r\n };\r\n GridRouter.orderEdges = function (edges) {\r\n var edgeOrder = [];\r\n for (var i = 0; i < edges.length - 1; i++) {\r\n for (var j = i + 1; j < edges.length; j++) {\r\n var e = edges[i], f = edges[j], lcs = new LongestCommonSubsequence(e, f);\r\n var u, vi, vj;\r\n if (lcs.length === 0)\r\n continue;\r\n if (lcs.reversed) {\r\n f.reverse();\r\n f.reversed = true;\r\n lcs = new LongestCommonSubsequence(e, f);\r\n }\r\n if ((lcs.si <= 0 || lcs.ti <= 0) &&\r\n (lcs.si + lcs.length >= e.length || lcs.ti + lcs.length >= f.length)) {\r\n edgeOrder.push({ l: i, r: j });\r\n continue;\r\n }\r\n if (lcs.si + lcs.length >= e.length || lcs.ti + lcs.length >= f.length) {\r\n u = e[lcs.si + 1];\r\n vj = e[lcs.si - 1];\r\n vi = f[lcs.ti - 1];\r\n }\r\n else {\r\n u = e[lcs.si + lcs.length - 2];\r\n vi = e[lcs.si + lcs.length];\r\n vj = f[lcs.ti + lcs.length];\r\n }\r\n if (GridRouter.isLeft(u, vi, vj)) {\r\n edgeOrder.push({ l: j, r: i });\r\n }\r\n else {\r\n edgeOrder.push({ l: i, r: j });\r\n }\r\n }\r\n }\r\n return GridRouter.getOrder(edgeOrder);\r\n };\r\n GridRouter.makeSegments = function (path) {\r\n function copyPoint(p) {\r\n return { x: p.x, y: p.y };\r\n }\r\n var isStraight = function (a, b, c) { return Math.abs((b.x - a.x) * (c.y - a.y) - (b.y - a.y) * (c.x - a.x)) < 0.001; };\r\n var segments = [];\r\n var a = copyPoint(path[0]);\r\n for (var i = 1; i < path.length; i++) {\r\n var b = copyPoint(path[i]), c = i < path.length - 1 ? path[i + 1] : null;\r\n if (!c || !isStraight(a, b, c)) {\r\n segments.push([a, b]);\r\n a = b;\r\n }\r\n }\r\n return segments;\r\n };\r\n GridRouter.prototype.route = function (s, t) {\r\n var _this = this;\r\n var source = this.nodes[s], target = this.nodes[t];\r\n this.obstacles = this.siblingObstacles(source, target);\r\n var obstacleLookup = {};\r\n this.obstacles.forEach(function (o) { return obstacleLookup[o.id] = o; });\r\n this.passableEdges = this.edges.filter(function (e) {\r\n var u = _this.verts[e.source], v = _this.verts[e.target];\r\n return !(u.node && u.node.id in obstacleLookup\r\n || v.node && v.node.id in obstacleLookup);\r\n });\r\n for (var i = 1; i < source.ports.length; i++) {\r\n var u = source.ports[0].id;\r\n var v = source.ports[i].id;\r\n this.passableEdges.push({\r\n source: u,\r\n target: v,\r\n length: 0\r\n });\r\n }\r\n for (var i = 1; i < target.ports.length; i++) {\r\n var u = target.ports[0].id;\r\n var v = target.ports[i].id;\r\n this.passableEdges.push({\r\n source: u,\r\n target: v,\r\n length: 0\r\n });\r\n }\r\n var getSource = function (e) { return e.source; }, getTarget = function (e) { return e.target; }, getLength = function (e) { return e.length; };\r\n var shortestPathCalculator = new shortestpaths_1.Calculator(this.verts.length, this.passableEdges, getSource, getTarget, getLength);\r\n var bendPenalty = function (u, v, w) {\r\n var a = _this.verts[u], b = _this.verts[v], c = _this.verts[w];\r\n var dx = Math.abs(c.x - a.x), dy = Math.abs(c.y - a.y);\r\n if (a.node === source && a.node === b.node || b.node === target && b.node === c.node)\r\n return 0;\r\n return dx > 1 && dy > 1 ? 1000 : 0;\r\n };\r\n var shortestPath = shortestPathCalculator.PathFromNodeToNodeWithPrevCost(source.ports[0].id, target.ports[0].id, bendPenalty);\r\n var pathPoints = shortestPath.reverse().map(function (vi) { return _this.verts[vi]; });\r\n pathPoints.push(this.nodes[target.id].ports[0]);\r\n return pathPoints.filter(function (v, i) {\r\n return !(i < pathPoints.length - 1 && pathPoints[i + 1].node === source && v.node === source\r\n || i > 0 && v.node === target && pathPoints[i - 1].node === target);\r\n });\r\n };\r\n GridRouter.getRoutePath = function (route, cornerradius, arrowwidth, arrowheight) {\r\n var result = {\r\n routepath: 'M ' + route[0][0].x + ' ' + route[0][0].y + ' ',\r\n arrowpath: ''\r\n };\r\n if (route.length > 1) {\r\n for (var i = 0; i < route.length; i++) {\r\n var li = route[i];\r\n var x = li[1].x, y = li[1].y;\r\n var dx = x - li[0].x;\r\n var dy = y - li[0].y;\r\n if (i < route.length - 1) {\r\n if (Math.abs(dx) > 0) {\r\n x -= dx / Math.abs(dx) * cornerradius;\r\n }\r\n else {\r\n y -= dy / Math.abs(dy) * cornerradius;\r\n }\r\n result.routepath += 'L ' + x + ' ' + y + ' ';\r\n var l = route[i + 1];\r\n var x0 = l[0].x, y0 = l[0].y;\r\n var x1 = l[1].x;\r\n var y1 = l[1].y;\r\n dx = x1 - x0;\r\n dy = y1 - y0;\r\n var angle = GridRouter.angleBetween2Lines(li, l) < 0 ? 1 : 0;\r\n var x2, y2;\r\n if (Math.abs(dx) > 0) {\r\n x2 = x0 + dx / Math.abs(dx) * cornerradius;\r\n y2 = y0;\r\n }\r\n else {\r\n x2 = x0;\r\n y2 = y0 + dy / Math.abs(dy) * cornerradius;\r\n }\r\n var cx = Math.abs(x2 - x);\r\n var cy = Math.abs(y2 - y);\r\n result.routepath += 'A ' + cx + ' ' + cy + ' 0 0 ' + angle + ' ' + x2 + ' ' + y2 + ' ';\r\n }\r\n else {\r\n var arrowtip = [x, y];\r\n var arrowcorner1, arrowcorner2;\r\n if (Math.abs(dx) > 0) {\r\n x -= dx / Math.abs(dx) * arrowheight;\r\n arrowcorner1 = [x, y + arrowwidth];\r\n arrowcorner2 = [x, y - arrowwidth];\r\n }\r\n else {\r\n y -= dy / Math.abs(dy) * arrowheight;\r\n arrowcorner1 = [x + arrowwidth, y];\r\n arrowcorner2 = [x - arrowwidth, y];\r\n }\r\n result.routepath += 'L ' + x + ' ' + y + ' ';\r\n if (arrowheight > 0) {\r\n result.arrowpath = 'M ' + arrowtip[0] + ' ' + arrowtip[1] + ' L ' + arrowcorner1[0] + ' ' + arrowcorner1[1]\r\n + ' L ' + arrowcorner2[0] + ' ' + arrowcorner2[1];\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n var li = route[0];\r\n var x = li[1].x, y = li[1].y;\r\n var dx = x - li[0].x;\r\n var dy = y - li[0].y;\r\n var arrowtip = [x, y];\r\n var arrowcorner1, arrowcorner2;\r\n if (Math.abs(dx) > 0) {\r\n x -= dx / Math.abs(dx) * arrowheight;\r\n arrowcorner1 = [x, y + arrowwidth];\r\n arrowcorner2 = [x, y - arrowwidth];\r\n }\r\n else {\r\n y -= dy / Math.abs(dy) * arrowheight;\r\n arrowcorner1 = [x + arrowwidth, y];\r\n arrowcorner2 = [x - arrowwidth, y];\r\n }\r\n result.routepath += 'L ' + x + ' ' + y + ' ';\r\n if (arrowheight > 0) {\r\n result.arrowpath = 'M ' + arrowtip[0] + ' ' + arrowtip[1] + ' L ' + arrowcorner1[0] + ' ' + arrowcorner1[1]\r\n + ' L ' + arrowcorner2[0] + ' ' + arrowcorner2[1];\r\n }\r\n }\r\n return result;\r\n };\r\n return GridRouter;\r\n}());\r\nexports.GridRouter = GridRouter;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZHJvdXRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL1dlYkNvbGEvc3JjL2dyaWRyb3V0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFDQSx5Q0FBcUM7QUFDckMsK0JBQW1EO0FBQ25ELGlEQUEwQztBQUt0QztJQUlJLHFCQUFtQixFQUFVLEVBQVMsSUFBZSxFQUFTLFFBQWtCO1FBQTdELE9BQUUsR0FBRixFQUFFLENBQVE7UUFBUyxTQUFJLEdBQUosSUFBSSxDQUFXO1FBQVMsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUM1RSxJQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sUUFBUSxLQUFLLFdBQVcsSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBQ0wsa0JBQUM7QUFBRCxDQUFDLEFBUEQsSUFPQztBQVBZLGtDQUFXO0FBUXhCO0lBQ0ksY0FBbUIsRUFBVSxFQUFTLENBQVEsRUFBUyxDQUFTLEVBQVMsSUFBd0IsRUFBUyxJQUFXO1FBQTVDLHFCQUFBLEVBQUEsV0FBd0I7UUFBUyxxQkFBQSxFQUFBLFdBQVc7UUFBbEcsT0FBRSxHQUFGLEVBQUUsQ0FBUTtRQUFTLE1BQUMsR0FBRCxDQUFDLENBQU87UUFBUyxNQUFDLEdBQUQsQ0FBQyxDQUFRO1FBQVMsU0FBSSxHQUFKLElBQUksQ0FBb0I7UUFBUyxTQUFJLEdBQUosSUFBSSxDQUFPO0lBQUcsQ0FBQztJQUM3SCxXQUFDO0FBQUQsQ0FBQyxBQUZELElBRUM7QUFGWSxvQkFBSTtBQUlqQjtJQUtJLGtDQUFtQixDQUFNLEVBQVMsQ0FBTTtRQUFyQixNQUFDLEdBQUQsQ0FBQyxDQUFLO1FBQVMsTUFBQyxHQUFELENBQUMsQ0FBSztRQUNwQyxJQUFJLEVBQUUsR0FBRyx3QkFBd0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2xELElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxD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","\"use strict\";\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar vpsc_1 = require(\"./vpsc\");\r\nvar rbtree_1 = require(\"./rbtree\");\r\nfunction computeGroupBounds(g) {\r\n g.bounds = typeof g.leaves !== \"undefined\" ?\r\n g.leaves.reduce(function (r, c) { return c.bounds.union(r); }, Rectangle.empty()) :\r\n Rectangle.empty();\r\n if (typeof g.groups !== \"undefined\")\r\n g.bounds = g.groups.reduce(function (r, c) { return computeGroupBounds(c).union(r); }, g.bounds);\r\n g.bounds = g.bounds.inflate(g.padding);\r\n return g.bounds;\r\n}\r\nexports.computeGroupBounds = computeGroupBounds;\r\nvar Rectangle = (function () {\r\n function Rectangle(x, X, y, Y) {\r\n this.x = x;\r\n this.X = X;\r\n this.y = y;\r\n this.Y = Y;\r\n }\r\n Rectangle.empty = function () { return new Rectangle(Number.POSITIVE_INFINITY, Number.NEGATIVE_INFINITY, Number.POSITIVE_INFINITY, Number.NEGATIVE_INFINITY); };\r\n Rectangle.prototype.cx = function () { return (this.x + this.X) / 2; };\r\n Rectangle.prototype.cy = function () { return (this.y + this.Y) / 2; };\r\n Rectangle.prototype.overlapX = function (r) {\r\n var ux = this.cx(), vx = r.cx();\r\n if (ux <= vx && r.x < this.X)\r\n return this.X - r.x;\r\n if (vx <= ux && this.x < r.X)\r\n return r.X - this.x;\r\n return 0;\r\n };\r\n Rectangle.prototype.overlapY = function (r) {\r\n var uy = this.cy(), vy = r.cy();\r\n if (uy <= vy && r.y < this.Y)\r\n return this.Y - r.y;\r\n if (vy <= uy && this.y < r.Y)\r\n return r.Y - this.y;\r\n return 0;\r\n };\r\n Rectangle.prototype.setXCentre = function (cx) {\r\n var dx = cx - this.cx();\r\n this.x += dx;\r\n this.X += dx;\r\n };\r\n Rectangle.prototype.setYCentre = function (cy) {\r\n var dy = cy - this.cy();\r\n this.y += dy;\r\n this.Y += dy;\r\n };\r\n Rectangle.prototype.width = function () {\r\n return this.X - this.x;\r\n };\r\n Rectangle.prototype.height = function () {\r\n return this.Y - this.y;\r\n };\r\n Rectangle.prototype.union = function (r) {\r\n return new Rectangle(Math.min(this.x, r.x), Math.max(this.X, r.X), Math.min(this.y, r.y), Math.max(this.Y, r.Y));\r\n };\r\n Rectangle.prototype.lineIntersections = function (x1, y1, x2, y2) {\r\n var sides = [[this.x, this.y, this.X, this.y],\r\n [this.X, this.y, this.X, this.Y],\r\n [this.X, this.Y, this.x, this.Y],\r\n [this.x, this.Y, this.x, this.y]];\r\n var intersections = [];\r\n for (var i = 0; i < 4; ++i) {\r\n var r = Rectangle.lineIntersection(x1, y1, x2, y2, sides[i][0], sides[i][1], sides[i][2], sides[i][3]);\r\n if (r !== null)\r\n intersections.push({ x: r.x, y: r.y });\r\n }\r\n return intersections;\r\n };\r\n Rectangle.prototype.rayIntersection = function (x2, y2) {\r\n var ints = this.lineIntersections(this.cx(), this.cy(), x2, y2);\r\n return ints.length > 0 ? ints[0] : null;\r\n };\r\n Rectangle.prototype.vertices = function () {\r\n return [\r\n { x: this.x, y: this.y },\r\n { x: this.X, y: this.y },\r\n { x: this.X, y: this.Y },\r\n { x: this.x, y: this.Y }\r\n ];\r\n };\r\n Rectangle.lineIntersection = function (x1, y1, x2, y2, x3, y3, x4, y4) {\r\n var dx12 = x2 - x1, dx34 = x4 - x3, dy12 = y2 - y1, dy34 = y4 - y3, denominator = dy34 * dx12 - dx34 * dy12;\r\n if (denominator == 0)\r\n return null;\r\n var dx31 = x1 - x3, dy31 = y1 - y3, numa = dx34 * dy31 - dy34 * dx31, a = numa / denominator, numb = dx12 * dy31 - dy12 * dx31, b = numb / denominator;\r\n if (a >= 0 && a <= 1 && b >= 0 && b <= 1) {\r\n return {\r\n x: x1 + a * dx12,\r\n y: y1 + a * dy12\r\n };\r\n }\r\n return null;\r\n };\r\n Rectangle.prototype.inflate = function (pad) {\r\n return new Rectangle(this.x - pad, this.X + pad, this.y - pad, this.Y + pad);\r\n };\r\n return Rectangle;\r\n}());\r\nexports.Rectangle = Rectangle;\r\nfunction makeEdgeBetween(source, target, ah) {\r\n var si = source.rayIntersection(target.cx(), target.cy()) || { x: source.cx(), y: source.cy() }, ti = target.rayIntersection(source.cx(), source.cy()) || { x: target.cx(), y: target.cy() }, dx = ti.x - si.x, dy = ti.y - si.y, l = Math.sqrt(dx * dx + dy * dy), al = l - ah;\r\n return {\r\n sourceIntersection: si,\r\n targetIntersection: ti,\r\n arrowStart: { x: si.x + al * dx / l, y: si.y + al * dy / l }\r\n };\r\n}\r\nexports.makeEdgeBetween = makeEdgeBetween;\r\nfunction makeEdgeTo(s, target, ah) {\r\n var ti = target.rayIntersection(s.x, s.y);\r\n if (!ti)\r\n ti = { x: target.cx(), y: target.cy() };\r\n var dx = ti.x - s.x, dy = ti.y - s.y, l = Math.sqrt(dx * dx + dy * dy);\r\n return { x: ti.x - ah * dx / l, y: ti.y - ah * dy / l };\r\n}\r\nexports.makeEdgeTo = makeEdgeTo;\r\nvar Node = (function () {\r\n function Node(v, r, pos) {\r\n this.v = v;\r\n this.r = r;\r\n this.pos = pos;\r\n this.prev = makeRBTree();\r\n this.next = makeRBTree();\r\n }\r\n return Node;\r\n}());\r\nvar Event = (function () {\r\n function Event(isOpen, v, pos) {\r\n this.isOpen = isOpen;\r\n this.v = v;\r\n this.pos = pos;\r\n }\r\n return Event;\r\n}());\r\nfunction compareEvents(a, b) {\r\n if (a.pos > b.pos) {\r\n return 1;\r\n }\r\n if (a.pos < b.pos) {\r\n return -1;\r\n }\r\n if (a.isOpen) {\r\n return -1;\r\n }\r\n if (b.isOpen) {\r\n return 1;\r\n }\r\n return 0;\r\n}\r\nfunction makeRBTree() {\r\n return new rbtree_1.RBTree(function (a, b) { return a.pos - b.pos; });\r\n}\r\nvar xRect = {\r\n getCentre: function (r) { return r.cx(); },\r\n getOpen: function (r) { return r.y; },\r\n getClose: function (r) { return r.Y; },\r\n getSize: function (r) { return r.width(); },\r\n makeRect: function (open, close, center, size) { return new Rectangle(center - size / 2, center + size / 2, open, close); },\r\n findNeighbours: findXNeighbours\r\n};\r\nvar yRect = {\r\n getCentre: function (r) { return r.cy(); },\r\n getOpen: function (r) { return r.x; },\r\n getClose: function (r) { return r.X; },\r\n getSize: function (r) { return r.height(); },\r\n makeRect: function (open, close, center, size) { return new Rectangle(open, close, center - size / 2, center + size / 2); },\r\n findNeighbours: findYNeighbours\r\n};\r\nfunction generateGroupConstraints(root, f, minSep, isContained) {\r\n if (isContained === void 0) { isContained = false; }\r\n var padding = root.padding, gn = typeof root.groups !== 'undefined' ? root.groups.length : 0, ln = typeof root.leaves !== 'undefined' ? root.leaves.length : 0, childConstraints = !gn ? []\r\n : root.groups.reduce(function (ccs, g) { return ccs.concat(generateGroupConstraints(g, f, minSep, true)); }, []), n = (isContained ? 2 : 0) + ln + gn, vs = new Array(n), rs = new Array(n), i = 0, add = function (r, v) { rs[i] = r; vs[i++] = v; };\r\n if (isContained) {\r\n var b = root.bounds, c = f.getCentre(b), s = f.getSize(b) / 2, open = f.getOpen(b), close = f.getClose(b), min = c - s + padding / 2, max = c + s - padding / 2;\r\n root.minVar.desiredPosition = min;\r\n add(f.makeRect(open, close, min, padding), root.minVar);\r\n root.maxVar.desiredPosition = max;\r\n add(f.makeRect(open, close, max, padding), root.maxVar);\r\n }\r\n if (ln)\r\n root.leaves.forEach(function (l) { return add(l.bounds, l.variable); });\r\n if (gn)\r\n root.groups.forEach(function (g) {\r\n var b = g.bounds;\r\n add(f.makeRect(f.getOpen(b), f.getClose(b), f.getCentre(b), f.getSize(b)), g.minVar);\r\n });\r\n var cs = generateConstraints(rs, vs, f, minSep);\r\n if (gn) {\r\n vs.forEach(function (v) { v.cOut = [], v.cIn = []; });\r\n cs.forEach(function (c) { c.left.cOut.push(c), c.right.cIn.push(c); });\r\n root.groups.forEach(function (g) {\r\n var gapAdjustment = (g.padding - f.getSize(g.bounds)) / 2;\r\n g.minVar.cIn.forEach(function (c) { return c.gap += gapAdjustment; });\r\n g.minVar.cOut.forEach(function (c) { c.left = g.maxVar; c.gap += gapAdjustment; });\r\n });\r\n }\r\n return childConstraints.concat(cs);\r\n}\r\nfunction generateConstraints(rs, vars, rect, minSep) {\r\n var i, n = rs.length;\r\n var N = 2 * n;\r\n console.assert(vars.length >= n);\r\n var events = new Array(N);\r\n for (i = 0; i < n; ++i) {\r\n var r = rs[i];\r\n var v = new Node(vars[i], r, rect.getCentre(r));\r\n events[i] = new Event(true, v, rect.getOpen(r));\r\n events[i + n] = new Event(false, v, rect.getClose(r));\r\n }\r\n events.sort(compareEvents);\r\n var cs = new Array();\r\n var scanline = makeRBTree();\r\n for (i = 0; i < N; ++i) {\r\n var e = events[i];\r\n var v = e.v;\r\n if (e.isOpen) {\r\n scanline.insert(v);\r\n rect.findNeighbours(v, scanline);\r\n }\r\n else {\r\n scanline.remove(v);\r\n var makeConstraint = function (l, r) {\r\n var sep = (rect.getSize(l.r) + rect.getSize(r.r)) / 2 + minSep;\r\n cs.push(new vpsc_1.Constraint(l.v, r.v, sep));\r\n };\r\n var visitNeighbours = function (forward, reverse, mkcon) {\r\n var u, it = v[forward].iterator();\r\n while ((u = it[forward]()) !== null) {\r\n mkcon(u, v);\r\n u[reverse].remove(v);\r\n }\r\n };\r\n visitNeighbours(\"prev\", \"next\", function (u, v) { return makeConstraint(u, v); });\r\n visitNeighbours(\"next\", \"prev\", function (u, v) { return makeConstraint(v, u); });\r\n }\r\n }\r\n console.assert(scanline.size === 0);\r\n return cs;\r\n}\r\nfunction findXNeighbours(v, scanline) {\r\n var f = function (forward, reverse) {\r\n var it = scanline.findIter(v);\r\n var u;\r\n while ((u = it[forward]()) !== null) {\r\n var uovervX = u.r.overlapX(v.r);\r\n if (uovervX <= 0 || uovervX <= u.r.overlapY(v.r)) {\r\n v[forward].insert(u);\r\n u[reverse].insert(v);\r\n }\r\n if (uovervX <= 0) {\r\n break;\r\n }\r\n }\r\n };\r\n f(\"next\", \"prev\");\r\n f(\"prev\", \"next\");\r\n}\r\nfunction findYNeighbours(v, scanline) {\r\n var f = function (forward, reverse) {\r\n var u = scanline.findIter(v)[forward]();\r\n if (u !== null && u.r.overlapX(v.r) > 0) {\r\n v[forward].insert(u);\r\n u[reverse].insert(v);\r\n }\r\n };\r\n f(\"next\", \"prev\");\r\n f(\"prev\", \"next\");\r\n}\r\nfunction generateXConstraints(rs, vars) {\r\n return generateConstraints(rs, vars, xRect, 1e-6);\r\n}\r\nexports.generateXConstraints = generateXConstraints;\r\nfunction generateYConstraints(rs, vars) {\r\n return generateConstraints(rs, vars, yRect, 1e-6);\r\n}\r\nexports.generateYConstraints = generateYConstraints;\r\nfunction generateXGroupConstraints(root) {\r\n return generateGroupConstraints(root, xRect, 1e-6);\r\n}\r\nexports.generateXGroupConstraints = generateXGroupConstraints;\r\nfunction generateYGroupConstraints(root) {\r\n return generateGroupConstraints(root, yRect, 1e-6);\r\n}\r\nexports.generateYGroupConstraints = generateYGroupConstraints;\r\nfunction removeOverlaps(rs) {\r\n var vs = rs.map(function (r) { return new vpsc_1.Variable(r.cx()); });\r\n var cs = generateXConstraints(rs, vs);\r\n var solver = new vpsc_1.Solver(vs, cs);\r\n solver.solve();\r\n vs.forEach(function (v, i) { return rs[i].setXCentre(v.position()); });\r\n vs = rs.map(function (r) { return new vpsc_1.Variable(r.cy()); });\r\n cs = generateYConstraints(rs, vs);\r\n solver = new vpsc_1.Solver(vs, cs);\r\n solver.solve();\r\n vs.forEach(function (v, i) { return rs[i].setYCentre(v.position()); });\r\n}\r\nexports.removeOverlaps = removeOverlaps;\r\nvar IndexedVariable = (function (_super) {\r\n __extends(IndexedVariable, _super);\r\n function IndexedVariable(index, w) {\r\n var _this = _super.call(this, 0, w) || this;\r\n _this.index = index;\r\n return _this;\r\n }\r\n return IndexedVariable;\r\n}(vpsc_1.Variable));\r\nexports.IndexedVariable = IndexedVariable;\r\nvar Projection = (function () {\r\n function Projection(nodes, groups, rootGroup, constraints, avoidOverlaps) {\r\n var _this = this;\r\n if (rootGroup === void 0) { rootGroup = null; }\r\n if (constraints === void 0) { constraints = null; }\r\n if (avoidOverlaps === void 0) { avoidOverlaps = false; }\r\n this.nodes = nodes;\r\n this.groups = groups;\r\n this.rootGroup = rootGroup;\r\n this.avoidOverlaps = avoidOverlaps;\r\n this.variables = nodes.map(function (v, i) {\r\n return v.variable = new IndexedVariable(i, 1);\r\n });\r\n if (constraints)\r\n this.createConstraints(constraints);\r\n if (avoidOverlaps && rootGroup && typeof rootGroup.groups !== 'undefined') {\r\n nodes.forEach(function (v) {\r\n if (!v.width || !v.height) {\r\n v.bounds = new Rectangle(v.x, v.x, v.y, v.y);\r\n return;\r\n }\r\n var w2 = v.width / 2, h2 = v.height / 2;\r\n v.bounds = new Rectangle(v.x - w2, v.x + w2, v.y - h2, v.y + h2);\r\n });\r\n computeGroupBounds(rootGroup);\r\n var i = nodes.length;\r\n groups.forEach(function (g) {\r\n _this.variables[i] = g.minVar = new IndexedVariable(i++, typeof g.stiffness !== \"undefined\" ? g.stiffness : 0.01);\r\n _this.variables[i] = g.maxVar = new IndexedVariable(i++, typeof g.stiffness !== \"undefined\" ? g.stiffness : 0.01);\r\n });\r\n }\r\n }\r\n Projection.prototype.createSeparation = function (c) {\r\n return new vpsc_1.Constraint(this.nodes[c.left].variable, this.nodes[c.right].variable, c.gap, typeof c.equality !== \"undefined\" ? c.equality : false);\r\n };\r\n Projection.prototype.makeFeasible = function (c) {\r\n var _this = this;\r\n if (!this.avoidOverlaps)\r\n return;\r\n var axis = 'x', dim = 'width';\r\n if (c.axis === 'x')\r\n axis = 'y', dim = 'height';\r\n var vs = c.offsets.map(function (o) { return _this.nodes[o.node]; }).sort(function (a, b) { return a[axis] - b[axis]; });\r\n var p = null;\r\n vs.forEach(function (v) {\r\n if (p) {\r\n var nextPos = p[axis] + p[dim];\r\n if (nextPos > v[axis]) {\r\n v[axis] = nextPos;\r\n }\r\n }\r\n p = v;\r\n });\r\n };\r\n Projection.prototype.createAlignment = function (c) {\r\n var _this = this;\r\n var u = this.nodes[c.offsets[0].node].variable;\r\n this.makeFeasible(c);\r\n var cs = c.axis === 'x' ? this.xConstraints : this.yConstraints;\r\n c.offsets.slice(1).forEach(function (o) {\r\n var v = _this.nodes[o.node].variable;\r\n cs.push(new vpsc_1.Constraint(u, v, o.offset, true));\r\n });\r\n };\r\n Projection.prototype.createConstraints = function (constraints) {\r\n var _this = this;\r\n var isSep = function (c) { return typeof c.type === 'undefined' || c.type === 'separation'; };\r\n this.xConstraints = constraints\r\n .filter(function (c) { return c.axis === \"x\" && isSep(c); })\r\n .map(function (c) { return _this.createSeparation(c); });\r\n this.yConstraints = constraints\r\n .filter(function (c) { return c.axis === \"y\" && isSep(c); })\r\n .map(function (c) { return _this.createSeparation(c); });\r\n constraints\r\n .filter(function (c) { return c.type === 'alignment'; })\r\n .forEach(function (c) { return _this.createAlignment(c); });\r\n };\r\n Projection.prototype.setupVariablesAndBounds = function (x0, y0, desired, getDesired) {\r\n this.nodes.forEach(function (v, i) {\r\n if (v.fixed) {\r\n v.variable.weight = v.fixedWeight ? v.fixedWeight : 1000;\r\n desired[i] = getDesired(v);\r\n }\r\n else {\r\n v.variable.weight = 1;\r\n }\r\n var w = (v.width || 0) / 2, h = (v.height || 0) / 2;\r\n var ix = x0[i], iy = y0[i];\r\n v.bounds = new Rectangle(ix - w, ix + w, iy - h, iy + h);\r\n });\r\n };\r\n Projection.prototype.xProject = function (x0, y0, x) {\r\n if (!this.rootGroup && !(this.avoidOverlaps || this.xConstraints))\r\n return;\r\n this.project(x0, y0, x0, x, function (v) { return v.px; }, this.xConstraints, generateXGroupConstraints, function (v) { return v.bounds.setXCentre(x[v.variable.index] = v.variable.position()); }, function (g) {\r\n var xmin = x[g.minVar.index] = g.minVar.position();\r\n var xmax = x[g.maxVar.index] = g.maxVar.position();\r\n var p2 = g.padding / 2;\r\n g.bounds.x = xmin - p2;\r\n g.bounds.X = xmax + p2;\r\n });\r\n };\r\n Projection.prototype.yProject = function (x0, y0, y) {\r\n if (!this.rootGroup && !this.yConstraints)\r\n return;\r\n this.project(x0, y0, y0, y, function (v) { return v.py; }, this.yConstraints, generateYGroupConstraints, function (v) { return v.bounds.setYCentre(y[v.variable.index] = v.variable.position()); }, function (g) {\r\n var ymin = y[g.minVar.index] = g.minVar.position();\r\n var ymax = y[g.maxVar.index] = g.maxVar.position();\r\n var p2 = g.padding / 2;\r\n g.bounds.y = ymin - p2;\r\n ;\r\n g.bounds.Y = ymax + p2;\r\n });\r\n };\r\n Projection.prototype.projectFunctions = function () {\r\n var _this = this;\r\n return [\r\n function (x0, y0, x) { return _this.xProject(x0, y0, x); },\r\n function (x0, y0, y) { return _this.yProject(x0, y0, y); }\r\n ];\r\n };\r\n Projection.prototype.project = function (x0, y0, start, desired, getDesired, cs, generateConstraints, updateNodeBounds, updateGroupBounds) {\r\n this.setupVariablesAndBounds(x0, y0, desired, getDesired);\r\n if (this.rootGroup && this.avoidOverlaps) {\r\n computeGroupBounds(this.rootGroup);\r\n cs = cs.concat(generateConstraints(this.rootGroup));\r\n }\r\n this.solve(this.variables, cs, start, desired);\r\n this.nodes.forEach(updateNodeBounds);\r\n if (this.rootGroup && this.avoidOverlaps) {\r\n this.groups.forEach(updateGroupBounds);\r\n computeGroupBounds(this.rootGroup);\r\n }\r\n };\r\n Projection.prototype.solve = function (vs, cs, starting, desired) {\r\n var solver = new vpsc_1.Solver(vs, cs);\r\n solver.setStartingPositions(starting);\r\n solver.setDesiredPositions(desired);\r\n solver.solve();\r\n };\r\n return Projection;\r\n}());\r\nexports.Projection = Projection;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjdGFuZ2xlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vV2ViQ29sYS9zcmMvcmVjdGFuZ2xlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtCQUFtRDtBQUNuRCxtQ0FBK0I7QUFrQjNCLFNBQWdCLGtCQUFrQixDQUFDLENBQWtCO0lBQ2pELENBQUMsQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLENBQUMsTUFBTSxLQUFLLFdBQVcsQ0FBQyxDQUFDO1FBQ3hDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQUMsQ0FBWSxFQUFFLENBQUMsSUFBSyxPQUFBLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFqQixDQUFpQixFQUFFLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDNUUsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3RCLElBQUksT0FBTyxDQUFDLENBQUMsTUFBTSxLQUFLLFdBQVc7UUFDL0IsQ0FBQyxDQUFDLE1BQU0sR0FBYyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFDLENBQVksRUFBRSxDQUFDLElBQUssT0FBQSxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQTlCLENBQThCLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3pHLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQztBQUNwQixDQUFDO0FBUkQsZ0RBUUM7QUFFRDtJQUNJLG1CQUNXLENBQVMsRUFDVCxDQUFTLEVBQ1QsQ0FBUyxFQUNULENBQVM7UUFIVCxNQUFDLEdBQUQsQ0FBQyxDQUFRO1FBQ1QsTUFBQyxHQUFELENBQUMsQ0FBUTtRQUNU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QUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNySCxDQUFDO0lBV0QscUNBQWlCLEdBQWpCLFVBQWtCLEVBQVUsRUFBRSxFQUFVLEVBQUUsRUFBVSxFQUFFLEVBQVU7UUFDNUQsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDckMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ2hDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUNwQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3RDLElBQUksYUFBYSxHQUFHLEVBQUUsQ0FBQztRQUN2QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFO1lBQ3hCLElBQUksQ0FBQyxHQUFHLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVB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QUcsRUFBRSxDQUFDLE1BQU0sQ0FBQztJQUNyQixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2QsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLElBQUksTUFBTSxHQUFHLElBQUksS0FBSyxDQUFRLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFO1FBQ3BCLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNkLElBQUksQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hELE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoRCxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ3pEO0lBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUMzQixJQUFJLEVBQUUsR0FBRyxJQUFJLEtBQUssRUFBYyxDQUFDO0lBQ2pDLElBQUksUUFBUSxHQUFHLFVBQVUsRUFBRSxDQUFDO0lBQzVCLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFO1FBQ3BCLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsQixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ1os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","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"klayjs\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"klayjs\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"cytoscapeKlay\"] = factory(require(\"klayjs\"));\n\telse\n\t\troot[\"cytoscapeKlay\"] = factory(root[\"$klay\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_4__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// identity function for calling harmony imports with the correct context\n/******/ \t__webpack_require__.i = function(value) { return value; };\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 3);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar klay = __webpack_require__(4);\nvar assign = __webpack_require__(1);\nvar defaults = __webpack_require__(2);\n\nvar klayNSLookup = {\n 'addUnnecessaryBendpoints': 'de.cau.cs.kieler.klay.layered.unnecessaryBendpoints',\n 'alignment': 'de.cau.cs.kieler.alignment',\n 'aspectRatio': 'de.cau.cs.kieler.aspectRatio',\n 'borderSpacing': 'borderSpacing',\n 'compactComponents': 'de.cau.cs.kieler.klay.layered.components.compact',\n 'compactionStrategy': 'de.cau.cs.kieler.klay.layered.nodeplace.compactionStrategy',\n 'contentAlignment': 'de.cau.cs.kieler.klay.layered.contentAlignment',\n 'crossingMinimization': 'de.cau.cs.kieler.klay.layered.crossMin',\n 'cycleBreaking': 'de.cau.cs.kieler.klay.layered.cycleBreaking',\n 'debugMode': 'de.cau.cs.kieler.debugMode',\n 'direction': 'de.cau.cs.kieler.direction',\n 'edgeLabelSideSelection': 'de.cau.cs.kieler.klay.layered.edgeLabelSideSelection',\n // 'de.cau.cs.kieler.klay.layered.edgeNodeSpacingFactor': options.edgeNodeSpacingFactor,\n 'edgeRouting': 'de.cau.cs.kieler.edgeRouting',\n 'edgeSpacingFactor': 'de.cau.cs.kieler.klay.layered.edgeSpacingFactor',\n 'feedbackEdges': 'de.cau.cs.kieler.klay.layered.feedBackEdges',\n 'fixedAlignment': 'de.cau.cs.kieler.klay.layered.fixedAlignment',\n 'greedySwitchCrossingMinimization': 'de.cau.cs.kieler.klay.layered.greedySwitch',\n 'hierarchyHandling': 'de.cau.cs.kieler.hierarchyHandling',\n 'inLayerSpacingFactor': 'de.cau.cs.kieler.klay.layered.inLayerSpacingFactor',\n 'interactiveReferencePoint': 'de.cau.cs.kieler.klay.layered.interactiveReferencePoint',\n 'layerConstraint': 'de.cau.cs.kieler.klay.layered.layerConstraint',\n 'layoutHierarchy': 'de.cau.cs.kieler.layoutHierarchy',\n 'linearSegmentsDeflectionDampening': 'de.cau.cs.kieler.klay.layered.linearSegmentsDeflectionDampening',\n 'mergeEdges': 'de.cau.cs.kieler.klay.layered.mergeEdges',\n 'mergeHierarchyCrossingEdges': 'de.cau.cs.kieler.klay.layered.mergeHierarchyEdges',\n 'noLayout': 'de.cau.cs.kieler.noLayout',\n 'nodeLabelPlacement': 'de.cau.cs.kieler.nodeLabelPlacement',\n 'nodeLayering': 'de.cau.cs.kieler.klay.layered.nodeLayering',\n 'nodePlacement': 'de.cau.cs.kieler.klay.layered.nodePlace',\n 'portAlignment': 'de.cau.cs.kieler.portAlignment',\n 'portAlignmentEastern': 'de.cau.cs.kieler.portAlignment.east',\n 'portAlignmentNorth': 'de.cau.cs.kieler.portAlignment.north',\n 'portAlignmentSouth': 'de.cau.cs.kieler.portAlignment.south',\n 'portAlignmentWest': 'de.cau.cs.kieler.portAlignment.west',\n 'portConstraints': 'de.cau.cs.kieler.portConstraints',\n 'portLabelPlacement': 'de.cau.cs.kieler.portLabelPlacement',\n 'portOffset': 'de.cau.cs.kieler.offset',\n 'portSide': 'de.cau.cs.kieler.portSide',\n 'portSpacing': 'de.cau.cs.kieler.portSpacing',\n 'postCompaction': 'de.cau.cs.kieler.klay.layered.postCompaction',\n 'priority': 'de.cau.cs.kieler.priority',\n 'randomizationSeed': 'de.cau.cs.kieler.randomSeed',\n 'routeSelfLoopInside': 'de.cau.cs.kieler.selfLoopInside',\n 'separateConnectedComponents': 'de.cau.cs.kieler.separateConnComp',\n 'sizeConstraint': 'de.cau.cs.kieler.sizeConstraint',\n 'sizeOptions': 'de.cau.cs.kieler.sizeOptions',\n 'spacing': 'de.cau.cs.kieler.spacing',\n 'splineSelfLoopPlacement': 'de.cau.cs.kieler.klay.layered.splines.selfLoopPlacement',\n 'thoroughness': 'de.cau.cs.kieler.klay.layered.thoroughness',\n 'wideNodesOnMultipleLayers': 'de.cau.cs.kieler.klay.layered.wideNodesOnMultipleLayers'\n};\n\nvar mapToKlayNS = function mapToKlayNS(klayOpts) {\n var keys = Object.keys(klayOpts);\n var ret = {};\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var nsKey = klayNSLookup[key];\n var val = klayOpts[key];\n\n ret[nsKey] = val;\n }\n\n return ret;\n};\n\nvar klayOverrides = {\n interactiveReferencePoint: 'CENTER' // Determines which point of a node is considered by interactive layout phases.\n};\n\nvar getPos = function getPos(ele) {\n var parent = ele.parent();\n var k = ele.scratch('klay');\n var p = {\n x: k.x,\n y: k.y\n };\n\n while (parent.nonempty()) {\n var kp = parent.scratch('klay');\n p.x += kp.x;\n p.y += kp.y;\n parent = parent.parent();\n }\n\n return p;\n};\n\nvar makeNode = function makeNode(node, options) {\n var dims = node.layoutDimensions(options);\n var padding = node.numericStyle('padding');\n\n var k = {\n _cyEle: node,\n id: node.id(),\n padding: {\n top: padding,\n left: padding,\n bottom: padding,\n right: padding\n }\n };\n\n if (!node.isParent()) {\n k.width = dims.w;\n k.height = dims.h;\n }\n\n node.scratch('klay', k);\n\n return k;\n};\n\nvar makeEdge = function makeEdge(edge, options) {\n var k = {\n _cyEle: edge,\n id: edge.id(),\n source: edge.data('source'),\n target: edge.data('target'),\n properties: {}\n };\n\n var priority = options.priority(edge);\n\n if (priority != null) {\n k.properties.priority = priority;\n }\n\n edge.scratch('klay', k);\n\n return k;\n};\n\nvar makeGraph = function makeGraph(nodes, edges, options) {\n var klayNodes = [];\n var klayEdges = [];\n var klayEleLookup = {};\n var graph = {\n id: 'root',\n children: [],\n edges: []\n };\n\n // map all nodes\n for (var i = 0; i < nodes.length; i++) {\n var n = nodes[i];\n var k = makeNode(n, options);\n\n klayNodes.push(k);\n\n klayEleLookup[n.id()] = k;\n }\n\n // map all edges\n for (var _i = 0; _i < edges.length; _i++) {\n var e = edges[_i];\n var _k = makeEdge(e, options);\n\n klayEdges.push(_k);\n\n klayEleLookup[e.id()] = _k;\n }\n\n // make hierarchy\n for (var _i2 = 0; _i2 < klayNodes.length; _i2++) {\n var _k2 = klayNodes[_i2];\n var _n = _k2._cyEle;\n\n if (!_n.isChild()) {\n graph.children.push(_k2);\n } else {\n var parent = _n.parent();\n var parentK = klayEleLookup[parent.id()];\n\n var children = parentK.children = parentK.children || [];\n\n children.push(_k2);\n }\n }\n\n for (var _i3 = 0; _i3 < klayEdges.length; _i3++) {\n var _k3 = klayEdges[_i3];\n var _e = _k3._cyEle;\n var parentSrc = _e.source().parent();\n var parentTgt = _e.target().parent();\n\n // put all edges in the top level for now\n // TODO does this cause issues in certain edgecases?\n if (false) {\n var kp = klayEleLookup[parentSrc.id()];\n\n kp.edges = kp.edges || [];\n\n kp.edges.push(_k3);\n } else {\n graph.edges.push(_k3);\n }\n }\n\n return graph;\n};\n\nfunction Layout(options) {\n var klayOptions = options.klay;\n\n this.options = assign({}, defaults, options);\n\n this.options.klay = assign({}, defaults.klay, klayOptions, klayOverrides);\n}\n\nLayout.prototype.run = function () {\n var layout = this;\n var options = this.options;\n\n var eles = options.eles;\n var nodes = eles.nodes();\n var edges = eles.edges();\n\n var graph = makeGraph(nodes, edges, options);\n\n klay.layout({\n graph: graph,\n options: mapToKlayNS(options.klay),\n success: function success() {},\n error: function error(_error) {\n throw _error;\n }\n });\n\n nodes.filter(function (n) {\n return !n.isParent();\n }).layoutPositions(layout, options, getPos);\n\n return this;\n};\n\nLayout.prototype.stop = function () {\n return this; // chaining\n};\n\nLayout.prototype.destroy = function () {\n return this; // chaining\n};\n\nmodule.exports = Layout;\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n// Simple, internal Object.assign() polyfill for options objects etc.\n\nmodule.exports = Object.assign != null ? Object.assign.bind(Object) : function (tgt) {\n for (var _len = arguments.length, srcs = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n srcs[_key - 1] = arguments[_key];\n }\n\n srcs.filter(function (src) {\n return src != null;\n }).forEach(function (src) {\n Object.keys(src).forEach(function (k) {\n return tgt[k] = src[k];\n });\n });\n\n return tgt;\n};\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar defaults = {\n nodeDimensionsIncludeLabels: false, // Boolean which changes whether label dimensions are included when calculating node dimensions\n fit: true, // Whether to fit\n padding: 20, // Padding on fit\n animate: false, // Whether to transition the node positions\n animateFilter: function animateFilter(node, i) {\n return true;\n }, // Whether to animate specific nodes when animation is on; non-animated nodes immediately go to their final positions\n animationDuration: 500, // Duration of animation in ms if enabled\n animationEasing: undefined, // Easing of animation if enabled\n transform: function transform(node, pos) {\n return pos;\n }, // A function that applies a transform to the final node position\n ready: undefined, // Callback on layoutready\n stop: undefined, // Callback on layoutstop\n klay: {\n // Following descriptions taken from http://layout.rtsys.informatik.uni-kiel.de:9444/Providedlayout.html?algorithm=de.cau.cs.kieler.klay.layered\n addUnnecessaryBendpoints: false, // Adds bend points even if an edge does not change direction.\n aspectRatio: 1.6, // The aimed aspect ratio of the drawing, that is the quotient of width by height\n borderSpacing: 20, // Minimal amount of space to be left to the border\n compactComponents: false, // Tries to further compact components (disconnected sub-graphs).\n crossingMinimization: 'LAYER_SWEEP', // Strategy for crossing minimization.\n /* LAYER_SWEEP The layer sweep algorithm iterates multiple times over the layers, trying to find node orderings that minimize the number of crossings. The algorithm uses randomization to increase the odds of finding a good result. To improve its results, consider increasing the Thoroughness option, which influences the number of iterations done. The Randomization seed also influences results.\n INTERACTIVE Orders the nodes of each layer by comparing their positions before the layout algorithm was started. The idea is that the relative order of nodes as it was before layout was applied is not changed. This of course requires valid positions for all nodes to have been set on the input graph before calling the layout algorithm. The interactive layer sweep algorithm uses the Interactive Reference Point option to determine which reference point of nodes are used to compare positions. */\n cycleBreaking: 'GREEDY', // Strategy for cycle breaking. Cycle breaking looks for cycles in the graph and determines which edges to reverse to break the cycles. Reversed edges will end up pointing to the opposite direction of regular edges (that is, reversed edges will point left if edges usually point right).\n /* GREEDY This algorithm reverses edges greedily. The algorithm tries to avoid edges that have the Priority property set.\n INTERACTIVE The interactive algorithm tries to reverse edges that already pointed leftwards in the input graph. This requires node and port coordinates to have been set to sensible values.*/\n direction: 'UNDEFINED', // Overall direction of edges: horizontal (right / left) or vertical (down / up)\n /* UNDEFINED, RIGHT, LEFT, DOWN, UP */\n edgeRouting: 'ORTHOGONAL', // Defines how edges are routed (POLYLINE, ORTHOGONAL, SPLINES)\n edgeSpacingFactor: 0.5, // Factor by which the object spacing is multiplied to arrive at the minimal spacing between edges.\n feedbackEdges: false, // Whether feedback edges should be highlighted by routing around the nodes.\n fixedAlignment: 'NONE', // Tells the BK node placer to use a certain alignment instead of taking the optimal result. This option should usually be left alone.\n /* NONE Chooses the smallest layout from the four possible candidates.\n LEFTUP Chooses the left-up candidate from the four possible candidates.\n RIGHTUP Chooses the right-up candidate from the four possible candidates.\n LEFTDOWN Chooses the left-down candidate from the four possible candidates.\n RIGHTDOWN Chooses the right-down candidate from the four possible candidates.\n BALANCED Creates a balanced layout from the four possible candidates. */\n inLayerSpacingFactor: 1.0, // Factor by which the usual spacing is multiplied to determine the in-layer spacing between objects.\n layoutHierarchy: false, // Whether the selected layouter should consider the full hierarchy\n linearSegmentsDeflectionDampening: 0.3, // Dampens the movement of nodes to keep the diagram from getting too large.\n mergeEdges: false, // Edges that have no ports are merged so they touch the connected nodes at the same points.\n mergeHierarchyCrossingEdges: true, // If hierarchical layout is active, hierarchy-crossing edges use as few hierarchical ports as possible.\n nodeLayering: 'NETWORK_SIMPLEX', // Strategy for node layering.\n /* NETWORK_SIMPLEX This algorithm tries to minimize the length of edges. This is the most computationally intensive algorithm. The number of iterations after which it aborts if it hasn't found a result yet can be set with the Maximal Iterations option.\n LONGEST_PATH A very simple algorithm that distributes nodes along their longest path to a sink node.\n INTERACTIVE Distributes the nodes into layers by comparing their positions before the layout algorithm was started. The idea is that the relative horizontal order of nodes as it was before layout was applied is not changed. This of course requires valid positions for all nodes to have been set on the input graph before calling the layout algorithm. The interactive node layering algorithm uses the Interactive Reference Point option to determine which reference point of nodes are used to compare positions. */\n nodePlacement: 'BRANDES_KOEPF', // Strategy for Node Placement\n /* BRANDES_KOEPF Minimizes the number of edge bends at the expense of diagram size: diagrams drawn with this algorithm are usually higher than diagrams drawn with other algorithms.\n LINEAR_SEGMENTS Computes a balanced placement.\n INTERACTIVE Tries to keep the preset y coordinates of nodes from the original layout. For dummy nodes, a guess is made to infer their coordinates. Requires the other interactive phase implementations to have run as well.\n SIMPLE Minimizes the area at the expense of... well, pretty much everything else. */\n randomizationSeed: 1, // Seed used for pseudo-random number generators to control the layout algorithm; 0 means a new seed is generated\n routeSelfLoopInside: false, // Whether a self-loop is routed around or inside its node.\n separateConnectedComponents: true, // Whether each connected component should be processed separately\n spacing: 20, // Overall setting for the minimal amount of space to be left between objects\n thoroughness: 7 // How much effort should be spent to produce a nice layout..\n },\n priority: function priority(edge) {\n return null;\n } // Edges with a non-nil value are skipped when geedy edge cycle breaking is enabled\n};\n\nmodule.exports = defaults;\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar impl = __webpack_require__(0);\n\n// registers the extension on a cytoscape lib ref\nvar register = function register(cytoscape) {\n if (!cytoscape) {\n return;\n } // can't register if cytoscape unspecified\n\n cytoscape('layout', 'klay', impl); // register with cytoscape.js\n};\n\nif (typeof cytoscape !== 'undefined') {\n // expose to global cytoscape (i.e. window.cytoscape)\n register(cytoscape);\n}\n\nmodule.exports = register;\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_4__;\n\n/***/ })\n/******/ ]);\n});","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nfunction unionCount(a, b) {\r\n var u = {};\r\n for (var i in a)\r\n u[i] = {};\r\n for (var i in b)\r\n u[i] = {};\r\n return Object.keys(u).length;\r\n}\r\nfunction intersectionCount(a, b) {\r\n var n = 0;\r\n for (var i in a)\r\n if (typeof b[i] !== 'undefined')\r\n ++n;\r\n return n;\r\n}\r\nfunction getNeighbours(links, la) {\r\n var neighbours = {};\r\n var addNeighbours = function (u, v) {\r\n if (typeof neighbours[u] === 'undefined')\r\n neighbours[u] = {};\r\n neighbours[u][v] = {};\r\n };\r\n links.forEach(function (e) {\r\n var u = la.getSourceIndex(e), v = la.getTargetIndex(e);\r\n addNeighbours(u, v);\r\n addNeighbours(v, u);\r\n });\r\n return neighbours;\r\n}\r\nfunction computeLinkLengths(links, w, f, la) {\r\n var neighbours = getNeighbours(links, la);\r\n links.forEach(function (l) {\r\n var a = neighbours[la.getSourceIndex(l)];\r\n var b = neighbours[la.getTargetIndex(l)];\r\n la.setLength(l, 1 + w * f(a, b));\r\n });\r\n}\r\nfunction symmetricDiffLinkLengths(links, la, w) {\r\n if (w === void 0) { w = 1; }\r\n computeLinkLengths(links, w, function (a, b) { return Math.sqrt(unionCount(a, b) - intersectionCount(a, b)); }, la);\r\n}\r\nexports.symmetricDiffLinkLengths = symmetricDiffLinkLengths;\r\nfunction jaccardLinkLengths(links, la, w) {\r\n if (w === void 0) { w = 1; }\r\n computeLinkLengths(links, w, function (a, b) {\r\n return Math.min(Object.keys(a).length, Object.keys(b).length) < 1.1 ? 0 : intersectionCount(a, b) / unionCount(a, b);\r\n }, la);\r\n}\r\nexports.jaccardLinkLengths = jaccardLinkLengths;\r\nfunction generateDirectedEdgeConstraints(n, links, axis, la) {\r\n var components = stronglyConnectedComponents(n, links, la);\r\n var nodes = {};\r\n components.forEach(function (c, i) {\r\n return c.forEach(function (v) { return nodes[v] = i; });\r\n });\r\n var constraints = [];\r\n links.forEach(function (l) {\r\n var ui = la.getSourceIndex(l), vi = la.getTargetIndex(l), u = nodes[ui], v = nodes[vi];\r\n if (u !== v) {\r\n constraints.push({\r\n axis: axis,\r\n left: ui,\r\n right: vi,\r\n gap: la.getMinSeparation(l)\r\n });\r\n }\r\n });\r\n return constraints;\r\n}\r\nexports.generateDirectedEdgeConstraints = generateDirectedEdgeConstraints;\r\nfunction stronglyConnectedComponents(numVertices, edges, la) {\r\n var nodes = [];\r\n var index = 0;\r\n var stack = [];\r\n var components = [];\r\n function strongConnect(v) {\r\n v.index = v.lowlink = index++;\r\n stack.push(v);\r\n v.onStack = true;\r\n for (var _i = 0, _a = v.out; _i < _a.length; _i++) {\r\n var w = _a[_i];\r\n if (typeof w.index === 'undefined') {\r\n strongConnect(w);\r\n v.lowlink = Math.min(v.lowlink, w.lowlink);\r\n }\r\n else if (w.onStack) {\r\n v.lowlink = Math.min(v.lowlink, w.index);\r\n }\r\n }\r\n if (v.lowlink === v.index) {\r\n var component = [];\r\n while (stack.length) {\r\n w = stack.pop();\r\n w.onStack = false;\r\n component.push(w);\r\n if (w === v)\r\n break;\r\n }\r\n components.push(component.map(function (v) { return v.id; }));\r\n }\r\n }\r\n for (var i = 0; i < numVertices; i++) {\r\n nodes.push({ id: i, out: [] });\r\n }\r\n for (var _i = 0, edges_1 = edges; _i < edges_1.length; _i++) {\r\n var e = edges_1[_i];\r\n var v_1 = nodes[la.getSourceIndex(e)], w = nodes[la.getTargetIndex(e)];\r\n v_1.out.push(w);\r\n }\r\n for (var _a = 0, nodes_1 = nodes; _a < nodes_1.length; _a++) {\r\n var v = nodes_1[_a];\r\n if (typeof v.index === 'undefined')\r\n strongConnect(v);\r\n }\r\n return components;\r\n}\r\nexports.stronglyConnectedComponents = stronglyConnectedComponents;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlua2xlbmd0aHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9XZWJDb2xhL3NyYy9saW5rbGVuZ3Rocy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQVVJLFNBQVMsVUFBVSxDQUFDLENBQU0sRUFBRSxDQUFNO0lBQzlCLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUNYLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQztRQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDM0IsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUMzQixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO0FBQ2pDLENBQUM7QUFHRCxTQUFTLGlCQUFpQixDQUFDLENBQVcsRUFBRSxDQUFXO0lBQy9DLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNWLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQztRQUFFLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssV0FBVztZQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3RELE9BQU8sQ0FBQyxDQUFDO0FBQ2IsQ0FBQztBQUVELFNBQVMsYUFBYSxDQUFPLEtBQWEsRUFBRSxFQUFzQjtJQUM5RCxJQUFJLFVBQVUsR0FBRyxFQUFFLENBQUM7SUFDcEIsSUFBSSxhQUFhLEdBQUcsVUFBQyxDQUFDLEVBQUUsQ0FBQztRQUNyQixJQUFJLE9BQU8sVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLFdBQVc7WUFDcEMsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUN2QixVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQzFCLENBQUMsQ0FBQztJQUNGLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBQSxDQUFDO1FBQ1gs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","function lerp(v0, v1, t) {\n return v0*(1-t)+v1*t\n}\nmodule.exports = lerp","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar PairingHeap = (function () {\r\n function PairingHeap(elem) {\r\n this.elem = elem;\r\n this.subheaps = [];\r\n }\r\n PairingHeap.prototype.toString = function (selector) {\r\n var str = \"\", needComma = false;\r\n for (var i = 0; i < this.subheaps.length; ++i) {\r\n var subheap = this.subheaps[i];\r\n if (!subheap.elem) {\r\n needComma = false;\r\n continue;\r\n }\r\n if (needComma) {\r\n str = str + \",\";\r\n }\r\n str = str + subheap.toString(selector);\r\n needComma = true;\r\n }\r\n if (str !== \"\") {\r\n str = \"(\" + str + \")\";\r\n }\r\n return (this.elem ? selector(this.elem) : \"\") + str;\r\n };\r\n PairingHeap.prototype.forEach = function (f) {\r\n if (!this.empty()) {\r\n f(this.elem, this);\r\n this.subheaps.forEach(function (s) { return s.forEach(f); });\r\n }\r\n };\r\n PairingHeap.prototype.count = function () {\r\n return this.empty() ? 0 : 1 + this.subheaps.reduce(function (n, h) {\r\n return n + h.count();\r\n }, 0);\r\n };\r\n PairingHeap.prototype.min = function () {\r\n return this.elem;\r\n };\r\n PairingHeap.prototype.empty = function () {\r\n return this.elem == null;\r\n };\r\n PairingHeap.prototype.contains = function (h) {\r\n if (this === h)\r\n return true;\r\n for (var i = 0; i < this.subheaps.length; i++) {\r\n if (this.subheaps[i].contains(h))\r\n return true;\r\n }\r\n return false;\r\n };\r\n PairingHeap.prototype.isHeap = function (lessThan) {\r\n var _this = this;\r\n return this.subheaps.every(function (h) { return lessThan(_this.elem, h.elem) && h.isHeap(lessThan); });\r\n };\r\n PairingHeap.prototype.insert = function (obj, lessThan) {\r\n return this.merge(new PairingHeap(obj), lessThan);\r\n };\r\n PairingHeap.prototype.merge = function (heap2, lessThan) {\r\n if (this.empty())\r\n return heap2;\r\n else if (heap2.empty())\r\n return this;\r\n else if (lessThan(this.elem, heap2.elem)) {\r\n this.subheaps.push(heap2);\r\n return this;\r\n }\r\n else {\r\n heap2.subheaps.push(this);\r\n return heap2;\r\n }\r\n };\r\n PairingHeap.prototype.removeMin = function (lessThan) {\r\n if (this.empty())\r\n return null;\r\n else\r\n return this.mergePairs(lessThan);\r\n };\r\n PairingHeap.prototype.mergePairs = function (lessThan) {\r\n if (this.subheaps.length == 0)\r\n return new PairingHeap(null);\r\n else if (this.subheaps.length == 1) {\r\n return this.subheaps[0];\r\n }\r\n else {\r\n var firstPair = this.subheaps.pop().merge(this.subheaps.pop(), lessThan);\r\n var remaining = this.mergePairs(lessThan);\r\n return firstPair.merge(remaining, lessThan);\r\n }\r\n };\r\n PairingHeap.prototype.decreaseKey = function (subheap, newValue, setHeapNode, lessThan) {\r\n var newHeap = subheap.removeMin(lessThan);\r\n subheap.elem = newHeap.elem;\r\n subheap.subheaps = newHeap.subheaps;\r\n if (setHeapNode !== null && newHeap.elem !== null) {\r\n setHeapNode(subheap.elem, subheap);\r\n }\r\n var pairingNode = new PairingHeap(newValue);\r\n if (setHeapNode !== null) {\r\n setHeapNode(newValue, pairingNode);\r\n }\r\n return this.merge(pairingNode, lessThan);\r\n };\r\n return PairingHeap;\r\n}());\r\nexports.PairingHeap = PairingHeap;\r\nvar PriorityQueue = (function () {\r\n function PriorityQueue(lessThan) {\r\n this.lessThan = lessThan;\r\n }\r\n PriorityQueue.prototype.top = function () {\r\n if (this.empty()) {\r\n return null;\r\n }\r\n return this.root.elem;\r\n };\r\n PriorityQueue.prototype.push = function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n var pairingNode;\r\n for (var i = 0, arg; arg = args[i]; ++i) {\r\n pairingNode = new PairingHeap(arg);\r\n this.root = this.empty() ?\r\n pairingNode : this.root.merge(pairingNode, this.lessThan);\r\n }\r\n return pairingNode;\r\n };\r\n PriorityQueue.prototype.empty = function () {\r\n return !this.root || !this.root.elem;\r\n };\r\n PriorityQueue.prototype.isHeap = function () {\r\n return this.root.isHeap(this.lessThan);\r\n };\r\n PriorityQueue.prototype.forEach = function (f) {\r\n this.root.forEach(f);\r\n };\r\n PriorityQueue.prototype.pop = function () {\r\n if (this.empty()) {\r\n return null;\r\n }\r\n var obj = this.root.min();\r\n this.root = this.root.removeMin(this.lessThan);\r\n return obj;\r\n };\r\n PriorityQueue.prototype.reduceKey = function (heapNode, newKey, setHeapNode) {\r\n if (setHeapNode === void 0) { setHeapNode = null; }\r\n this.root = this.root.decreaseKey(heapNode, newKey, setHeapNode, this.lessThan);\r\n };\r\n PriorityQueue.prototype.toString = function (selector) {\r\n return this.root.toString(selector);\r\n };\r\n PriorityQueue.prototype.count = function () {\r\n return this.root.count();\r\n };\r\n return PriorityQueue;\r\n}());\r\nexports.PriorityQueue = PriorityQueue;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHF1ZXVlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vV2ViQ29sYS9zcmMvcHF1ZXVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQ0E7SUFJSSxxQkFBbUIsSUFBTztRQUFQLFNBQUksR0FBSixJQUFJLENBQUc7UUFDdEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVNLDhCQUFRLEdBQWYsVUFBZ0IsUUFBUTtRQUNwQixJQUFJLEdBQUcsR0FBRyxFQUFFLEVBQUUsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUNoQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEVBQUU7WUFDM0MsSUFBSSxPQUFPLEdBQW1CLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDL0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUU7Z0JBQ2YsU0FBUyxHQUFHLEtBQUssQ0FBQztnQkFDbEIsU0FBUzthQUNaO1lBQ0QsSUFBSSxTQUFTLEVBQUU7Z0JBQ1gsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUM7YUFDbkI7WUFDRCxHQUFHLEdBQUcsR0FBRyxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDdkMsU0FBUyxHQUFHLElBQUksQ0FBQztTQUNwQjtRQUNELElBQUksR0FBRyxLQUFLLEVBQUUsRUFBRTtZQUNaLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQztTQUN6QjtRQUNELE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUM7SUFDeEQsQ0FBQztJQUVNLDZCQUFPLEdBQWQsVUFBZSxDQUFD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","\"use strict\";\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar layout_1 = require(\"./layout\");\r\nvar D3StyleLayoutAdaptor = (function (_super) {\r\n __extends(D3StyleLayoutAdaptor, _super);\r\n function D3StyleLayoutAdaptor() {\r\n var _this = _super.call(this) || this;\r\n _this.event = d3.dispatch(layout_1.EventType[layout_1.EventType.start], layout_1.EventType[layout_1.EventType.tick], layout_1.EventType[layout_1.EventType.end]);\r\n var d3layout = _this;\r\n var drag;\r\n _this.drag = function () {\r\n if (!drag) {\r\n var drag = d3.behavior.drag()\r\n .origin(layout_1.Layout.dragOrigin)\r\n .on(\"dragstart.d3adaptor\", layout_1.Layout.dragStart)\r\n .on(\"drag.d3adaptor\", function (d) {\r\n layout_1.Layout.drag(d, d3.event);\r\n d3layout.resume();\r\n })\r\n .on(\"dragend.d3adaptor\", layout_1.Layout.dragEnd);\r\n }\r\n if (!arguments.length)\r\n return drag;\r\n this\r\n .call(drag);\r\n };\r\n return _this;\r\n }\r\n D3StyleLayoutAdaptor.prototype.trigger = function (e) {\r\n var d3event = { type: layout_1.EventType[e.type], alpha: e.alpha, stress: e.stress };\r\n this.event[d3event.type](d3event);\r\n };\r\n D3StyleLayoutAdaptor.prototype.kick = function () {\r\n var _this = this;\r\n d3.timer(function () { return _super.prototype.tick.call(_this); });\r\n };\r\n D3StyleLayoutAdaptor.prototype.on = function (eventType, listener) {\r\n if (typeof eventType === 'string') {\r\n this.event.on(eventType, listener);\r\n }\r\n else {\r\n this.event.on(layout_1.EventType[eventType], listener);\r\n }\r\n return this;\r\n };\r\n return D3StyleLayoutAdaptor;\r\n}(layout_1.Layout));\r\nexports.D3StyleLayoutAdaptor = D3StyleLayoutAdaptor;\r\nfunction d3adaptor() {\r\n return new D3StyleLayoutAdaptor();\r\n}\r\nexports.d3adaptor = d3adaptor;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZDN2M2FkYXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9XZWJDb2xhL3NyYy9kM3YzYWRhcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFNQSxtQ0FBa0Q7QUFHOUM7SUFBMEMsd0NBQU07SUFnQjVDO1FBQUEsWUFDSSxpQkFBTyxTQXVCVjtRQXZDRCxXQUFLLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxrQkFBUyxDQUFDLGtCQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsa0JBQVMsQ0FBQyxrQkFBUyxDQUFDLElBQUksQ0FBQyxFQUFFLGtCQUFTLENBQUMsa0JBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBa0JqRyxJQUFJLFFBQVEsR0FBRyxLQUFJLENBQUM7UUFDcEIsSUFBSSxJQUFJLENBQUM7UUFDVCxLQUFJLENBQUMsSUFBSSxHQUFHO1lBQ1IsSUFBSSxDQUFDLElBQUksRUFBRTtnQkFDUCxJQUFJLElBQUksR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRTtxQkFDeEIsTUFBTSxDQUFDLGVBQU0sQ0FBQyxVQUFVLENBQUM7cUJBQ3pCLEVBQUUsQ0FBQyxxQkFBcUIsRUFBRSxlQUFNLENBQUMsU0FBUyxDQUFDO3FCQUMzQyxFQUFFLENBQUMsZ0JBQWdCLEVBQUUsVUFBQSxDQUFDO29CQUNuQixlQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBTyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQzlCLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDdEIsQ0FBQyxDQUFDO3FCQUNELEVBQUUsQ0FBQyxtQkFBbUIsRUFBRSxlQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDaEQ7WUFFRCxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU07Z0JBQUUsT0FBTyxJQUFJLENBQUM7WUFHbkMsSUFBSTtpQkFFQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEIsQ0FBQyxDQUFBOztJQUNMLENBQUM7SUFyQ0Qsc0NBQU8sR0FBUCxVQUFRLENBQVE7UUFDWixJQUFJLE9BQU8sR0FBRyxFQUFFLElBQUksRUFBRSxrQkFBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzVFLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFHRCxtQ0FBSSxHQUFKO1FBQUEsaUJBRUM7UUFERyxFQUFFLENBQUMsS0FBSyxDQUFDLGNBQU0sT0FBQSxpQkFBTSxJQUFJLFlBQUUsRUFBWixDQUFZLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBZ0NELGlDQUFFLEdBQUYsVUFBRyxTQUE2QixFQUFFLFFBQW9CO1FBQ2xELElBQUksT0FBTyxTQUFTLEtBQUssUUFBUSxFQUFFO1lBQy9CLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztTQUN0QzthQUFNO1lBQ0gsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsa0JBQVMsQ0FBQyxTQUFTLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQztTQUNqRDtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFDTCwyQkFBQztBQUFELENBQUMsQUFuREQsQ0FBMEMsZUFBTSxHQW1EL0M7QUFuRFksb0RBQW9CO0FBaUVqQyxTQUFnQixTQUFTO0lBQ3JCLE9BQU8sSUFBSSxvQkFBb0IsRUFBRSxDQUFDO0FBQ3RDLENBQUM7QUFGRCw4QkFFQyJ9","'use strict'\r\n\r\n/**\r\n * @module color-interpolate\r\n * Pick color from palette by index\r\n */\r\n\r\nconst parse = require('color-parse');\r\nconst hsl = require('color-space/hsl');\r\nconst lerp = require('lerp');\r\nconst clamp = require('clamp');\r\n\r\nmodule.exports = interpolate;\r\n\r\nfunction interpolate (palette) {\r\n\tpalette = palette.map(function(c) {\r\n\t\tc = parse(c);\r\n\t\tif (c.space != 'rgb') {\r\n\t\t\tif (c.space != 'hsl') throw 'c.space' + 'space is not supported.';\r\n\t\t\tc.values = hsl.rgb(c.values);\r\n\t\t}\r\n\t\tc.values.push(c.alpha);\r\n\t\treturn c.values;\r\n\t});\r\n\r\n\treturn function(t, mix) {\r\n\t\tmix = mix || lerp;\r\n\t\tt = clamp(t, 0, 1);\r\n\r\n\t\tvar idx = ( palette.length - 1 ) * t,\r\n\t\t\tlIdx = Math.floor( idx ),\r\n\t\t\trIdx = Math.ceil( idx );\r\n\r\n\t\tt = idx - lIdx;\r\n\r\n\t\tvar lColor = palette[lIdx], rColor = palette[rIdx];\r\n\r\n\t\tvar result = lColor.map(function(v, i) {\r\n\t\t\tv = mix(v, rColor[i], t);\r\n\t\t\tif (i < 3) v = Math.round(v);\r\n\t\t\treturn v;\r\n\t\t});\r\n\r\n\t\tif (result[3] === 1) {\r\n\t\t\treturn 'rgb('+result.slice(0,3)+')';\r\n\t\t}\r\n\t\treturn 'rgba('+result+')';\r\n\t};\r\n}\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar PositionStats = (function () {\r\n function PositionStats(scale) {\r\n this.scale = scale;\r\n this.AB = 0;\r\n this.AD = 0;\r\n this.A2 = 0;\r\n }\r\n PositionStats.prototype.addVariable = function (v) {\r\n var ai = this.scale / v.scale;\r\n var bi = v.offset / v.scale;\r\n var wi = v.weight;\r\n this.AB += wi * ai * bi;\r\n this.AD += wi * ai * v.desiredPosition;\r\n this.A2 += wi * ai * ai;\r\n };\r\n PositionStats.prototype.getPosn = function () {\r\n return (this.AD - this.AB) / this.A2;\r\n };\r\n return PositionStats;\r\n}());\r\nexports.PositionStats = PositionStats;\r\nvar Constraint = (function () {\r\n function Constraint(left, right, gap, equality) {\r\n if (equality === void 0) { equality = false; }\r\n this.left = left;\r\n this.right = right;\r\n this.gap = gap;\r\n this.equality = equality;\r\n this.active = false;\r\n this.unsatisfiable = false;\r\n this.left = left;\r\n this.right = right;\r\n this.gap = gap;\r\n this.equality = equality;\r\n }\r\n Constraint.prototype.slack = function () {\r\n return this.unsatisfiable ? Number.MAX_VALUE\r\n : this.right.scale * this.right.position() - this.gap\r\n - this.left.scale * this.left.position();\r\n };\r\n return Constraint;\r\n}());\r\nexports.Constraint = Constraint;\r\nvar Variable = (function () {\r\n function Variable(desiredPosition, weight, scale) {\r\n if (weight === void 0) { weight = 1; }\r\n if (scale === void 0) { scale = 1; }\r\n this.desiredPosition = desiredPosition;\r\n this.weight = weight;\r\n this.scale = scale;\r\n this.offset = 0;\r\n }\r\n Variable.prototype.dfdv = function () {\r\n return 2.0 * this.weight * (this.position() - this.desiredPosition);\r\n };\r\n Variable.prototype.position = function () {\r\n return (this.block.ps.scale * this.block.posn + this.offset) / this.scale;\r\n };\r\n Variable.prototype.visitNeighbours = function (prev, f) {\r\n var ff = function (c, next) { return c.active && prev !== next && f(c, next); };\r\n this.cOut.forEach(function (c) { return ff(c, c.right); });\r\n this.cIn.forEach(function (c) { return ff(c, c.left); });\r\n };\r\n return Variable;\r\n}());\r\nexports.Variable = Variable;\r\nvar Block = (function () {\r\n function Block(v) {\r\n this.vars = [];\r\n v.offset = 0;\r\n this.ps = new PositionStats(v.scale);\r\n this.addVariable(v);\r\n }\r\n Block.prototype.addVariable = function (v) {\r\n v.block = this;\r\n this.vars.push(v);\r\n this.ps.addVariable(v);\r\n this.posn = this.ps.getPosn();\r\n };\r\n Block.prototype.updateWeightedPosition = function () {\r\n this.ps.AB = this.ps.AD = this.ps.A2 = 0;\r\n for (var i = 0, n = this.vars.length; i < n; ++i)\r\n this.ps.addVariable(this.vars[i]);\r\n this.posn = this.ps.getPosn();\r\n };\r\n Block.prototype.compute_lm = function (v, u, postAction) {\r\n var _this = this;\r\n var dfdv = v.dfdv();\r\n v.visitNeighbours(u, function (c, next) {\r\n var _dfdv = _this.compute_lm(next, v, postAction);\r\n if (next === c.right) {\r\n dfdv += _dfdv * c.left.scale;\r\n c.lm = _dfdv;\r\n }\r\n else {\r\n dfdv += _dfdv * c.right.scale;\r\n c.lm = -_dfdv;\r\n }\r\n postAction(c);\r\n });\r\n return dfdv / v.scale;\r\n };\r\n Block.prototype.populateSplitBlock = function (v, prev) {\r\n var _this = this;\r\n v.visitNeighbours(prev, function (c, next) {\r\n next.offset = v.offset + (next === c.right ? c.gap : -c.gap);\r\n _this.addVariable(next);\r\n _this.populateSplitBlock(next, v);\r\n });\r\n };\r\n Block.prototype.traverse = function (visit, acc, v, prev) {\r\n var _this = this;\r\n if (v === void 0) { v = this.vars[0]; }\r\n if (prev === void 0) { prev = null; }\r\n v.visitNeighbours(prev, function (c, next) {\r\n acc.push(visit(c));\r\n _this.traverse(visit, acc, next, v);\r\n });\r\n };\r\n Block.prototype.findMinLM = function () {\r\n var m = null;\r\n this.compute_lm(this.vars[0], null, function (c) {\r\n if (!c.equality && (m === null || c.lm < m.lm))\r\n m = c;\r\n });\r\n return m;\r\n };\r\n Block.prototype.findMinLMBetween = function (lv, rv) {\r\n this.compute_lm(lv, null, function () { });\r\n var m = null;\r\n this.findPath(lv, null, rv, function (c, next) {\r\n if (!c.equality && c.right === next && (m === null || c.lm < m.lm))\r\n m = c;\r\n });\r\n return m;\r\n };\r\n Block.prototype.findPath = function (v, prev, to, visit) {\r\n var _this = this;\r\n var endFound = false;\r\n v.visitNeighbours(prev, function (c, next) {\r\n if (!endFound && (next === to || _this.findPath(next, v, to, visit))) {\r\n endFound = true;\r\n visit(c, next);\r\n }\r\n });\r\n return endFound;\r\n };\r\n Block.prototype.isActiveDirectedPathBetween = function (u, v) {\r\n if (u === v)\r\n return true;\r\n var i = u.cOut.length;\r\n while (i--) {\r\n var c = u.cOut[i];\r\n if (c.active && this.isActiveDirectedPathBetween(c.right, v))\r\n return true;\r\n }\r\n return false;\r\n };\r\n Block.split = function (c) {\r\n c.active = false;\r\n return [Block.createSplitBlock(c.left), Block.createSplitBlock(c.right)];\r\n };\r\n Block.createSplitBlock = function (startVar) {\r\n var b = new Block(startVar);\r\n b.populateSplitBlock(startVar, null);\r\n return b;\r\n };\r\n Block.prototype.splitBetween = function (vl, vr) {\r\n var c = this.findMinLMBetween(vl, vr);\r\n if (c !== null) {\r\n var bs = Block.split(c);\r\n return { constraint: c, lb: bs[0], rb: bs[1] };\r\n }\r\n return null;\r\n };\r\n Block.prototype.mergeAcross = function (b, c, dist) {\r\n c.active = true;\r\n for (var i = 0, n = b.vars.length; i < n; ++i) {\r\n var v = b.vars[i];\r\n v.offset += dist;\r\n this.addVariable(v);\r\n }\r\n this.posn = this.ps.getPosn();\r\n };\r\n Block.prototype.cost = function () {\r\n var sum = 0, i = this.vars.length;\r\n while (i--) {\r\n var v = this.vars[i], d = v.position() - v.desiredPosition;\r\n sum += d * d * v.weight;\r\n }\r\n return sum;\r\n };\r\n return Block;\r\n}());\r\nexports.Block = Block;\r\nvar Blocks = (function () {\r\n function Blocks(vs) {\r\n this.vs = vs;\r\n var n = vs.length;\r\n this.list = new Array(n);\r\n while (n--) {\r\n var b = new Block(vs[n]);\r\n this.list[n] = b;\r\n b.blockInd = n;\r\n }\r\n }\r\n Blocks.prototype.cost = function () {\r\n var sum = 0, i = this.list.length;\r\n while (i--)\r\n sum += this.list[i].cost();\r\n return sum;\r\n };\r\n Blocks.prototype.insert = function (b) {\r\n b.blockInd = this.list.length;\r\n this.list.push(b);\r\n };\r\n Blocks.prototype.remove = function (b) {\r\n var last = this.list.length - 1;\r\n var swapBlock = this.list[last];\r\n this.list.length = last;\r\n if (b !== swapBlock) {\r\n this.list[b.blockInd] = swapBlock;\r\n swapBlock.blockInd = b.blockInd;\r\n }\r\n };\r\n Blocks.prototype.merge = function (c) {\r\n var l = c.left.block, r = c.right.block;\r\n var dist = c.right.offset - c.left.offset - c.gap;\r\n if (l.vars.length < r.vars.length) {\r\n r.mergeAcross(l, c, dist);\r\n this.remove(l);\r\n }\r\n else {\r\n l.mergeAcross(r, c, -dist);\r\n this.remove(r);\r\n }\r\n };\r\n Blocks.prototype.forEach = function (f) {\r\n this.list.forEach(f);\r\n };\r\n Blocks.prototype.updateBlockPositions = function () {\r\n this.list.forEach(function (b) { return b.updateWeightedPosition(); });\r\n };\r\n Blocks.prototype.split = function (inactive) {\r\n var _this = this;\r\n this.updateBlockPositions();\r\n this.list.forEach(function (b) {\r\n var v = b.findMinLM();\r\n if (v !== null && v.lm < Solver.LAGRANGIAN_TOLERANCE) {\r\n b = v.left.block;\r\n Block.split(v).forEach(function (nb) { return _this.insert(nb); });\r\n _this.remove(b);\r\n inactive.push(v);\r\n }\r\n });\r\n };\r\n return Blocks;\r\n}());\r\nexports.Blocks = Blocks;\r\nvar Solver = (function () {\r\n function Solver(vs, cs) {\r\n this.vs = vs;\r\n this.cs = cs;\r\n this.vs = vs;\r\n vs.forEach(function (v) {\r\n v.cIn = [], v.cOut = [];\r\n });\r\n this.cs = cs;\r\n cs.forEach(function (c) {\r\n c.left.cOut.push(c);\r\n c.right.cIn.push(c);\r\n });\r\n this.inactive = cs.map(function (c) { c.active = false; return c; });\r\n this.bs = null;\r\n }\r\n Solver.prototype.cost = function () {\r\n return this.bs.cost();\r\n };\r\n Solver.prototype.setStartingPositions = function (ps) {\r\n this.inactive = this.cs.map(function (c) { c.active = false; return c; });\r\n this.bs = new Blocks(this.vs);\r\n this.bs.forEach(function (b, i) { return b.posn = ps[i]; });\r\n };\r\n Solver.prototype.setDesiredPositions = function (ps) {\r\n this.vs.forEach(function (v, i) { return v.desiredPosition = ps[i]; });\r\n };\r\n Solver.prototype.mostViolated = function () {\r\n var minSlack = Number.MAX_VALUE, v = null, l = this.inactive, n = l.length, deletePoint = n;\r\n for (var i = 0; i < n; ++i) {\r\n var c = l[i];\r\n if (c.unsatisfiable)\r\n continue;\r\n var slack = c.slack();\r\n if (c.equality || slack < minSlack) {\r\n minSlack = slack;\r\n v = c;\r\n deletePoint = i;\r\n if (c.equality)\r\n break;\r\n }\r\n }\r\n if (deletePoint !== n &&\r\n (minSlack < Solver.ZERO_UPPERBOUND && !v.active || v.equality)) {\r\n l[deletePoint] = l[n - 1];\r\n l.length = n - 1;\r\n }\r\n return v;\r\n };\r\n Solver.prototype.satisfy = function () {\r\n if (this.bs == null) {\r\n this.bs = new Blocks(this.vs);\r\n }\r\n this.bs.split(this.inactive);\r\n var v = null;\r\n while ((v = this.mostViolated()) && (v.equality || v.slack() < Solver.ZERO_UPPERBOUND && !v.active)) {\r\n var lb = v.left.block, rb = v.right.block;\r\n if (lb !== rb) {\r\n this.bs.merge(v);\r\n }\r\n else {\r\n if (lb.isActiveDirectedPathBetween(v.right, v.left)) {\r\n v.unsatisfiable = true;\r\n continue;\r\n }\r\n var split = lb.splitBetween(v.left, v.right);\r\n if (split !== null) {\r\n this.bs.insert(split.lb);\r\n this.bs.insert(split.rb);\r\n this.bs.remove(lb);\r\n this.inactive.push(split.constraint);\r\n }\r\n else {\r\n v.unsatisfiable = true;\r\n continue;\r\n }\r\n if (v.slack() >= 0) {\r\n this.inactive.push(v);\r\n }\r\n else {\r\n this.bs.merge(v);\r\n }\r\n }\r\n }\r\n };\r\n Solver.prototype.solve = function () {\r\n this.satisfy();\r\n var lastcost = Number.MAX_VALUE, cost = this.bs.cost();\r\n while (Math.abs(lastcost - cost) > 0.0001) {\r\n this.satisfy();\r\n lastcost = cost;\r\n cost = this.bs.cost();\r\n }\r\n return cost;\r\n };\r\n Solver.LAGRANGIAN_TOLERANCE = -1e-4;\r\n Solver.ZERO_UPPERBOUND = -1e-10;\r\n return Solver;\r\n}());\r\nexports.Solver = Solver;\r\nfunction removeOverlapInOneDimension(spans, lowerBound, upperBound) {\r\n var vs = spans.map(function (s) { return new Variable(s.desiredCenter); });\r\n var cs = [];\r\n var n = spans.length;\r\n for (var i = 0; i < n - 1; i++) {\r\n var left = spans[i], right = spans[i + 1];\r\n cs.push(new Constraint(vs[i], vs[i + 1], (left.size + right.size) / 2));\r\n }\r\n var leftMost = vs[0], rightMost = vs[n - 1], leftMostSize = spans[0].size / 2, rightMostSize = spans[n - 1].size / 2;\r\n var vLower = null, vUpper = null;\r\n if (lowerBound) {\r\n vLower = new Variable(lowerBound, leftMost.weight * 1000);\r\n vs.push(vLower);\r\n cs.push(new Constraint(vLower, leftMost, leftMostSize));\r\n }\r\n if (upperBound) {\r\n vUpper = new Variable(upperBound, rightMost.weight * 1000);\r\n vs.push(vUpper);\r\n cs.push(new Constraint(rightMost, vUpper, rightMostSize));\r\n }\r\n var solver = new Solver(vs, cs);\r\n solver.solve();\r\n return {\r\n newCenters: vs.slice(0, spans.length).map(function (v) { return v.position(); }),\r\n lowerBound: vLower ? vLower.position() : leftMost.position() - leftMostSize,\r\n upperBound: vUpper ? vUpper.position() : rightMost.position() + rightMostSize\r\n };\r\n}\r\nexports.removeOverlapInOneDimension = removeOverlapInOneDimension;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidnBzYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL1dlYkNvbGEvc3JjL3Zwc2MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBSTtJQUtJLHVCQUFtQixLQUFhO1FBQWIsVUFBSyxHQUFMLEtBQUssQ0FBUTtRQUpoQyxPQUFFLEdBQVcsQ0FBQyxDQUFDO1FBQ2YsT0FBRSxHQUFXLENBQUMsQ0FBQztRQUNmLE9BQUUsR0FBVyxDQUFDLENBQUM7SUFFb0IsQ0FBQztJQUVwQyxtQ0FBVyxHQUFYLFVBQVksQ0FBVztRQUNuQixJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDOUIsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQzVCLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDbEIsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLGVBQWUsQ0FBQztRQUN2QyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCwrQkFBTyxHQUFQO1FBQ0ksT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDekMsQ0FBQztJQUNMLG9CQUFDO0FBQUQsQ0FBQyxBQW5CRCxJQW1CQztBQW5CWSxzQ0FBYTtBQXFCMUI7SUFLSSxvQkFBbUIsSUFBYyxFQUFTLEtBQWUsRUFBUyxHQUFXLEVBQVMsUUFBeUI7UUFBekIseUJBQUEsRUFBQSxnQkFBeUI7UUFBNUYsU0FBSSxHQUFKLElBQUksQ0FBVTtRQUFTLFVBQUssR0FBTCxLQUFL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","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Locks = (function () {\r\n function Locks() {\r\n this.locks = {};\r\n }\r\n Locks.prototype.add = function (id, x) {\r\n this.locks[id] = x;\r\n };\r\n Locks.prototype.clear = function () {\r\n this.locks = {};\r\n };\r\n Locks.prototype.isEmpty = function () {\r\n for (var l in this.locks)\r\n return false;\r\n return true;\r\n };\r\n Locks.prototype.apply = function (f) {\r\n for (var l in this.locks) {\r\n f(Number(l), this.locks[l]);\r\n }\r\n };\r\n return Locks;\r\n}());\r\nexports.Locks = Locks;\r\nvar Descent = (function () {\r\n function Descent(x, D, G) {\r\n if (G === void 0) { G = null; }\r\n this.D = D;\r\n this.G = G;\r\n this.threshold = 0.0001;\r\n this.numGridSnapNodes = 0;\r\n this.snapGridSize = 100;\r\n this.snapStrength = 1000;\r\n this.scaleSnapByMaxH = false;\r\n this.random = new PseudoRandom();\r\n this.project = null;\r\n this.x = x;\r\n this.k = x.length;\r\n var n = this.n = x[0].length;\r\n this.H = new Array(this.k);\r\n this.g = new Array(this.k);\r\n this.Hd = new Array(this.k);\r\n this.a = new Array(this.k);\r\n this.b = new Array(this.k);\r\n this.c = new Array(this.k);\r\n this.d = new Array(this.k);\r\n this.e = new Array(this.k);\r\n this.ia = new Array(this.k);\r\n this.ib = new Array(this.k);\r\n this.xtmp = new Array(this.k);\r\n this.locks = new Locks();\r\n this.minD = Number.MAX_VALUE;\r\n var i = n, j;\r\n while (i--) {\r\n j = n;\r\n while (--j > i) {\r\n var d = D[i][j];\r\n if (d > 0 && d < this.minD) {\r\n this.minD = d;\r\n }\r\n }\r\n }\r\n if (this.minD === Number.MAX_VALUE)\r\n this.minD = 1;\r\n i = this.k;\r\n while (i--) {\r\n this.g[i] = new Array(n);\r\n this.H[i] = new Array(n);\r\n j = n;\r\n while (j--) {\r\n this.H[i][j] = new Array(n);\r\n }\r\n this.Hd[i] = new Array(n);\r\n this.a[i] = new Array(n);\r\n this.b[i] = new Array(n);\r\n this.c[i] = new Array(n);\r\n this.d[i] = new Array(n);\r\n this.e[i] = new Array(n);\r\n this.ia[i] = new Array(n);\r\n this.ib[i] = new Array(n);\r\n this.xtmp[i] = new Array(n);\r\n }\r\n }\r\n Descent.createSquareMatrix = function (n, f) {\r\n var M = new Array(n);\r\n for (var i = 0; i < n; ++i) {\r\n M[i] = new Array(n);\r\n for (var j = 0; j < n; ++j) {\r\n M[i][j] = f(i, j);\r\n }\r\n }\r\n return M;\r\n };\r\n Descent.prototype.offsetDir = function () {\r\n var _this = this;\r\n var u = new Array(this.k);\r\n var l = 0;\r\n for (var i = 0; i < this.k; ++i) {\r\n var x = u[i] = this.random.getNextBetween(0.01, 1) - 0.5;\r\n l += x * x;\r\n }\r\n l = Math.sqrt(l);\r\n return u.map(function (x) { return x *= _this.minD / l; });\r\n };\r\n Descent.prototype.computeDerivatives = function (x) {\r\n var _this = this;\r\n var n = this.n;\r\n if (n < 1)\r\n return;\r\n var i;\r\n var d = new Array(this.k);\r\n var d2 = new Array(this.k);\r\n var Huu = new Array(this.k);\r\n var maxH = 0;\r\n for (var u = 0; u < n; ++u) {\r\n for (i = 0; i < this.k; ++i)\r\n Huu[i] = this.g[i][u] = 0;\r\n for (var v = 0; v < n; ++v) {\r\n if (u === v)\r\n continue;\r\n var maxDisplaces = n;\r\n while (maxDisplaces--) {\r\n var sd2 = 0;\r\n for (i = 0; i < this.k; ++i) {\r\n var dx = d[i] = x[i][u] - x[i][v];\r\n sd2 += d2[i] = dx * dx;\r\n }\r\n if (sd2 > 1e-9)\r\n break;\r\n var rd = this.offsetDir();\r\n for (i = 0; i < this.k; ++i)\r\n x[i][v] += rd[i];\r\n }\r\n var l = Math.sqrt(sd2);\r\n var D = this.D[u][v];\r\n var weight = this.G != null ? this.G[u][v] : 1;\r\n if (weight > 1 && l > D || !isFinite(D)) {\r\n for (i = 0; i < this.k; ++i)\r\n this.H[i][u][v] = 0;\r\n continue;\r\n }\r\n if (weight > 1) {\r\n weight = 1;\r\n }\r\n var D2 = D * D;\r\n var gs = 2 * weight * (l - D) / (D2 * l);\r\n var l3 = l * l * l;\r\n var hs = 2 * -weight / (D2 * l3);\r\n if (!isFinite(gs))\r\n console.log(gs);\r\n for (i = 0; i < this.k; ++i) {\r\n this.g[i][u] += d[i] * gs;\r\n Huu[i] -= this.H[i][u][v] = hs * (l3 + D * (d2[i] - sd2) + l * sd2);\r\n }\r\n }\r\n for (i = 0; i < this.k; ++i)\r\n maxH = Math.max(maxH, this.H[i][u][u] = Huu[i]);\r\n }\r\n var r = this.snapGridSize / 2;\r\n var g = this.snapGridSize;\r\n var w = this.snapStrength;\r\n var k = w / (r * r);\r\n var numNodes = this.numGridSnapNodes;\r\n for (var u = 0; u < numNodes; ++u) {\r\n for (i = 0; i < this.k; ++i) {\r\n var xiu = this.x[i][u];\r\n var m = xiu / g;\r\n var f = m % 1;\r\n var q = m - f;\r\n var a = Math.abs(f);\r\n var dx = (a <= 0.5) ? xiu - q * g :\r\n (xiu > 0) ? xiu - (q + 1) * g : xiu - (q - 1) * g;\r\n if (-r < dx && dx <= r) {\r\n if (this.scaleSnapByMaxH) {\r\n this.g[i][u] += maxH * k * dx;\r\n this.H[i][u][u] += maxH * k;\r\n }\r\n else {\r\n this.g[i][u] += k * dx;\r\n this.H[i][u][u] += k;\r\n }\r\n }\r\n }\r\n }\r\n if (!this.locks.isEmpty()) {\r\n this.locks.apply(function (u, p) {\r\n for (i = 0; i < _this.k; ++i) {\r\n _this.H[i][u][u] += maxH;\r\n _this.g[i][u] -= maxH * (p[i] - x[i][u]);\r\n }\r\n });\r\n }\r\n };\r\n Descent.dotProd = function (a, b) {\r\n var x = 0, i = a.length;\r\n while (i--)\r\n x += a[i] * b[i];\r\n return x;\r\n };\r\n Descent.rightMultiply = function (m, v, r) {\r\n var i = m.length;\r\n while (i--)\r\n r[i] = Descent.dotProd(m[i], v);\r\n };\r\n Descent.prototype.computeStepSize = function (d) {\r\n var numerator = 0, denominator = 0;\r\n for (var i = 0; i < this.k; ++i) {\r\n numerator += Descent.dotProd(this.g[i], d[i]);\r\n Descent.rightMultiply(this.H[i], d[i], this.Hd[i]);\r\n denominator += Descent.dotProd(d[i], this.Hd[i]);\r\n }\r\n if (denominator === 0 || !isFinite(denominator))\r\n return 0;\r\n return 1 * numerator / denominator;\r\n };\r\n Descent.prototype.reduceStress = function () {\r\n this.computeDerivatives(this.x);\r\n var alpha = this.computeStepSize(this.g);\r\n for (var i = 0; i < this.k; ++i) {\r\n this.takeDescentStep(this.x[i], this.g[i], alpha);\r\n }\r\n return this.computeStress();\r\n };\r\n Descent.copy = function (a, b) {\r\n var m = a.length, n = b[0].length;\r\n for (var i = 0; i < m; ++i) {\r\n for (var j = 0; j < n; ++j) {\r\n b[i][j] = a[i][j];\r\n }\r\n }\r\n };\r\n Descent.prototype.stepAndProject = function (x0, r, d, stepSize) {\r\n Descent.copy(x0, r);\r\n this.takeDescentStep(r[0], d[0], stepSize);\r\n if (this.project)\r\n this.project[0](x0[0], x0[1], r[0]);\r\n this.takeDescentStep(r[1], d[1], stepSize);\r\n if (this.project)\r\n this.project[1](r[0], x0[1], r[1]);\r\n for (var i = 2; i < this.k; i++)\r\n this.takeDescentStep(r[i], d[i], stepSize);\r\n };\r\n Descent.mApply = function (m, n, f) {\r\n var i = m;\r\n while (i-- > 0) {\r\n var j = n;\r\n while (j-- > 0)\r\n f(i, j);\r\n }\r\n };\r\n Descent.prototype.matrixApply = function (f) {\r\n Descent.mApply(this.k, this.n, f);\r\n };\r\n Descent.prototype.computeNextPosition = function (x0, r) {\r\n var _this = this;\r\n this.computeDerivatives(x0);\r\n var alpha = this.computeStepSize(this.g);\r\n this.stepAndProject(x0, r, this.g, alpha);\r\n if (this.project) {\r\n this.matrixApply(function (i, j) { return _this.e[i][j] = x0[i][j] - r[i][j]; });\r\n var beta = this.computeStepSize(this.e);\r\n beta = Math.max(0.2, Math.min(beta, 1));\r\n this.stepAndProject(x0, r, this.e, beta);\r\n }\r\n };\r\n Descent.prototype.run = function (iterations) {\r\n var stress = Number.MAX_VALUE, converged = false;\r\n while (!converged && iterations-- > 0) {\r\n var s = this.rungeKutta();\r\n converged = Math.abs(stress / s - 1) < this.threshold;\r\n stress = s;\r\n }\r\n return stress;\r\n };\r\n Descent.prototype.rungeKutta = function () {\r\n var _this = this;\r\n this.computeNextPosition(this.x, this.a);\r\n Descent.mid(this.x, this.a, this.ia);\r\n this.computeNextPosition(this.ia, this.b);\r\n Descent.mid(this.x, this.b, this.ib);\r\n this.computeNextPosition(this.ib, this.c);\r\n this.computeNextPosition(this.c, this.d);\r\n var disp = 0;\r\n this.matrixApply(function (i, j) {\r\n var x = (_this.a[i][j] + 2.0 * _this.b[i][j] + 2.0 * _this.c[i][j] + _this.d[i][j]) / 6.0, d = _this.x[i][j] - x;\r\n disp += d * d;\r\n _this.x[i][j] = x;\r\n });\r\n return disp;\r\n };\r\n Descent.mid = function (a, b, m) {\r\n Descent.mApply(a.length, a[0].length, function (i, j) {\r\n return m[i][j] = a[i][j] + (b[i][j] - a[i][j]) / 2.0;\r\n });\r\n };\r\n Descent.prototype.takeDescentStep = function (x, d, stepSize) {\r\n for (var i = 0; i < this.n; ++i) {\r\n x[i] = x[i] - stepSize * d[i];\r\n }\r\n };\r\n Descent.prototype.computeStress = function () {\r\n var stress = 0;\r\n for (var u = 0, nMinus1 = this.n - 1; u < nMinus1; ++u) {\r\n for (var v = u + 1, n = this.n; v < n; ++v) {\r\n var l = 0;\r\n for (var i = 0; i < this.k; ++i) {\r\n var dx = this.x[i][u] - this.x[i][v];\r\n l += dx * dx;\r\n }\r\n l = Math.sqrt(l);\r\n var d = this.D[u][v];\r\n if (!isFinite(d))\r\n continue;\r\n var rl = d - l;\r\n var d2 = d * d;\r\n stress += rl * rl / d2;\r\n }\r\n }\r\n return stress;\r\n };\r\n Descent.zeroDistance = 1e-10;\r\n return Descent;\r\n}());\r\nexports.Descent = Descent;\r\nvar PseudoRandom = (function () {\r\n function PseudoRandom(seed) {\r\n if (seed === void 0) { seed = 1; }\r\n this.seed = seed;\r\n this.a = 214013;\r\n this.c = 2531011;\r\n this.m = 2147483648;\r\n this.range = 32767;\r\n }\r\n PseudoRandom.prototype.getNext = function () {\r\n this.seed = (this.seed * this.a + this.c) % this.m;\r\n return (this.seed >> 16) / this.range;\r\n };\r\n PseudoRandom.prototype.getNextBetween = function (min, max) {\r\n return min + this.getNext() * (max - min);\r\n };\r\n return PseudoRandom;\r\n}());\r\nexports.PseudoRandom = PseudoRandom;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzY2VudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL1dlYkNvbGEvc3JjL2Rlc2NlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFJSTtJQUFBO1FBQ0ksVUFBSyxHQUE2QixFQUFFLENBQUM7SUFvQ3pDLENBQUM7SUE3QkcsbUJBQUcsR0FBSCxVQUFJLEVBQVUsRUFBRSxDQUFXO1FBSXZCLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFJRCxxQkFBSyxHQUFMO1FBQ0ksSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUtELHVCQUFPLEdBQVA7UUFDSSxLQUFLLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDdkMsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUtELHFCQUFLLEdBQUwsVUFBTSxDQUFvQztRQUN0QyxLQUFLLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDdEIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDL0I7SUFDTCxDQUFDO0lBQ0wsWUFBQztBQUFELENBQUMsQUFyQ0QsSUFxQ0M7QUFyQ1ksc0JBQUs7QUFpRGxCO0lBNkRJLGlCQUFZLENBQWEsRUFBUyxDQUFhLEVBQVMsQ0FBbUI7UUFBbkIsa0JBQUEsRUFBQSxRQUFtQjtRQUF6QyxNQUFDLEdBQUQsQ0FBQyxDQUFZO1FBQVMsTUFBQyxHQUFELENBQUMsQ0FBa0I7UUE1RHBFLGNBQVMsR0FBVyxNQUFNLENBQUM7UUEyQzNCLHFCQUFnQixHQUFXLENBQUMsQ0FBQztRQUM3QixpQkFBWSxHQUFXLEdBQUcsQ0FBQztRQUMzQixpQkFBWSxHQUFXLElBQUksQ0FBQztRQUM1QixvQkFBZSxHQUFZLEtBQUssQ0FBQztRQUVoQyxXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUU3QixZQUFPLEdBQTBELElBQUksQ0FBQztRQVd6RSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNYLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUNsQixJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDN0IsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQztRQUM3QixJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2IsT0FBTyxDQUFDLEVBQUUsRUFBRTtZQUNSLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDTixPQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDWixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2hCLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRTtvQkFDeEIsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7aUJBQ2pCO2FBQ0o7U0FDSjtRQUNELElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxNQUFNLENBQUMsU0FBUztZQUFFLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQ2xELENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ1gsT0FBTyxDQUFDLEVBQUUsRUFBRTtZQUNSLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDekIsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN6QixDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ04sT0FBTyxDQUFDLEVBQUUsRUFBRTtnQkFDUixJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQy9CO1lBQ0QsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMxQixJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3pCLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDekIsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN6QixJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3pCLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDekIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMxQixJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzFCLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDL0I7SUFDTCxDQUFDO0lBRWEsMEJBQWtCLEdBQWhDLFVBQWlDLENBQVMsRUFBRSxDQUFtQztRQUMzRSxJQUFJLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNyQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFO1lBQ3hCLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNwQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxF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QUFDO29CQUMxQixLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO3dCQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQ2pEO2dCQUNELElBQUksQ0FBQyxHQUFXLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxHQUFXLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzdCLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQy9DLElBQUksTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFO29CQUNyQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO3dCQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUNqRCxTQUFTO2lCQUNaO2dCQUNELElBQUksTUFBTSxHQUFHLENBQUMsRUFBRTtvQkFDWixNQUFNLEdBQUcsQ0FBQyxDQUFDO2lCQUNkO2dCQUNELElBQUksRUFBRSxHQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksRUFBRSxHQUFXLENBQUMsR0FBRyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQ2pELElBQUksRUFBRSxHQUFHLENBQUMs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","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar layout_1 = require(\"./layout\");\r\nvar gridrouter_1 = require(\"./gridrouter\");\r\nfunction gridify(pgLayout, nudgeGap, margin, groupMargin) {\r\n pgLayout.cola.start(0, 0, 0, 10, false);\r\n var gridrouter = route(pgLayout.cola.nodes(), pgLayout.cola.groups(), margin, groupMargin);\r\n return gridrouter.routeEdges(pgLayout.powerGraph.powerEdges, nudgeGap, function (e) { return e.source.routerNode.id; }, function (e) { return e.target.routerNode.id; });\r\n}\r\nexports.gridify = gridify;\r\nfunction route(nodes, groups, margin, groupMargin) {\r\n nodes.forEach(function (d) {\r\n d.routerNode = {\r\n name: d.name,\r\n bounds: d.bounds.inflate(-margin)\r\n };\r\n });\r\n groups.forEach(function (d) {\r\n d.routerNode = {\r\n bounds: d.bounds.inflate(-groupMargin),\r\n children: (typeof d.groups !== 'undefined' ? d.groups.map(function (c) { return nodes.length + c.id; }) : [])\r\n .concat(typeof d.leaves !== 'undefined' ? d.leaves.map(function (c) { return c.index; }) : [])\r\n };\r\n });\r\n var gridRouterNodes = nodes.concat(groups).map(function (d, i) {\r\n d.routerNode.id = i;\r\n return d.routerNode;\r\n });\r\n return new gridrouter_1.GridRouter(gridRouterNodes, {\r\n getChildren: function (v) { return v.children; },\r\n getBounds: function (v) { return v.bounds; }\r\n }, margin - groupMargin);\r\n}\r\nfunction powerGraphGridLayout(graph, size, grouppadding) {\r\n var powerGraph;\r\n graph.nodes.forEach(function (v, i) { return v.index = i; });\r\n new layout_1.Layout()\r\n .avoidOverlaps(false)\r\n .nodes(graph.nodes)\r\n .links(graph.links)\r\n .powerGraphGroups(function (d) {\r\n powerGraph = d;\r\n powerGraph.groups.forEach(function (v) { return v.padding = grouppadding; });\r\n });\r\n var n = graph.nodes.length;\r\n var edges = [];\r\n var vs = graph.nodes.slice(0);\r\n vs.forEach(function (v, i) { return v.index = i; });\r\n powerGraph.groups.forEach(function (g) {\r\n var sourceInd = g.index = g.id + n;\r\n vs.push(g);\r\n if (typeof g.leaves !== 'undefined')\r\n g.leaves.forEach(function (v) { return edges.push({ source: sourceInd, target: v.index }); });\r\n if (typeof g.groups !== 'undefined')\r\n g.groups.forEach(function (gg) { return edges.push({ source: sourceInd, target: gg.id + n }); });\r\n });\r\n powerGraph.powerEdges.forEach(function (e) {\r\n edges.push({ source: e.source.index, target: e.target.index });\r\n });\r\n new layout_1.Layout()\r\n .size(size)\r\n .nodes(vs)\r\n .links(edges)\r\n .avoidOverlaps(false)\r\n .linkDistance(30)\r\n .symmetricDiffLinkLengths(5)\r\n .convergenceThreshold(1e-4)\r\n .start(100, 0, 0, 0, false);\r\n return {\r\n cola: new layout_1.Layout()\r\n .convergenceThreshold(1e-3)\r\n .size(size)\r\n .avoidOverlaps(true)\r\n .nodes(graph.nodes)\r\n .links(graph.links)\r\n .groupCompactness(1e-4)\r\n .linkDistance(30)\r\n .symmetricDiffLinkLengths(5)\r\n .powerGraphGroups(function (d) {\r\n powerGraph = d;\r\n powerGraph.groups.forEach(function (v) {\r\n v.padding = grouppadding;\r\n });\r\n }).start(50, 0, 100, 0, false),\r\n powerGraph: powerGraph\r\n };\r\n}\r\nexports.powerGraphGridLayout = powerGraphGridLayout;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmF0Y2guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9XZWJDb2xhL3NyYy9iYXRjaC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLG1DQUEyQztBQUMzQywyQ0FBdUM7QUFRdkMsU0FBZ0IsT0FBTyxDQUFDLFFBQVEsRUFBRSxRQUFnQixFQUFFLE1BQWMsRUFBRSxXQUFtQjtJQUNuRixRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDeEMsSUFBSSxVQUFVLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDM0YsT0FBTyxVQUFVLENBQUMsVUFBVSxDQUFNLFFBQVEsQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxVQUFBLENBQUMsSUFBRyxPQUFBLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBdEIsQ0FBc0IsRUFBRSxVQUFBLENBQUMsSUFBRyxPQUFBLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBdEIsQ0FBc0IsQ0FBQyxDQUFDO0FBQ3hJLENBQUM7QUFKRCwwQkFJQztBQUVELFNBQVMsS0FBSyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBYyxFQUFFLFdBQW1CO0lBQzdELEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBQSxDQUFDO1FBQ1gsQ0FBQyxDQUFDLFVBQVUsR0FBUTtZQUNoQixJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUk7WUFDWixNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUM7U0FDcEMsQ0FBQztJQUNOLENBQUMsQ0FBQyxDQUFDO0lBQ0gsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFBLENBQUM7UUFDWixDQUFDLENBQUMsVUFBVSxHQUFRO1lBQ2hCLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsQ0FBQztZQUN0QyxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxVQUFBLENBQUMsSUFBRyxPQUFBLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBbkIsQ0FBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7aUJBQ25GLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxVQUFBLENBQUMsSUFBRyxPQUFBLENBQUMsQ0FBQyxLQUFLLEVBQVAsQ0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztTQUNoRixDQUFDO0lBQ04sQ0FBQyxDQUFDLENBQUM7SUFDSCxJQUFJLGVBQWUsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFDLENBQUMsRUFBRSxDQUFDO1FBQ2hELENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNwQixPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUM7SUFDeEIsQ0FBQyxDQUFDLENBQUM7SUFDSCxPQUFPLElBQUksdUJBQVUsQ0FBQyxlQUFlLEVBQUU7UUFDbkMsV0FBVyxFQUFFLFVBQUMsQ0FBTSxJQUFLLE9BQUEsQ0FBQyxDQUFDLFFBQVEsRUFBVixDQUFVO1FBQ25DLFNBQVMsRUFBRSxVQUFBLENBQUMsSUFBSSxPQUFBLENBQUMsQ0FBQyxNQUFNLEVBQVIsQ0FBUTtLQUMzQixFQUFFLE1BQU0sR0FBRyxXQUFXLENBQUMsQ0FBQztBQUM3QixDQUFDO0FBRUQsU0FBZ0Isb0JBQW9CLENBQ2hDLEtBQTZDLEVBQzdDLElBQWMsRUFDZCxZQUFvQjtJQUdwQixJQUFJLFVBQVUsQ0FBQztJQUNmLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQUMsQ0FBQyxFQUFDLENBQUMsSUFBSyxPQUFNLENBQUUsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUFsQixDQUFrQixDQUFDLENBQUM7SUFDakQsSUFBSSxlQUFNLEVBQUU7U0FDUCxhQUFhLENBQUMsS0FBSyxDQUFDO1NBQ3BCLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO1NBQ2xCLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO1NBQ2xCLGdCQUFnQixDQUFDLFVBQVUsQ0FBQztRQUN6QixVQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsVUFBVSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBQSxDQUFDLElBQUcsT0FBQSxDQUFDLENBQUMsT0FBTyxHQUFHLFlBQVksRUFBeEIsQ0FBd0IsQ0FBQyxDQUFDO0lBQzVELENBQUMsQ0FBQyxDQUFDO0lBSVAsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7SUFDM0IsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDO0lBQ2YsSUFBSSxFQUFFLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUIsRUFBRSxDQUFDLE9BQU8sQ0FBQyxVQUFDLENBQUMsRUFBRSxDQUFDLElBQUssT0FBTSxDQUFFLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBbEIsQ0FBa0IsQ0FBQyxDQUFDO0lBQ3pDLFVBQVUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQUEsQ0FBQztRQUN2QixJQUFJLFNBQVMsR0FBRyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ25DLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDWCxJQUFJLE9BQU8sQ0FBQyxDQUFDLE1BQU0sS0FBSyxXQUFXO1lBQy9CLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQUEsQ0FBQyxJQUFJLE9BQUEsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFsRCxDQUFrRCxDQUFDLENBQUM7UUFDOUUsSUFBSSxPQUFPLENBQUMsQ0FBQyxNQUFNLEtBQUssV0FBVztZQUMvQixDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFBLEVBQUUsSUFBSSxPQUFBLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQXBELENBQW9ELENBQUMsQ0FBQztJQUNyRixDQUFDLENBQUMsQ0FBQztJQUNILFVBQVUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFVBQUEsQ0FBQztRQUMzQixLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDbkUsQ0FBQyxDQUFDLENBQUM7SUFHSCxJQUFJLGVBQU0sRUFBRTtTQUNQLElBQUksQ0FBQyxJQUFJLENBQUM7U0FDVixLQUFLLENBQUMsRUFBRSxDQUFDO1NBQ1QsS0FBSyxDQUFDLEtBQUssQ0FBQztTQUNaLGFBQWEsQ0FBQyxLQUFLLENBQUM7U0FDcEIsWUFBWSxDQUFDLEVBQUUsQ0FBQztTQUNoQix3QkFBd0IsQ0FBQyxDQUFDLENBQUM7U0FDM0Isb0JBQW9CLENBQUMsSUFBSSxDQUFDO1NBQzFCLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFLaEMsT0FBTztRQUNILElBQUksRUFDQSxJQUFJLGVBQU0sRUFBRTthQUNYLG9CQUFvQixDQUFDLElBQUksQ0FBQzthQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDO2FBQ1YsYUFBYSxDQUFDLElBQUksQ0FBQzthQUNuQixLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQzthQUNsQixLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQzthQUVsQixnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7YUFDdEIsWUFBWSxDQUFDLEVBQUUsQ0FBQzthQUNoQix3QkFBd0IsQ0FBQyxDQUFDLENBQUM7YUFDM0IsZ0JBQWdCLENBQUMsVUFBVSxDQUFDO1lBQ3pCLFVBQVUsR0FBRyxDQUFDLENBQUM7WUFDZixVQUFVLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUM7Z0JBQ2pDLENBQUMsQ0FBQyxPQUFPLEdBQUcsWUFBWSxDQUFBO1lBQzVCLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUM7UUFDbEMsVUFBVSxFQUFFLFVBQVU7S0FDekIsQ0FBQztBQUNOLENBQUM7QUFyRUQsb0RBcUVDIn0=","\"use strict\";\r\nfunction __export(m) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n__export(require(\"./src/adaptor\"));\r\n__export(require(\"./src/d3adaptor\"));\r\n__export(require(\"./src/descent\"));\r\n__export(require(\"./src/geom\"));\r\n__export(require(\"./src/gridrouter\"));\r\n__export(require(\"./src/handledisconnected\"));\r\n__export(require(\"./src/layout\"));\r\n__export(require(\"./src/layout3d\"));\r\n__export(require(\"./src/linklengths\"));\r\n__export(require(\"./src/powergraph\"));\r\n__export(require(\"./src/pqueue\"));\r\n__export(require(\"./src/rbtree\"));\r\n__export(require(\"./src/rectangle\"));\r\n__export(require(\"./src/shortestpaths\"));\r\n__export(require(\"./src/vpsc\"));\r\n__export(require(\"./src/batch\"));\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9XZWJDb2xhL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsbUNBQTZCO0FBQzdCLHFDQUErQjtBQUMvQixtQ0FBNkI7QUFDN0IsZ0NBQTBCO0FBQzFCLHNDQUFnQztBQUNoQyw4Q0FBd0M7QUFDeEMsa0NBQTRCO0FBQzVCLG9DQUE4QjtBQUM5Qix1Q0FBaUM7QUFDakMsc0NBQWdDO0FBQ2hDLGtDQUE0QjtBQUM1QixrQ0FBNEI7QUFDNUIscUNBQStCO0FBQy9CLHlDQUFtQztBQUNuQyxnQ0FBMEI7QUFDMUIsaUNBQTJCIn0=","\"use strict\";\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar rectangle_1 = require(\"./rectangle\");\r\nvar Point = (function () {\r\n function Point() {\r\n }\r\n return Point;\r\n}());\r\nexports.Point = Point;\r\nvar LineSegment = (function () {\r\n function LineSegment(x1, y1, x2, y2) {\r\n this.x1 = x1;\r\n this.y1 = y1;\r\n this.x2 = x2;\r\n this.y2 = y2;\r\n }\r\n return LineSegment;\r\n}());\r\nexports.LineSegment = LineSegment;\r\nvar PolyPoint = (function (_super) {\r\n __extends(PolyPoint, _super);\r\n function PolyPoint() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n return PolyPoint;\r\n}(Point));\r\nexports.PolyPoint = PolyPoint;\r\nfunction isLeft(P0, P1, P2) {\r\n return (P1.x - P0.x) * (P2.y - P0.y) - (P2.x - P0.x) * (P1.y - P0.y);\r\n}\r\nexports.isLeft = isLeft;\r\nfunction above(p, vi, vj) {\r\n return isLeft(p, vi, vj) > 0;\r\n}\r\nfunction below(p, vi, vj) {\r\n return isLeft(p, vi, vj) < 0;\r\n}\r\nfunction ConvexHull(S) {\r\n var P = S.slice(0).sort(function (a, b) { return a.x !== b.x ? b.x - a.x : b.y - a.y; });\r\n var n = S.length, i;\r\n var minmin = 0;\r\n var xmin = P[0].x;\r\n for (i = 1; i < n; ++i) {\r\n if (P[i].x !== xmin)\r\n break;\r\n }\r\n var minmax = i - 1;\r\n var H = [];\r\n H.push(P[minmin]);\r\n if (minmax === n - 1) {\r\n if (P[minmax].y !== P[minmin].y)\r\n H.push(P[minmax]);\r\n }\r\n else {\r\n var maxmin, maxmax = n - 1;\r\n var xmax = P[n - 1].x;\r\n for (i = n - 2; i >= 0; i--)\r\n if (P[i].x !== xmax)\r\n break;\r\n maxmin = i + 1;\r\n i = minmax;\r\n while (++i <= maxmin) {\r\n if (isLeft(P[minmin], P[maxmin], P[i]) >= 0 && i < maxmin)\r\n continue;\r\n while (H.length > 1) {\r\n if (isLeft(H[H.length - 2], H[H.length - 1], P[i]) > 0)\r\n break;\r\n else\r\n H.length -= 1;\r\n }\r\n if (i != minmin)\r\n H.push(P[i]);\r\n }\r\n if (maxmax != maxmin)\r\n H.push(P[maxmax]);\r\n var bot = H.length;\r\n i = maxmin;\r\n while (--i >= minmax) {\r\n if (isLeft(P[maxmax], P[minmax], P[i]) >= 0 && i > minmax)\r\n continue;\r\n while (H.length > bot) {\r\n if (isLeft(H[H.length - 2], H[H.length - 1], P[i]) > 0)\r\n break;\r\n else\r\n H.length -= 1;\r\n }\r\n if (i != minmin)\r\n H.push(P[i]);\r\n }\r\n }\r\n return H;\r\n}\r\nexports.ConvexHull = ConvexHull;\r\nfunction clockwiseRadialSweep(p, P, f) {\r\n P.slice(0).sort(function (a, b) { return Math.atan2(a.y - p.y, a.x - p.x) - Math.atan2(b.y - p.y, b.x - p.x); }).forEach(f);\r\n}\r\nexports.clockwiseRadialSweep = clockwiseRadialSweep;\r\nfunction nextPolyPoint(p, ps) {\r\n if (p.polyIndex === ps.length - 1)\r\n return ps[0];\r\n return ps[p.polyIndex + 1];\r\n}\r\nfunction prevPolyPoint(p, ps) {\r\n if (p.polyIndex === 0)\r\n return ps[ps.length - 1];\r\n return ps[p.polyIndex - 1];\r\n}\r\nfunction tangent_PointPolyC(P, V) {\r\n var Vclosed = V.slice(0);\r\n Vclosed.push(V[0]);\r\n return { rtan: Rtangent_PointPolyC(P, Vclosed), ltan: Ltangent_PointPolyC(P, Vclosed) };\r\n}\r\nfunction Rtangent_PointPolyC(P, V) {\r\n var n = V.length - 1;\r\n var a, b, c;\r\n var upA, dnC;\r\n if (below(P, V[1], V[0]) && !above(P, V[n - 1], V[0]))\r\n return 0;\r\n for (a = 0, b = n;;) {\r\n if (b - a === 1)\r\n if (above(P, V[a], V[b]))\r\n return a;\r\n else\r\n return b;\r\n c = Math.floor((a + b) / 2);\r\n dnC = below(P, V[c + 1], V[c]);\r\n if (dnC && !above(P, V[c - 1], V[c]))\r\n return c;\r\n upA = above(P, V[a + 1], V[a]);\r\n if (upA) {\r\n if (dnC)\r\n b = c;\r\n else {\r\n if (above(P, V[a], V[c]))\r\n b = c;\r\n else\r\n a = c;\r\n }\r\n }\r\n else {\r\n if (!dnC)\r\n a = c;\r\n else {\r\n if (below(P, V[a], V[c]))\r\n b = c;\r\n else\r\n a = c;\r\n }\r\n }\r\n }\r\n}\r\nfunction Ltangent_PointPolyC(P, V) {\r\n var n = V.length - 1;\r\n var a, b, c;\r\n var dnA, dnC;\r\n if (above(P, V[n - 1], V[0]) && !below(P, V[1], V[0]))\r\n return 0;\r\n for (a = 0, b = n;;) {\r\n if (b - a === 1)\r\n if (below(P, V[a], V[b]))\r\n return a;\r\n else\r\n return b;\r\n c = Math.floor((a + b) / 2);\r\n dnC = below(P, V[c + 1], V[c]);\r\n if (above(P, V[c - 1], V[c]) && !dnC)\r\n return c;\r\n dnA = below(P, V[a + 1], V[a]);\r\n if (dnA) {\r\n if (!dnC)\r\n b = c;\r\n else {\r\n if (below(P, V[a], V[c]))\r\n b = c;\r\n else\r\n a = c;\r\n }\r\n }\r\n else {\r\n if (dnC)\r\n a = c;\r\n else {\r\n if (above(P, V[a], V[c]))\r\n b = c;\r\n else\r\n a = c;\r\n }\r\n }\r\n }\r\n}\r\nfunction tangent_PolyPolyC(V, W, t1, t2, cmp1, cmp2) {\r\n var ix1, ix2;\r\n ix1 = t1(W[0], V);\r\n ix2 = t2(V[ix1], W);\r\n var done = false;\r\n while (!done) {\r\n done = true;\r\n while (true) {\r\n if (ix1 === V.length - 1)\r\n ix1 = 0;\r\n if (cmp1(W[ix2], V[ix1], V[ix1 + 1]))\r\n break;\r\n ++ix1;\r\n }\r\n while (true) {\r\n if (ix2 === 0)\r\n ix2 = W.length - 1;\r\n if (cmp2(V[ix1], W[ix2], W[ix2 - 1]))\r\n break;\r\n --ix2;\r\n done = false;\r\n }\r\n }\r\n return { t1: ix1, t2: ix2 };\r\n}\r\nexports.tangent_PolyPolyC = tangent_PolyPolyC;\r\nfunction LRtangent_PolyPolyC(V, W) {\r\n var rl = RLtangent_PolyPolyC(W, V);\r\n return { t1: rl.t2, t2: rl.t1 };\r\n}\r\nexports.LRtangent_PolyPolyC = LRtangent_PolyPolyC;\r\nfunction RLtangent_PolyPolyC(V, W) {\r\n return tangent_PolyPolyC(V, W, Rtangent_PointPolyC, Ltangent_PointPolyC, above, below);\r\n}\r\nexports.RLtangent_PolyPolyC = RLtangent_PolyPolyC;\r\nfunction LLtangent_PolyPolyC(V, W) {\r\n return tangent_PolyPolyC(V, W, Ltangent_PointPolyC, Ltangent_PointPolyC, below, below);\r\n}\r\nexports.LLtangent_PolyPolyC = LLtangent_PolyPolyC;\r\nfunction RRtangent_PolyPolyC(V, W) {\r\n return tangent_PolyPolyC(V, W, Rtangent_PointPolyC, Rtangent_PointPolyC, above, above);\r\n}\r\nexports.RRtangent_PolyPolyC = RRtangent_PolyPolyC;\r\nvar BiTangent = (function () {\r\n function BiTangent(t1, t2) {\r\n this.t1 = t1;\r\n this.t2 = t2;\r\n }\r\n return BiTangent;\r\n}());\r\nexports.BiTangent = BiTangent;\r\nvar BiTangents = (function () {\r\n function BiTangents() {\r\n }\r\n return BiTangents;\r\n}());\r\nexports.BiTangents = BiTangents;\r\nvar TVGPoint = (function (_super) {\r\n __extends(TVGPoint, _super);\r\n function TVGPoint() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n return TVGPoint;\r\n}(Point));\r\nexports.TVGPoint = TVGPoint;\r\nvar VisibilityVertex = (function () {\r\n function VisibilityVertex(id, polyid, polyvertid, p) {\r\n this.id = id;\r\n this.polyid = polyid;\r\n this.polyvertid = polyvertid;\r\n this.p = p;\r\n p.vv = this;\r\n }\r\n return VisibilityVertex;\r\n}());\r\nexports.VisibilityVertex = VisibilityVertex;\r\nvar VisibilityEdge = (function () {\r\n function VisibilityEdge(source, target) {\r\n this.source = source;\r\n this.target = target;\r\n }\r\n VisibilityEdge.prototype.length = function () {\r\n var dx = this.source.p.x - this.target.p.x;\r\n var dy = this.source.p.y - this.target.p.y;\r\n return Math.sqrt(dx * dx + dy * dy);\r\n };\r\n return VisibilityEdge;\r\n}());\r\nexports.VisibilityEdge = VisibilityEdge;\r\nvar TangentVisibilityGraph = (function () {\r\n function TangentVisibilityGraph(P, g0) {\r\n this.P = P;\r\n this.V = [];\r\n this.E = [];\r\n if (!g0) {\r\n var n = P.length;\r\n for (var i = 0; i < n; i++) {\r\n var p = P[i];\r\n for (var j = 0; j < p.length; ++j) {\r\n var pj = p[j], vv = new VisibilityVertex(this.V.length, i, j, pj);\r\n this.V.push(vv);\r\n if (j > 0)\r\n this.E.push(new VisibilityEdge(p[j - 1].vv, vv));\r\n }\r\n if (p.length > 1)\r\n this.E.push(new VisibilityEdge(p[0].vv, p[p.length - 1].vv));\r\n }\r\n for (var i = 0; i < n - 1; i++) {\r\n var Pi = P[i];\r\n for (var j = i + 1; j < n; j++) {\r\n var Pj = P[j], t = tangents(Pi, Pj);\r\n for (var q in t) {\r\n var c = t[q], source = Pi[c.t1], target = Pj[c.t2];\r\n this.addEdgeIfVisible(source, target, i, j);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n this.V = g0.V.slice(0);\r\n this.E = g0.E.slice(0);\r\n }\r\n }\r\n TangentVisibilityGraph.prototype.addEdgeIfVisible = function (u, v, i1, i2) {\r\n if (!this.intersectsPolys(new LineSegment(u.x, u.y, v.x, v.y), i1, i2)) {\r\n this.E.push(new VisibilityEdge(u.vv, v.vv));\r\n }\r\n };\r\n TangentVisibilityGraph.prototype.addPoint = function (p, i1) {\r\n var n = this.P.length;\r\n this.V.push(new VisibilityVertex(this.V.length, n, 0, p));\r\n for (var i = 0; i < n; ++i) {\r\n if (i === i1)\r\n continue;\r\n var poly = this.P[i], t = tangent_PointPolyC(p, poly);\r\n this.addEdgeIfVisible(p, poly[t.ltan], i1, i);\r\n this.addEdgeIfVisible(p, poly[t.rtan], i1, i);\r\n }\r\n return p.vv;\r\n };\r\n TangentVisibilityGraph.prototype.intersectsPolys = function (l, i1, i2) {\r\n for (var i = 0, n = this.P.length; i < n; ++i) {\r\n if (i != i1 && i != i2 && intersects(l, this.P[i]).length > 0) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n return TangentVisibilityGraph;\r\n}());\r\nexports.TangentVisibilityGraph = TangentVisibilityGraph;\r\nfunction intersects(l, P) {\r\n var ints = [];\r\n for (var i = 1, n = P.length; i < n; ++i) {\r\n var int = rectangle_1.Rectangle.lineIntersection(l.x1, l.y1, l.x2, l.y2, P[i - 1].x, P[i - 1].y, P[i].x, P[i].y);\r\n if (int)\r\n ints.push(int);\r\n }\r\n return ints;\r\n}\r\nfunction tangents(V, W) {\r\n var m = V.length - 1, n = W.length - 1;\r\n var bt = new BiTangents();\r\n for (var i = 0; i < m; ++i) {\r\n for (var j = 0; j < n; ++j) {\r\n var v1 = V[i == 0 ? m - 1 : i - 1];\r\n var v2 = V[i];\r\n var v3 = V[i + 1];\r\n var w1 = W[j == 0 ? n - 1 : j - 1];\r\n var w2 = W[j];\r\n var w3 = W[j + 1];\r\n var v1v2w2 = isLeft(v1, v2, w2);\r\n var v2w1w2 = isLeft(v2, w1, w2);\r\n var v2w2w3 = isLeft(v2, w2, w3);\r\n var w1w2v2 = isLeft(w1, w2, v2);\r\n var w2v1v2 = isLeft(w2, v1, v2);\r\n var w2v2v3 = isLeft(w2, v2, v3);\r\n if (v1v2w2 >= 0 && v2w1w2 >= 0 && v2w2w3 < 0\r\n && w1w2v2 >= 0 && w2v1v2 >= 0 && w2v2v3 < 0) {\r\n bt.ll = new BiTangent(i, j);\r\n }\r\n else if (v1v2w2 <= 0 && v2w1w2 <= 0 && v2w2w3 > 0\r\n && w1w2v2 <= 0 && w2v1v2 <= 0 && w2v2v3 > 0) {\r\n bt.rr = new BiTangent(i, j);\r\n }\r\n else if (v1v2w2 <= 0 && v2w1w2 > 0 && v2w2w3 <= 0\r\n && w1w2v2 >= 0 && w2v1v2 < 0 && w2v2v3 >= 0) {\r\n bt.rl = new BiTangent(i, j);\r\n }\r\n else if (v1v2w2 >= 0 && v2w1w2 < 0 && v2w2w3 >= 0\r\n && w1w2v2 <= 0 && w2v1v2 > 0 && w2v2v3 <= 0) {\r\n bt.lr = new BiTangent(i, j);\r\n }\r\n }\r\n }\r\n return bt;\r\n}\r\nexports.tangents = tangents;\r\nfunction isPointInsidePoly(p, poly) {\r\n for (var i = 1, n = poly.length; i < n; ++i)\r\n if (below(poly[i - 1], poly[i], p))\r\n return false;\r\n return true;\r\n}\r\nfunction isAnyPInQ(p, q) {\r\n return !p.every(function (v) { return !isPointInsidePoly(v, q); });\r\n}\r\nfunction polysOverlap(p, q) {\r\n if (isAnyPInQ(p, q))\r\n return true;\r\n if (isAnyPInQ(q, p))\r\n return true;\r\n for (var i = 1, n = p.length; i < n; ++i) {\r\n var v = p[i], u = p[i - 1];\r\n if (intersects(new LineSegment(u.x, u.y, v.x, v.y), q).length > 0)\r\n return true;\r\n }\r\n return false;\r\n}\r\nexports.polysOverlap = polysOverlap;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL1dlYkNvbGEvc3JjL2dlb20udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQUEseUNBQXFDO0FBQ2pDO0lBQUE7SUFHQSxDQUFDO0lBQUQsWUFBQztBQUFELENBQUMsQUFIRCxJQUdDO0FBSFksc0JBQUs7QUFLbEI7SUFDSSxxQkFBbUIsRUFBVSxFQUFTLEVBQVUsRUFBUyxFQUFVLEVBQVMsRUFBVTtRQUFuRSxPQUFFLEdBQUYsRUFBRSxDQUFRO1FBQVMsT0FBRSxHQUFGLEVBQUUsQ0FBUTtRQUFTLE9BQUUsR0FBRixFQUFFLENBQVE7UUFBUyxPQUFFLEdBQUYsRUFBRSxDQUFRO0lBQUksQ0FBQztJQUMvRixrQkFBQztBQUFELENBQUMsQUFGRCxJQUVDO0FBRlksa0NBQVc7QUFJeEI7SUFBK0IsNkJBQUs7SUFBcEM7O0lBRUEsQ0FBQztJQUFELGdCQUFDO0FBQUQsQ0FBQyxBQUZELENBQStCLEtBQUssR0FFbkM7QUFGWSw4QkFBUztBQVV0QixTQUFnQixNQUFNLENBQUMsRUFBUyxFQUFFLEVBQVMsRUFBRSxFQUFTO0lBQ2xELE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN6RSxDQUFDO0FBRkQsd0JBRUM7QUFFRCxTQUFTLEtBQUssQ0FBQyxDQUFRLEVBQUUsRUFBUyxFQUFFLEVBQVM7SUFDekMsT0FBTyxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDakMsQ0FBQztBQUVE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SSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFHckIsSUFBSSxDQUFTLEVBQUUsQ0FBUyxFQUFFLENBQVMsQ0FBQztJQUNwQyxJQUFJLEdBQVksRUFBRSxHQUFZLENBQUM7SUFJL0IsSUFBSSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDakQsT0FBTyxDQUFDLENBQUM7SUFFYixLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSztRQUNsQixJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQztZQUNYLElBQUksS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNwQixPQUFPLENBQUMsQ0FBQzs7Z0JBRVQsT0FBTyxDQUFDLENBQUM7UUFFakIsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDNUIsR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMvQixJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDaEMsT0FBTyxDQUFDLENBQUM7UUFJYixHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMs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","/**\r\n * @module color-parse\r\n */\r\n\r\n'use strict'\r\n\r\nvar names = require('color-name')\r\n\r\nmodule.exports = parse\r\n\r\n/**\r\n * Base hues\r\n * http://dev.w3.org/csswg/css-color/#typedef-named-hue\r\n */\r\n//FIXME: use external hue detector\r\nvar baseHues = {\r\n\tred: 0,\r\n\torange: 60,\r\n\tyellow: 120,\r\n\tgreen: 180,\r\n\tblue: 240,\r\n\tpurple: 300\r\n}\r\n\r\n/**\r\n * Parse color from the string passed\r\n *\r\n * @return {Object} A space indicator `space`, an array `values` and `alpha`\r\n */\r\nfunction parse (cstr) {\r\n\tvar m, parts = [], alpha = 1, space\r\n\r\n\tif (typeof cstr === 'string') {\r\n\t\t//keyword\r\n\t\tif (names[cstr]) {\r\n\t\t\tparts = names[cstr].slice()\r\n\t\t\tspace = 'rgb'\r\n\t\t}\r\n\r\n\t\t//reserved words\r\n\t\telse if (cstr === 'transparent') {\r\n\t\t\talpha = 0\r\n\t\t\tspace = 'rgb'\r\n\t\t\tparts = [0,0,0]\r\n\t\t}\r\n\r\n\t\t//hex\r\n\t\telse if (/^#[A-Fa-f0-9]+$/.test(cstr)) {\r\n\t\t\tvar base = cstr.slice(1)\r\n\t\t\tvar size = base.length\r\n\t\t\tvar isShort = size <= 4\r\n\t\t\talpha = 1\r\n\r\n\t\t\tif (isShort) {\r\n\t\t\t\tparts = [\r\n\t\t\t\t\tparseInt(base[0] + base[0], 16),\r\n\t\t\t\t\tparseInt(base[1] + base[1], 16),\r\n\t\t\t\t\tparseInt(base[2] + base[2], 16)\r\n\t\t\t\t]\r\n\t\t\t\tif (size === 4) {\r\n\t\t\t\t\talpha = parseInt(base[3] + base[3], 16) / 255\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tparts = [\r\n\t\t\t\t\tparseInt(base[0] + base[1], 16),\r\n\t\t\t\t\tparseInt(base[2] + base[3], 16),\r\n\t\t\t\t\tparseInt(base[4] + base[5], 16)\r\n\t\t\t\t]\r\n\t\t\t\tif (size === 8) {\r\n\t\t\t\t\talpha = parseInt(base[6] + base[7], 16) / 255\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (!parts[0]) parts[0] = 0\r\n\t\t\tif (!parts[1]) parts[1] = 0\r\n\t\t\tif (!parts[2]) parts[2] = 0\r\n\r\n\t\t\tspace = 'rgb'\r\n\t\t}\r\n\r\n\t\t//color space\r\n\t\telse if (m = /^((?:rgb|hs[lvb]|hwb|cmyk?|xy[zy]|gray|lab|lchu?v?|[ly]uv|lms)a?)\\s*\\(([^\\)]*)\\)/.exec(cstr)) {\r\n\t\t\tvar name = m[1]\r\n\t\t\tvar isRGB = name === 'rgb'\r\n\t\t\tvar base = name.replace(/a$/, '')\r\n\t\t\tspace = base\r\n\t\t\tvar size = base === 'cmyk' ? 4 : base === 'gray' ? 1 : 3\r\n\t\t\tparts = m[2].trim()\r\n\t\t\t\t.split(/\\s*[,\\/]\\s*|\\s+/)\r\n\t\t\t\t.map(function (x, i) {\r\n\t\t\t\t\t//\r\n\t\t\t\t\tif (/%$/.test(x)) {\r\n\t\t\t\t\t\t//alpha\r\n\t\t\t\t\t\tif (i === size)\treturn parseFloat(x) / 100\r\n\t\t\t\t\t\t//rgb\r\n\t\t\t\t\t\tif (base === 'rgb') return parseFloat(x) * 255 / 100\r\n\t\t\t\t\t\treturn parseFloat(x)\r\n\t\t\t\t\t}\r\n\t\t\t\t\t//hue\r\n\t\t\t\t\telse if (base[i] === 'h') {\r\n\t\t\t\t\t\t//\r\n\t\t\t\t\t\tif (/deg$/.test(x)) {\r\n\t\t\t\t\t\t\treturn parseFloat(x)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t//\r\n\t\t\t\t\t\telse if (baseHues[x] !== undefined) {\r\n\t\t\t\t\t\t\treturn baseHues[x]\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn parseFloat(x)\r\n\t\t\t\t})\r\n\r\n\t\t\tif (name === base) parts.push(1)\r\n\t\t\talpha = (isRGB) ? 1 : (parts[size] === undefined) ? 1 : parts[size]\r\n\t\t\tparts = parts.slice(0, size)\r\n\t\t}\r\n\r\n\t\t//named channels case\r\n\t\telse if (cstr.length > 10 && /[0-9](?:\\s|\\/)/.test(cstr)) {\r\n\t\t\tparts = cstr.match(/([0-9]+)/g).map(function (value) {\r\n\t\t\t\treturn parseFloat(value)\r\n\t\t\t})\r\n\r\n\t\t\tspace = cstr.match(/([a-z])/ig).join('').toLowerCase()\r\n\t\t}\r\n\t}\r\n\r\n\t//numeric case\r\n\telse if (!isNaN(cstr)) {\r\n\t\tspace = 'rgb'\r\n\t\tparts = [cstr >>> 16, (cstr & 0x00ff00) >>> 8, cstr & 0x0000ff]\r\n\t}\r\n\r\n\t//array-like\r\n\telse if (Array.isArray(cstr) || cstr.length) {\r\n\t\tparts = [cstr[0], cstr[1], cstr[2]]\r\n\t\tspace = 'rgb'\r\n\t\talpha = cstr.length === 4 ? cstr[3] : 1\r\n\t}\r\n\r\n\t//object case - detects css cases of rgb and hsl\r\n\telse if (cstr instanceof Object) {\r\n\t\tif (cstr.r != null || cstr.red != null || cstr.R != null) {\r\n\t\t\tspace = 'rgb'\r\n\t\t\tparts = [\r\n\t\t\t\tcstr.r || cstr.red || cstr.R || 0,\r\n\t\t\t\tcstr.g || cstr.green || cstr.G || 0,\r\n\t\t\t\tcstr.b || cstr.blue || cstr.B || 0\r\n\t\t\t]\r\n\t\t}\r\n\t\telse {\r\n\t\t\tspace = 'hsl'\r\n\t\t\tparts = [\r\n\t\t\t\tcstr.h || cstr.hue || cstr.H || 0,\r\n\t\t\t\tcstr.s || cstr.saturation || cstr.S || 0,\r\n\t\t\t\tcstr.l || cstr.lightness || cstr.L || cstr.b || cstr.brightness\r\n\t\t\t]\r\n\t\t}\r\n\r\n\t\talpha = cstr.a || cstr.alpha || cstr.opacity || 1\r\n\r\n\t\tif (cstr.opacity != null) alpha /= 100\r\n\t}\r\n\r\n\treturn {\r\n\t\tspace: space,\r\n\t\tvalues: parts,\r\n\t\talpha: alpha\r\n\t}\r\n}\r\n","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"layoutBase\"] = factory();\n\telse\n\t\troot[\"layoutBase\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// identity function for calling harmony imports with the correct context\n/******/ \t__webpack_require__.i = function(value) { return value; };\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 26);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction LayoutConstants() {}\n\n/**\r\n * Layout Quality: 0:draft, 1:default, 2:proof\r\n */\nLayoutConstants.QUALITY = 1;\n\n/**\r\n * Default parameters\r\n */\nLayoutConstants.DEFAULT_CREATE_BENDS_AS_NEEDED = false;\nLayoutConstants.DEFAULT_INCREMENTAL = false;\nLayoutConstants.DEFAULT_ANIMATION_ON_LAYOUT = true;\nLayoutConstants.DEFAULT_ANIMATION_DURING_LAYOUT = false;\nLayoutConstants.DEFAULT_ANIMATION_PERIOD = 50;\nLayoutConstants.DEFAULT_UNIFORM_LEAF_NODE_SIZES = false;\n\n// -----------------------------------------------------------------------------\n// Section: General other constants\n// -----------------------------------------------------------------------------\n/*\r\n * Margins of a graph to be applied on bouding rectangle of its contents. We\r\n * assume margins on all four sides to be uniform.\r\n */\nLayoutConstants.DEFAULT_GRAPH_MARGIN = 15;\n\n/*\r\n * Whether to consider labels in node dimensions or not\r\n */\nLayoutConstants.NODE_DIMENSIONS_INCLUDE_LABELS = false;\n\n/*\r\n * Default dimension of a non-compound node.\r\n */\nLayoutConstants.SIMPLE_NODE_SIZE = 40;\n\n/*\r\n * Default dimension of a non-compound node.\r\n */\nLayoutConstants.SIMPLE_NODE_HALF_SIZE = LayoutConstants.SIMPLE_NODE_SIZE / 2;\n\n/*\r\n * Empty compound node size. When a compound node is empty, its both\r\n * dimensions should be of this value.\r\n */\nLayoutConstants.EMPTY_COMPOUND_NODE_SIZE = 40;\n\n/*\r\n * Minimum length that an edge should take during layout\r\n */\nLayoutConstants.MIN_EDGE_LENGTH = 1;\n\n/*\r\n * World boundaries that layout operates on\r\n */\nLayoutConstants.WORLD_BOUNDARY = 1000000;\n\n/*\r\n * World boundaries that random positioning can be performed with\r\n */\nLayoutConstants.INITIAL_WORLD_BOUNDARY = LayoutConstants.WORLD_BOUNDARY / 1000;\n\n/*\r\n * Coordinates of the world center\r\n */\nLayoutConstants.WORLD_CENTER_X = 1200;\nLayoutConstants.WORLD_CENTER_Y = 900;\n\nmodule.exports = LayoutConstants;\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar LGraphObject = __webpack_require__(2);\nvar IGeometry = __webpack_require__(8);\nvar IMath = __webpack_require__(9);\n\nfunction LEdge(source, target, vEdge) {\n LGraphObject.call(this, vEdge);\n\n this.isOverlapingSourceAndTarget = false;\n this.vGraphObject = vEdge;\n this.bendpoints = [];\n this.source = source;\n this.target = target;\n}\n\nLEdge.prototype = Object.create(LGraphObject.prototype);\n\nfor (var prop in LGraphObject) {\n LEdge[prop] = LGraphObject[prop];\n}\n\nLEdge.prototype.getSource = function () {\n return this.source;\n};\n\nLEdge.prototype.getTarget = function () {\n return this.target;\n};\n\nLEdge.prototype.isInterGraph = function () {\n return this.isInterGraph;\n};\n\nLEdge.prototype.getLength = function () {\n return this.length;\n};\n\nLEdge.prototype.isOverlapingSourceAndTarget = function () {\n return this.isOverlapingSourceAndTarget;\n};\n\nLEdge.prototype.getBendpoints = function () {\n return this.bendpoints;\n};\n\nLEdge.prototype.getLca = function () {\n return this.lca;\n};\n\nLEdge.prototype.getSourceInLca = function () {\n return this.sourceInLca;\n};\n\nLEdge.prototype.getTargetInLca = function () {\n return this.targetInLca;\n};\n\nLEdge.prototype.getOtherEnd = function (node) {\n if (this.source === node) {\n return this.target;\n } else if (this.target === node) {\n return this.source;\n } else {\n throw \"Node is not incident with this edge\";\n }\n};\n\nLEdge.prototype.getOtherEndInGraph = function (node, graph) {\n var otherEnd = this.getOtherEnd(node);\n var root = graph.getGraphManager().getRoot();\n\n while (true) {\n if (otherEnd.getOwner() == graph) {\n return otherEnd;\n }\n\n if (otherEnd.getOwner() == root) {\n break;\n }\n\n otherEnd = otherEnd.getOwner().getParent();\n }\n\n return null;\n};\n\nLEdge.prototype.updateLength = function () {\n var clipPointCoordinates = new Array(4);\n\n this.isOverlapingSourceAndTarget = IGeometry.getIntersection(this.target.getRect(), this.source.getRect(), clipPointCoordinates);\n\n if (!this.isOverlapingSourceAndTarget) {\n this.lengthX = clipPointCoordinates[0] - clipPointCoordinates[2];\n this.lengthY = clipPointCoordinates[1] - clipPointCoordinates[3];\n\n if (Math.abs(this.lengthX) < 1.0) {\n this.lengthX = IMath.sign(this.lengthX);\n }\n\n if (Math.abs(this.lengthY) < 1.0) {\n this.lengthY = IMath.sign(this.lengthY);\n }\n\n this.length = Math.sqrt(this.lengthX * this.lengthX + this.lengthY * this.lengthY);\n }\n};\n\nLEdge.prototype.updateLengthSimple = function () {\n this.lengthX = this.target.getCenterX() - this.source.getCenterX();\n this.lengthY = this.target.getCenterY() - this.source.getCenterY();\n\n if (Math.abs(this.lengthX) < 1.0) {\n this.lengthX = IMath.sign(this.lengthX);\n }\n\n if (Math.abs(this.lengthY) < 1.0) {\n this.lengthY = IMath.sign(this.lengthY);\n }\n\n this.length = Math.sqrt(this.lengthX * this.lengthX + this.lengthY * this.lengthY);\n};\n\nmodule.exports = LEdge;\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction LGraphObject(vGraphObject) {\n this.vGraphObject = vGraphObject;\n}\n\nmodule.exports = LGraphObject;\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar LGraphObject = __webpack_require__(2);\nvar Integer = __webpack_require__(10);\nvar RectangleD = __webpack_require__(13);\nvar LayoutConstants = __webpack_require__(0);\nvar RandomSeed = __webpack_require__(16);\nvar PointD = __webpack_require__(4);\n\nfunction LNode(gm, loc, size, vNode) {\n //Alternative constructor 1 : LNode(LGraphManager gm, Point loc, Dimension size, Object vNode)\n if (size == null && vNode == null) {\n vNode = loc;\n }\n\n LGraphObject.call(this, vNode);\n\n //Alternative constructor 2 : LNode(Layout layout, Object vNode)\n if (gm.graphManager != null) gm = gm.graphManager;\n\n this.estimatedSize = Integer.MIN_VALUE;\n this.inclusionTreeDepth = Integer.MAX_VALUE;\n this.vGraphObject = vNode;\n this.edges = [];\n this.graphManager = gm;\n\n if (size != null && loc != null) this.rect = new RectangleD(loc.x, loc.y, size.width, size.height);else this.rect = new RectangleD();\n}\n\nLNode.prototype = Object.create(LGraphObject.prototype);\nfor (var prop in LGraphObject) {\n LNode[prop] = LGraphObject[prop];\n}\n\nLNode.prototype.getEdges = function () {\n return this.edges;\n};\n\nLNode.prototype.getChild = function () {\n return this.child;\n};\n\nLNode.prototype.getOwner = function () {\n // if (this.owner != null) {\n // if (!(this.owner == null || this.owner.getNodes().indexOf(this) > -1)) {\n // throw \"assert failed\";\n // }\n // }\n\n return this.owner;\n};\n\nLNode.prototype.getWidth = function () {\n return this.rect.width;\n};\n\nLNode.prototype.setWidth = function (width) {\n this.rect.width = width;\n};\n\nLNode.prototype.getHeight = function () {\n return this.rect.height;\n};\n\nLNode.prototype.setHeight = function (height) {\n this.rect.height = height;\n};\n\nLNode.prototype.getCenterX = function () {\n return this.rect.x + this.rect.width / 2;\n};\n\nLNode.prototype.getCenterY = function () {\n return this.rect.y + this.rect.height / 2;\n};\n\nLNode.prototype.getCenter = function () {\n return new PointD(this.rect.x + this.rect.width / 2, this.rect.y + this.rect.height / 2);\n};\n\nLNode.prototype.getLocation = function () {\n return new PointD(this.rect.x, this.rect.y);\n};\n\nLNode.prototype.getRect = function () {\n return this.rect;\n};\n\nLNode.prototype.getDiagonal = function () {\n return Math.sqrt(this.rect.width * this.rect.width + this.rect.height * this.rect.height);\n};\n\n/**\n * This method returns half the diagonal length of this node.\n */\nLNode.prototype.getHalfTheDiagonal = function () {\n return Math.sqrt(this.rect.height * this.rect.height + this.rect.width * this.rect.width) / 2;\n};\n\nLNode.prototype.setRect = function (upperLeft, dimension) {\n this.rect.x = upperLeft.x;\n this.rect.y = upperLeft.y;\n this.rect.width = dimension.width;\n this.rect.height = dimension.height;\n};\n\nLNode.prototype.setCenter = function (cx, cy) {\n this.rect.x = cx - this.rect.width / 2;\n this.rect.y = cy - this.rect.height / 2;\n};\n\nLNode.prototype.setLocation = function (x, y) {\n this.rect.x = x;\n this.rect.y = y;\n};\n\nLNode.prototype.moveBy = function (dx, dy) {\n this.rect.x += dx;\n this.rect.y += dy;\n};\n\nLNode.prototype.getEdgeListToNode = function (to) {\n var edgeList = [];\n var edge;\n var self = this;\n\n self.edges.forEach(function (edge) {\n\n if (edge.target == to) {\n if (edge.source != self) throw \"Incorrect edge source!\";\n\n edgeList.push(edge);\n }\n });\n\n return edgeList;\n};\n\nLNode.prototype.getEdgesBetween = function (other) {\n var edgeList = [];\n var edge;\n\n var self = this;\n self.edges.forEach(function (edge) {\n\n if (!(edge.source == self || edge.target == self)) throw \"Incorrect edge source and/or target\";\n\n if (edge.target == other || edge.source == other) {\n edgeList.push(edge);\n }\n });\n\n return edgeList;\n};\n\nLNode.prototype.getNeighborsList = function () {\n var neighbors = new Set();\n\n var self = this;\n self.edges.forEach(function (edge) {\n\n if (edge.source == self) {\n neighbors.add(edge.target);\n } else {\n if (edge.target != self) {\n throw \"Incorrect incidency!\";\n }\n\n neighbors.add(edge.source);\n }\n });\n\n return neighbors;\n};\n\nLNode.prototype.withChildren = function () {\n var withNeighborsList = new Set();\n var childNode;\n var children;\n\n withNeighborsList.add(this);\n\n if (this.child != null) {\n var nodes = this.child.getNodes();\n for (var i = 0; i < nodes.length; i++) {\n childNode = nodes[i];\n children = childNode.withChildren();\n children.forEach(function (node) {\n withNeighborsList.add(node);\n });\n }\n }\n\n return withNeighborsList;\n};\n\nLNode.prototype.getNoOfChildren = function () {\n var noOfChildren = 0;\n var childNode;\n\n if (this.child == null) {\n noOfChildren = 1;\n } else {\n var nodes = this.child.getNodes();\n for (var i = 0; i < nodes.length; i++) {\n childNode = nodes[i];\n\n noOfChildren += childNode.getNoOfChildren();\n }\n }\n\n if (noOfChildren == 0) {\n noOfChildren = 1;\n }\n return noOfChildren;\n};\n\nLNode.prototype.getEstimatedSize = function () {\n if (this.estimatedSize == Integer.MIN_VALUE) {\n throw \"assert failed\";\n }\n return this.estimatedSize;\n};\n\nLNode.prototype.calcEstimatedSize = function () {\n if (this.child == null) {\n return this.estimatedSize = (this.rect.width + this.rect.height) / 2;\n } else {\n this.estimatedSize = this.child.calcEstimatedSize();\n this.rect.width = this.estimatedSize;\n this.rect.height = this.estimatedSize;\n\n return this.estimatedSize;\n }\n};\n\nLNode.prototype.scatter = function () {\n var randomCenterX;\n var randomCenterY;\n\n var minX = -LayoutConstants.INITIAL_WORLD_BOUNDARY;\n var maxX = LayoutConstants.INITIAL_WORLD_BOUNDARY;\n randomCenterX = LayoutConstants.WORLD_CENTER_X + RandomSeed.nextDouble() * (maxX - minX) + minX;\n\n var minY = -LayoutConstants.INITIAL_WORLD_BOUNDARY;\n var maxY = LayoutConstants.INITIAL_WORLD_BOUNDARY;\n randomCenterY = LayoutConstants.WORLD_CENTER_Y + RandomSeed.nextDouble() * (maxY - minY) + minY;\n\n this.rect.x = randomCenterX;\n this.rect.y = randomCenterY;\n};\n\nLNode.prototype.updateBounds = function () {\n if (this.getChild() == null) {\n throw \"assert failed\";\n }\n if (this.getChild().getNodes().length != 0) {\n // wrap the children nodes by re-arranging the boundaries\n var childGraph = this.getChild();\n childGraph.updateBounds(true);\n\n this.rect.x = childGraph.getLeft();\n this.rect.y = childGraph.getTop();\n\n this.setWidth(childGraph.getRight() - childGraph.getLeft());\n this.setHeight(childGraph.getBottom() - childGraph.getTop());\n\n // Update compound bounds considering its label properties \n if (LayoutConstants.NODE_DIMENSIONS_INCLUDE_LABELS) {\n\n var width = childGraph.getRight() - childGraph.getLeft();\n var height = childGraph.getBottom() - childGraph.getTop();\n\n if (this.labelWidth > width) {\n this.rect.x -= (this.labelWidth - width) / 2;\n this.setWidth(this.labelWidth);\n }\n\n if (this.labelHeight > height) {\n if (this.labelPos == \"center\") {\n this.rect.y -= (this.labelHeight - height) / 2;\n } else if (this.labelPos == \"top\") {\n this.rect.y -= this.labelHeight - height;\n }\n this.setHeight(this.labelHeight);\n }\n }\n }\n};\n\nLNode.prototype.getInclusionTreeDepth = function () {\n if (this.inclusionTreeDepth == Integer.MAX_VALUE) {\n throw \"assert failed\";\n }\n return this.inclusionTreeDepth;\n};\n\nLNode.prototype.transform = function (trans) {\n var left = this.rect.x;\n\n if (left > LayoutConstants.WORLD_BOUNDARY) {\n left = LayoutConstants.WORLD_BOUNDARY;\n } else if (left < -LayoutConstants.WORLD_BOUNDARY) {\n left = -LayoutConstants.WORLD_BOUNDARY;\n }\n\n var top = this.rect.y;\n\n if (top > LayoutConstants.WORLD_BOUNDARY) {\n top = LayoutConstants.WORLD_BOUNDARY;\n } else if (top < -LayoutConstants.WORLD_BOUNDARY) {\n top = -LayoutConstants.WORLD_BOUNDARY;\n }\n\n var leftTop = new PointD(left, top);\n var vLeftTop = trans.inverseTransformPoint(leftTop);\n\n this.setLocation(vLeftTop.x, vLeftTop.y);\n};\n\nLNode.prototype.getLeft = function () {\n return this.rect.x;\n};\n\nLNode.prototype.getRight = function () {\n return this.rect.x + this.rect.width;\n};\n\nLNode.prototype.getTop = function () {\n return this.rect.y;\n};\n\nLNode.prototype.getBottom = function () {\n return this.rect.y + this.rect.height;\n};\n\nLNode.prototype.getParent = function () {\n if (this.owner == null) {\n return null;\n }\n\n return this.owner.getParent();\n};\n\nmodule.exports = LNode;\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction PointD(x, y) {\n if (x == null && y == null) {\n this.x = 0;\n this.y = 0;\n } else {\n this.x = x;\n this.y = y;\n }\n}\n\nPointD.prototype.getX = function () {\n return this.x;\n};\n\nPointD.prototype.getY = function () {\n return this.y;\n};\n\nPointD.prototype.setX = function (x) {\n this.x = x;\n};\n\nPointD.prototype.setY = function (y) {\n this.y = y;\n};\n\nPointD.prototype.getDifference = function (pt) {\n return new DimensionD(this.x - pt.x, this.y - pt.y);\n};\n\nPointD.prototype.getCopy = function () {\n return new PointD(this.x, this.y);\n};\n\nPointD.prototype.translate = function (dim) {\n this.x += dim.width;\n this.y += dim.height;\n return this;\n};\n\nmodule.exports = PointD;\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar LGraphObject = __webpack_require__(2);\nvar Integer = __webpack_require__(10);\nvar LayoutConstants = __webpack_require__(0);\nvar LGraphManager = __webpack_require__(6);\nvar LNode = __webpack_require__(3);\nvar LEdge = __webpack_require__(1);\nvar RectangleD = __webpack_require__(13);\nvar Point = __webpack_require__(12);\nvar LinkedList = __webpack_require__(11);\n\nfunction LGraph(parent, obj2, vGraph) {\n LGraphObject.call(this, vGraph);\n this.estimatedSize = Integer.MIN_VALUE;\n this.margin = LayoutConstants.DEFAULT_GRAPH_MARGIN;\n this.edges = [];\n this.nodes = [];\n this.isConnected = false;\n this.parent = parent;\n\n if (obj2 != null && obj2 instanceof LGraphManager) {\n this.graphManager = obj2;\n } else if (obj2 != null && obj2 instanceof Layout) {\n this.graphManager = obj2.graphManager;\n }\n}\n\nLGraph.prototype = Object.create(LGraphObject.prototype);\nfor (var prop in LGraphObject) {\n LGraph[prop] = LGraphObject[prop];\n}\n\nLGraph.prototype.getNodes = function () {\n return this.nodes;\n};\n\nLGraph.prototype.getEdges = function () {\n return this.edges;\n};\n\nLGraph.prototype.getGraphManager = function () {\n return this.graphManager;\n};\n\nLGraph.prototype.getParent = function () {\n return this.parent;\n};\n\nLGraph.prototype.getLeft = function () {\n return this.left;\n};\n\nLGraph.prototype.getRight = function () {\n return this.right;\n};\n\nLGraph.prototype.getTop = function () {\n return this.top;\n};\n\nLGraph.prototype.getBottom = function () {\n return this.bottom;\n};\n\nLGraph.prototype.isConnected = function () {\n return this.isConnected;\n};\n\nLGraph.prototype.add = function (obj1, sourceNode, targetNode) {\n if (sourceNode == null && targetNode == null) {\n var newNode = obj1;\n if (this.graphManager == null) {\n throw \"Graph has no graph mgr!\";\n }\n if (this.getNodes().indexOf(newNode) > -1) {\n throw \"Node already in graph!\";\n }\n newNode.owner = this;\n this.getNodes().push(newNode);\n\n return newNode;\n } else {\n var newEdge = obj1;\n if (!(this.getNodes().indexOf(sourceNode) > -1 && this.getNodes().indexOf(targetNode) > -1)) {\n throw \"Source or target not in graph!\";\n }\n\n if (!(sourceNode.owner == targetNode.owner && sourceNode.owner == this)) {\n throw \"Both owners must be this graph!\";\n }\n\n if (sourceNode.owner != targetNode.owner) {\n return null;\n }\n\n // set source and target\n newEdge.source = sourceNode;\n newEdge.target = targetNode;\n\n // set as intra-graph edge\n newEdge.isInterGraph = false;\n\n // add to graph edge list\n this.getEdges().push(newEdge);\n\n // add to incidency lists\n sourceNode.edges.push(newEdge);\n\n if (targetNode != sourceNode) {\n targetNode.edges.push(newEdge);\n }\n\n return newEdge;\n }\n};\n\nLGraph.prototype.remove = function (obj) {\n var node = obj;\n if (obj instanceof LNode) {\n if (node == null) {\n throw \"Node is null!\";\n }\n if (!(node.owner != null && node.owner == this)) {\n throw \"Owner graph is invalid!\";\n }\n if (this.graphManager == null) {\n throw \"Owner graph manager is invalid!\";\n }\n // remove incident edges first (make a copy to do it safely)\n var edgesToBeRemoved = node.edges.slice();\n var edge;\n var s = edgesToBeRemoved.length;\n for (var i = 0; i < s; i++) {\n edge = edgesToBeRemoved[i];\n\n if (edge.isInterGraph) {\n this.graphManager.remove(edge);\n } else {\n edge.source.owner.remove(edge);\n }\n }\n\n // now the node itself\n var index = this.nodes.indexOf(node);\n if (index == -1) {\n throw \"Node not in owner node list!\";\n }\n\n this.nodes.splice(index, 1);\n } else if (obj instanceof LEdge) {\n var edge = obj;\n if (edge == null) {\n throw \"Edge is null!\";\n }\n if (!(edge.source != null && edge.target != null)) {\n throw \"Source and/or target is null!\";\n }\n if (!(edge.source.owner != null && edge.target.owner != null && edge.source.owner == this && edge.target.owner == this)) {\n throw \"Source and/or target owner is invalid!\";\n }\n\n var sourceIndex = edge.source.edges.indexOf(edge);\n var targetIndex = edge.target.edges.indexOf(edge);\n if (!(sourceIndex > -1 && targetIndex > -1)) {\n throw \"Source and/or target doesn't know this edge!\";\n }\n\n edge.source.edges.splice(sourceIndex, 1);\n\n if (edge.target != edge.source) {\n edge.target.edges.splice(targetIndex, 1);\n }\n\n var index = edge.source.owner.getEdges().indexOf(edge);\n if (index == -1) {\n throw \"Not in owner's edge list!\";\n }\n\n edge.source.owner.getEdges().splice(index, 1);\n }\n};\n\nLGraph.prototype.updateLeftTop = function () {\n var top = Integer.MAX_VALUE;\n var left = Integer.MAX_VALUE;\n var nodeTop;\n var nodeLeft;\n var margin;\n\n var nodes = this.getNodes();\n var s = nodes.length;\n\n for (var i = 0; i < s; i++) {\n var lNode = nodes[i];\n nodeTop = lNode.getTop();\n nodeLeft = lNode.getLeft();\n\n if (top > nodeTop) {\n top = nodeTop;\n }\n\n if (left > nodeLeft) {\n left = nodeLeft;\n }\n }\n\n // Do we have any nodes in this graph?\n if (top == Integer.MAX_VALUE) {\n return null;\n }\n\n if (nodes[0].getParent().paddingLeft != undefined) {\n margin = nodes[0].getParent().paddingLeft;\n } else {\n margin = this.margin;\n }\n\n this.left = left - margin;\n this.top = top - margin;\n\n // Apply the margins and return the result\n return new Point(this.left, this.top);\n};\n\nLGraph.prototype.updateBounds = function (recursive) {\n // calculate bounds\n var left = Integer.MAX_VALUE;\n var right = -Integer.MAX_VALUE;\n var top = Integer.MAX_VALUE;\n var bottom = -Integer.MAX_VALUE;\n var nodeLeft;\n var nodeRight;\n var nodeTop;\n var nodeBottom;\n var margin;\n\n var nodes = this.nodes;\n var s = nodes.length;\n for (var i = 0; i < s; i++) {\n var lNode = nodes[i];\n\n if (recursive && lNode.child != null) {\n lNode.updateBounds();\n }\n nodeLeft = lNode.getLeft();\n nodeRight = lNode.getRight();\n nodeTop = lNode.getTop();\n nodeBottom = lNode.getBottom();\n\n if (left > nodeLeft) {\n left = nodeLeft;\n }\n\n if (right < nodeRight) {\n right = nodeRight;\n }\n\n if (top > nodeTop) {\n top = nodeTop;\n }\n\n if (bottom < nodeBottom) {\n bottom = nodeBottom;\n }\n }\n\n var boundingRect = new RectangleD(left, top, right - left, bottom - top);\n if (left == Integer.MAX_VALUE) {\n this.left = this.parent.getLeft();\n this.right = this.parent.getRight();\n this.top = this.parent.getTop();\n this.bottom = this.parent.getBottom();\n }\n\n if (nodes[0].getParent().paddingLeft != undefined) {\n margin = nodes[0].getParent().paddingLeft;\n } else {\n margin = this.margin;\n }\n\n this.left = boundingRect.x - margin;\n this.right = boundingRect.x + boundingRect.width + margin;\n this.top = boundingRect.y - margin;\n this.bottom = boundingRect.y + boundingRect.height + margin;\n};\n\nLGraph.calculateBounds = function (nodes) {\n var left = Integer.MAX_VALUE;\n var right = -Integer.MAX_VALUE;\n var top = Integer.MAX_VALUE;\n var bottom = -Integer.MAX_VALUE;\n var nodeLeft;\n var nodeRight;\n var nodeTop;\n var nodeBottom;\n\n var s = nodes.length;\n\n for (var i = 0; i < s; i++) {\n var lNode = nodes[i];\n nodeLeft = lNode.getLeft();\n nodeRight = lNode.getRight();\n nodeTop = lNode.getTop();\n nodeBottom = lNode.getBottom();\n\n if (left > nodeLeft) {\n left = nodeLeft;\n }\n\n if (right < nodeRight) {\n right = nodeRight;\n }\n\n if (top > nodeTop) {\n top = nodeTop;\n }\n\n if (bottom < nodeBottom) {\n bottom = nodeBottom;\n }\n }\n\n var boundingRect = new RectangleD(left, top, right - left, bottom - top);\n\n return boundingRect;\n};\n\nLGraph.prototype.getInclusionTreeDepth = function () {\n if (this == this.graphManager.getRoot()) {\n return 1;\n } else {\n return this.parent.getInclusionTreeDepth();\n }\n};\n\nLGraph.prototype.getEstimatedSize = function () {\n if (this.estimatedSize == Integer.MIN_VALUE) {\n throw \"assert failed\";\n }\n return this.estimatedSize;\n};\n\nLGraph.prototype.calcEstimatedSize = function () {\n var size = 0;\n var nodes = this.nodes;\n var s = nodes.length;\n\n for (var i = 0; i < s; i++) {\n var lNode = nodes[i];\n size += lNode.calcEstimatedSize();\n }\n\n if (size == 0) {\n this.estimatedSize = LayoutConstants.EMPTY_COMPOUND_NODE_SIZE;\n } else {\n this.estimatedSize = size / Math.sqrt(this.nodes.length);\n }\n\n return this.estimatedSize;\n};\n\nLGraph.prototype.updateConnected = function () {\n var self = this;\n if (this.nodes.length == 0) {\n this.isConnected = true;\n return;\n }\n\n var queue = new LinkedList();\n var visited = new Set();\n var currentNode = this.nodes[0];\n var neighborEdges;\n var currentNeighbor;\n var childrenOfNode = currentNode.withChildren();\n childrenOfNode.forEach(function (node) {\n queue.push(node);\n visited.add(node);\n });\n\n while (queue.length !== 0) {\n currentNode = queue.shift();\n\n // Traverse all neighbors of this node\n neighborEdges = currentNode.getEdges();\n var size = neighborEdges.length;\n for (var i = 0; i < size; i++) {\n var neighborEdge = neighborEdges[i];\n currentNeighbor = neighborEdge.getOtherEndInGraph(currentNode, this);\n\n // Add unvisited neighbors to the list to visit\n if (currentNeighbor != null && !visited.has(currentNeighbor)) {\n var childrenOfNeighbor = currentNeighbor.withChildren();\n\n childrenOfNeighbor.forEach(function (node) {\n queue.push(node);\n visited.add(node);\n });\n }\n }\n }\n\n this.isConnected = false;\n\n if (visited.size >= this.nodes.length) {\n var noOfVisitedInThisGraph = 0;\n\n visited.forEach(function (visitedNode) {\n if (visitedNode.owner == self) {\n noOfVisitedInThisGraph++;\n }\n });\n\n if (noOfVisitedInThisGraph == this.nodes.length) {\n this.isConnected = true;\n }\n }\n};\n\nmodule.exports = LGraph;\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar LGraph;\nvar LEdge = __webpack_require__(1);\n\nfunction LGraphManager(layout) {\n LGraph = __webpack_require__(5); // It may be better to initilize this out of this function but it gives an error (Right-hand side of 'instanceof' is not callable) now.\n this.layout = layout;\n\n this.graphs = [];\n this.edges = [];\n}\n\nLGraphManager.prototype.addRoot = function () {\n var ngraph = this.layout.newGraph();\n var nnode = this.layout.newNode(null);\n var root = this.add(ngraph, nnode);\n this.setRootGraph(root);\n return this.rootGraph;\n};\n\nLGraphManager.prototype.add = function (newGraph, parentNode, newEdge, sourceNode, targetNode) {\n //there are just 2 parameters are passed then it adds an LGraph else it adds an LEdge\n if (newEdge == null && sourceNode == null && targetNode == null) {\n if (newGraph == null) {\n throw \"Graph is null!\";\n }\n if (parentNode == null) {\n throw \"Parent node is null!\";\n }\n if (this.graphs.indexOf(newGraph) > -1) {\n throw \"Graph already in this graph mgr!\";\n }\n\n this.graphs.push(newGraph);\n\n if (newGraph.parent != null) {\n throw \"Already has a parent!\";\n }\n if (parentNode.child != null) {\n throw \"Already has a child!\";\n }\n\n newGraph.parent = parentNode;\n parentNode.child = newGraph;\n\n return newGraph;\n } else {\n //change the order of the parameters\n targetNode = newEdge;\n sourceNode = parentNode;\n newEdge = newGraph;\n var sourceGraph = sourceNode.getOwner();\n var targetGraph = targetNode.getOwner();\n\n if (!(sourceGraph != null && sourceGraph.getGraphManager() == this)) {\n throw \"Source not in this graph mgr!\";\n }\n if (!(targetGraph != null && targetGraph.getGraphManager() == this)) {\n throw \"Target not in this graph mgr!\";\n }\n\n if (sourceGraph == targetGraph) {\n newEdge.isInterGraph = false;\n return sourceGraph.add(newEdge, sourceNode, targetNode);\n } else {\n newEdge.isInterGraph = true;\n\n // set source and target\n newEdge.source = sourceNode;\n newEdge.target = targetNode;\n\n // add edge to inter-graph edge list\n if (this.edges.indexOf(newEdge) > -1) {\n throw \"Edge already in inter-graph edge list!\";\n }\n\n this.edges.push(newEdge);\n\n // add edge to source and target incidency lists\n if (!(newEdge.source != null && newEdge.target != null)) {\n throw \"Edge source and/or target is null!\";\n }\n\n if (!(newEdge.source.edges.indexOf(newEdge) == -1 && newEdge.target.edges.indexOf(newEdge) == -1)) {\n throw \"Edge already in source and/or target incidency list!\";\n }\n\n newEdge.source.edges.push(newEdge);\n newEdge.target.edges.push(newEdge);\n\n return newEdge;\n }\n }\n};\n\nLGraphManager.prototype.remove = function (lObj) {\n if (lObj instanceof LGraph) {\n var graph = lObj;\n if (graph.getGraphManager() != this) {\n throw \"Graph not in this graph mgr\";\n }\n if (!(graph == this.rootGraph || graph.parent != null && graph.parent.graphManager == this)) {\n throw \"Invalid parent node!\";\n }\n\n // first the edges (make a copy to do it safely)\n var edgesToBeRemoved = [];\n\n edgesToBeRemoved = edgesToBeRemoved.concat(graph.getEdges());\n\n var edge;\n var s = edgesToBeRemoved.length;\n for (var i = 0; i < s; i++) {\n edge = edgesToBeRemoved[i];\n graph.remove(edge);\n }\n\n // then the nodes (make a copy to do it safely)\n var nodesToBeRemoved = [];\n\n nodesToBeRemoved = nodesToBeRemoved.concat(graph.getNodes());\n\n var node;\n s = nodesToBeRemoved.length;\n for (var i = 0; i < s; i++) {\n node = nodesToBeRemoved[i];\n graph.remove(node);\n }\n\n // check if graph is the root\n if (graph == this.rootGraph) {\n this.setRootGraph(null);\n }\n\n // now remove the graph itself\n var index = this.graphs.indexOf(graph);\n this.graphs.splice(index, 1);\n\n // also reset the parent of the graph\n graph.parent = null;\n } else if (lObj instanceof LEdge) {\n edge = lObj;\n if (edge == null) {\n throw \"Edge is null!\";\n }\n if (!edge.isInterGraph) {\n throw \"Not an inter-graph edge!\";\n }\n if (!(edge.source != null && edge.target != null)) {\n throw \"Source and/or target is null!\";\n }\n\n // remove edge from source and target nodes' incidency lists\n\n if (!(edge.source.edges.indexOf(edge) != -1 && edge.target.edges.indexOf(edge) != -1)) {\n throw \"Source and/or target doesn't know this edge!\";\n }\n\n var index = edge.source.edges.indexOf(edge);\n edge.source.edges.splice(index, 1);\n index = edge.target.edges.indexOf(edge);\n edge.target.edges.splice(index, 1);\n\n // remove edge from owner graph manager's inter-graph edge list\n\n if (!(edge.source.owner != null && edge.source.owner.getGraphManager() != null)) {\n throw \"Edge owner graph or owner graph manager is null!\";\n }\n if (edge.source.owner.getGraphManager().edges.indexOf(edge) == -1) {\n throw \"Not in owner graph manager's edge list!\";\n }\n\n var index = edge.source.owner.getGraphManager().edges.indexOf(edge);\n edge.source.owner.getGraphManager().edges.splice(index, 1);\n }\n};\n\nLGraphManager.prototype.updateBounds = function () {\n this.rootGraph.updateBounds(true);\n};\n\nLGraphManager.prototype.getGraphs = function () {\n return this.graphs;\n};\n\nLGraphManager.prototype.getAllNodes = function () {\n if (this.allNodes == null) {\n var nodeList = [];\n var graphs = this.getGraphs();\n var s = graphs.length;\n for (var i = 0; i < s; i++) {\n nodeList = nodeList.concat(graphs[i].getNodes());\n }\n this.allNodes = nodeList;\n }\n return this.allNodes;\n};\n\nLGraphManager.prototype.resetAllNodes = function () {\n this.allNodes = null;\n};\n\nLGraphManager.prototype.resetAllEdges = function () {\n this.allEdges = null;\n};\n\nLGraphManager.prototype.resetAllNodesToApplyGravitation = function () {\n this.allNodesToApplyGravitation = null;\n};\n\nLGraphManager.prototype.getAllEdges = function () {\n if (this.allEdges == null) {\n var edgeList = [];\n var graphs = this.getGraphs();\n var s = graphs.length;\n for (var i = 0; i < graphs.length; i++) {\n edgeList = edgeList.concat(graphs[i].getEdges());\n }\n\n edgeList = edgeList.concat(this.edges);\n\n this.allEdges = edgeList;\n }\n return this.allEdges;\n};\n\nLGraphManager.prototype.getAllNodesToApplyGravitation = function () {\n return this.allNodesToApplyGravitation;\n};\n\nLGraphManager.prototype.setAllNodesToApplyGravitation = function (nodeList) {\n if (this.allNodesToApplyGravitation != null) {\n throw \"assert failed\";\n }\n\n this.allNodesToApplyGravitation = nodeList;\n};\n\nLGraphManager.prototype.getRoot = function () {\n return this.rootGraph;\n};\n\nLGraphManager.prototype.setRootGraph = function (graph) {\n if (graph.getGraphManager() != this) {\n throw \"Root not in this graph mgr!\";\n }\n\n this.rootGraph = graph;\n // root graph must have a root node associated with it for convenience\n if (graph.parent == null) {\n graph.parent = this.layout.newNode(\"Root node\");\n }\n};\n\nLGraphManager.prototype.getLayout = function () {\n return this.layout;\n};\n\nLGraphManager.prototype.isOneAncestorOfOther = function (firstNode, secondNode) {\n if (!(firstNode != null && secondNode != null)) {\n throw \"assert failed\";\n }\n\n if (firstNode == secondNode) {\n return true;\n }\n // Is second node an ancestor of the first one?\n var ownerGraph = firstNode.getOwner();\n var parentNode;\n\n do {\n parentNode = ownerGraph.getParent();\n\n if (parentNode == null) {\n break;\n }\n\n if (parentNode == secondNode) {\n return true;\n }\n\n ownerGraph = parentNode.getOwner();\n if (ownerGraph == null) {\n break;\n }\n } while (true);\n // Is first node an ancestor of the second one?\n ownerGraph = secondNode.getOwner();\n\n do {\n parentNode = ownerGraph.getParent();\n\n if (parentNode == null) {\n break;\n }\n\n if (parentNode == firstNode) {\n return true;\n }\n\n ownerGraph = parentNode.getOwner();\n if (ownerGraph == null) {\n break;\n }\n } while (true);\n\n return false;\n};\n\nLGraphManager.prototype.calcLowestCommonAncestors = function () {\n var edge;\n var sourceNode;\n var targetNode;\n var sourceAncestorGraph;\n var targetAncestorGraph;\n\n var edges = this.getAllEdges();\n var s = edges.length;\n for (var i = 0; i < s; i++) {\n edge = edges[i];\n\n sourceNode = edge.source;\n targetNode = edge.target;\n edge.lca = null;\n edge.sourceInLca = sourceNode;\n edge.targetInLca = targetNode;\n\n if (sourceNode == targetNode) {\n edge.lca = sourceNode.getOwner();\n continue;\n }\n\n sourceAncestorGraph = sourceNode.getOwner();\n\n while (edge.lca == null) {\n edge.targetInLca = targetNode;\n targetAncestorGraph = targetNode.getOwner();\n\n while (edge.lca == null) {\n if (targetAncestorGraph == sourceAncestorGraph) {\n edge.lca = targetAncestorGraph;\n break;\n }\n\n if (targetAncestorGraph == this.rootGraph) {\n break;\n }\n\n if (edge.lca != null) {\n throw \"assert failed\";\n }\n edge.targetInLca = targetAncestorGraph.getParent();\n targetAncestorGraph = edge.targetInLca.getOwner();\n }\n\n if (sourceAncestorGraph == this.rootGraph) {\n break;\n }\n\n if (edge.lca == null) {\n edge.sourceInLca = sourceAncestorGraph.getParent();\n sourceAncestorGraph = edge.sourceInLca.getOwner();\n }\n }\n\n if (edge.lca == null) {\n throw \"assert failed\";\n }\n }\n};\n\nLGraphManager.prototype.calcLowestCommonAncestor = function (firstNode, secondNode) {\n if (firstNode == secondNode) {\n return firstNode.getOwner();\n }\n var firstOwnerGraph = firstNode.getOwner();\n\n do {\n if (firstOwnerGraph == null) {\n break;\n }\n var secondOwnerGraph = secondNode.getOwner();\n\n do {\n if (secondOwnerGraph == null) {\n break;\n }\n\n if (secondOwnerGraph == firstOwnerGraph) {\n return secondOwnerGraph;\n }\n secondOwnerGraph = secondOwnerGraph.getParent().getOwner();\n } while (true);\n\n firstOwnerGraph = firstOwnerGraph.getParent().getOwner();\n } while (true);\n\n return firstOwnerGraph;\n};\n\nLGraphManager.prototype.calcInclusionTreeDepths = function (graph, depth) {\n if (graph == null && depth == null) {\n graph = this.rootGraph;\n depth = 1;\n }\n var node;\n\n var nodes = graph.getNodes();\n var s = nodes.length;\n for (var i = 0; i < s; i++) {\n node = nodes[i];\n node.inclusionTreeDepth = depth;\n\n if (node.child != null) {\n this.calcInclusionTreeDepths(node.child, depth + 1);\n }\n }\n};\n\nLGraphManager.prototype.includesInvalidEdge = function () {\n var edge;\n\n var s = this.edges.length;\n for (var i = 0; i < s; i++) {\n edge = this.edges[i];\n\n if (this.isOneAncestorOfOther(edge.source, edge.target)) {\n return true;\n }\n }\n return false;\n};\n\nmodule.exports = LGraphManager;\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar LayoutConstants = __webpack_require__(0);\n\nfunction FDLayoutConstants() {}\n\n//FDLayoutConstants inherits static props in LayoutConstants\nfor (var prop in LayoutConstants) {\n FDLayoutConstants[prop] = LayoutConstants[prop];\n}\n\nFDLayoutConstants.MAX_ITERATIONS = 2500;\n\nFDLayoutConstants.DEFAULT_EDGE_LENGTH = 50;\nFDLayoutConstants.DEFAULT_SPRING_STRENGTH = 0.45;\nFDLayoutConstants.DEFAULT_REPULSION_STRENGTH = 4500.0;\nFDLayoutConstants.DEFAULT_GRAVITY_STRENGTH = 0.4;\nFDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_STRENGTH = 1.0;\nFDLayoutConstants.DEFAULT_GRAVITY_RANGE_FACTOR = 3.8;\nFDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR = 1.5;\nFDLayoutConstants.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION = true;\nFDLayoutConstants.DEFAULT_USE_SMART_REPULSION_RANGE_CALCULATION = true;\nFDLayoutConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL = 0.3;\nFDLayoutConstants.COOLING_ADAPTATION_FACTOR = 0.33;\nFDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT = 1000;\nFDLayoutConstants.ADAPTATION_UPPER_NODE_LIMIT = 5000;\nFDLayoutConstants.MAX_NODE_DISPLACEMENT_INCREMENTAL = 100.0;\nFDLayoutConstants.MAX_NODE_DISPLACEMENT = FDLayoutConstants.MAX_NODE_DISPLACEMENT_INCREMENTAL * 3;\nFDLayoutConstants.MIN_REPULSION_DIST = FDLayoutConstants.DEFAULT_EDGE_LENGTH / 10.0;\nFDLayoutConstants.CONVERGENCE_CHECK_PERIOD = 100;\nFDLayoutConstants.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR = 0.1;\nFDLayoutConstants.MIN_EDGE_LENGTH = 1;\nFDLayoutConstants.GRID_CALCULATION_CHECK_PERIOD = 10;\n\nmodule.exports = FDLayoutConstants;\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/**\n * This class maintains a list of static geometry related utility methods.\n *\n *\n * Copyright: i-Vis Research Group, Bilkent University, 2007 - present\n */\n\nvar Point = __webpack_require__(12);\n\nfunction IGeometry() {}\n\n/**\n * This method calculates *half* the amount in x and y directions of the two\n * input rectangles needed to separate them keeping their respective\n * positioning, and returns the result in the input array. An input\n * separation buffer added to the amount in both directions. We assume that\n * the two rectangles do intersect.\n */\nIGeometry.calcSeparationAmount = function (rectA, rectB, overlapAmount, separationBuffer) {\n if (!rectA.intersects(rectB)) {\n throw \"assert failed\";\n }\n\n var directions = new Array(2);\n\n this.decideDirectionsForOverlappingNodes(rectA, rectB, directions);\n\n overlapAmount[0] = Math.min(rectA.getRight(), rectB.getRight()) - Math.max(rectA.x, rectB.x);\n overlapAmount[1] = Math.min(rectA.getBottom(), rectB.getBottom()) - Math.max(rectA.y, rectB.y);\n\n // update the overlapping amounts for the following cases:\n if (rectA.getX() <= rectB.getX() && rectA.getRight() >= rectB.getRight()) {\n /* Case x.1:\n *\n * rectA\n * \t| |\n * \t| _________ |\n * \t| | | |\n * \t|________|_______|______|\n * \t\t\t | |\n * | |\n * rectB\n */\n overlapAmount[0] += Math.min(rectB.getX() - rectA.getX(), rectA.getRight() - rectB.getRight());\n } else if (rectB.getX() <= rectA.getX() && rectB.getRight() >= rectA.getRight()) {\n /* Case x.2:\n *\n * rectB\n * \t| |\n * \t| _________ |\n * \t| | | |\n * \t|________|_______|______|\n * \t\t\t | |\n * | |\n * rectA\n */\n overlapAmount[0] += Math.min(rectA.getX() - rectB.getX(), rectB.getRight() - rectA.getRight());\n }\n if (rectA.getY() <= rectB.getY() && rectA.getBottom() >= rectB.getBottom()) {\n /* Case y.1:\n * ________ rectA\n * |\n * |\n * ______|____ rectB\n * | |\n * | |\n * ______|____|\n * |\n * |\n * |________\n *\n */\n overlapAmount[1] += Math.min(rectB.getY() - rectA.getY(), rectA.getBottom() - rectB.getBottom());\n } else if (rectB.getY() <= rectA.getY() && rectB.getBottom() >= rectA.getBottom()) {\n /* Case y.2:\n * ________ rectB\n * |\n * |\n * ______|____ rectA\n * | |\n * | |\n * ______|____|\n * |\n * |\n * |________\n *\n */\n overlapAmount[1] += Math.min(rectA.getY() - rectB.getY(), rectB.getBottom() - rectA.getBottom());\n }\n\n // find slope of the line passes two centers\n var slope = Math.abs((rectB.getCenterY() - rectA.getCenterY()) / (rectB.getCenterX() - rectA.getCenterX()));\n // if centers are overlapped\n if (rectB.getCenterY() === rectA.getCenterY() && rectB.getCenterX() === rectA.getCenterX()) {\n // assume the slope is 1 (45 degree)\n slope = 1.0;\n }\n\n var moveByY = slope * overlapAmount[0];\n var moveByX = overlapAmount[1] / slope;\n if (overlapAmount[0] < moveByX) {\n moveByX = overlapAmount[0];\n } else {\n moveByY = overlapAmount[1];\n }\n // return half the amount so that if each rectangle is moved by these\n // amounts in opposite directions, overlap will be resolved\n overlapAmount[0] = -1 * directions[0] * (moveByX / 2 + separationBuffer);\n overlapAmount[1] = -1 * directions[1] * (moveByY / 2 + separationBuffer);\n};\n\n/**\n * This method decides the separation direction of overlapping nodes\n *\n * if directions[0] = -1, then rectA goes left\n * if directions[0] = 1, then rectA goes right\n * if directions[1] = -1, then rectA goes up\n * if directions[1] = 1, then rectA goes down\n */\nIGeometry.decideDirectionsForOverlappingNodes = function (rectA, rectB, directions) {\n if (rectA.getCenterX() < rectB.getCenterX()) {\n directions[0] = -1;\n } else {\n directions[0] = 1;\n }\n\n if (rectA.getCenterY() < rectB.getCenterY()) {\n directions[1] = -1;\n } else {\n directions[1] = 1;\n }\n};\n\n/**\n * This method calculates the intersection (clipping) points of the two\n * input rectangles with line segment defined by the centers of these two\n * rectangles. The clipping points are saved in the input double array and\n * whether or not the two rectangles overlap is returned.\n */\nIGeometry.getIntersection2 = function (rectA, rectB, result) {\n //result[0-1] will contain clipPoint of rectA, result[2-3] will contain clipPoint of rectB\n var p1x = rectA.getCenterX();\n var p1y = rectA.getCenterY();\n var p2x = rectB.getCenterX();\n var p2y = rectB.getCenterY();\n\n //if two rectangles intersect, then clipping points are centers\n if (rectA.intersects(rectB)) {\n result[0] = p1x;\n result[1] = p1y;\n result[2] = p2x;\n result[3] = p2y;\n return true;\n }\n //variables for rectA\n var topLeftAx = rectA.getX();\n var topLeftAy = rectA.getY();\n var topRightAx = rectA.getRight();\n var bottomLeftAx = rectA.getX();\n var bottomLeftAy = rectA.getBottom();\n var bottomRightAx = rectA.getRight();\n var halfWidthA = rectA.getWidthHalf();\n var halfHeightA = rectA.getHeightHalf();\n //variables for rectB\n var topLeftBx = rectB.getX();\n var topLeftBy = rectB.getY();\n var topRightBx = rectB.getRight();\n var bottomLeftBx = rectB.getX();\n var bottomLeftBy = rectB.getBottom();\n var bottomRightBx = rectB.getRight();\n var halfWidthB = rectB.getWidthHalf();\n var halfHeightB = rectB.getHeightHalf();\n\n //flag whether clipping points are found\n var clipPointAFound = false;\n var clipPointBFound = false;\n\n // line is vertical\n if (p1x === p2x) {\n if (p1y > p2y) {\n result[0] = p1x;\n result[1] = topLeftAy;\n result[2] = p2x;\n result[3] = bottomLeftBy;\n return false;\n } else if (p1y < p2y) {\n result[0] = p1x;\n result[1] = bottomLeftAy;\n result[2] = p2x;\n result[3] = topLeftBy;\n return false;\n } else {\n //not line, return null;\n }\n }\n // line is horizontal\n else if (p1y === p2y) {\n if (p1x > p2x) {\n result[0] = topLeftAx;\n result[1] = p1y;\n result[2] = topRightBx;\n result[3] = p2y;\n return false;\n } else if (p1x < p2x) {\n result[0] = topRightAx;\n result[1] = p1y;\n result[2] = topLeftBx;\n result[3] = p2y;\n return false;\n } else {\n //not valid line, return null;\n }\n } else {\n //slopes of rectA's and rectB's diagonals\n var slopeA = rectA.height / rectA.width;\n var slopeB = rectB.height / rectB.width;\n\n //slope of line between center of rectA and center of rectB\n var slopePrime = (p2y - p1y) / (p2x - p1x);\n var cardinalDirectionA = void 0;\n var cardinalDirectionB = void 0;\n var tempPointAx = void 0;\n var tempPointAy = void 0;\n var tempPointBx = void 0;\n var tempPointBy = void 0;\n\n //determine whether clipping point is the corner of nodeA\n if (-slopeA === slopePrime) {\n if (p1x > p2x) {\n result[0] = bottomLeftAx;\n result[1] = bottomLeftAy;\n clipPointAFound = true;\n } else {\n result[0] = topRightAx;\n result[1] = topLeftAy;\n clipPointAFound = true;\n }\n } else if (slopeA === slopePrime) {\n if (p1x > p2x) {\n result[0] = topLeftAx;\n result[1] = topLeftAy;\n clipPointAFound = true;\n } else {\n result[0] = bottomRightAx;\n result[1] = bottomLeftAy;\n clipPointAFound = true;\n }\n }\n\n //determine whether clipping point is the corner of nodeB\n if (-slopeB === slopePrime) {\n if (p2x > p1x) {\n result[2] = bottomLeftBx;\n result[3] = bottomLeftBy;\n clipPointBFound = true;\n } else {\n result[2] = topRightBx;\n result[3] = topLeftBy;\n clipPointBFound = true;\n }\n } else if (slopeB === slopePrime) {\n if (p2x > p1x) {\n result[2] = topLeftBx;\n result[3] = topLeftBy;\n clipPointBFound = true;\n } else {\n result[2] = bottomRightBx;\n result[3] = bottomLeftBy;\n clipPointBFound = true;\n }\n }\n\n //if both clipping points are corners\n if (clipPointAFound && clipPointBFound) {\n return false;\n }\n\n //determine Cardinal Direction of rectangles\n if (p1x > p2x) {\n if (p1y > p2y) {\n cardinalDirectionA = this.getCardinalDirection(slopeA, slopePrime, 4);\n cardinalDirectionB = this.getCardinalDirection(slopeB, slopePrime, 2);\n } else {\n cardinalDirectionA = this.getCardinalDirection(-slopeA, slopePrime, 3);\n cardinalDirectionB = this.getCardinalDirection(-slopeB, slopePrime, 1);\n }\n } else {\n if (p1y > p2y) {\n cardinalDirectionA = this.getCardinalDirection(-slopeA, slopePrime, 1);\n cardinalDirectionB = this.getCardinalDirection(-slopeB, slopePrime, 3);\n } else {\n cardinalDirectionA = this.getCardinalDirection(slopeA, slopePrime, 2);\n cardinalDirectionB = this.getCardinalDirection(slopeB, slopePrime, 4);\n }\n }\n //calculate clipping Point if it is not found before\n if (!clipPointAFound) {\n switch (cardinalDirectionA) {\n case 1:\n tempPointAy = topLeftAy;\n tempPointAx = p1x + -halfHeightA / slopePrime;\n result[0] = tempPointAx;\n result[1] = tempPointAy;\n break;\n case 2:\n tempPointAx = bottomRightAx;\n tempPointAy = p1y + halfWidthA * slopePrime;\n result[0] = tempPointAx;\n result[1] = tempPointAy;\n break;\n case 3:\n tempPointAy = bottomLeftAy;\n tempPointAx = p1x + halfHeightA / slopePrime;\n result[0] = tempPointAx;\n result[1] = tempPointAy;\n break;\n case 4:\n tempPointAx = bottomLeftAx;\n tempPointAy = p1y + -halfWidthA * slopePrime;\n result[0] = tempPointAx;\n result[1] = tempPointAy;\n break;\n }\n }\n if (!clipPointBFound) {\n switch (cardinalDirectionB) {\n case 1:\n tempPointBy = topLeftBy;\n tempPointBx = p2x + -halfHeightB / slopePrime;\n result[2] = tempPointBx;\n result[3] = tempPointBy;\n break;\n case 2:\n tempPointBx = bottomRightBx;\n tempPointBy = p2y + halfWidthB * slopePrime;\n result[2] = tempPointBx;\n result[3] = tempPointBy;\n break;\n case 3:\n tempPointBy = bottomLeftBy;\n tempPointBx = p2x + halfHeightB / slopePrime;\n result[2] = tempPointBx;\n result[3] = tempPointBy;\n break;\n case 4:\n tempPointBx = bottomLeftBx;\n tempPointBy = p2y + -halfWidthB * slopePrime;\n result[2] = tempPointBx;\n result[3] = tempPointBy;\n break;\n }\n }\n }\n return false;\n};\n\n/**\n * This method returns in which cardinal direction does input point stays\n * 1: North\n * 2: East\n * 3: South\n * 4: West\n */\nIGeometry.getCardinalDirection = function (slope, slopePrime, line) {\n if (slope > slopePrime) {\n return line;\n } else {\n return 1 + line % 4;\n }\n};\n\n/**\n * This method calculates the intersection of the two lines defined by\n * point pairs (s1,s2) and (f1,f2).\n */\nIGeometry.getIntersection = function (s1, s2, f1, f2) {\n if (f2 == null) {\n return this.getIntersection2(s1, s2, f1);\n }\n\n var x1 = s1.x;\n var y1 = s1.y;\n var x2 = s2.x;\n var y2 = s2.y;\n var x3 = f1.x;\n var y3 = f1.y;\n var x4 = f2.x;\n var y4 = f2.y;\n var x = void 0,\n y = void 0; // intersection point\n var a1 = void 0,\n a2 = void 0,\n b1 = void 0,\n b2 = void 0,\n c1 = void 0,\n c2 = void 0; // coefficients of line eqns.\n var denom = void 0;\n\n a1 = y2 - y1;\n b1 = x1 - x2;\n c1 = x2 * y1 - x1 * y2; // { a1*x + b1*y + c1 = 0 is line 1 }\n\n a2 = y4 - y3;\n b2 = x3 - x4;\n c2 = x4 * y3 - x3 * y4; // { a2*x + b2*y + c2 = 0 is line 2 }\n\n denom = a1 * b2 - a2 * b1;\n\n if (denom === 0) {\n return null;\n }\n\n x = (b1 * c2 - b2 * c1) / denom;\n y = (a2 * c1 - a1 * c2) / denom;\n\n return new Point(x, y);\n};\n\n/**\n * This method finds and returns the angle of the vector from the + x-axis\n * in clockwise direction (compatible w/ Java coordinate system!).\n */\nIGeometry.angleOfVector = function (Cx, Cy, Nx, Ny) {\n var C_angle = void 0;\n\n if (Cx !== Nx) {\n C_angle = Math.atan((Ny - Cy) / (Nx - Cx));\n\n if (Nx < Cx) {\n C_angle += Math.PI;\n } else if (Ny < Cy) {\n C_angle += this.TWO_PI;\n }\n } else if (Ny < Cy) {\n C_angle = this.ONE_AND_HALF_PI; // 270 degrees\n } else {\n C_angle = this.HALF_PI; // 90 degrees\n }\n\n return C_angle;\n};\n\n/**\n * This method checks whether the given two line segments (one with point\n * p1 and p2, the other with point p3 and p4) intersect at a point other\n * than these points.\n */\nIGeometry.doIntersect = function (p1, p2, p3, p4) {\n var a = p1.x;\n var b = p1.y;\n var c = p2.x;\n var d = p2.y;\n var p = p3.x;\n var q = p3.y;\n var r = p4.x;\n var s = p4.y;\n var det = (c - a) * (s - q) - (r - p) * (d - b);\n\n if (det === 0) {\n return false;\n } else {\n var lambda = ((s - q) * (r - a) + (p - r) * (s - b)) / det;\n var gamma = ((b - d) * (r - a) + (c - a) * (s - b)) / det;\n return 0 < lambda && lambda < 1 && 0 < gamma && gamma < 1;\n }\n};\n\n// -----------------------------------------------------------------------------\n// Section: Class Constants\n// -----------------------------------------------------------------------------\n/**\n * Some useful pre-calculated constants\n */\nIGeometry.HALF_PI = 0.5 * Math.PI;\nIGeometry.ONE_AND_HALF_PI = 1.5 * Math.PI;\nIGeometry.TWO_PI = 2.0 * Math.PI;\nIGeometry.THREE_PI = 3.0 * Math.PI;\n\nmodule.exports = IGeometry;\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction IMath() {}\n\n/**\n * This method returns the sign of the input value.\n */\nIMath.sign = function (value) {\n if (value > 0) {\n return 1;\n } else if (value < 0) {\n return -1;\n } else {\n return 0;\n }\n};\n\nIMath.floor = function (value) {\n return value < 0 ? Math.ceil(value) : Math.floor(value);\n};\n\nIMath.ceil = function (value) {\n return value < 0 ? Math.floor(value) : Math.ceil(value);\n};\n\nmodule.exports = IMath;\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction Integer() {}\n\nInteger.MAX_VALUE = 2147483647;\nInteger.MIN_VALUE = -2147483648;\n\nmodule.exports = Integer;\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar nodeFrom = function nodeFrom(value) {\n return { value: value, next: null, prev: null };\n};\n\nvar add = function add(prev, node, next, list) {\n if (prev !== null) {\n prev.next = node;\n } else {\n list.head = node;\n }\n\n if (next !== null) {\n next.prev = node;\n } else {\n list.tail = node;\n }\n\n node.prev = prev;\n node.next = next;\n\n list.length++;\n\n return node;\n};\n\nvar _remove = function _remove(node, list) {\n var prev = node.prev,\n next = node.next;\n\n\n if (prev !== null) {\n prev.next = next;\n } else {\n list.head = next;\n }\n\n if (next !== null) {\n next.prev = prev;\n } else {\n list.tail = prev;\n }\n\n node.prev = node.next = null;\n\n list.length--;\n\n return node;\n};\n\nvar LinkedList = function () {\n function LinkedList(vals) {\n var _this = this;\n\n _classCallCheck(this, LinkedList);\n\n this.length = 0;\n this.head = null;\n this.tail = null;\n\n if (vals != null) {\n vals.forEach(function (v) {\n return _this.push(v);\n });\n }\n }\n\n _createClass(LinkedList, [{\n key: \"size\",\n value: function size() {\n return this.length;\n }\n }, {\n key: \"insertBefore\",\n value: function insertBefore(val, otherNode) {\n return add(otherNode.prev, nodeFrom(val), otherNode, this);\n }\n }, {\n key: \"insertAfter\",\n value: function insertAfter(val, otherNode) {\n return add(otherNode, nodeFrom(val), otherNode.next, this);\n }\n }, {\n key: \"insertNodeBefore\",\n value: function insertNodeBefore(newNode, otherNode) {\n return add(otherNode.prev, newNode, otherNode, this);\n }\n }, {\n key: \"insertNodeAfter\",\n value: function insertNodeAfter(newNode, otherNode) {\n return add(otherNode, newNode, otherNode.next, this);\n }\n }, {\n key: \"push\",\n value: function push(val) {\n return add(this.tail, nodeFrom(val), null, this);\n }\n }, {\n key: \"unshift\",\n value: function unshift(val) {\n return add(null, nodeFrom(val), this.head, this);\n }\n }, {\n key: \"remove\",\n value: function remove(node) {\n return _remove(node, this);\n }\n }, {\n key: \"pop\",\n value: function pop() {\n return _remove(this.tail, this).value;\n }\n }, {\n key: \"popNode\",\n value: function popNode() {\n return _remove(this.tail, this);\n }\n }, {\n key: \"shift\",\n value: function shift() {\n return _remove(this.head, this).value;\n }\n }, {\n key: \"shiftNode\",\n value: function shiftNode() {\n return _remove(this.head, this);\n }\n }, {\n key: \"get_object_at\",\n value: function get_object_at(index) {\n if (index <= this.length()) {\n var i = 1;\n var current = this.head;\n while (i < index) {\n current = current.next;\n i++;\n }\n return current.value;\n }\n }\n }, {\n key: \"set_object_at\",\n value: function set_object_at(index, value) {\n if (index <= this.length()) {\n var i = 1;\n var current = this.head;\n while (i < index) {\n current = current.next;\n i++;\n }\n current.value = value;\n }\n }\n }]);\n\n return LinkedList;\n}();\n\nmodule.exports = LinkedList;\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/*\r\n *This class is the javascript implementation of the Point.java class in jdk\r\n */\nfunction Point(x, y, p) {\n this.x = null;\n this.y = null;\n if (x == null && y == null && p == null) {\n this.x = 0;\n this.y = 0;\n } else if (typeof x == 'number' && typeof y == 'number' && p == null) {\n this.x = x;\n this.y = y;\n } else if (x.constructor.name == 'Point' && y == null && p == null) {\n p = x;\n this.x = p.x;\n this.y = p.y;\n }\n}\n\nPoint.prototype.getX = function () {\n return this.x;\n};\n\nPoint.prototype.getY = function () {\n return this.y;\n};\n\nPoint.prototype.getLocation = function () {\n return new Point(this.x, this.y);\n};\n\nPoint.prototype.setLocation = function (x, y, p) {\n if (x.constructor.name == 'Point' && y == null && p == null) {\n p = x;\n this.setLocation(p.x, p.y);\n } else if (typeof x == 'number' && typeof y == 'number' && p == null) {\n //if both parameters are integer just move (x,y) location\n if (parseInt(x) == x && parseInt(y) == y) {\n this.move(x, y);\n } else {\n this.x = Math.floor(x + 0.5);\n this.y = Math.floor(y + 0.5);\n }\n }\n};\n\nPoint.prototype.move = function (x, y) {\n this.x = x;\n this.y = y;\n};\n\nPoint.prototype.translate = function (dx, dy) {\n this.x += dx;\n this.y += dy;\n};\n\nPoint.prototype.equals = function (obj) {\n if (obj.constructor.name == \"Point\") {\n var pt = obj;\n return this.x == pt.x && this.y == pt.y;\n }\n return this == obj;\n};\n\nPoint.prototype.toString = function () {\n return new Point().constructor.name + \"[x=\" + this.x + \",y=\" + this.y + \"]\";\n};\n\nmodule.exports = Point;\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction RectangleD(x, y, width, height) {\n this.x = 0;\n this.y = 0;\n this.width = 0;\n this.height = 0;\n\n if (x != null && y != null && width != null && height != null) {\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n }\n}\n\nRectangleD.prototype.getX = function () {\n return this.x;\n};\n\nRectangleD.prototype.setX = function (x) {\n this.x = x;\n};\n\nRectangleD.prototype.getY = function () {\n return this.y;\n};\n\nRectangleD.prototype.setY = function (y) {\n this.y = y;\n};\n\nRectangleD.prototype.getWidth = function () {\n return this.width;\n};\n\nRectangleD.prototype.setWidth = function (width) {\n this.width = width;\n};\n\nRectangleD.prototype.getHeight = function () {\n return this.height;\n};\n\nRectangleD.prototype.setHeight = function (height) {\n this.height = height;\n};\n\nRectangleD.prototype.getRight = function () {\n return this.x + this.width;\n};\n\nRectangleD.prototype.getBottom = function () {\n return this.y + this.height;\n};\n\nRectangleD.prototype.intersects = function (a) {\n if (this.getRight() < a.x) {\n return false;\n }\n\n if (this.getBottom() < a.y) {\n return false;\n }\n\n if (a.getRight() < this.x) {\n return false;\n }\n\n if (a.getBottom() < this.y) {\n return false;\n }\n\n return true;\n};\n\nRectangleD.prototype.getCenterX = function () {\n return this.x + this.width / 2;\n};\n\nRectangleD.prototype.getMinX = function () {\n return this.getX();\n};\n\nRectangleD.prototype.getMaxX = function () {\n return this.getX() + this.width;\n};\n\nRectangleD.prototype.getCenterY = function () {\n return this.y + this.height / 2;\n};\n\nRectangleD.prototype.getMinY = function () {\n return this.getY();\n};\n\nRectangleD.prototype.getMaxY = function () {\n return this.getY() + this.height;\n};\n\nRectangleD.prototype.getWidthHalf = function () {\n return this.width / 2;\n};\n\nRectangleD.prototype.getHeightHalf = function () {\n return this.height / 2;\n};\n\nmodule.exports = RectangleD;\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nfunction UniqueIDGeneretor() {}\n\nUniqueIDGeneretor.lastID = 0;\n\nUniqueIDGeneretor.createID = function (obj) {\n if (UniqueIDGeneretor.isPrimitive(obj)) {\n return obj;\n }\n if (obj.uniqueID != null) {\n return obj.uniqueID;\n }\n obj.uniqueID = UniqueIDGeneretor.getString();\n UniqueIDGeneretor.lastID++;\n return obj.uniqueID;\n};\n\nUniqueIDGeneretor.getString = function (id) {\n if (id == null) id = UniqueIDGeneretor.lastID;\n return \"Object#\" + id + \"\";\n};\n\nUniqueIDGeneretor.isPrimitive = function (arg) {\n var type = typeof arg === \"undefined\" ? \"undefined\" : _typeof(arg);\n return arg == null || type != \"object\" && type != \"function\";\n};\n\nmodule.exports = UniqueIDGeneretor;\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nvar LayoutConstants = __webpack_require__(0);\nvar LGraphManager = __webpack_require__(6);\nvar LNode = __webpack_require__(3);\nvar LEdge = __webpack_require__(1);\nvar LGraph = __webpack_require__(5);\nvar PointD = __webpack_require__(4);\nvar Transform = __webpack_require__(17);\nvar Emitter = __webpack_require__(27);\n\nfunction Layout(isRemoteUse) {\n Emitter.call(this);\n\n //Layout Quality: 0:draft, 1:default, 2:proof\n this.layoutQuality = LayoutConstants.QUALITY;\n //Whether layout should create bendpoints as needed or not\n this.createBendsAsNeeded = LayoutConstants.DEFAULT_CREATE_BENDS_AS_NEEDED;\n //Whether layout should be incremental or not\n this.incremental = LayoutConstants.DEFAULT_INCREMENTAL;\n //Whether we animate from before to after layout node positions\n this.animationOnLayout = LayoutConstants.DEFAULT_ANIMATION_ON_LAYOUT;\n //Whether we animate the layout process or not\n this.animationDuringLayout = LayoutConstants.DEFAULT_ANIMATION_DURING_LAYOUT;\n //Number iterations that should be done between two successive animations\n this.animationPeriod = LayoutConstants.DEFAULT_ANIMATION_PERIOD;\n /**\r\n * Whether or not leaf nodes (non-compound nodes) are of uniform sizes. When\r\n * they are, both spring and repulsion forces between two leaf nodes can be\r\n * calculated without the expensive clipping point calculations, resulting\r\n * in major speed-up.\r\n */\n this.uniformLeafNodeSizes = LayoutConstants.DEFAULT_UNIFORM_LEAF_NODE_SIZES;\n /**\r\n * This is used for creation of bendpoints by using dummy nodes and edges.\r\n * Maps an LEdge to its dummy bendpoint path.\r\n */\n this.edgeToDummyNodes = new Map();\n this.graphManager = new LGraphManager(this);\n this.isLayoutFinished = false;\n this.isSubLayout = false;\n this.isRemoteUse = false;\n\n if (isRemoteUse != null) {\n this.isRemoteUse = isRemoteUse;\n }\n}\n\nLayout.RANDOM_SEED = 1;\n\nLayout.prototype = Object.create(Emitter.prototype);\n\nLayout.prototype.getGraphManager = function () {\n return this.graphManager;\n};\n\nLayout.prototype.getAllNodes = function () {\n return this.graphManager.getAllNodes();\n};\n\nLayout.prototype.getAllEdges = function () {\n return this.graphManager.getAllEdges();\n};\n\nLayout.prototype.getAllNodesToApplyGravitation = function () {\n return this.graphManager.getAllNodesToApplyGravitation();\n};\n\nLayout.prototype.newGraphManager = function () {\n var gm = new LGraphManager(this);\n this.graphManager = gm;\n return gm;\n};\n\nLayout.prototype.newGraph = function (vGraph) {\n return new LGraph(null, this.graphManager, vGraph);\n};\n\nLayout.prototype.newNode = function (vNode) {\n return new LNode(this.graphManager, vNode);\n};\n\nLayout.prototype.newEdge = function (vEdge) {\n return new LEdge(null, null, vEdge);\n};\n\nLayout.prototype.checkLayoutSuccess = function () {\n return this.graphManager.getRoot() == null || this.graphManager.getRoot().getNodes().length == 0 || this.graphManager.includesInvalidEdge();\n};\n\nLayout.prototype.runLayout = function () {\n this.isLayoutFinished = false;\n\n if (this.tilingPreLayout) {\n this.tilingPreLayout();\n }\n\n this.initParameters();\n var isLayoutSuccessfull;\n\n if (this.checkLayoutSuccess()) {\n isLayoutSuccessfull = false;\n } else {\n isLayoutSuccessfull = this.layout();\n }\n\n if (LayoutConstants.ANIMATE === 'during') {\n // If this is a 'during' layout animation. Layout is not finished yet. \n // We need to perform these in index.js when layout is really finished.\n return false;\n }\n\n if (isLayoutSuccessfull) {\n if (!this.isSubLayout) {\n this.doPostLayout();\n }\n }\n\n if (this.tilingPostLayout) {\n this.tilingPostLayout();\n }\n\n this.isLayoutFinished = true;\n\n return isLayoutSuccessfull;\n};\n\n/**\r\n * This method performs the operations required after layout.\r\n */\nLayout.prototype.doPostLayout = function () {\n //assert !isSubLayout : \"Should not be called on sub-layout!\";\n // Propagate geometric changes to v-level objects\n if (!this.incremental) {\n this.transform();\n }\n this.update();\n};\n\n/**\r\n * This method updates the geometry of the target graph according to\r\n * calculated layout.\r\n */\nLayout.prototype.update2 = function () {\n // update bend points\n if (this.createBendsAsNeeded) {\n this.createBendpointsFromDummyNodes();\n\n // reset all edges, since the topology has changed\n this.graphManager.resetAllEdges();\n }\n\n // perform edge, node and root updates if layout is not called\n // remotely\n if (!this.isRemoteUse) {\n // update all edges\n var edge;\n var allEdges = this.graphManager.getAllEdges();\n for (var i = 0; i < allEdges.length; i++) {\n edge = allEdges[i];\n // this.update(edge);\n }\n\n // recursively update nodes\n var node;\n var nodes = this.graphManager.getRoot().getNodes();\n for (var i = 0; i < nodes.length; i++) {\n node = nodes[i];\n // this.update(node);\n }\n\n // update root graph\n this.update(this.graphManager.getRoot());\n }\n};\n\nLayout.prototype.update = function (obj) {\n if (obj == null) {\n this.update2();\n } else if (obj instanceof LNode) {\n var node = obj;\n if (node.getChild() != null) {\n // since node is compound, recursively update child nodes\n var nodes = node.getChild().getNodes();\n for (var i = 0; i < nodes.length; i++) {\n update(nodes[i]);\n }\n }\n\n // if the l-level node is associated with a v-level graph object,\n // then it is assumed that the v-level node implements the\n // interface Updatable.\n if (node.vGraphObject != null) {\n // cast to Updatable without any type check\n var vNode = node.vGraphObject;\n\n // call the update method of the interface\n vNode.update(node);\n }\n } else if (obj instanceof LEdge) {\n var edge = obj;\n // if the l-level edge is associated with a v-level graph object,\n // then it is assumed that the v-level edge implements the\n // interface Updatable.\n\n if (edge.vGraphObject != null) {\n // cast to Updatable without any type check\n var vEdge = edge.vGraphObject;\n\n // call the update method of the interface\n vEdge.update(edge);\n }\n } else if (obj instanceof LGraph) {\n var graph = obj;\n // if the l-level graph is associated with a v-level graph object,\n // then it is assumed that the v-level object implements the\n // interface Updatable.\n\n if (graph.vGraphObject != null) {\n // cast to Updatable without any type check\n var vGraph = graph.vGraphObject;\n\n // call the update method of the interface\n vGraph.update(graph);\n }\n }\n};\n\n/**\r\n * This method is used to set all layout parameters to default values\r\n * determined at compile time.\r\n */\nLayout.prototype.initParameters = function () {\n if (!this.isSubLayout) {\n this.layoutQuality = LayoutConstants.QUALITY;\n this.animationDuringLayout = LayoutConstants.DEFAULT_ANIMATION_DURING_LAYOUT;\n this.animationPeriod = LayoutConstants.DEFAULT_ANIMATION_PERIOD;\n this.animationOnLayout = LayoutConstants.DEFAULT_ANIMATION_ON_LAYOUT;\n this.incremental = LayoutConstants.DEFAULT_INCREMENTAL;\n this.createBendsAsNeeded = LayoutConstants.DEFAULT_CREATE_BENDS_AS_NEEDED;\n this.uniformLeafNodeSizes = LayoutConstants.DEFAULT_UNIFORM_LEAF_NODE_SIZES;\n }\n\n if (this.animationDuringLayout) {\n this.animationOnLayout = false;\n }\n};\n\nLayout.prototype.transform = function (newLeftTop) {\n if (newLeftTop == undefined) {\n this.transform(new PointD(0, 0));\n } else {\n // create a transformation object (from Eclipse to layout). When an\n // inverse transform is applied, we get upper-left coordinate of the\n // drawing or the root graph at given input coordinate (some margins\n // already included in calculation of left-top).\n\n var trans = new Transform();\n var leftTop = this.graphManager.getRoot().updateLeftTop();\n\n if (leftTop != null) {\n trans.setWorldOrgX(newLeftTop.x);\n trans.setWorldOrgY(newLeftTop.y);\n\n trans.setDeviceOrgX(leftTop.x);\n trans.setDeviceOrgY(leftTop.y);\n\n var nodes = this.getAllNodes();\n var node;\n\n for (var i = 0; i < nodes.length; i++) {\n node = nodes[i];\n node.transform(trans);\n }\n }\n }\n};\n\nLayout.prototype.positionNodesRandomly = function (graph) {\n\n if (graph == undefined) {\n //assert !this.incremental;\n this.positionNodesRandomly(this.getGraphManager().getRoot());\n this.getGraphManager().getRoot().updateBounds(true);\n } else {\n var lNode;\n var childGraph;\n\n var nodes = graph.getNodes();\n for (var i = 0; i < nodes.length; i++) {\n lNode = nodes[i];\n childGraph = lNode.getChild();\n\n if (childGraph == null) {\n lNode.scatter();\n } else if (childGraph.getNodes().length == 0) {\n lNode.scatter();\n } else {\n this.positionNodesRandomly(childGraph);\n lNode.updateBounds();\n }\n }\n }\n};\n\n/**\r\n * This method returns a list of trees where each tree is represented as a\r\n * list of l-nodes. The method returns a list of size 0 when:\r\n * - The graph is not flat or\r\n * - One of the component(s) of the graph is not a tree.\r\n */\nLayout.prototype.getFlatForest = function () {\n var flatForest = [];\n var isForest = true;\n\n // Quick reference for all nodes in the graph manager associated with\n // this layout. The list should not be changed.\n var allNodes = this.graphManager.getRoot().getNodes();\n\n // First be sure that the graph is flat\n var isFlat = true;\n\n for (var i = 0; i < allNodes.length; i++) {\n if (allNodes[i].getChild() != null) {\n isFlat = false;\n }\n }\n\n // Return empty forest if the graph is not flat.\n if (!isFlat) {\n return flatForest;\n }\n\n // Run BFS for each component of the graph.\n\n var visited = new Set();\n var toBeVisited = [];\n var parents = new Map();\n var unProcessedNodes = [];\n\n unProcessedNodes = unProcessedNodes.concat(allNodes);\n\n // Each iteration of this loop finds a component of the graph and\n // decides whether it is a tree or not. If it is a tree, adds it to the\n // forest and continued with the next component.\n\n while (unProcessedNodes.length > 0 && isForest) {\n toBeVisited.push(unProcessedNodes[0]);\n\n // Start the BFS. Each iteration of this loop visits a node in a\n // BFS manner.\n while (toBeVisited.length > 0 && isForest) {\n //pool operation\n var currentNode = toBeVisited[0];\n toBeVisited.splice(0, 1);\n visited.add(currentNode);\n\n // Traverse all neighbors of this node\n var neighborEdges = currentNode.getEdges();\n\n for (var i = 0; i < neighborEdges.length; i++) {\n var currentNeighbor = neighborEdges[i].getOtherEnd(currentNode);\n\n // If BFS is not growing from this neighbor.\n if (parents.get(currentNode) != currentNeighbor) {\n // We haven't previously visited this neighbor.\n if (!visited.has(currentNeighbor)) {\n toBeVisited.push(currentNeighbor);\n parents.set(currentNeighbor, currentNode);\n }\n // Since we have previously visited this neighbor and\n // this neighbor is not parent of currentNode, given\n // graph contains a component that is not tree, hence\n // it is not a forest.\n else {\n isForest = false;\n break;\n }\n }\n }\n }\n\n // The graph contains a component that is not a tree. Empty\n // previously found trees. The method will end.\n if (!isForest) {\n flatForest = [];\n }\n // Save currently visited nodes as a tree in our forest. Reset\n // visited and parents lists. Continue with the next component of\n // the graph, if any.\n else {\n var temp = [].concat(_toConsumableArray(visited));\n flatForest.push(temp);\n //flatForest = flatForest.concat(temp);\n //unProcessedNodes.removeAll(visited);\n for (var i = 0; i < temp.length; i++) {\n var value = temp[i];\n var index = unProcessedNodes.indexOf(value);\n if (index > -1) {\n unProcessedNodes.splice(index, 1);\n }\n }\n visited = new Set();\n parents = new Map();\n }\n }\n\n return flatForest;\n};\n\n/**\r\n * This method creates dummy nodes (an l-level node with minimal dimensions)\r\n * for the given edge (one per bendpoint). The existing l-level structure\r\n * is updated accordingly.\r\n */\nLayout.prototype.createDummyNodesForBendpoints = function (edge) {\n var dummyNodes = [];\n var prev = edge.source;\n\n var graph = this.graphManager.calcLowestCommonAncestor(edge.source, edge.target);\n\n for (var i = 0; i < edge.bendpoints.length; i++) {\n // create new dummy node\n var dummyNode = this.newNode(null);\n dummyNode.setRect(new Point(0, 0), new Dimension(1, 1));\n\n graph.add(dummyNode);\n\n // create new dummy edge between prev and dummy node\n var dummyEdge = this.newEdge(null);\n this.graphManager.add(dummyEdge, prev, dummyNode);\n\n dummyNodes.add(dummyNode);\n prev = dummyNode;\n }\n\n var dummyEdge = this.newEdge(null);\n this.graphManager.add(dummyEdge, prev, edge.target);\n\n this.edgeToDummyNodes.set(edge, dummyNodes);\n\n // remove real edge from graph manager if it is inter-graph\n if (edge.isInterGraph()) {\n this.graphManager.remove(edge);\n }\n // else, remove the edge from the current graph\n else {\n graph.remove(edge);\n }\n\n return dummyNodes;\n};\n\n/**\r\n * This method creates bendpoints for edges from the dummy nodes\r\n * at l-level.\r\n */\nLayout.prototype.createBendpointsFromDummyNodes = function () {\n var edges = [];\n edges = edges.concat(this.graphManager.getAllEdges());\n edges = [].concat(_toConsumableArray(this.edgeToDummyNodes.keys())).concat(edges);\n\n for (var k = 0; k < edges.length; k++) {\n var lEdge = edges[k];\n\n if (lEdge.bendpoints.length > 0) {\n var path = this.edgeToDummyNodes.get(lEdge);\n\n for (var i = 0; i < path.length; i++) {\n var dummyNode = path[i];\n var p = new PointD(dummyNode.getCenterX(), dummyNode.getCenterY());\n\n // update bendpoint's location according to dummy node\n var ebp = lEdge.bendpoints.get(i);\n ebp.x = p.x;\n ebp.y = p.y;\n\n // remove the dummy node, dummy edges incident with this\n // dummy node is also removed (within the remove method)\n dummyNode.getOwner().remove(dummyNode);\n }\n\n // add the real edge to graph\n this.graphManager.add(lEdge, lEdge.source, lEdge.target);\n }\n }\n};\n\nLayout.transform = function (sliderValue, defaultValue, minDiv, maxMul) {\n if (minDiv != undefined && maxMul != undefined) {\n var value = defaultValue;\n\n if (sliderValue <= 50) {\n var minValue = defaultValue / minDiv;\n value -= (defaultValue - minValue) / 50 * (50 - sliderValue);\n } else {\n var maxValue = defaultValue * maxMul;\n value += (maxValue - defaultValue) / 50 * (sliderValue - 50);\n }\n\n return value;\n } else {\n var a, b;\n\n if (sliderValue <= 50) {\n a = 9.0 * defaultValue / 500.0;\n b = defaultValue / 10.0;\n } else {\n a = 9.0 * defaultValue / 50.0;\n b = -8 * defaultValue;\n }\n\n return a * sliderValue + b;\n }\n};\n\n/**\r\n * This method finds and returns the center of the given nodes, assuming\r\n * that the given nodes form a tree in themselves.\r\n */\nLayout.findCenterOfTree = function (nodes) {\n var list = [];\n list = list.concat(nodes);\n\n var removedNodes = [];\n var remainingDegrees = new Map();\n var foundCenter = false;\n var centerNode = null;\n\n if (list.length == 1 || list.length == 2) {\n foundCenter = true;\n centerNode = list[0];\n }\n\n for (var i = 0; i < list.length; i++) {\n var node = list[i];\n var degree = node.getNeighborsList().size;\n remainingDegrees.set(node, node.getNeighborsList().size);\n\n if (degree == 1) {\n removedNodes.push(node);\n }\n }\n\n var tempList = [];\n tempList = tempList.concat(removedNodes);\n\n while (!foundCenter) {\n var tempList2 = [];\n tempList2 = tempList2.concat(tempList);\n tempList = [];\n\n for (var i = 0; i < list.length; i++) {\n var node = list[i];\n\n var index = list.indexOf(node);\n if (index >= 0) {\n list.splice(index, 1);\n }\n\n var neighbours = node.getNeighborsList();\n\n neighbours.forEach(function (neighbour) {\n if (removedNodes.indexOf(neighbour) < 0) {\n var otherDegree = remainingDegrees.get(neighbour);\n var newDegree = otherDegree - 1;\n\n if (newDegree == 1) {\n tempList.push(neighbour);\n }\n\n remainingDegrees.set(neighbour, newDegree);\n }\n });\n }\n\n removedNodes = removedNodes.concat(tempList);\n\n if (list.length == 1 || list.length == 2) {\n foundCenter = true;\n centerNode = list[0];\n }\n }\n\n return centerNode;\n};\n\n/**\r\n * During the coarsening process, this layout may be referenced by two graph managers\r\n * this setter function grants access to change the currently being used graph manager\r\n */\nLayout.prototype.setGraphManager = function (gm) {\n this.graphManager = gm;\n};\n\nmodule.exports = Layout;\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction RandomSeed() {}\n// adapted from: https://stackoverflow.com/a/19303725\nRandomSeed.seed = 1;\nRandomSeed.x = 0;\n\nRandomSeed.nextDouble = function () {\n RandomSeed.x = Math.sin(RandomSeed.seed++) * 10000;\n return RandomSeed.x - Math.floor(RandomSeed.x);\n};\n\nmodule.exports = RandomSeed;\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar PointD = __webpack_require__(4);\n\nfunction Transform(x, y) {\n this.lworldOrgX = 0.0;\n this.lworldOrgY = 0.0;\n this.ldeviceOrgX = 0.0;\n this.ldeviceOrgY = 0.0;\n this.lworldExtX = 1.0;\n this.lworldExtY = 1.0;\n this.ldeviceExtX = 1.0;\n this.ldeviceExtY = 1.0;\n}\n\nTransform.prototype.getWorldOrgX = function () {\n return this.lworldOrgX;\n};\n\nTransform.prototype.setWorldOrgX = function (wox) {\n this.lworldOrgX = wox;\n};\n\nTransform.prototype.getWorldOrgY = function () {\n return this.lworldOrgY;\n};\n\nTransform.prototype.setWorldOrgY = function (woy) {\n this.lworldOrgY = woy;\n};\n\nTransform.prototype.getWorldExtX = function () {\n return this.lworldExtX;\n};\n\nTransform.prototype.setWorldExtX = function (wex) {\n this.lworldExtX = wex;\n};\n\nTransform.prototype.getWorldExtY = function () {\n return this.lworldExtY;\n};\n\nTransform.prototype.setWorldExtY = function (wey) {\n this.lworldExtY = wey;\n};\n\n/* Device related */\n\nTransform.prototype.getDeviceOrgX = function () {\n return this.ldeviceOrgX;\n};\n\nTransform.prototype.setDeviceOrgX = function (dox) {\n this.ldeviceOrgX = dox;\n};\n\nTransform.prototype.getDeviceOrgY = function () {\n return this.ldeviceOrgY;\n};\n\nTransform.prototype.setDeviceOrgY = function (doy) {\n this.ldeviceOrgY = doy;\n};\n\nTransform.prototype.getDeviceExtX = function () {\n return this.ldeviceExtX;\n};\n\nTransform.prototype.setDeviceExtX = function (dex) {\n this.ldeviceExtX = dex;\n};\n\nTransform.prototype.getDeviceExtY = function () {\n return this.ldeviceExtY;\n};\n\nTransform.prototype.setDeviceExtY = function (dey) {\n this.ldeviceExtY = dey;\n};\n\nTransform.prototype.transformX = function (x) {\n var xDevice = 0.0;\n var worldExtX = this.lworldExtX;\n if (worldExtX != 0.0) {\n xDevice = this.ldeviceOrgX + (x - this.lworldOrgX) * this.ldeviceExtX / worldExtX;\n }\n\n return xDevice;\n};\n\nTransform.prototype.transformY = function (y) {\n var yDevice = 0.0;\n var worldExtY = this.lworldExtY;\n if (worldExtY != 0.0) {\n yDevice = this.ldeviceOrgY + (y - this.lworldOrgY) * this.ldeviceExtY / worldExtY;\n }\n\n return yDevice;\n};\n\nTransform.prototype.inverseTransformX = function (x) {\n var xWorld = 0.0;\n var deviceExtX = this.ldeviceExtX;\n if (deviceExtX != 0.0) {\n xWorld = this.lworldOrgX + (x - this.ldeviceOrgX) * this.lworldExtX / deviceExtX;\n }\n\n return xWorld;\n};\n\nTransform.prototype.inverseTransformY = function (y) {\n var yWorld = 0.0;\n var deviceExtY = this.ldeviceExtY;\n if (deviceExtY != 0.0) {\n yWorld = this.lworldOrgY + (y - this.ldeviceOrgY) * this.lworldExtY / deviceExtY;\n }\n return yWorld;\n};\n\nTransform.prototype.inverseTransformPoint = function (inPoint) {\n var outPoint = new PointD(this.inverseTransformX(inPoint.x), this.inverseTransformY(inPoint.y));\n return outPoint;\n};\n\nmodule.exports = Transform;\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nvar Layout = __webpack_require__(15);\nvar FDLayoutConstants = __webpack_require__(7);\nvar LayoutConstants = __webpack_require__(0);\nvar IGeometry = __webpack_require__(8);\nvar IMath = __webpack_require__(9);\n\nfunction FDLayout() {\n Layout.call(this);\n\n this.useSmartIdealEdgeLengthCalculation = FDLayoutConstants.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION;\n this.idealEdgeLength = FDLayoutConstants.DEFAULT_EDGE_LENGTH;\n this.springConstant = FDLayoutConstants.DEFAULT_SPRING_STRENGTH;\n this.repulsionConstant = FDLayoutConstants.DEFAULT_REPULSION_STRENGTH;\n this.gravityConstant = FDLayoutConstants.DEFAULT_GRAVITY_STRENGTH;\n this.compoundGravityConstant = FDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_STRENGTH;\n this.gravityRangeFactor = FDLayoutConstants.DEFAULT_GRAVITY_RANGE_FACTOR;\n this.compoundGravityRangeFactor = FDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR;\n this.displacementThresholdPerNode = 3.0 * FDLayoutConstants.DEFAULT_EDGE_LENGTH / 100;\n this.coolingFactor = FDLayoutConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL;\n this.initialCoolingFactor = FDLayoutConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL;\n this.totalDisplacement = 0.0;\n this.oldTotalDisplacement = 0.0;\n this.maxIterations = FDLayoutConstants.MAX_ITERATIONS;\n}\n\nFDLayout.prototype = Object.create(Layout.prototype);\n\nfor (var prop in Layout) {\n FDLayout[prop] = Layout[prop];\n}\n\nFDLayout.prototype.initParameters = function () {\n Layout.prototype.initParameters.call(this, arguments);\n\n this.totalIterations = 0;\n this.notAnimatedIterations = 0;\n\n this.useFRGridVariant = FDLayoutConstants.DEFAULT_USE_SMART_REPULSION_RANGE_CALCULATION;\n\n this.grid = [];\n};\n\nFDLayout.prototype.calcIdealEdgeLengths = function () {\n var edge;\n var lcaDepth;\n var source;\n var target;\n var sizeOfSourceInLca;\n var sizeOfTargetInLca;\n\n var allEdges = this.getGraphManager().getAllEdges();\n for (var i = 0; i < allEdges.length; i++) {\n edge = allEdges[i];\n\n edge.idealLength = this.idealEdgeLength;\n\n if (edge.isInterGraph) {\n source = edge.getSource();\n target = edge.getTarget();\n\n sizeOfSourceInLca = edge.getSourceInLca().getEstimatedSize();\n sizeOfTargetInLca = edge.getTargetInLca().getEstimatedSize();\n\n if (this.useSmartIdealEdgeLengthCalculation) {\n edge.idealLength += sizeOfSourceInLca + sizeOfTargetInLca - 2 * LayoutConstants.SIMPLE_NODE_SIZE;\n }\n\n lcaDepth = edge.getLca().getInclusionTreeDepth();\n\n edge.idealLength += FDLayoutConstants.DEFAULT_EDGE_LENGTH * FDLayoutConstants.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR * (source.getInclusionTreeDepth() + target.getInclusionTreeDepth() - 2 * lcaDepth);\n }\n }\n};\n\nFDLayout.prototype.initSpringEmbedder = function () {\n\n var s = this.getAllNodes().length;\n if (this.incremental) {\n if (s > FDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT) {\n this.coolingFactor = Math.max(this.coolingFactor * FDLayoutConstants.COOLING_ADAPTATION_FACTOR, this.coolingFactor - (s - FDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT) / (FDLayoutConstants.ADAPTATION_UPPER_NODE_LIMIT - FDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT) * this.coolingFactor * (1 - FDLayoutConstants.COOLING_ADAPTATION_FACTOR));\n }\n this.maxNodeDisplacement = FDLayoutConstants.MAX_NODE_DISPLACEMENT_INCREMENTAL;\n } else {\n if (s > FDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT) {\n this.coolingFactor = Math.max(FDLayoutConstants.COOLING_ADAPTATION_FACTOR, 1.0 - (s - FDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT) / (FDLayoutConstants.ADAPTATION_UPPER_NODE_LIMIT - FDLayoutConstants.ADAPTATION_LOWER_NODE_LIMIT) * (1 - FDLayoutConstants.COOLING_ADAPTATION_FACTOR));\n } else {\n this.coolingFactor = 1.0;\n }\n this.initialCoolingFactor = this.coolingFactor;\n this.maxNodeDisplacement = FDLayoutConstants.MAX_NODE_DISPLACEMENT;\n }\n\n this.maxIterations = Math.max(this.getAllNodes().length * 5, this.maxIterations);\n\n this.totalDisplacementThreshold = this.displacementThresholdPerNode * this.getAllNodes().length;\n\n this.repulsionRange = this.calcRepulsionRange();\n};\n\nFDLayout.prototype.calcSpringForces = function () {\n var lEdges = this.getAllEdges();\n var edge;\n\n for (var i = 0; i < lEdges.length; i++) {\n edge = lEdges[i];\n\n this.calcSpringForce(edge, edge.idealLength);\n }\n};\n\nFDLayout.prototype.calcRepulsionForces = function () {\n var gridUpdateAllowed = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n var forceToNodeSurroundingUpdate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var i, j;\n var nodeA, nodeB;\n var lNodes = this.getAllNodes();\n var processedNodeSet;\n\n if (this.useFRGridVariant) {\n if (this.totalIterations % FDLayoutConstants.GRID_CALCULATION_CHECK_PERIOD == 1 && gridUpdateAllowed) {\n this.updateGrid();\n }\n\n processedNodeSet = new Set();\n\n // calculate repulsion forces between each nodes and its surrounding\n for (i = 0; i < lNodes.length; i++) {\n nodeA = lNodes[i];\n this.calculateRepulsionForceOfANode(nodeA, processedNodeSet, gridUpdateAllowed, forceToNodeSurroundingUpdate);\n processedNodeSet.add(nodeA);\n }\n } else {\n for (i = 0; i < lNodes.length; i++) {\n nodeA = lNodes[i];\n\n for (j = i + 1; j < lNodes.length; j++) {\n nodeB = lNodes[j];\n\n // If both nodes are not members of the same graph, skip.\n if (nodeA.getOwner() != nodeB.getOwner()) {\n continue;\n }\n\n this.calcRepulsionForce(nodeA, nodeB);\n }\n }\n }\n};\n\nFDLayout.prototype.calcGravitationalForces = function () {\n var node;\n var lNodes = this.getAllNodesToApplyGravitation();\n\n for (var i = 0; i < lNodes.length; i++) {\n node = lNodes[i];\n this.calcGravitationalForce(node);\n }\n};\n\nFDLayout.prototype.moveNodes = function () {\n var lNodes = this.getAllNodes();\n var node;\n\n for (var i = 0; i < lNodes.length; i++) {\n node = lNodes[i];\n node.move();\n }\n};\n\nFDLayout.prototype.calcSpringForce = function (edge, idealLength) {\n var sourceNode = edge.getSource();\n var targetNode = edge.getTarget();\n\n var length;\n var springForce;\n var springForceX;\n var springForceY;\n\n // Update edge length\n if (this.uniformLeafNodeSizes && sourceNode.getChild() == null && targetNode.getChild() == null) {\n edge.updateLengthSimple();\n } else {\n edge.updateLength();\n\n if (edge.isOverlapingSourceAndTarget) {\n return;\n }\n }\n\n length = edge.getLength();\n\n if (length == 0) return;\n\n // Calculate spring forces\n springForce = this.springConstant * (length - idealLength);\n\n // Project force onto x and y axes\n springForceX = springForce * (edge.lengthX / length);\n springForceY = springForce * (edge.lengthY / length);\n\n // Apply forces on the end nodes\n sourceNode.springForceX += springForceX;\n sourceNode.springForceY += springForceY;\n targetNode.springForceX -= springForceX;\n targetNode.springForceY -= springForceY;\n};\n\nFDLayout.prototype.calcRepulsionForce = function (nodeA, nodeB) {\n var rectA = nodeA.getRect();\n var rectB = nodeB.getRect();\n var overlapAmount = new Array(2);\n var clipPoints = new Array(4);\n var distanceX;\n var distanceY;\n var distanceSquared;\n var distance;\n var repulsionForce;\n var repulsionForceX;\n var repulsionForceY;\n\n if (rectA.intersects(rectB)) // two nodes overlap\n {\n // calculate separation amount in x and y directions\n IGeometry.calcSeparationAmount(rectA, rectB, overlapAmount, FDLayoutConstants.DEFAULT_EDGE_LENGTH / 2.0);\n\n repulsionForceX = 2 * overlapAmount[0];\n repulsionForceY = 2 * overlapAmount[1];\n\n var childrenConstant = nodeA.noOfChildren * nodeB.noOfChildren / (nodeA.noOfChildren + nodeB.noOfChildren);\n\n // Apply forces on the two nodes\n nodeA.repulsionForceX -= childrenConstant * repulsionForceX;\n nodeA.repulsionForceY -= childrenConstant * repulsionForceY;\n nodeB.repulsionForceX += childrenConstant * repulsionForceX;\n nodeB.repulsionForceY += childrenConstant * repulsionForceY;\n } else // no overlap\n {\n // calculate distance\n\n if (this.uniformLeafNodeSizes && nodeA.getChild() == null && nodeB.getChild() == null) // simply base repulsion on distance of node centers\n {\n distanceX = rectB.getCenterX() - rectA.getCenterX();\n distanceY = rectB.getCenterY() - rectA.getCenterY();\n } else // use clipping points\n {\n IGeometry.getIntersection(rectA, rectB, clipPoints);\n\n distanceX = clipPoints[2] - clipPoints[0];\n distanceY = clipPoints[3] - clipPoints[1];\n }\n\n // No repulsion range. FR grid variant should take care of this.\n if (Math.abs(distanceX) < FDLayoutConstants.MIN_REPULSION_DIST) {\n distanceX = IMath.sign(distanceX) * FDLayoutConstants.MIN_REPULSION_DIST;\n }\n\n if (Math.abs(distanceY) < FDLayoutConstants.MIN_REPULSION_DIST) {\n distanceY = IMath.sign(distanceY) * FDLayoutConstants.MIN_REPULSION_DIST;\n }\n\n distanceSquared = distanceX * distanceX + distanceY * distanceY;\n distance = Math.sqrt(distanceSquared);\n\n repulsionForce = this.repulsionConstant * nodeA.noOfChildren * nodeB.noOfChildren / distanceSquared;\n\n // Project force onto x and y axes\n repulsionForceX = repulsionForce * distanceX / distance;\n repulsionForceY = repulsionForce * distanceY / distance;\n\n // Apply forces on the two nodes \n nodeA.repulsionForceX -= repulsionForceX;\n nodeA.repulsionForceY -= repulsionForceY;\n nodeB.repulsionForceX += repulsionForceX;\n nodeB.repulsionForceY += repulsionForceY;\n }\n};\n\nFDLayout.prototype.calcGravitationalForce = function (node) {\n var ownerGraph;\n var ownerCenterX;\n var ownerCenterY;\n var distanceX;\n var distanceY;\n var absDistanceX;\n var absDistanceY;\n var estimatedSize;\n ownerGraph = node.getOwner();\n\n ownerCenterX = (ownerGraph.getRight() + ownerGraph.getLeft()) / 2;\n ownerCenterY = (ownerGraph.getTop() + ownerGraph.getBottom()) / 2;\n distanceX = node.getCenterX() - ownerCenterX;\n distanceY = node.getCenterY() - ownerCenterY;\n absDistanceX = Math.abs(distanceX) + node.getWidth() / 2;\n absDistanceY = Math.abs(distanceY) + node.getHeight() / 2;\n\n if (node.getOwner() == this.graphManager.getRoot()) // in the root graph\n {\n estimatedSize = ownerGraph.getEstimatedSize() * this.gravityRangeFactor;\n\n if (absDistanceX > estimatedSize || absDistanceY > estimatedSize) {\n node.gravitationForceX = -this.gravityConstant * distanceX;\n node.gravitationForceY = -this.gravityConstant * distanceY;\n }\n } else // inside a compound\n {\n estimatedSize = ownerGraph.getEstimatedSize() * this.compoundGravityRangeFactor;\n\n if (absDistanceX > estimatedSize || absDistanceY > estimatedSize) {\n node.gravitationForceX = -this.gravityConstant * distanceX * this.compoundGravityConstant;\n node.gravitationForceY = -this.gravityConstant * distanceY * this.compoundGravityConstant;\n }\n }\n};\n\nFDLayout.prototype.isConverged = function () {\n var converged;\n var oscilating = false;\n\n if (this.totalIterations > this.maxIterations / 3) {\n oscilating = Math.abs(this.totalDisplacement - this.oldTotalDisplacement) < 2;\n }\n\n converged = this.totalDisplacement < this.totalDisplacementThreshold;\n\n this.oldTotalDisplacement = this.totalDisplacement;\n\n return converged || oscilating;\n};\n\nFDLayout.prototype.animate = function () {\n if (this.animationDuringLayout && !this.isSubLayout) {\n if (this.notAnimatedIterations == this.animationPeriod) {\n this.update();\n this.notAnimatedIterations = 0;\n } else {\n this.notAnimatedIterations++;\n }\n }\n};\n\n//This method calculates the number of children (weight) for all nodes\nFDLayout.prototype.calcNoOfChildrenForAllNodes = function () {\n var node;\n var allNodes = this.graphManager.getAllNodes();\n\n for (var i = 0; i < allNodes.length; i++) {\n node = allNodes[i];\n node.noOfChildren = node.getNoOfChildren();\n }\n};\n\n// -----------------------------------------------------------------------------\n// Section: FR-Grid Variant Repulsion Force Calculation\n// -----------------------------------------------------------------------------\n\nFDLayout.prototype.calcGrid = function (graph) {\n\n var sizeX = 0;\n var sizeY = 0;\n\n sizeX = parseInt(Math.ceil((graph.getRight() - graph.getLeft()) / this.repulsionRange));\n sizeY = parseInt(Math.ceil((graph.getBottom() - graph.getTop()) / this.repulsionRange));\n\n var grid = new Array(sizeX);\n\n for (var i = 0; i < sizeX; i++) {\n grid[i] = new Array(sizeY);\n }\n\n for (var i = 0; i < sizeX; i++) {\n for (var j = 0; j < sizeY; j++) {\n grid[i][j] = new Array();\n }\n }\n\n return grid;\n};\n\nFDLayout.prototype.addNodeToGrid = function (v, left, top) {\n\n var startX = 0;\n var finishX = 0;\n var startY = 0;\n var finishY = 0;\n\n startX = parseInt(Math.floor((v.getRect().x - left) / this.repulsionRange));\n finishX = parseInt(Math.floor((v.getRect().width + v.getRect().x - left) / this.repulsionRange));\n startY = parseInt(Math.floor((v.getRect().y - top) / this.repulsionRange));\n finishY = parseInt(Math.floor((v.getRect().height + v.getRect().y - top) / this.repulsionRange));\n\n for (var i = startX; i <= finishX; i++) {\n for (var j = startY; j <= finishY; j++) {\n this.grid[i][j].push(v);\n v.setGridCoordinates(startX, finishX, startY, finishY);\n }\n }\n};\n\nFDLayout.prototype.updateGrid = function () {\n var i;\n var nodeA;\n var lNodes = this.getAllNodes();\n\n this.grid = this.calcGrid(this.graphManager.getRoot());\n\n // put all nodes to proper grid cells\n for (i = 0; i < lNodes.length; i++) {\n nodeA = lNodes[i];\n this.addNodeToGrid(nodeA, this.graphManager.getRoot().getLeft(), this.graphManager.getRoot().getTop());\n }\n};\n\nFDLayout.prototype.calculateRepulsionForceOfANode = function (nodeA, processedNodeSet, gridUpdateAllowed, forceToNodeSurroundingUpdate) {\n\n if (this.totalIterations % FDLayoutConstants.GRID_CALCULATION_CHECK_PERIOD == 1 && gridUpdateAllowed || forceToNodeSurroundingUpdate) {\n var surrounding = new Set();\n nodeA.surrounding = new Array();\n var nodeB;\n var grid = this.grid;\n\n for (var i = nodeA.startX - 1; i < nodeA.finishX + 2; i++) {\n for (var j = nodeA.startY - 1; j < nodeA.finishY + 2; j++) {\n if (!(i < 0 || j < 0 || i >= grid.length || j >= grid[0].length)) {\n for (var k = 0; k < grid[i][j].length; k++) {\n nodeB = grid[i][j][k];\n\n // If both nodes are not members of the same graph, \n // or both nodes are the same, skip.\n if (nodeA.getOwner() != nodeB.getOwner() || nodeA == nodeB) {\n continue;\n }\n\n // check if the repulsion force between\n // nodeA and nodeB has already been calculated\n if (!processedNodeSet.has(nodeB) && !surrounding.has(nodeB)) {\n var distanceX = Math.abs(nodeA.getCenterX() - nodeB.getCenterX()) - (nodeA.getWidth() / 2 + nodeB.getWidth() / 2);\n var distanceY = Math.abs(nodeA.getCenterY() - nodeB.getCenterY()) - (nodeA.getHeight() / 2 + nodeB.getHeight() / 2);\n\n // if the distance between nodeA and nodeB \n // is less then calculation range\n if (distanceX <= this.repulsionRange && distanceY <= this.repulsionRange) {\n //then add nodeB to surrounding of nodeA\n surrounding.add(nodeB);\n }\n }\n }\n }\n }\n }\n\n nodeA.surrounding = [].concat(_toConsumableArray(surrounding));\n }\n for (i = 0; i < nodeA.surrounding.length; i++) {\n this.calcRepulsionForce(nodeA, nodeA.surrounding[i]);\n }\n};\n\nFDLayout.prototype.calcRepulsionRange = function () {\n return 0.0;\n};\n\nmodule.exports = FDLayout;\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar LEdge = __webpack_require__(1);\nvar FDLayoutConstants = __webpack_require__(7);\n\nfunction FDLayoutEdge(source, target, vEdge) {\n LEdge.call(this, source, target, vEdge);\n this.idealLength = FDLayoutConstants.DEFAULT_EDGE_LENGTH;\n}\n\nFDLayoutEdge.prototype = Object.create(LEdge.prototype);\n\nfor (var prop in LEdge) {\n FDLayoutEdge[prop] = LEdge[prop];\n}\n\nmodule.exports = FDLayoutEdge;\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar LNode = __webpack_require__(3);\n\nfunction FDLayoutNode(gm, loc, size, vNode) {\n // alternative constructor is handled inside LNode\n LNode.call(this, gm, loc, size, vNode);\n //Spring, repulsion and gravitational forces acting on this node\n this.springForceX = 0;\n this.springForceY = 0;\n this.repulsionForceX = 0;\n this.repulsionForceY = 0;\n this.gravitationForceX = 0;\n this.gravitationForceY = 0;\n //Amount by which this node is to be moved in this iteration\n this.displacementX = 0;\n this.displacementY = 0;\n\n //Start and finish grid coordinates that this node is fallen into\n this.startX = 0;\n this.finishX = 0;\n this.startY = 0;\n this.finishY = 0;\n\n //Geometric neighbors of this node\n this.surrounding = [];\n}\n\nFDLayoutNode.prototype = Object.create(LNode.prototype);\n\nfor (var prop in LNode) {\n FDLayoutNode[prop] = LNode[prop];\n}\n\nFDLayoutNode.prototype.setGridCoordinates = function (_startX, _finishX, _startY, _finishY) {\n this.startX = _startX;\n this.finishX = _finishX;\n this.startY = _startY;\n this.finishY = _finishY;\n};\n\nmodule.exports = FDLayoutNode;\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction DimensionD(width, height) {\n this.width = 0;\n this.height = 0;\n if (width !== null && height !== null) {\n this.height = height;\n this.width = width;\n }\n}\n\nDimensionD.prototype.getWidth = function () {\n return this.width;\n};\n\nDimensionD.prototype.setWidth = function (width) {\n this.width = width;\n};\n\nDimensionD.prototype.getHeight = function () {\n return this.height;\n};\n\nDimensionD.prototype.setHeight = function (height) {\n this.height = height;\n};\n\nmodule.exports = DimensionD;\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar UniqueIDGeneretor = __webpack_require__(14);\n\nfunction HashMap() {\n this.map = {};\n this.keys = [];\n}\n\nHashMap.prototype.put = function (key, value) {\n var theId = UniqueIDGeneretor.createID(key);\n if (!this.contains(theId)) {\n this.map[theId] = value;\n this.keys.push(key);\n }\n};\n\nHashMap.prototype.contains = function (key) {\n var theId = UniqueIDGeneretor.createID(key);\n return this.map[key] != null;\n};\n\nHashMap.prototype.get = function (key) {\n var theId = UniqueIDGeneretor.createID(key);\n return this.map[theId];\n};\n\nHashMap.prototype.keySet = function () {\n return this.keys;\n};\n\nmodule.exports = HashMap;\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar UniqueIDGeneretor = __webpack_require__(14);\n\nfunction HashSet() {\n this.set = {};\n}\n;\n\nHashSet.prototype.add = function (obj) {\n var theId = UniqueIDGeneretor.createID(obj);\n if (!this.contains(theId)) this.set[theId] = obj;\n};\n\nHashSet.prototype.remove = function (obj) {\n delete this.set[UniqueIDGeneretor.createID(obj)];\n};\n\nHashSet.prototype.clear = function () {\n this.set = {};\n};\n\nHashSet.prototype.contains = function (obj) {\n return this.set[UniqueIDGeneretor.createID(obj)] == obj;\n};\n\nHashSet.prototype.isEmpty = function () {\n return this.size() === 0;\n};\n\nHashSet.prototype.size = function () {\n return Object.keys(this.set).length;\n};\n\n//concats this.set to the given list\nHashSet.prototype.addAllTo = function (list) {\n var keys = Object.keys(this.set);\n var length = keys.length;\n for (var i = 0; i < length; i++) {\n list.push(this.set[keys[i]]);\n }\n};\n\nHashSet.prototype.size = function () {\n return Object.keys(this.set).length;\n};\n\nHashSet.prototype.addAll = function (list) {\n var s = list.length;\n for (var i = 0; i < s; i++) {\n var v = list[i];\n this.add(v);\n }\n};\n\nmodule.exports = HashSet;\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * A classic Quicksort algorithm with Hoare's partition\n * - Works also on LinkedList objects\n *\n * Copyright: i-Vis Research Group, Bilkent University, 2007 - present\n */\n\nvar LinkedList = __webpack_require__(11);\n\nvar Quicksort = function () {\n function Quicksort(A, compareFunction) {\n _classCallCheck(this, Quicksort);\n\n if (compareFunction !== null || compareFunction !== undefined) this.compareFunction = this._defaultCompareFunction;\n\n var length = void 0;\n if (A instanceof LinkedList) length = A.size();else length = A.length;\n\n this._quicksort(A, 0, length - 1);\n }\n\n _createClass(Quicksort, [{\n key: '_quicksort',\n value: function _quicksort(A, p, r) {\n if (p < r) {\n var q = this._partition(A, p, r);\n this._quicksort(A, p, q);\n this._quicksort(A, q + 1, r);\n }\n }\n }, {\n key: '_partition',\n value: function _partition(A, p, r) {\n var x = this._get(A, p);\n var i = p;\n var j = r;\n while (true) {\n while (this.compareFunction(x, this._get(A, j))) {\n j--;\n }while (this.compareFunction(this._get(A, i), x)) {\n i++;\n }if (i < j) {\n this._swap(A, i, j);\n i++;\n j--;\n } else return j;\n }\n }\n }, {\n key: '_get',\n value: function _get(object, index) {\n if (object instanceof LinkedList) return object.get_object_at(index);else return object[index];\n }\n }, {\n key: '_set',\n value: function _set(object, index, value) {\n if (object instanceof LinkedList) object.set_object_at(index, value);else object[index] = value;\n }\n }, {\n key: '_swap',\n value: function _swap(A, i, j) {\n var temp = this._get(A, i);\n this._set(A, i, this._get(A, j));\n this._set(A, j, temp);\n }\n }, {\n key: '_defaultCompareFunction',\n value: function _defaultCompareFunction(a, b) {\n return b > a;\n }\n }]);\n\n return Quicksort;\n}();\n\nmodule.exports = Quicksort;\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * Needleman-Wunsch algorithm is an procedure to compute the optimal global alignment of two string\n * sequences by S.B.Needleman and C.D.Wunsch (1970).\n *\n * Aside from the inputs, you can assign the scores for,\n * - Match: The two characters at the current index are same.\n * - Mismatch: The two characters at the current index are different.\n * - Insertion/Deletion(gaps): The best alignment involves one letter aligning to a gap in the other string.\n */\n\nvar NeedlemanWunsch = function () {\n function NeedlemanWunsch(sequence1, sequence2) {\n var match_score = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n var mismatch_penalty = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : -1;\n var gap_penalty = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : -1;\n\n _classCallCheck(this, NeedlemanWunsch);\n\n this.sequence1 = sequence1;\n this.sequence2 = sequence2;\n this.match_score = match_score;\n this.mismatch_penalty = mismatch_penalty;\n this.gap_penalty = gap_penalty;\n\n // Just the remove redundancy\n this.iMax = sequence1.length + 1;\n this.jMax = sequence2.length + 1;\n\n // Grid matrix of scores\n this.grid = new Array(this.iMax);\n for (var i = 0; i < this.iMax; i++) {\n this.grid[i] = new Array(this.jMax);\n\n for (var j = 0; j < this.jMax; j++) {\n this.grid[i][j] = 0;\n }\n }\n\n // Traceback matrix (2D array, each cell is an array of boolean values for [`Diag`, `Up`, `Left`] positions)\n this.tracebackGrid = new Array(this.iMax);\n for (var _i = 0; _i < this.iMax; _i++) {\n this.tracebackGrid[_i] = new Array(this.jMax);\n\n for (var _j = 0; _j < this.jMax; _j++) {\n this.tracebackGrid[_i][_j] = [null, null, null];\n }\n }\n\n // The aligned sequences (return multiple possibilities)\n this.alignments = [];\n\n // Final alignment score\n this.score = -1;\n\n // Calculate scores and tracebacks\n this.computeGrids();\n }\n\n _createClass(NeedlemanWunsch, [{\n key: \"getScore\",\n value: function getScore() {\n return this.score;\n }\n }, {\n key: \"getAlignments\",\n value: function getAlignments() {\n return this.alignments;\n }\n\n // Main dynamic programming procedure\n\n }, {\n key: \"computeGrids\",\n value: function computeGrids() {\n // Fill in the first row\n for (var j = 1; j < this.jMax; j++) {\n this.grid[0][j] = this.grid[0][j - 1] + this.gap_penalty;\n this.tracebackGrid[0][j] = [false, false, true];\n }\n\n // Fill in the first column\n for (var i = 1; i < this.iMax; i++) {\n this.grid[i][0] = this.grid[i - 1][0] + this.gap_penalty;\n this.tracebackGrid[i][0] = [false, true, false];\n }\n\n // Fill the rest of the grid\n for (var _i2 = 1; _i2 < this.iMax; _i2++) {\n for (var _j2 = 1; _j2 < this.jMax; _j2++) {\n // Find the max score(s) among [`Diag`, `Up`, `Left`]\n var diag = void 0;\n if (this.sequence1[_i2 - 1] === this.sequence2[_j2 - 1]) diag = this.grid[_i2 - 1][_j2 - 1] + this.match_score;else diag = this.grid[_i2 - 1][_j2 - 1] + this.mismatch_penalty;\n\n var up = this.grid[_i2 - 1][_j2] + this.gap_penalty;\n var left = this.grid[_i2][_j2 - 1] + this.gap_penalty;\n\n // If there exists multiple max values, capture them for multiple paths\n var maxOf = [diag, up, left];\n var indices = this.arrayAllMaxIndexes(maxOf);\n\n // Update Grids\n this.grid[_i2][_j2] = maxOf[indices[0]];\n this.tracebackGrid[_i2][_j2] = [indices.includes(0), indices.includes(1), indices.includes(2)];\n }\n }\n\n // Update alignment score\n this.score = this.grid[this.iMax - 1][this.jMax - 1];\n }\n\n // Gets all possible valid sequence combinations\n\n }, {\n key: \"alignmentTraceback\",\n value: function alignmentTraceback() {\n var inProcessAlignments = [];\n\n inProcessAlignments.push({ pos: [this.sequence1.length, this.sequence2.length],\n seq1: \"\",\n seq2: \"\"\n });\n\n while (inProcessAlignments[0]) {\n var current = inProcessAlignments[0];\n var directions = this.tracebackGrid[current.pos[0]][current.pos[1]];\n\n if (directions[0]) {\n inProcessAlignments.push({ pos: [current.pos[0] - 1, current.pos[1] - 1],\n seq1: this.sequence1[current.pos[0] - 1] + current.seq1,\n seq2: this.sequence2[current.pos[1] - 1] + current.seq2\n });\n }\n if (directions[1]) {\n inProcessAlignments.push({ pos: [current.pos[0] - 1, current.pos[1]],\n seq1: this.sequence1[current.pos[0] - 1] + current.seq1,\n seq2: '-' + current.seq2\n });\n }\n if (directions[2]) {\n inProcessAlignments.push({ pos: [current.pos[0], current.pos[1] - 1],\n seq1: '-' + current.seq1,\n seq2: this.sequence2[current.pos[1] - 1] + current.seq2\n });\n }\n\n if (current.pos[0] === 0 && current.pos[1] === 0) this.alignments.push({ sequence1: current.seq1,\n sequence2: current.seq2\n });\n\n inProcessAlignments.shift();\n }\n\n return this.alignments;\n }\n\n // Helper Functions\n\n }, {\n key: \"getAllIndexes\",\n value: function getAllIndexes(arr, val) {\n var indexes = [],\n i = -1;\n while ((i = arr.indexOf(val, i + 1)) !== -1) {\n indexes.push(i);\n }\n return indexes;\n }\n }, {\n key: \"arrayAllMaxIndexes\",\n value: function arrayAllMaxIndexes(array) {\n return this.getAllIndexes(array, Math.max.apply(null, array));\n }\n }]);\n\n return NeedlemanWunsch;\n}();\n\nmodule.exports = NeedlemanWunsch;\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar layoutBase = function layoutBase() {\n return;\n};\n\nlayoutBase.FDLayout = __webpack_require__(18);\nlayoutBase.FDLayoutConstants = __webpack_require__(7);\nlayoutBase.FDLayoutEdge = __webpack_require__(19);\nlayoutBase.FDLayoutNode = __webpack_require__(20);\nlayoutBase.DimensionD = __webpack_require__(21);\nlayoutBase.HashMap = __webpack_require__(22);\nlayoutBase.HashSet = __webpack_require__(23);\nlayoutBase.IGeometry = __webpack_require__(8);\nlayoutBase.IMath = __webpack_require__(9);\nlayoutBase.Integer = __webpack_require__(10);\nlayoutBase.Point = __webpack_require__(12);\nlayoutBase.PointD = __webpack_require__(4);\nlayoutBase.RandomSeed = __webpack_require__(16);\nlayoutBase.RectangleD = __webpack_require__(13);\nlayoutBase.Transform = __webpack_require__(17);\nlayoutBase.UniqueIDGeneretor = __webpack_require__(14);\nlayoutBase.Quicksort = __webpack_require__(24);\nlayoutBase.LinkedList = __webpack_require__(11);\nlayoutBase.LGraphObject = __webpack_require__(2);\nlayoutBase.LGraph = __webpack_require__(5);\nlayoutBase.LEdge = __webpack_require__(1);\nlayoutBase.LGraphManager = __webpack_require__(6);\nlayoutBase.LNode = __webpack_require__(3);\nlayoutBase.Layout = __webpack_require__(15);\nlayoutBase.LayoutConstants = __webpack_require__(0);\nlayoutBase.NeedlemanWunsch = __webpack_require__(25);\n\nmodule.exports = layoutBase;\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction Emitter() {\n this.listeners = [];\n}\n\nvar p = Emitter.prototype;\n\np.addListener = function (event, callback) {\n this.listeners.push({\n event: event,\n callback: callback\n });\n};\n\np.removeListener = function (event, callback) {\n for (var i = this.listeners.length; i >= 0; i--) {\n var l = this.listeners[i];\n\n if (l.event === event && l.callback === callback) {\n this.listeners.splice(i, 1);\n }\n }\n};\n\np.emit = function (event, data) {\n for (var i = 0; i < this.listeners.length; i++) {\n var l = this.listeners[i];\n\n if (event === l.event) {\n l.callback(data);\n }\n }\n};\n\nmodule.exports = Emitter;\n\n/***/ })\n/******/ ]);\n});","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = debounce;\n","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"cose-base\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"cose-base\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"cytoscapeCoseBilkent\"] = factory(require(\"cose-base\"));\n\telse\n\t\troot[\"cytoscapeCoseBilkent\"] = factory(root[\"coseBase\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_0__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// identity function for calling harmony imports with the correct context\n/******/ \t__webpack_require__.i = function(value) { return value; };\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 1);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_0__;\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar LayoutConstants = __webpack_require__(0).layoutBase.LayoutConstants;\nvar FDLayoutConstants = __webpack_require__(0).layoutBase.FDLayoutConstants;\nvar CoSEConstants = __webpack_require__(0).CoSEConstants;\nvar CoSELayout = __webpack_require__(0).CoSELayout;\nvar CoSENode = __webpack_require__(0).CoSENode;\nvar PointD = __webpack_require__(0).layoutBase.PointD;\nvar DimensionD = __webpack_require__(0).layoutBase.DimensionD;\n\nvar defaults = {\n // Called on `layoutready`\n ready: function ready() {},\n // Called on `layoutstop`\n stop: function stop() {},\n // 'draft', 'default' or 'proof\" \n // - 'draft' fast cooling rate \n // - 'default' moderate cooling rate \n // - \"proof\" slow cooling rate\n quality: 'default',\n // include labels in node dimensions\n nodeDimensionsIncludeLabels: false,\n // number of ticks per frame; higher is faster but more jerky\n refresh: 30,\n // Whether to fit the network view after when done\n fit: true,\n // Padding on fit\n padding: 10,\n // Whether to enable incremental mode\n randomize: true,\n // Node repulsion (non overlapping) multiplier\n nodeRepulsion: 4500,\n // Ideal edge (non nested) length\n idealEdgeLength: 50,\n // Divisor to compute edge forces\n edgeElasticity: 0.45,\n // Nesting factor (multiplier) to compute ideal edge length for nested edges\n nestingFactor: 0.1,\n // Gravity force (constant)\n gravity: 0.25,\n // Maximum number of iterations to perform\n numIter: 2500,\n // For enabling tiling\n tile: true,\n // Type of layout animation. The option set is {'during', 'end', false}\n animate: 'end',\n // Duration for animate:end\n animationDuration: 500,\n // Represents the amount of the vertical space to put between the zero degree members during the tiling operation(can also be a function)\n tilingPaddingVertical: 10,\n // Represents the amount of the horizontal space to put between the zero degree members during the tiling operation(can also be a function)\n tilingPaddingHorizontal: 10,\n // Gravity range (constant) for compounds\n gravityRangeCompound: 1.5,\n // Gravity force (constant) for compounds\n gravityCompound: 1.0,\n // Gravity range (constant)\n gravityRange: 3.8,\n // Initial cooling factor for incremental layout\n initialEnergyOnIncremental: 0.5\n};\n\nfunction extend(defaults, options) {\n var obj = {};\n\n for (var i in defaults) {\n obj[i] = defaults[i];\n }\n\n for (var i in options) {\n obj[i] = options[i];\n }\n\n return obj;\n};\n\nfunction _CoSELayout(_options) {\n this.options = extend(defaults, _options);\n getUserOptions(this.options);\n}\n\nvar getUserOptions = function getUserOptions(options) {\n if (options.nodeRepulsion != null) CoSEConstants.DEFAULT_REPULSION_STRENGTH = FDLayoutConstants.DEFAULT_REPULSION_STRENGTH = options.nodeRepulsion;\n if (options.idealEdgeLength != null) CoSEConstants.DEFAULT_EDGE_LENGTH = FDLayoutConstants.DEFAULT_EDGE_LENGTH = options.idealEdgeLength;\n if (options.edgeElasticity != null) CoSEConstants.DEFAULT_SPRING_STRENGTH = FDLayoutConstants.DEFAULT_SPRING_STRENGTH = options.edgeElasticity;\n if (options.nestingFactor != null) CoSEConstants.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR = FDLayoutConstants.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR = options.nestingFactor;\n if (options.gravity != null) CoSEConstants.DEFAULT_GRAVITY_STRENGTH = FDLayoutConstants.DEFAULT_GRAVITY_STRENGTH = options.gravity;\n if (options.numIter != null) CoSEConstants.MAX_ITERATIONS = FDLayoutConstants.MAX_ITERATIONS = options.numIter;\n if (options.gravityRange != null) CoSEConstants.DEFAULT_GRAVITY_RANGE_FACTOR = FDLayoutConstants.DEFAULT_GRAVITY_RANGE_FACTOR = options.gravityRange;\n if (options.gravityCompound != null) CoSEConstants.DEFAULT_COMPOUND_GRAVITY_STRENGTH = FDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_STRENGTH = options.gravityCompound;\n if (options.gravityRangeCompound != null) CoSEConstants.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR = FDLayoutConstants.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR = options.gravityRangeCompound;\n if (options.initialEnergyOnIncremental != null) CoSEConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL = FDLayoutConstants.DEFAULT_COOLING_FACTOR_INCREMENTAL = options.initialEnergyOnIncremental;\n\n if (options.quality == 'draft') LayoutConstants.QUALITY = 0;else if (options.quality == 'proof') LayoutConstants.QUALITY = 2;else LayoutConstants.QUALITY = 1;\n\n CoSEConstants.NODE_DIMENSIONS_INCLUDE_LABELS = FDLayoutConstants.NODE_DIMENSIONS_INCLUDE_LABELS = LayoutConstants.NODE_DIMENSIONS_INCLUDE_LABELS = options.nodeDimensionsIncludeLabels;\n CoSEConstants.DEFAULT_INCREMENTAL = FDLayoutConstants.DEFAULT_INCREMENTAL = LayoutConstants.DEFAULT_INCREMENTAL = !options.randomize;\n CoSEConstants.ANIMATE = FDLayoutConstants.ANIMATE = LayoutConstants.ANIMATE = options.animate;\n CoSEConstants.TILE = options.tile;\n CoSEConstants.TILING_PADDING_VERTICAL = typeof options.tilingPaddingVertical === 'function' ? options.tilingPaddingVertical.call() : options.tilingPaddingVertical;\n CoSEConstants.TILING_PADDING_HORIZONTAL = typeof options.tilingPaddingHorizontal === 'function' ? options.tilingPaddingHorizontal.call() : options.tilingPaddingHorizontal;\n};\n\n_CoSELayout.prototype.run = function () {\n var ready;\n var frameId;\n var options = this.options;\n var idToLNode = this.idToLNode = {};\n var layout = this.layout = new CoSELayout();\n var self = this;\n\n self.stopped = false;\n\n this.cy = this.options.cy;\n\n this.cy.trigger({ type: 'layoutstart', layout: this });\n\n var gm = layout.newGraphManager();\n this.gm = gm;\n\n var nodes = this.options.eles.nodes();\n var edges = this.options.eles.edges();\n\n this.root = gm.addRoot();\n this.processChildrenList(this.root, this.getTopMostNodes(nodes), layout);\n\n for (var i = 0; i < edges.length; i++) {\n var edge = edges[i];\n var sourceNode = this.idToLNode[edge.data(\"source\")];\n var targetNode = this.idToLNode[edge.data(\"target\")];\n if (sourceNode !== targetNode && sourceNode.getEdgesBetween(targetNode).length == 0) {\n var e1 = gm.add(layout.newEdge(), sourceNode, targetNode);\n e1.id = edge.id();\n }\n }\n\n var getPositions = function getPositions(ele, i) {\n if (typeof ele === \"number\") {\n ele = i;\n }\n var theId = ele.data('id');\n var lNode = self.idToLNode[theId];\n\n return {\n x: lNode.getRect().getCenterX(),\n y: lNode.getRect().getCenterY()\n };\n };\n\n /*\n * Reposition nodes in iterations animatedly\n */\n var iterateAnimated = function iterateAnimated() {\n // Thigs to perform after nodes are repositioned on screen\n var afterReposition = function afterReposition() {\n if (options.fit) {\n options.cy.fit(options.eles, options.padding);\n }\n\n if (!ready) {\n ready = true;\n self.cy.one('layoutready', options.ready);\n self.cy.trigger({ type: 'layoutready', layout: self });\n }\n };\n\n var ticksPerFrame = self.options.refresh;\n var isDone;\n\n for (var i = 0; i < ticksPerFrame && !isDone; i++) {\n isDone = self.stopped || self.layout.tick();\n }\n\n // If layout is done\n if (isDone) {\n // If the layout is not a sublayout and it is successful perform post layout.\n if (layout.checkLayoutSuccess() && !layout.isSubLayout) {\n layout.doPostLayout();\n }\n\n // If layout has a tilingPostLayout function property call it.\n if (layout.tilingPostLayout) {\n layout.tilingPostLayout();\n }\n\n layout.isLayoutFinished = true;\n\n self.options.eles.nodes().positions(getPositions);\n\n afterReposition();\n\n // trigger layoutstop when the layout stops (e.g. finishes)\n self.cy.one('layoutstop', self.options.stop);\n self.cy.trigger({ type: 'layoutstop', layout: self });\n\n if (frameId) {\n cancelAnimationFrame(frameId);\n }\n\n ready = false;\n return;\n }\n\n var animationData = self.layout.getPositionsData(); // Get positions of layout nodes note that all nodes may not be layout nodes because of tiling\n\n // Position nodes, for the nodes whose id does not included in data (because they are removed from their parents and included in dummy compounds)\n // use position of their ancestors or dummy ancestors\n options.eles.nodes().positions(function (ele, i) {\n if (typeof ele === \"number\") {\n ele = i;\n }\n // If ele is a compound node, then its position will be defined by its children\n if (!ele.isParent()) {\n var theId = ele.id();\n var pNode = animationData[theId];\n var temp = ele;\n // If pNode is undefined search until finding position data of its first ancestor (It may be dummy as well)\n while (pNode == null) {\n pNode = animationData[temp.data('parent')] || animationData['DummyCompound_' + temp.data('parent')];\n animationData[theId] = pNode;\n temp = temp.parent()[0];\n if (temp == undefined) {\n break;\n }\n }\n if (pNode != null) {\n return {\n x: pNode.x,\n y: pNode.y\n };\n } else {\n return {\n x: ele.position('x'),\n y: ele.position('y')\n };\n }\n }\n });\n\n afterReposition();\n\n frameId = requestAnimationFrame(iterateAnimated);\n };\n\n /*\n * Listen 'layoutstarted' event and start animated iteration if animate option is 'during'\n */\n layout.addListener('layoutstarted', function () {\n if (self.options.animate === 'during') {\n frameId = requestAnimationFrame(iterateAnimated);\n }\n });\n\n layout.runLayout(); // Run cose layout\n\n /*\n * If animate option is not 'during' ('end' or false) perform these here (If it is 'during' similar things are already performed)\n */\n if (this.options.animate !== \"during\") {\n self.options.eles.nodes().not(\":parent\").layoutPositions(self, self.options, getPositions); // Use layout positions to reposition the nodes it considers the options parameter\n ready = false;\n }\n\n return this; // chaining\n};\n\n//Get the top most ones of a list of nodes\n_CoSELayout.prototype.getTopMostNodes = function (nodes) {\n var nodesMap = {};\n for (var i = 0; i < nodes.length; i++) {\n nodesMap[nodes[i].id()] = true;\n }\n var roots = nodes.filter(function (ele, i) {\n if (typeof ele === \"number\") {\n ele = i;\n }\n var parent = ele.parent()[0];\n while (parent != null) {\n if (nodesMap[parent.id()]) {\n return false;\n }\n parent = parent.parent()[0];\n }\n return true;\n });\n\n return roots;\n};\n\n_CoSELayout.prototype.processChildrenList = function (parent, children, layout) {\n var size = children.length;\n for (var i = 0; i < size; i++) {\n var theChild = children[i];\n var children_of_children = theChild.children();\n var theNode;\n\n var dimensions = theChild.layoutDimensions({\n nodeDimensionsIncludeLabels: this.options.nodeDimensionsIncludeLabels\n });\n\n if (theChild.outerWidth() != null && theChild.outerHeight() != null) {\n theNode = parent.add(new CoSENode(layout.graphManager, new PointD(theChild.position('x') - dimensions.w / 2, theChild.position('y') - dimensions.h / 2), new DimensionD(parseFloat(dimensions.w), parseFloat(dimensions.h))));\n } else {\n theNode = parent.add(new CoSENode(this.graphManager));\n }\n // Attach id to the layout node\n theNode.id = theChild.data(\"id\");\n // Attach the paddings of cy node to layout node\n theNode.paddingLeft = parseInt(theChild.css('padding'));\n theNode.paddingTop = parseInt(theChild.css('padding'));\n theNode.paddingRight = parseInt(theChild.css('padding'));\n theNode.paddingBottom = parseInt(theChild.css('padding'));\n\n //Attach the label properties to compound if labels will be included in node dimensions \n if (this.options.nodeDimensionsIncludeLabels) {\n if (theChild.isParent()) {\n var labelWidth = theChild.boundingBox({ includeLabels: true, includeNodes: false }).w;\n var labelHeight = theChild.boundingBox({ includeLabels: true, includeNodes: false }).h;\n var labelPos = theChild.css(\"text-halign\");\n theNode.labelWidth = labelWidth;\n theNode.labelHeight = labelHeight;\n theNode.labelPos = labelPos;\n }\n }\n\n // Map the layout node\n this.idToLNode[theChild.data(\"id\")] = theNode;\n\n if (isNaN(theNode.rect.x)) {\n theNode.rect.x = 0;\n }\n\n if (isNaN(theNode.rect.y)) {\n theNode.rect.y = 0;\n }\n\n if (children_of_children != null && children_of_children.length > 0) {\n var theNewGraph;\n theNewGraph = layout.getGraphManager().add(layout.newGraph(), theNode);\n this.processChildrenList(theNewGraph, children_of_children, layout);\n }\n }\n};\n\n/**\n * @brief : called on continuous layouts to stop them before they finish\n */\n_CoSELayout.prototype.stop = function () {\n this.stopped = true;\n\n return this; // chaining\n};\n\nvar register = function register(cytoscape) {\n // var Layout = getLayout( cytoscape );\n\n cytoscape('layout', 'cose-bilkent', _CoSELayout);\n};\n\n// auto reg for globals\nif (typeof cytoscape !== 'undefined') {\n register(cytoscape);\n}\n\nmodule.exports = register;\n\n/***/ })\n/******/ ]);\n});","\"use strict\";\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar TreeBase = (function () {\r\n function TreeBase() {\r\n this.findIter = function (data) {\r\n var res = this._root;\r\n var iter = this.iterator();\r\n while (res !== null) {\r\n var c = this._comparator(data, res.data);\r\n if (c === 0) {\r\n iter._cursor = res;\r\n return iter;\r\n }\r\n else {\r\n iter._ancestors.push(res);\r\n res = res.get_child(c > 0);\r\n }\r\n }\r\n return null;\r\n };\r\n }\r\n TreeBase.prototype.clear = function () {\r\n this._root = null;\r\n this.size = 0;\r\n };\r\n ;\r\n TreeBase.prototype.find = function (data) {\r\n var res = this._root;\r\n while (res !== null) {\r\n var c = this._comparator(data, res.data);\r\n if (c === 0) {\r\n return res.data;\r\n }\r\n else {\r\n res = res.get_child(c > 0);\r\n }\r\n }\r\n return null;\r\n };\r\n ;\r\n TreeBase.prototype.lowerBound = function (data) {\r\n return this._bound(data, this._comparator);\r\n };\r\n ;\r\n TreeBase.prototype.upperBound = function (data) {\r\n var cmp = this._comparator;\r\n function reverse_cmp(a, b) {\r\n return cmp(b, a);\r\n }\r\n return this._bound(data, reverse_cmp);\r\n };\r\n ;\r\n TreeBase.prototype.min = function () {\r\n var res = this._root;\r\n if (res === null) {\r\n return null;\r\n }\r\n while (res.left !== null) {\r\n res = res.left;\r\n }\r\n return res.data;\r\n };\r\n ;\r\n TreeBase.prototype.max = function () {\r\n var res = this._root;\r\n if (res === null) {\r\n return null;\r\n }\r\n while (res.right !== null) {\r\n res = res.right;\r\n }\r\n return res.data;\r\n };\r\n ;\r\n TreeBase.prototype.iterator = function () {\r\n return new Iterator(this);\r\n };\r\n ;\r\n TreeBase.prototype.each = function (cb) {\r\n var it = this.iterator(), data;\r\n while ((data = it.next()) !== null) {\r\n cb(data);\r\n }\r\n };\r\n ;\r\n TreeBase.prototype.reach = function (cb) {\r\n var it = this.iterator(), data;\r\n while ((data = it.prev()) !== null) {\r\n cb(data);\r\n }\r\n };\r\n ;\r\n TreeBase.prototype._bound = function (data, cmp) {\r\n var cur = this._root;\r\n var iter = this.iterator();\r\n while (cur !== null) {\r\n var c = this._comparator(data, cur.data);\r\n if (c === 0) {\r\n iter._cursor = cur;\r\n return iter;\r\n }\r\n iter._ancestors.push(cur);\r\n cur = cur.get_child(c > 0);\r\n }\r\n for (var i = iter._ancestors.length - 1; i >= 0; --i) {\r\n cur = iter._ancestors[i];\r\n if (cmp(data, cur.data) > 0) {\r\n iter._cursor = cur;\r\n iter._ancestors.length = i;\r\n return iter;\r\n }\r\n }\r\n iter._ancestors.length = 0;\r\n return iter;\r\n };\r\n ;\r\n return TreeBase;\r\n}());\r\nexports.TreeBase = TreeBase;\r\nvar Iterator = (function () {\r\n function Iterator(tree) {\r\n this._tree = tree;\r\n this._ancestors = [];\r\n this._cursor = null;\r\n }\r\n Iterator.prototype.data = function () {\r\n return this._cursor !== null ? this._cursor.data : null;\r\n };\r\n ;\r\n Iterator.prototype.next = function () {\r\n if (this._cursor === null) {\r\n var root = this._tree._root;\r\n if (root !== null) {\r\n this._minNode(root);\r\n }\r\n }\r\n else {\r\n if (this._cursor.right === null) {\r\n var save;\r\n do {\r\n save = this._cursor;\r\n if (this._ancestors.length) {\r\n this._cursor = this._ancestors.pop();\r\n }\r\n else {\r\n this._cursor = null;\r\n break;\r\n }\r\n } while (this._cursor.right === save);\r\n }\r\n else {\r\n this._ancestors.push(this._cursor);\r\n this._minNode(this._cursor.right);\r\n }\r\n }\r\n return this._cursor !== null ? this._cursor.data : null;\r\n };\r\n ;\r\n Iterator.prototype.prev = function () {\r\n if (this._cursor === null) {\r\n var root = this._tree._root;\r\n if (root !== null) {\r\n this._maxNode(root);\r\n }\r\n }\r\n else {\r\n if (this._cursor.left === null) {\r\n var save;\r\n do {\r\n save = this._cursor;\r\n if (this._ancestors.length) {\r\n this._cursor = this._ancestors.pop();\r\n }\r\n else {\r\n this._cursor = null;\r\n break;\r\n }\r\n } while (this._cursor.left === save);\r\n }\r\n else {\r\n this._ancestors.push(this._cursor);\r\n this._maxNode(this._cursor.left);\r\n }\r\n }\r\n return this._cursor !== null ? this._cursor.data : null;\r\n };\r\n ;\r\n Iterator.prototype._minNode = function (start) {\r\n while (start.left !== null) {\r\n this._ancestors.push(start);\r\n start = start.left;\r\n }\r\n this._cursor = start;\r\n };\r\n ;\r\n Iterator.prototype._maxNode = function (start) {\r\n while (start.right !== null) {\r\n this._ancestors.push(start);\r\n start = start.right;\r\n }\r\n this._cursor = start;\r\n };\r\n ;\r\n return Iterator;\r\n}());\r\nexports.Iterator = Iterator;\r\nvar Node = (function () {\r\n function Node(data) {\r\n this.data = data;\r\n this.left = null;\r\n this.right = null;\r\n this.red = true;\r\n }\r\n Node.prototype.get_child = function (dir) {\r\n return dir ? this.right : this.left;\r\n };\r\n ;\r\n Node.prototype.set_child = function (dir, val) {\r\n if (dir) {\r\n this.right = val;\r\n }\r\n else {\r\n this.left = val;\r\n }\r\n };\r\n ;\r\n return Node;\r\n}());\r\nvar RBTree = (function (_super) {\r\n __extends(RBTree, _super);\r\n function RBTree(comparator) {\r\n var _this = _super.call(this) || this;\r\n _this._root = null;\r\n _this._comparator = comparator;\r\n _this.size = 0;\r\n return _this;\r\n }\r\n RBTree.prototype.insert = function (data) {\r\n var ret = false;\r\n if (this._root === null) {\r\n this._root = new Node(data);\r\n ret = true;\r\n this.size++;\r\n }\r\n else {\r\n var head = new Node(undefined);\r\n var dir = false;\r\n var last = false;\r\n var gp = null;\r\n var ggp = head;\r\n var p = null;\r\n var node = this._root;\r\n ggp.right = this._root;\r\n while (true) {\r\n if (node === null) {\r\n node = new Node(data);\r\n p.set_child(dir, node);\r\n ret = true;\r\n this.size++;\r\n }\r\n else if (RBTree.is_red(node.left) && RBTree.is_red(node.right)) {\r\n node.red = true;\r\n node.left.red = false;\r\n node.right.red = false;\r\n }\r\n if (RBTree.is_red(node) && RBTree.is_red(p)) {\r\n var dir2 = ggp.right === gp;\r\n if (node === p.get_child(last)) {\r\n ggp.set_child(dir2, RBTree.single_rotate(gp, !last));\r\n }\r\n else {\r\n ggp.set_child(dir2, RBTree.double_rotate(gp, !last));\r\n }\r\n }\r\n var cmp = this._comparator(node.data, data);\r\n if (cmp === 0) {\r\n break;\r\n }\r\n last = dir;\r\n dir = cmp < 0;\r\n if (gp !== null) {\r\n ggp = gp;\r\n }\r\n gp = p;\r\n p = node;\r\n node = node.get_child(dir);\r\n }\r\n this._root = head.right;\r\n }\r\n this._root.red = false;\r\n return ret;\r\n };\r\n ;\r\n RBTree.prototype.remove = function (data) {\r\n if (this._root === null) {\r\n return false;\r\n }\r\n var head = new Node(undefined);\r\n var node = head;\r\n node.right = this._root;\r\n var p = null;\r\n var gp = null;\r\n var found = null;\r\n var dir = true;\r\n while (node.get_child(dir) !== null) {\r\n var last = dir;\r\n gp = p;\r\n p = node;\r\n node = node.get_child(dir);\r\n var cmp = this._comparator(data, node.data);\r\n dir = cmp > 0;\r\n if (cmp === 0) {\r\n found = node;\r\n }\r\n if (!RBTree.is_red(node) && !RBTree.is_red(node.get_child(dir))) {\r\n if (RBTree.is_red(node.get_child(!dir))) {\r\n var sr = RBTree.single_rotate(node, dir);\r\n p.set_child(last, sr);\r\n p = sr;\r\n }\r\n else if (!RBTree.is_red(node.get_child(!dir))) {\r\n var sibling = p.get_child(!last);\r\n if (sibling !== null) {\r\n if (!RBTree.is_red(sibling.get_child(!last)) && !RBTree.is_red(sibling.get_child(last))) {\r\n p.red = false;\r\n sibling.red = true;\r\n node.red = true;\r\n }\r\n else {\r\n var dir2 = gp.right === p;\r\n if (RBTree.is_red(sibling.get_child(last))) {\r\n gp.set_child(dir2, RBTree.double_rotate(p, last));\r\n }\r\n else if (RBTree.is_red(sibling.get_child(!last))) {\r\n gp.set_child(dir2, RBTree.single_rotate(p, last));\r\n }\r\n var gpc = gp.get_child(dir2);\r\n gpc.red = true;\r\n node.red = true;\r\n gpc.left.red = false;\r\n gpc.right.red = false;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (found !== null) {\r\n found.data = node.data;\r\n p.set_child(p.right === node, node.get_child(node.left === null));\r\n this.size--;\r\n }\r\n this._root = head.right;\r\n if (this._root !== null) {\r\n this._root.red = false;\r\n }\r\n return found !== null;\r\n };\r\n ;\r\n RBTree.is_red = function (node) {\r\n return node !== null && node.red;\r\n };\r\n RBTree.single_rotate = function (root, dir) {\r\n var save = root.get_child(!dir);\r\n root.set_child(!dir, save.get_child(dir));\r\n save.set_child(dir, root);\r\n root.red = true;\r\n save.red = false;\r\n return save;\r\n };\r\n RBTree.double_rotate = function (root, dir) {\r\n root.set_child(!dir, RBTree.single_rotate(root.get_child(!dir), !dir));\r\n return RBTree.single_rotate(root, dir);\r\n };\r\n return RBTree;\r\n}(TreeBase));\r\nexports.RBTree = RBTree;\r\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmJ0cmVlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vV2ViQ29sYS9zcmMvcmJ0cmVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQXVCSTtJQUFBO1FBNEJJLGFBQVEsR0FBRyxVQUFVLElBQUk7WUFDckIsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztZQUNyQixJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFFM0IsT0FBTyxHQUFHLEtBQUssSUFBSSxFQUFFO2dCQUNqQixJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3pDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtvQkFDVCxJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQztvQkFDbkIsT0FBTyxJQUFJLENBQUM7aUJBQ2Y7cUJBQ0k7b0JBQ0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQzFCLEdBQUcsR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztpQkFDOUI7YUFDSjtZQUVELE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUMsQ0FBQztJQStGTixDQUFDO0lBdklHLHdCQUFLLEdBQUw7UUFDSSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNsQixJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztJQUNsQixDQUFDO0lBQUEsQ0FBQztJQUdGLHVCQUFJLEdBQUosVUFBSyxJQUFJO1FBQ0wsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUVyQixPQUFPLEdBQUcsS0FBSyxJQUFJLEVBQUU7WUFDakIsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3pDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDVCxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUM7YUFDbkI7aUJBQ0k7Z0JBQ0QsR0FBRyxHQUFHLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2FBQzlCO1NBQ0o7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBQUEsQ0FBQztJQXVCRiw2QkFBVSxHQUFWLFVBQVcsSUFBSTtRQUNYLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFBQSxDQUFDO0lBR0YsNkJBQVUsR0FBVixVQUFXLElBQUk7UUFDWCxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBRTNCLFNBQVMsV0FBVyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3JCLE9BQU8sR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNyQixDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBQUEsQ0FBQztJQUdGLHNCQUFHLEdBQUg7UUFDSSxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3JCLElBQUksR0FBRyxLQUFLLElBQUksRUFBRTtZQUNkLE9BQU8sSUFBSSxDQUFDO1NBQ2Y7UUFFRCxPQUFPLEdBQUcsQ0FBQyxJQUFJLEtBQUssSUFBSSxFQUFFO1lBQ3RCLEdBQUcsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDO1NBQ2xCO1FBRUQsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDO0lBQ3BCLENBQUM7SUFBQSxDQUFDO0lBR0Ysc0JBQUcsR0FBSDtRQUNJLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDckIsSUFBSSxHQUFHLEtBQUssSUFBSSxFQUFFO1lBQ2QsT0FBTyxJQUFJLENBQUM7U0FDZjtRQUVELE9BQU8sR0FBRyxDQUFDLEtBQUssS0FBSyxJQUFJLEVBQUU7WUFDdkIsR0FBRyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUM7U0FDbkI7UUFFRCxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUM7SUFDcEIsQ0FBQztJQUFBLENBQUM7SUFJRiwyQkFBUSxHQUFSO1FBQ0ksT0FBTyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBQUEsQ0FBQztJQUdGLHVCQUFJLEdBQUosVUFBSyxFQUFFO1FBQ0gsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLElBQUksQ0FBQztRQUMvQixPQUFPLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLElBQUksRUFBRTtZQUNoQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDWjtJQUNMLENBQUM7SUFBQSxDQUFDO0lBR0Ysd0JBQUssR0FBTCxVQUFNLEVBQUU7UUFDSixJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsSUFBSSxDQUFDO1FBQy9CLE9BQU8sQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUssSUFBSSxFQUFFO1lBQ2hDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNaO0lBQ0wsQ0FBQztJQUFBLENBQUM7SUFHRix5QkFBTSxHQUFOLFVBQU8sSUFBSSxFQUFFLEdBQUc7UUFDWixJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3JCLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUUzQixPQUFPLEdBQUcsS0FBSyxJQUFJLEVBQUU7WUFDakIsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3pDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDVCxJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQztnQkFDbkIsT0FBTyxJQUFJLENBQUM7YUFDZjtZQUNELElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzFCLEdBQUcsR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUM5QjtRQUVELEtBQUssSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUU7WUFDbEQsR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDekIsSUFBSSxHQUFHLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ3pCLElBQUksQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDO2dCQUNuQixJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7Z0JBQzNCLE9BQU8sSUFBSSxDQUFDO2FBQ2Y7U0FDSjtRQUVELElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUMzQixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBQUEsQ0FBQztJQUNOLGVBQUM7QUFBRCxDQUFDLEFBNUlELElBNElDO0FBNUlZLDRCQUFRO0FBNklyQjtJQUlJLGtCQUFZLElBQUk7UUFDWixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNsQixJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztJQUN4QixDQUFDO0lBRUQsdUJBQUksR0FBSjtRQUNJLE9BQU8sSUFBSSxDQUFDLE9BQU8sS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDNUQsQ0FBQztJQUFBLENBQUM7SUFJRix1QkFBSSxHQUFKO1FBQ0ksSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLElBQUksRUFBRTtZQUN2QixJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztZQUM1QixJQUFJLElBQUksS0FBSyxJQUFJLEVBQUU7Z0JBQ2YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUN2QjtTQUNKO2FBQ0k7WUFDRCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxLQUFLLElBQUksRUFBRTtnQkFHN0IsSUFBSSxJQUFJLENBQUM7Z0JBQ1QsR0FBRztvQkFDQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztvQkFDcEIsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRTt3QkFDeEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDO3FCQUN4Qzt5QkFDSTt3QkFDRCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQzt3QkFDcEIsTUFBTTtxQkFDVDtpQkFDSixRQUFRLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxLQUFLLElBQUksRUFBRTthQUN6QztpQkFDSTtnQkFFRCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ25DLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUNyQztTQUNKO1FBQ0QsT0FBTyxJQUFJLENBQUMsT0FBTyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUM1RCxDQUFDO0lBQUEsQ0FBQztJQUlGLHVCQUFJLEdBQUo7UUFDSSxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssSUFBSSxFQUFFO1lBQ3ZCLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO1lBQzVCLElBQUksSUFBSSxLQUFLLElBQUksRUFBRTtnQkFDZixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3ZCO1NBQ0o7YUFDSTtZQUNELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEtBQUssSUFBSSxFQUFFO2dCQUM1QixJQUFJLElBQUksQ0FBQztnQkFDVCxHQUFHO29CQUNDLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO29CQUNwQixJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFO3dCQUN4QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUM7cUJBQ3hDO3lCQUNJO3dCQUNELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO3dCQUNwQixNQUFNO3FCQUNUO2lCQUNKLFFBQVEsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEtBQUssSUFBSSxFQUFFO2FBQ3hDO2lCQUNJO2dCQUNELElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDbkMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3BDO1NBQ0o7UUFDRCxPQUFPLElBQUksQ0FBQyxPQUFPLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzVELENBQUM7SUFBQSxDQUFDO0lBRUYsMkJBQVEsR0FBUixVQUFTLEtBQUs7UUFDVixPQUFPLEtBQUssQ0FBQyxJQUFJLEtBQUssSUFBSSxFQUFFO1lBQ3hCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzVCLEtBQUssR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1NBQ3RCO1FBQ0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFDekIsQ0FBQztJQUFBLENBQUM7SUFFRiwyQkFBUSxHQUFSLFVBQVMsS0FBSztRQUNWLE9BQU8sS0FBSyxDQUFDLEtBQUssS0FBSyxJQUFJLEVBQUU7WUFDekIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDNUIsS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7U0FDdkI7UUFDRCxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUN6QixDQUFDO0lBQUEsQ0FBQztJQUNOLGVBQUM7QUFBRCxDQUFDLEFBOUZELElBOEZDO0FBOUZZLDRCQUFRO0FBZ0dyQjtJQUtJLGNBQVksSUFBSTtRQUNaLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDO0lBQ3BCLENBQUM7SUFFRCx3QkFBUyxHQUFULFVBQVUsR0FBRztRQUNULE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ3hDLENBQUM7SUFBQSxDQUFDO0lBRUYsd0JBQVMsR0FBVCxVQUFVLEdBQUcsRUFBRSxHQUFHO1FBQ2QsSUFBSSxHQUFHLEVBQUU7WUFDTCxJQUFJLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQztTQUNwQjthQUNJO1lBQ0QsSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUM7U0FDbkI7SUFDTCxDQUFDO0lBQUEsQ0FBQztJQUNOLFdBQUM7QUFBRCxDQUFDLEFBeEJELElBd0JDO0FBRUQ7SUFBK0IsMEJBQVE7SUFLbkMsZ0JBQVksVUFBa0M7UUFBOUMsWUFDSSxpQkFBTyxTQUlWO1FBSEcsS0FBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbEIsS0FBSSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUM7UUFDOUIsS0FBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7O0lBQ2xCLENBQUM7SUFHRCx1QkFBTSxHQUFOLFVBQU8sSUFBSTtRQUNQLElBQUksR0FBRyxHQUFHLEtBQUssQ0FBQztRQUVoQixJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSSxFQUFFO1lBRXJCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDNUIsR0FBRyxHQUFHLElBQUksQ0FBQztZQUNYLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUNmO2FBQ0k7WUFDRCxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUUvQixJQUFJLEdBQUcsR0FBRyxLQUFLLENBQUM7WUFDaEIsSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDO1lBR2pCLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQztZQUNkLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQztZQUNmLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQztZQUNiLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDdEIsR0FBRyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1lBR3ZCLE9BQU8sSUFBSSxFQUFFO2dCQUNULElBQUksSUFBSSxLQUFLLElBQUksRUFBRTtvQkFFZixJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ3RCLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO29CQUN2QixHQUFHLEdBQUcsSUFBSSxDQUFDO29CQUNYLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztpQkFDZjtxQkFDSSxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO29CQUU1RCxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQztvQkFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDO29CQUN0QixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUM7aUJBQzFCO2dCQUdELElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFO29CQUN6QyxJQUFJLElBQUksR0FBRyxHQUFHLENBQUMsS0FBSyxLQUFLLEVBQUUsQ0FBQztvQkFFNUIsSUFBSSxJQUFJLEtBQUssQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRTt3QkFDNUIsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO3FCQUN4RDt5QkFDSTt3QkFDRCxHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7cUJBQ3hEO2lCQUNKO2dCQUVELElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFHNUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxFQUFFO29CQUNYLE1BQU07aUJBQ1Q7Z0JBRUQsSUFBSSxHQUFHLEdBQUcsQ0FBQztnQkFDWCxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztnQkFHZCxJQUFJLEVBQUUsS0FBSyxJQUFJLEVBQUU7b0JBQ2IsR0FBRyxHQUFHLEVBQUUsQ0FBQztpQkFDWjtnQkFDRCxFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUNQLENBQUMsR0FBRyxJQUFJLENBQUM7Z0JBQ1QsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDOUI7WUFHRCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7U0FDM0I7UUFHRCxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUM7UUFFdkIsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0lBQUEsQ0FBQztJQUdGLHVCQUFNLEdBQU4sVUFBTyxJQUFJO1FBQ1AsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLElBQUksRUFBRTtZQUNyQixPQUFPLEtBQUssQ0FBQztTQUNoQjtRQUVELElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQy9CLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQztRQUNoQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQ2IsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBQ2QsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQztRQUVmLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFDakMsSUFBSSxJQUFJLEdBQUcsR0FBRyxDQUFDO1lBR2YsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUNQLENBQUMsR0FBRyxJQUFJLENBQUM7WUFDVCxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUUzQixJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFNUMsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7WUFHZCxJQUFJLEdBQUcsS0FBSyxDQUFDLEVBQUU7Z0JBQ1gsS0FBSyxHQUFHLElBQUksQ0FBQzthQUNoQjtZQUdELElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7Z0JBQzdELElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTtvQkFDckMsSUFBSSxFQUFFLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7b0JBQ3pDLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO29CQUN0QixDQUFDLEdBQUcsRUFBRSxDQUFDO2lCQUNWO3FCQUNJLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO29CQUMzQyxJQUFJLE9BQU8sR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ2pDLElBQUksT0FBTyxLQUFLLElBQUksRUFBRTt3QkFDbEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRTs0QkFFckYsQ0FBQyxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUM7NEJBQ2QsT0FBTyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUM7NEJBQ25CLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDO3lCQUNuQjs2QkFDSTs0QkFDRCxJQUFJLElBQUksR0FBRyxFQUFFLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQzs0QkFFMUIsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRTtnQ0FDeEMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQzs2QkFDckQ7aUNBQ0ksSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFO2dDQUM5QyxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDOzZCQUNyRDs0QkFHRCxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDOzRCQUM3QixHQUFHLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQzs0QkFDZixJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQzs0QkFDaEIsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDOzRCQUNyQixHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUM7eUJBQ3pCO3FCQUNKO2lCQUNKO2FBQ0o7U0FDSjtRQUdELElBQUksS0FBSyxLQUFLLElBQUksRUFBRTtZQUNoQixLQUFLLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDdkIsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQztZQUNsRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDZjtRQUdELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUN4QixJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSSxFQUFFO1lBQ3JCLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQztTQUMxQjtRQUVELE9BQU8sS0FBSyxLQUFLLElBQUksQ0FBQztJQUMxQixDQUFDO0lBQUEsQ0FBQztJQUVLLGFBQU0sR0FBYixVQUFjLElBQUk7UUFDZCxPQUFPLElBQUksS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUNyQyxDQUFDO0lBRU0sb0JBQWEsR0FBcEIsVUFBcUIsSUFBSSxFQUFFLEdBQUc7UUFDMUIsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRWhDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRTFCLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDO1FBRWpCLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxvQkFBYSxHQUFwQixVQUFxQixJQUFJLEVBQUUsR0FBRztRQUMxQixJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN2RSxPQUFPLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFDTCxhQUFDO0FBQUQsQ0FBQyxBQXJNRCxDQUErQixRQUFRLEdBcU10QztBQXJNWSx3QkFBTSJ9"],"sourceRoot":""}