diff --git a/dist/vis-light.js b/dist/vis-light.js index bc56833c..de1e5382 100644 --- a/dist/vis-light.js +++ b/dist/vis-light.js @@ -32,7 +32,7 @@ exports["vis"] = factory(require("moment"), require("hammerjs")); else root["vis"] = factory(root["moment"], root["hammerjs"]); -})(this, function(__WEBPACK_EXTERNAL_MODULE_44__, __WEBPACK_EXTERNAL_MODULE_45__) { +})(this, function(__WEBPACK_EXTERNAL_MODULE_41__, __WEBPACK_EXTERNAL_MODULE_42__) { return /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; @@ -144,6 +144,10 @@ return /******/ (function(modules) { // webpackBootstrap throw new Error('Graph is renamed to Network. Please create a graph as new vis.Network(...)'); }; + // bundled external libraries + exports.moment = __webpack_require__(39); + exports.hammer = __webpack_require__(40); + /***/ }, /* 1 */ @@ -153,7 +157,7 @@ return /******/ (function(modules) { // webpackBootstrap // first check if moment.js is already loaded in the browser window, if so, // use this instance. Else, load via commonjs. - var moment = __webpack_require__(41); + var moment = __webpack_require__(39); /** * Test whether given object is a number @@ -6021,7 +6025,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ function(module, exports, __webpack_require__) { var Emitter = __webpack_require__(46); - var Hammer = __webpack_require__(42); + var Hammer = __webpack_require__(40); var util = __webpack_require__(1); var DataSet = __webpack_require__(3); var DataView = __webpack_require__(4); @@ -6936,7 +6940,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ function(module, exports, __webpack_require__) { var Emitter = __webpack_require__(46); - var Hammer = __webpack_require__(42); + var Hammer = __webpack_require__(40); var util = __webpack_require__(1); var DataSet = __webpack_require__(3); var DataView = __webpack_require__(4); @@ -8052,8 +8056,8 @@ return /******/ (function(modules) { // webpackBootstrap /***/ function(module, exports, __webpack_require__) { var util = __webpack_require__(1); - var hammerUtil = __webpack_require__(39); - var moment = __webpack_require__(41); + var hammerUtil = __webpack_require__(43); + var moment = __webpack_require__(39); var Component = __webpack_require__(18); /** @@ -8705,7 +8709,7 @@ return /******/ (function(modules) { // webpackBootstrap /* 17 */ /***/ function(module, exports, __webpack_require__) { - var moment = __webpack_require__(41); + var moment = __webpack_require__(39); /** * @constructor TimeStep @@ -9379,7 +9383,7 @@ return /******/ (function(modules) { // webpackBootstrap /* 20 */ /***/ function(module, exports, __webpack_require__) { - var Hammer = __webpack_require__(42); + var Hammer = __webpack_require__(40); var util = __webpack_require__(1); var Component = __webpack_require__(18); @@ -10611,7 +10615,7 @@ return /******/ (function(modules) { // webpackBootstrap /* 24 */ /***/ function(module, exports, __webpack_require__) { - var Hammer = __webpack_require__(42); + var Hammer = __webpack_require__(40); var util = __webpack_require__(1); var DataSet = __webpack_require__(3); var DataView = __webpack_require__(4); @@ -13666,7 +13670,7 @@ return /******/ (function(modules) { // webpackBootstrap /* 28 */ /***/ function(module, exports, __webpack_require__) { - var Hammer = __webpack_require__(42); + var Hammer = __webpack_require__(40); /** * @constructor Item @@ -14267,7 +14271,7 @@ return /******/ (function(modules) { // webpackBootstrap /* 31 */ /***/ function(module, exports, __webpack_require__) { - var Hammer = __webpack_require__(42); + var Hammer = __webpack_require__(40); var Item = __webpack_require__(28); /** @@ -14565,10 +14569,10 @@ return /******/ (function(modules) { // webpackBootstrap /***/ function(module, exports, __webpack_require__) { var Emitter = __webpack_require__(46); - var Hammer = __webpack_require__(42); + var Hammer = __webpack_require__(40); var mousetrap = __webpack_require__(47); var util = __webpack_require__(1); - var hammerUtil = __webpack_require__(39); + var hammerUtil = __webpack_require__(43); var DataSet = __webpack_require__(3); var DataView = __webpack_require__(4); var dotparser = __webpack_require__(38); @@ -14577,10 +14581,10 @@ return /******/ (function(modules) { // webpackBootstrap var Node = __webpack_require__(36); var Edge = __webpack_require__(33); var Popup = __webpack_require__(37); - var MixinLoader = __webpack_require__(43); + var MixinLoader = __webpack_require__(45); // Load custom shapes into CanvasRenderingContext2D - __webpack_require__(40); + __webpack_require__(44); /** * @constructor Network @@ -20249,7 +20253,44 @@ return /******/ (function(modules) { // webpackBootstrap /* 39 */ /***/ function(module, exports, __webpack_require__) { - var Hammer = __webpack_require__(42); + // first check if moment.js is already loaded in the browser window, if so, + // use this instance. Else, load via commonjs. + module.exports = (typeof window !== 'undefined') && window['moment'] || __webpack_require__(41); + + +/***/ }, +/* 40 */ +/***/ function(module, exports, __webpack_require__) { + + // Only load hammer.js when in a browser environment + // (loading hammer.js in a node.js environment gives errors) + if (typeof window !== 'undefined') { + module.exports = window['Hammer'] || __webpack_require__(42); + } + else { + module.exports = function () { + throw Error('hammer.js is only available in a browser, not in node.js.'); + } + } + + +/***/ }, +/* 41 */ +/***/ function(module, exports, __webpack_require__) { + + module.exports = __WEBPACK_EXTERNAL_MODULE_41__; + +/***/ }, +/* 42 */ +/***/ function(module, exports, __webpack_require__) { + + module.exports = __WEBPACK_EXTERNAL_MODULE_42__; + +/***/ }, +/* 43 */ +/***/ function(module, exports, __webpack_require__) { + + var Hammer = __webpack_require__(40); /** * Fake a hammer.js gesture. Event can be a ScrollEvent or MouseMoveEvent @@ -20280,7 +20321,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 40 */ +/* 44 */ /***/ function(module, exports, __webpack_require__) { /** @@ -20511,32 +20552,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 41 */ -/***/ function(module, exports, __webpack_require__) { - - // first check if moment.js is already loaded in the browser window, if so, - // use this instance. Else, load via commonjs. - module.exports = (typeof window !== 'undefined') && window['moment'] || __webpack_require__(44); - - -/***/ }, -/* 42 */ -/***/ function(module, exports, __webpack_require__) { - - // Only load hammer.js when in a browser environment - // (loading hammer.js in a node.js environment gives errors) - if (typeof window !== 'undefined') { - module.exports = window['Hammer'] || __webpack_require__(45); - } - else { - module.exports = function () { - throw Error('hammer.js is only available in a browser, not in node.js.'); - } - } - - -/***/ }, -/* 43 */ +/* 45 */ /***/ function(module, exports, __webpack_require__) { var PhysicsMixin = __webpack_require__(54); @@ -20739,18 +20755,6 @@ return /******/ (function(modules) { // webpackBootstrap }; -/***/ }, -/* 44 */ -/***/ function(module, exports, __webpack_require__) { - - module.exports = __WEBPACK_EXTERNAL_MODULE_44__; - -/***/ }, -/* 45 */ -/***/ function(module, exports, __webpack_require__) { - - module.exports = __WEBPACK_EXTERNAL_MODULE_45__; - /***/ }, /* 46 */ /***/ function(module, exports, __webpack_require__) { diff --git a/dist/vis-light.map b/dist/vis-light.map index d710845e..76ba9975 100644 --- a/dist/vis-light.map +++ b/dist/vis-light.map @@ -1 +1 @@ -{"version":3,"file":"vis.map","sources":["./dist/vis-light.js"],"names":["root","factory","exports","module","require","define","amd","this","__WEBPACK_EXTERNAL_MODULE_44__","__WEBPACK_EXTERNAL_MODULE_45__","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","util","DOMutil","DataSet","DataView","Graph3d","graph3d","Camera","Filter","Point2d","Point3d","Slider","StepNumber","Timeline","Graph2d","timeline","DataStep","Range","stack","TimeStep","components","items","Item","ItemBox","ItemPoint","ItemRange","Component","CurrentTime","CustomTime","DataAxis","GraphGroup","Group","ItemSet","Legend","LineGraph","TimeAxis","Network","network","Edge","Groups","Images","Node","Popup","dotparser","Graph","Error","moment","isNumber","object","Number","isString","String","isDate","Date","match","ASPDateRegex","exec","isNaN","parse","isDataTable","google","visualization","DataTable","randomUUID","S4","Math","floor","random","toString","extend","a","i","len","arguments","length","other","prop","hasOwnProperty","selectiveExtend","props","Array","isArray","selectiveDeepExtend","b","TypeError","constructor","Object","undefined","deepExtend","equalArray","convert","type","Boolean","valueOf","isMoment","toDate","getType","toISOString","value","getAbsoluteLeft","elem","getBoundingClientRect","left","window","pageXOffset","getAbsoluteTop","top","pageYOffset","addClassName","className","classes","split","indexOf","push","join","removeClassName","index","splice","forEach","callback","toArray","array","updateProperty","key","addEventListener","element","action","listener","useCapture","navigator","userAgent","attachEvent","removeEventListener","detachEvent","preventDefault","event","returnValue","getTarget","target","srcElement","nodeType","parentNode","option","asBoolean","defaultValue","asNumber","asString","asSize","asElement","GiveDec","Hex","Value","eval","GiveHex","Dec","parseColor","color","isValidHex","hsv","hexToHSV","lighterColorHSV","h","s","v","min","darkerColorHSV","darkerColorHex","HSVToHex","lighterColorHex","background","border","highlight","hover","hexToRGB","hex","replace","toUpperCase","substring","d","e","f","r","g","RGBToHex","red","green","blue","RGBToHSV","minRGB","maxRGB","max","hue","saturation","HSVToRGB","q","t","rgb","isOk","test","selectiveBridgeObject","fields","referenceObject","objectTo","create","bridgeObject","mergeOptions","mergeTarget","options","enabled","binarySearch","orderedItems","range","field","field2","maxIterations","iteration","found","low","high","newLow","newHigh","guess","isVisible","start","console","log","binarySearchGeneric","sidePreference","newGuess","prevValue","nextValue","prepareElements","JSONcontainer","elementType","redundant","used","cleanupElements","removeChild","getSVGElement","svgContainer","shift","document","createElementNS","appendChild","getDOMElement","DOMContainer","createElement","drawPoint","x","y","group","point","drawPoints","style","setAttributeNS","size","drawBar","width","height","rect","data","_options","_data","_fieldId","fieldId","_type","_subscribers","add","prototype","on","subscribers","subscribe","off","filter","unsubscribe","_trigger","params","senderId","concat","subscriber","addedIds","me","_addItem","columns","_getColumnNames","row","rows","getNumberOfRows","item","col","cols","getValue","update","updatedIds","addOrUpdate","_updateItem","get","ids","firstType","returnType","allowedValues","itemId","_getItem","order","_sort","_filterFields","_appendRow","result","getIds","getDataSet","map","mappedItems","filteredItem","name","sort","av","bv","remove","removedId","removedIds","_remove","clear","keys","maxField","itemField","minField","distinct","values","fieldType","count","exists","types","raw","converted","JSON","stringify","dataTable","getNumberOfColumns","getColumnId","getColumnLabel","addRow","setValue","_ids","_onEvent","apply","setData","viewOptions","getArguments","defaultFilter","dataSet","added","updated","removed","container","SyntaxError","containerElement","margin","defaultXCenter","defaultYCenter","xLabel","yLabel","zLabel","filterLabel","legendLabel","STYLE","DOT","showPerspective","showGrid","keepAspectRatio","showShadow","showGrayBottom","showTooltip","verticalRatio","animationInterval","animationPreload","camera","eye","dataPoints","colX","colY","colZ","colValue","colFilter","xMin","xStep","xMax","yMin","yStep","yMax","zMin","zStep","zMax","valueMin","valueMax","xBarWidth","yBarWidth","colorAxis","colorGrid","colorDot","colorDotBorder","setOptions","Emitter","_setScale","scale","z","xCenter","yCenter","zCenter","setArmLocation","_convert3Dto2D","point3d","translation","_convertPointToTranslation","_convertTranslationToScreen","ax","ay","az","cx","getCameraLocation","cy","cz","sinTx","sin","getCameraRotation","cosTx","cos","sinTy","cosTy","sinTz","cosTz","dx","dy","dz","bx","by","ex","ey","ez","getArmLength","xcenter","frame","canvas","clientWidth","ycenter","_setBackgroundColor","backgroundColor","fill","stroke","strokeWidth","borderColor","borderWidth","borderStyle","BAR","BARCOLOR","BARSIZE","DOTLINE","DOTCOLOR","DOTSIZE","GRID","LINE","SURFACE","_getStyleNumber","styleName","_determineColumnIndexes","counter","column","getDistinctValues","distinctValues","getColumnRange","minMax","_dataInitialize","rawData","_onChange","dataFilter","setOnLoadCallback","redraw","withBars","defaultXBarWidth","dataX","defaultYBarWidth","dataY","xRange","defaultXMin","defaultXMax","defaultXStep","yRange","defaultYMin","defaultYMax","defaultYStep","zRange","defaultZMin","defaultZMax","defaultZStep","valueRange","defaultValueMin","defaultValueMax","_getDataPoints","sortNumber","obj","dataMatrix","xIndex","yIndex","trans","screen","bottom","pointRight","pointTop","pointCross","hasChildNodes","firstChild","position","overflow","noCanvas","fontWeight","padding","innerHTML","onmousedown","_onMouseDown","ontouchstart","_onTouchStart","onmousewheel","_onWheel","ontooltip","_onTooltip","onkeydown","setSize","_resizeCanvas","clientHeight","animationStart","slider","play","animationStop","stop","_resizeCenter","charAt","parseFloat","setCameraPosition","pos","horizontal","vertical","setArmRotation","distance","setArmLength","getCameraPosition","getArmRotation","_readData","_redrawFilter","animationAutoStart","cameraPosition","styleNumber","tooltip","showAnimationControls","_redrawSlider","_redrawClear","_redrawAxis","_redrawDataGrid","_redrawDataLine","_redrawDataBar","_redrawDataDot","_redrawInfo","_redrawLegend","ctx","getContext","clearRect","widthMin","widthMax","dotSize","right","lineWidth","font","ymin","ymax","_hsv2rgb","strokeStyle","beginPath","moveTo","lineTo","strokeRect","fillStyle","closePath","gridLineLen","step","getCurrent","next","end","textAlign","textBaseline","fillText","label","visible","setValues","setPlayInterval","onchange","getIndex","selectValue","setOnChangeCallback","lineStyle","getLabel","getSelectedValue","from","to","prettyStep","text","xText","yText","zText","offset","xOffset","yOffset","xMin2d","xMax2d","gridLenX","gridLenY","textMargin","armAngle","H","S","V","R","G","B","C","Hi","X","abs","parseInt","cross","topSideVisible","zAvg","transBottom","dist","sortDepth","aDiff","subtract","bDiff","crossproduct","crossProduct","radius","arc","PI","j","surface","corners","xWidth","yWidth","surfaces","center","avg","transCenter","diff","leftButtonDown","_onMouseUp","which","button","touchDown","startMouseX","getMouseX","startMouseY","getMouseY","startStart","startEnd","startArmRotation","cursor","onmousemove","_onMouseMove","onmouseup","diffX","diffY","horizontalNew","verticalNew","snapAngle","snapValue","round","parameters","emit","delay","mouseX","mouseY","tooltipTimeout","clearTimeout","_hideTooltip","dataPoint","_dataPointFromXY","_showTooltip","setTimeout","ontouchmove","_onTouchMove","ontouchend","_onTouchEnd","delta","wheelDelta","detail","oldLength","newLength","_insideTriangle","triangle","sign","as","bs","cs","distMax","closestDataPoint","closestDist","triangle1","triangle2","distX","distY","sqrt","content","line","dot","dom","borderRadius","boxShadow","borderLeft","contentWidth","offsetWidth","contentHeight","offsetHeight","lineHeight","dotWidth","dotHeight","clientX","targetTouches","clientY","armLocation","armRotation","armLength","cameraLocation","cameraRotation","calculateCameraOrientation","rot","graph","onLoadCallback","loadInBackground","isLoaded","getLoadedProgress","getColumn","getValues","dataView","progress","sub","sum","prev","bar","MozBorderRadius","slide","onclick","togglePlay","onChangeCallback","playTimeout","playInterval","playLoop","setIndex","playNext","interval","clearInterval","getPlayInterval","setPlayLoop","doLoop","onChange","indexToLeft","startClientX","startSlideX","leftToIndex","_start","_end","_step","precision","_current","setRange","setStep","calculatePrettyStep","log10","LN10","step1","pow","step2","step5","toPrecision","getStep","defaultOptions","autoResize","orientation","maxHeight","minHeight","_create","body","domProps","emitter","bind","snap","toScreen","_toScreen","toGlobalScreen","_toGlobalScreen","toTime","_toTime","toGlobalTime","_toGlobalTime","timeAxis","currentTime","customTime","itemSet","itemsData","groupsData","setItems","Hammer","backgroundVertical","backgroundHorizontal","centerContainer","leftContainer","rightContainer","shadowTop","shadowBottom","shadowTopLeft","shadowBottomLeft","shadowTopRight","shadowBottomRight","_onTouch","_onPinch","_onDragStart","_onDrag","hammer","prevent_default","listeners","events","args","slice","scrollTop","scrollTopMin","touch","destroy","_stopAutoResize","component","_initAutoResize","setCustomTime","time","getCustomTime","newDataSet","initialLoad","fit","setWindow","getVisibleItems","setGroups","groups","what","dataRange","getItemRange","dataset","minItem","maxStartItem","maxEndItem","setSelection","getSelection","getWindow","getRange","resized","borderRootHeight","borderRootWidth","autoHeight","containerHeight","centerWidth","_updateScrollTop","visibilityTop","visibilityBottom","visibility","repaint","conversion","_startAutoResize","_onResize","lastWidth","lastHeight","watchTimer","setInterval","allowDragging","initialScrollTop","gesture","deltaY","oldScrollTop","_getScrollTop","newScrollTop","_setScrollTop","linegraph","backgroundHorizontalContainer","minimumStep","forcedStepSize","current","autoScale","stepIndex","marginStart","marginEnd","majorSteps","minorSteps","setMinimumStep","setFirst","safeSize","minimumStepValue","orderOfMagnitude","minorStepIdx","magnitudefactor","solutionFound","stepSize","first","niceStart","niceEnd","roundToMinor","marginRange","rounded","hasNext","previous","isMajor","now","hours","minutes","seconds","milliseconds","clone","direction","moveable","zoomable","zoomMin","zoomMax","_onDragEnd","_onHold","_onMouseWheel","validateDirection","getPointer","pageX","pageY","hammerUtil","changed","_applyRange","newStart","newEnd","deltaX","diffRange","fakeGesture","pointer","pointerDate","_pointerToDate","zoom","touches","initDate","move","EPSILON","orderByStart","orderByEnd","aTime","bTime","force","iMax","axis","collidingItem","jj","collision","nostack","SCALE","DAY","MILLISECOND","SECOND","MINUTE","HOUR","WEEKDAY","MONTH","YEAR","setFullYear","getFullYear","setMonth","setDate","setHours","setMinutes","setSeconds","setMilliseconds","getMilliseconds","getSeconds","getMinutes","getHours","getDate","getMonth","setScale","newScale","newStep","setAutoScale","enable","stepYear","stepMonth","stepDay","stepHour","stepMinute","stepSecond","stepMillisecond","date","year","getLabelMinor","format","getLabelMajor","_isResized","_previousWidth","_previousHeight","showCurrentTime","parent","title","currentTimeTimer","showCustomTime","eventParams","drag","dragging","stopPropagation","svg","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","linegraphSVG","DOMelements","lines","labels","conversionFactor","minWidth","stepPixels","stepPixelsForced","lineOffset","master","svgElements","amountOfGroups","addGroup","graphOptions","updateGroup","removeGroup","hide","show","lineContainer","display","_redrawGroupIcons","iconHeight","iconOffset","groupId","drawIcon","changeCalled","_calculateCharSize","minorLabelHeight","minorCharHeight","majorLabelHeight","majorCharHeight","minorLineWidth","minorLineHeight","majorLineWidth","majorLineHeight","_redrawLabels","amountOfSteps","stepDifference","valueAtZero","marginStartPos","maxLabelSize","_redrawLabel","_redrawLine","characterHeight","largestWidth","majorCharWidth","minorCharWidth","convertValue","invertedValue","convertedValue","textMinor","createTextNode","measureCharMinor","textMajor","measureCharMajor","groupsUsingDefaultStyles","usingDefaultStyle","zeroPosition","setZeroPosition","catmullRom","parametrization","alpha","SVGcontainer","path","fillPath","fillHeight","outline","shaded","barWidth","bar1Height","bar2Height","visibleItems","byStart","byEnd","inner","foreground","marker","Element","getLabelWidth","restack","_updateVisibleItems","markerHeight","lastMarkerHeight","dirty","displayed","offsetTop","offsetLeft","ii","repositionY","labelSet","setParent","_checkIfVisible","removeFromDataSet","removeItem","_constructByEndArray","endArray","initialPosByStart","newVisibleItems","initialPosByEnd","_checkIfInvisible","repositionX","align","groupOrder","selectable","editable","updateTime","onAdd","onUpdate","onMove","onRemove","itemOptions","itemListeners","_onAdd","_onUpdate","_onRemove","groupListeners","_onAddGroups","_onUpdateGroups","_onRemoveGroups","groupIds","selection","stackDirty","touchParams","UNGROUPED","box","_updateUngrouped","_onSelectItem","_onMultiSelectItem","_onAddItem","addCallback","fn","Function","markDirty","unselect","select","rawVisibleItems","_deselect","_orderGroups","visibleInterval","zoomed","lastVisibleInterval","firstGroup","_firstGroup","firstMargin","nonFirstMargin","groupMargin","groupResized","firstGroupIndex","firstGroupId","ungrouped","getLabelSet","oldItemsData","getItems","_order","getGroups","itemData","_removeItem","groupData","groupOptions","oldGroupId","oldGroup","itemFromTarget","selected","dragLeftItem","dragRightItem","itemProps","groupFromTarget","changes","ctrlKey","srcEvent","shiftKey","oldSelection","newSelection","xAbs","newItem","itemSetFromTarget","side","iconSize","iconSpacing","textArea","drawLegendIcons","getComputedStyle","paddingTop","yAxisOrientation","defaultGroup","sampling","graphHeight","barChart","dataAxis","legend","lastStart","rangePerPixelInv","_updateGraph","yAxisLeft","yAxisRight","legendLeft","legendRight","_updateAllGroupData","_updateGroup","groupsContent","ungroupedCounter","preprocessedGroup","preprocessedGroupData","processedGroupData","groupRanges","minDate","maxDate","_preprocessData","_updateYAxis","_convertYvalues","_drawLineGraph","_drawBarGraph","minVal","maxVal","yAxisLeftUsed","yAxisRightUsed","minLeft","minRight","maxLeft","maxRight","_toggleAxisVisiblity","drawIcons","axisUsed","coreDistance","_drawPoints","svgHeight","_catmullRom","_linear","dFill","datapoints","xValue","yValue","extractedData","increment","amountOfPoints","xDistance","pointsPerPixel","ceil","_catmullRomUniform","p0","p1","p2","p3","bp1","bp2","normalization","d1","d2","d3","A","N","M","d3powA","d2powA","d3pow2A","d2pow2A","d1pow2A","d1powA","majorLines","majorTexts","minorLines","minorTexts","lineTop","parentChanged","foregroundNextSibling","nextSibling","backgroundNextSibling","_repaintLabels","insertBefore","xFirstMajorLabel","cur","_repaintMinorText","_repaintMajorText","_repaintMajorLine","_repaintMinorLine","leftTime","leftText","widthText","arr","pop","childNodes","nodeValue","_repaintDeleteButton","anchor","deleteButton","itemSetHeight","marginLeft","baseClassName","_repaintDragLeft","_repaintDragRight","contentLeft","parentWidth","boxWidth","dragLeft","dragRight","_initializeMixinLoaders","renderRefreshRate","renderTimestep","renderTime","maxPhysicsTicksPerRender","physicsDiscreteStepsize","stabilize","initializing","triggerFunctions","edit","editEdge","connect","del","constants","nodes","radiusMin","radiusMax","shape","image","fixed","fontColor","fontSize","fontFace","level","highlightColor","edges","widthSelectionMultiplier","hoverWidth","fontFill","arrowScaleFactor","dash","gap","altLength","inheritColor","configurePhysics","physics","barnesHut","theta","gravitationalConstant","centralGravity","springLength","springConstant","damping","repulsion","nodeDistance","hierarchicalRepulsion","clustering","initialMaxNodes","clusterThreshold","reduceToNodes","chainThreshold","clusterEdgeThreshold","sectorThreshold","screenSizeThreshold","fontSizeMultiplier","maxFontSize","forceAmplification","distanceAmplification","edgeGrowth","nodeScaling","maxNodeSizeIncrements","activeAreaBoxSize","clusterLevelDifference","navigation","keyboard","speed","dataManipulation","initiallyVisible","hierarchicalLayout","levelSeparation","nodeSpacing","freezeForStabilization","smoothCurves","dynamic","roundness","dynamicSmoothCurves","maxVelocity","minVelocity","stabilizationIterations","link","editNode","back","addDescription","linkDescription","editEdgeDescription","addError","linkError","editError","editBoundError","deleteError","deleteClusterError","dragNetwork","dragNodes","hideEdgesOnDrag","hideNodesOnDrag","hoverObj","controlNodesActive","images","setOnloadCallback","_redraw","xIncrement","yIncrement","zoomIncrement","_loadPhysicsSystem","_loadSectorSystem","_loadClusterSystem","_loadSelectionSystem","_loadHierarchySystem","_setTranslation","freezeSimulation","cachedFunctions","calculationNodes","calculationNodeIndices","nodeIndices","canvasTopLeft","canvasBottomRight","pointerPosition","areaCenter","previousScale","nodesData","edgesData","nodesListeners","_addNodes","_updateNodes","_removeNodes","edgesListeners","_addEdges","_updateEdges","_removeEdges","moving","timer","_setupHierarchicalLayout","zoomExtent","startWithClustering","mousetrap","MixinLoader","_getScriptPath","scripts","getElementsByTagName","src","_getRange","node","minY","maxY","minX","maxX","nodeId","_findCenter","_centerNetwork","initialZoom","disableStart","zoomLevel","numberOfNodes","factor","yDistance","xZoomLevel","yZoomLevel","_updateNodeIndexList","_clearNodeIndexList","idx","dotData","DOTToGraph","_setNodes","_setEdges","_putDataInSector","_stabilize","dragGraph","onEdit","onEditEdge","onConnect","onDelete","editMode","groupname","_loadNavigationControls","_loadManipulationSystem","_configureSmoothCurves","_createKeyBinds","pinch","_onTap","_onDoubleTap","_onRelease","_onMouseMoveTitle","reset","_moveUp","_yStopMoving","_moveDown","_moveLeft","_xStopMoving","_moveRight","_zoomIn","_stopZoom","_zoomOut","_createManipulatorBar","_deleteSelected","_getPointer","pinched","_getScale","_handleTouch","_handleDragStart","_getNodeAt","_getTranslation","isSelected","_selectObject","objectId","selectionObj","xFixed","yFixed","_handleOnDrag","_XconvertDOMtoCanvas","_XconvertCanvasToDOM","_YconvertDOMtoCanvas","_YconvertCanvasToDOM","_handleTap","_handleDoubleTap","_handleOnHold","_handleOnRelease","_zoom","scaleOld","preScaleDragPointer","DOMtoCanvas","scaleFrac","tx","ty","updateClustersDefault","postScaleDragPointer","canvasToDOM","popupObj","_checkHidePopup","checkShow","_checkShowPopup","popupTimer","edgeId","_getEdgeAt","_hoverObject","_blurObject","lastPopupNode","getTitle","isOverlappingWith","edge","connected","popup","setPosition","setText","manipulationDiv","navigationDivs","oldNodesData","_updateSelection","angle","_resetLevels","_updateCalculationNodes","_reconnectEdges","_updateValueRange","updateLabels","setProperties","properties","oldEdgesData","oldEdge","disconnect","showInternalIds","_createBezierNodes","via","sectors","setValueRange","w","save","translate","_doInAllSectors","restore","offsetX","offsetY","_drawNodes","alwaysShow","setScaleAndPos","inArea","draw","sMax","_drawEdges","_drawControlNodes","_freezeDefinedNodes","_physicsTick","_restoreFrozenNodes","iterations","fixedData","_isMoving","vmin","isMoving","_discreteStepNodes","nodesPresent","discreteStepLimited","discreteStep","vminCorrected","_doInAllActiveSectors","_doInSupportSector","_animationStep","_handleNavigation","calculationTime","maxSteps","timeRequired","requestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","ua","toLowerCase","requiresTimeout","toggleFreeze","smooth","mass","internalMultiplier","parentEdgeId","positionBezierNode","mixin","storePosition","dataArray","allowedToMoveX","allowedToMoveY","focusOnNode","nodePosition","requiredScale","canvasCenter","distanceFromCenter","fromId","toId","widthSelected","customLength","originalFromId","originalToId","widthFixed","lengthFixed","controlNodesEnabled","controlNodes","positions","connectedNode","_drawLine","_drawArrow","_drawArrowCenter","_drawDashLine","attachEdge","detachEdge","xFrom","yFrom","xTo","yTo","xObj","yObj","_getDistanceToEdge","_getColor","colorObj","_getLineWidth","_line","midpointX","midpointY","_pointOnLine","_label","resize","_circle","_pointOnCircle","networkScaleInv","_getViaCoordinates","xVia","yVia","quadraticCurveTo","measureText","fillRect","mozDash","setLineDash","pattern","lineDashOffset","mozDashOffset","lineCap","dashedLine","percentage","atan2","arrow","edgeSegmentLength","fromBorderDist","distanceToBorder","fromBorderPoint","toBorderDist","toBorderPoint","x1","y1","x2","y2","x3","y3","lastX","lastY","minDistance","_getDistanceToLine","px","py","something","u","nodeIdFrom","nodeIdTo","getControlNodePositions","_enableControlNodes","_disableControlNodes","_getSelectedControlNode","fromDistance","toDistance","_restoreControlNodes","defaultIndex","DEFAULT","load","url","img","Image","onload","imagelist","grouplist","dynamicEdges","reroutedEdges","fontDrawThreshold","horizontalAlignLeft","verticalAlignTop","baseRadiusValue","radiusFixed","preassignedLevel","borderWidthSelected","fx","fy","vx","vy","minForce","resetCluster","dynamicEdgesLength","clusterSession","clusterSizeWidthFactor","clusterSizeHeightFactor","clusterSizeRadiusFactor","growthIndicator","networkScale","formationScale","clusterSize","containedNodes","containedEdges","clusterSessions","originalLabel","triggerFunction","groupObj","imageObj","_drawDatabase","_resizeDatabase","_drawBox","_resizeBox","_drawCircle","_resizeCircle","_drawEllipse","_resizeEllipse","_drawImage","_resizeImage","_drawText","_resizeText","_drawDot","_resizeShape","_drawSquare","_drawTriangle","_drawTriangleDown","_drawStar","_reset","clearSizeCache","_setForce","_addForce","isFixed","getDistance","globalAlpha","drawImage","textSize","getTextSize","clusterLineWidth","selectionLineWidth","roundRect","database","diameter","circle","defaultSize","ellipse","_drawShape","radiusMultiplier","baseline","labelUnderNode","lineCount","yLine","inView","clearVelocity","updateVelocity","massBeforeClustering","energyBefore","styleAttr","fontFamily","WebkitBorderRadius","whiteSpace","maxWidth","parseDOT","parseGraph","nextPreview","isAlphaNumeric","regexAlphaNumeric","merge","o","addNode","graphs","attr","addEdge","createEdge","getToken","tokenType","TOKENTYPE","NULL","token","isComment","DELIMITER","c2","DELIMITERS","IDENTIFIER","newSyntaxError","UNKNOWN","chop","strict","parseStatements","parseStatement","subgraph","parseSubgraph","parseEdge","parseAttributeStatement","parseNodeStatement","subgraphs","parseAttributeList","message","maxLength","substr","forEach2","array1","array2","elem1","elem2","convertEdge","dotEdge","graphEdge","graphData","dotNode","graphNode","subEdge","{","}","[","]",";","=",",","->","--","eventType","getTouchList","collectEventData","CanvasRenderingContext2D","square","s2","ir","triangleDown","star","n","r2d","kappa","ox","oy","xe","ye","xm","ym","bezierCurveTo","wEllipse","hEllipse","ymb","yeb","xt","yt","xi","yi","xl","yl","xr","yr","dashArray","dashLength","dashCount","slope","distRemaining","dashIndex","PhysicsMixin","ClusterMixin","SectorsMixin","SelectionMixin","ManipulationMixin","NavigationMixin","HierarchicalLayoutMixin","_loadMixin","sourceVariable","mixinFunction","_clearMixin","_loadSelectedForceSolver","_loadPhysicsConfiguration","hubThreshold","activeSector","drawingNode","blockConnectingEdgeSelection","forceAppendSelection","editModeDiv","closeDiv","_cleanNavigation","_loadNavigationElements","_callbacks","once","self","removeListener","removeAllListeners","callbacks","cb","hasListeners","_addEvent","_characterFromEvent","fromCharCode","_MAP","_KEYCODE_MAP","_stop","tag_name","tagName","contentEditable","_modifiersMatch","modifiers1","modifiers2","_resetSequences","do_not_reset","active_sequences","_sequence_levels","_inside_sequence","_getMatches","character","modifiers","combination","matches","_isModifier","seq","combo","_eventModifiers","altKey","metaKey","_fireCallback","cancelBubble","_handleCharacter","processed_sequence_callback","_handleKey","keyCode","_ignore_next_keyup","_resetSequenceTimer","_reset_timer","_getReverseMap","_REVERSE_MAP","_pickBestAction","_bindSequence","_increaseSequence","_callbackAndReset","_bindSingle","sequence_name","sequence","_SPECIAL_ALIASES","_SHIFT_MAP","_bindMultiple","combinations",8,9,13,16,17,18,20,27,32,33,34,35,36,37,38,39,40,45,46,91,93,224,106,107,109,110,111,186,187,188,189,190,191,192,219,220,221,222,"~","!","@","#","$","%","^","&","*","(",")","_","+",":","\"","<",">","?","|","command","return","escape","_direct_map","unbind","trigger","clusterToFit","maxNumberOfNodes","reposition","maxLevels","forceAggregateHubs","normalizeClusterLevels","increaseClusterLevel","repositionNodes","openCluster","isMovingBeforeClustering","_nodeInActiveArea","_sector","_addSector","decreaseClusterLevel","_expandClusterNode","_updateDynamicEdges","updateClusters","zoomDirection","recursive","doNotStart","amountOfNodes","_collapseSector","_formClusters","_openClusters","_openClustersBySize","_aggregateHubs","handleChains","chainPercentage","_getChainFraction","_reduceAmountOfChains","_getHubSize","_formClustersByHub","openAll","containedNodeId","childNode","_expelChildFromParent","_unselectAll","_releaseContainedEdges","_connectEdgeBackToChild","_validateEdges","othersPresent","childNodeId","_repositionBezierNodes","_formClustersByZoom","_forceClustersByZoom","minLength","_addToCluster","_clusterToSmallestNeighbour","smallestNeighbour","smallestNeighbourNode","neighbour","onlyEqual","_formClusterFromHub","hubNode","absorptionSizeOffset","allowCluster","edgesIdarray","amountOfInitialEdges","_addToContainedEdges","_connectEdgeToCluster","_containCircularEdgesFromNode","massBefore","correction","edgeToId","edgeFromId","k","_addToReroutedEdges","maxLevel","minLevel","clusterLevel","targetLevel","average","averageSquared","hubCounter","largestHub","variance","standardDeviation","fraction","reduceAmount","chains","total","_switchToSector","sectorId","sectorType","_switchToActiveSector","_switchToFrozenSector","_switchToSupportSector","_loadLatestSector","_previousSector","_setActiveSector","newId","_forgetLastSector","_createNewSector","_deleteActiveSector","_deleteFrozenSector","_freezeSector","_activateSector","_mergeThisWithFrozen","_collapseThisToSingleCluster","sector","unqiueIdentifier","previousSector","runFunction","argument","_doInAllFrozenSectors","_drawSectorNodes","_drawAllSectorNodes","_getNodesOverlappingWith","overlappingNodes","_getAllNodesOverlappingWith","_pointerToPositionObject","positionObject","_getEdgesOverlappingWith","overlappingEdges","_getAllEdgesOverlappingWith","_addToSelection","_addToHover","_removeFromSelection","doNotTrigger","_unselectClusters","_getSelectedNodeCount","_getSelectedNode","_getSelectedEdge","_getSelectedEdgeCount","_getSelectedObjectCount","_selectionIsEmpty","_clusterInSelection","_selectConnectedEdges","_hoverConnectedEdges","_unselectConnectedEdges","append","highlightEdges","nodeIds","getSelectedNodes","edgeIds","getSelectedEdges","idArray","RangeError","selectNodes","selectEdges","_clearManipulatorBar","_restoreOverloadedFunctions","functionName","_toggleEditMode","toolbar","getElementById","boundFunction","edgeBeingEdited","selectedControlNode","addNodeButton","_createAddNodeToolbar","addEdgeButton","_createAddEdgeToolbar","editButton","_editNode","_createEditEdgeToolbar","editModeButton","backButton","_addNode","_handleConnect","_finishConnect","_selectControlNode","_controlNodeDrag","_releaseControlNode","newNode","_editEdge","alert","connectFromId","_createEdge","defaultData","finalizedData","sourceNodeId","targetNodeId","selectedNodes","selectedEdges","wrapper","navigationDivActions","_stopMovement","hubsize","definedLevel","undefinedLevel","_changeConstants","_determineLevels","distribution","_getDistribution","_placeNodesByHierarchy","minPos","_placeBranchNodes","amount","maxCount","_setLevel","parentId","parentLevel","nodeMoved","_restoreNodes","graphToggleSmoothCurves","graph_toggleSmooth","graphRepositionNodes","showValueOfRange","graphGenerateOptions","optionsSpecific","radioButton1","radioButton2","checked","backupConstants","optionsDiv","switchConfigurations","radioButton","querySelector","tableId","table","constantsVariableName","valueId","rangeValue","_overWriteGraphConstants","RepulsionMixin","HierarchialRepulsionMixin","BarnesHutMixin","_toggleBarnesHut","barnesHutTree","_initializeForceCalculation","_calculateForces","_calculateGravitationalForces","_calculateNodeForces","_calculateSpringForcesWithSupport","_calculateHierarchicalSpringForces","_calculateSpringForces","supportNodes","supportNodeId","gravity","gravityForce","edgeLength","springForce","combinedClusterSize","node1","node2","node3","_calculateSpringForce","physicsConfiguration","hierarchicalLayoutDirections","parentElement","rangeElement","radioButton3","graph_repositionNodes","graph_generateOptions","nameArray","repulsingForce","a_base","minimumDistance","steepness","springFx","springFy","totalFx","totalFy","correctionFx","correctionFy","nodeCount","_formBarnesHutTree","_getForceContribution","children","NW","NE","SW","SE","parentBranch","childrenCount","centerOfMass","calcSize","MAX_VALUE","sizeDiff","minimumTreeSize","rootSize","halfRootSize","centerX","centerY","_splitBranch","_placeInTree","_updateBranchMass","totalMass","totalMassInv","biggestSize","skipMassUpdate","_placeInRegion","region","containedNode","_insertRegion","childSize","_drawTree","_drawBranch","branch"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"vis.map","sources":["./dist/vis-light.js"],"names":["root","factory","exports","module","require","define","amd","this","__WEBPACK_EXTERNAL_MODULE_41__","__WEBPACK_EXTERNAL_MODULE_42__","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","util","DOMutil","DataSet","DataView","Graph3d","graph3d","Camera","Filter","Point2d","Point3d","Slider","StepNumber","Timeline","Graph2d","timeline","DataStep","Range","stack","TimeStep","components","items","Item","ItemBox","ItemPoint","ItemRange","Component","CurrentTime","CustomTime","DataAxis","GraphGroup","Group","ItemSet","Legend","LineGraph","TimeAxis","Network","network","Edge","Groups","Images","Node","Popup","dotparser","Graph","Error","moment","hammer","isNumber","object","Number","isString","String","isDate","Date","match","ASPDateRegex","exec","isNaN","parse","isDataTable","google","visualization","DataTable","randomUUID","S4","Math","floor","random","toString","extend","a","i","len","arguments","length","other","prop","hasOwnProperty","selectiveExtend","props","Array","isArray","selectiveDeepExtend","b","TypeError","constructor","Object","undefined","deepExtend","equalArray","convert","type","Boolean","valueOf","isMoment","toDate","getType","toISOString","value","getAbsoluteLeft","elem","getBoundingClientRect","left","window","pageXOffset","getAbsoluteTop","top","pageYOffset","addClassName","className","classes","split","indexOf","push","join","removeClassName","index","splice","forEach","callback","toArray","array","updateProperty","key","addEventListener","element","action","listener","useCapture","navigator","userAgent","attachEvent","removeEventListener","detachEvent","preventDefault","event","returnValue","getTarget","target","srcElement","nodeType","parentNode","option","asBoolean","defaultValue","asNumber","asString","asSize","asElement","GiveDec","Hex","Value","eval","GiveHex","Dec","parseColor","color","isValidHex","hsv","hexToHSV","lighterColorHSV","h","s","v","min","darkerColorHSV","darkerColorHex","HSVToHex","lighterColorHex","background","border","highlight","hover","hexToRGB","hex","replace","toUpperCase","substring","d","e","f","r","g","RGBToHex","red","green","blue","RGBToHSV","minRGB","maxRGB","max","hue","saturation","HSVToRGB","q","t","rgb","isOk","test","selectiveBridgeObject","fields","referenceObject","objectTo","create","bridgeObject","mergeOptions","mergeTarget","options","enabled","binarySearch","orderedItems","range","field","field2","maxIterations","iteration","found","low","high","newLow","newHigh","guess","isVisible","start","console","log","binarySearchGeneric","sidePreference","newGuess","prevValue","nextValue","prepareElements","JSONcontainer","elementType","redundant","used","cleanupElements","removeChild","getSVGElement","svgContainer","shift","document","createElementNS","appendChild","getDOMElement","DOMContainer","createElement","drawPoint","x","y","group","point","drawPoints","style","setAttributeNS","size","drawBar","width","height","rect","data","_options","_data","_fieldId","fieldId","_type","_subscribers","add","prototype","on","subscribers","subscribe","off","filter","unsubscribe","_trigger","params","senderId","concat","subscriber","addedIds","me","_addItem","columns","_getColumnNames","row","rows","getNumberOfRows","item","col","cols","getValue","update","updatedIds","addOrUpdate","_updateItem","get","ids","firstType","returnType","allowedValues","itemId","_getItem","order","_sort","_filterFields","_appendRow","result","getIds","getDataSet","map","mappedItems","filteredItem","name","sort","av","bv","remove","removedId","removedIds","_remove","clear","keys","maxField","itemField","minField","distinct","values","fieldType","count","exists","types","raw","converted","JSON","stringify","dataTable","getNumberOfColumns","getColumnId","getColumnLabel","addRow","setValue","_ids","_onEvent","apply","setData","viewOptions","getArguments","defaultFilter","dataSet","added","updated","removed","container","SyntaxError","containerElement","margin","defaultXCenter","defaultYCenter","xLabel","yLabel","zLabel","filterLabel","legendLabel","STYLE","DOT","showPerspective","showGrid","keepAspectRatio","showShadow","showGrayBottom","showTooltip","verticalRatio","animationInterval","animationPreload","camera","eye","dataPoints","colX","colY","colZ","colValue","colFilter","xMin","xStep","xMax","yMin","yStep","yMax","zMin","zStep","zMax","valueMin","valueMax","xBarWidth","yBarWidth","colorAxis","colorGrid","colorDot","colorDotBorder","setOptions","Emitter","_setScale","scale","z","xCenter","yCenter","zCenter","setArmLocation","_convert3Dto2D","point3d","translation","_convertPointToTranslation","_convertTranslationToScreen","ax","ay","az","cx","getCameraLocation","cy","cz","sinTx","sin","getCameraRotation","cosTx","cos","sinTy","cosTy","sinTz","cosTz","dx","dy","dz","bx","by","ex","ey","ez","getArmLength","xcenter","frame","canvas","clientWidth","ycenter","_setBackgroundColor","backgroundColor","fill","stroke","strokeWidth","borderColor","borderWidth","borderStyle","BAR","BARCOLOR","BARSIZE","DOTLINE","DOTCOLOR","DOTSIZE","GRID","LINE","SURFACE","_getStyleNumber","styleName","_determineColumnIndexes","counter","column","getDistinctValues","distinctValues","getColumnRange","minMax","_dataInitialize","rawData","_onChange","dataFilter","setOnLoadCallback","redraw","withBars","defaultXBarWidth","dataX","defaultYBarWidth","dataY","xRange","defaultXMin","defaultXMax","defaultXStep","yRange","defaultYMin","defaultYMax","defaultYStep","zRange","defaultZMin","defaultZMax","defaultZStep","valueRange","defaultValueMin","defaultValueMax","_getDataPoints","sortNumber","obj","dataMatrix","xIndex","yIndex","trans","screen","bottom","pointRight","pointTop","pointCross","hasChildNodes","firstChild","position","overflow","noCanvas","fontWeight","padding","innerHTML","onmousedown","_onMouseDown","ontouchstart","_onTouchStart","onmousewheel","_onWheel","ontooltip","_onTooltip","onkeydown","setSize","_resizeCanvas","clientHeight","animationStart","slider","play","animationStop","stop","_resizeCenter","charAt","parseFloat","setCameraPosition","pos","horizontal","vertical","setArmRotation","distance","setArmLength","getCameraPosition","getArmRotation","_readData","_redrawFilter","animationAutoStart","cameraPosition","styleNumber","tooltip","showAnimationControls","_redrawSlider","_redrawClear","_redrawAxis","_redrawDataGrid","_redrawDataLine","_redrawDataBar","_redrawDataDot","_redrawInfo","_redrawLegend","ctx","getContext","clearRect","widthMin","widthMax","dotSize","right","lineWidth","font","ymin","ymax","_hsv2rgb","strokeStyle","beginPath","moveTo","lineTo","strokeRect","fillStyle","closePath","gridLineLen","step","getCurrent","next","end","textAlign","textBaseline","fillText","label","visible","setValues","setPlayInterval","onchange","getIndex","selectValue","setOnChangeCallback","lineStyle","getLabel","getSelectedValue","from","to","prettyStep","text","xText","yText","zText","offset","xOffset","yOffset","xMin2d","xMax2d","gridLenX","gridLenY","textMargin","armAngle","H","S","V","R","G","B","C","Hi","X","abs","parseInt","cross","topSideVisible","zAvg","transBottom","dist","sortDepth","aDiff","subtract","bDiff","crossproduct","crossProduct","radius","arc","PI","j","surface","corners","xWidth","yWidth","surfaces","center","avg","transCenter","diff","leftButtonDown","_onMouseUp","which","button","touchDown","startMouseX","getMouseX","startMouseY","getMouseY","startStart","startEnd","startArmRotation","cursor","onmousemove","_onMouseMove","onmouseup","diffX","diffY","horizontalNew","verticalNew","snapAngle","snapValue","round","parameters","emit","delay","mouseX","mouseY","tooltipTimeout","clearTimeout","_hideTooltip","dataPoint","_dataPointFromXY","_showTooltip","setTimeout","ontouchmove","_onTouchMove","ontouchend","_onTouchEnd","delta","wheelDelta","detail","oldLength","newLength","_insideTriangle","triangle","sign","as","bs","cs","distMax","closestDataPoint","closestDist","triangle1","triangle2","distX","distY","sqrt","content","line","dot","dom","borderRadius","boxShadow","borderLeft","contentWidth","offsetWidth","contentHeight","offsetHeight","lineHeight","dotWidth","dotHeight","clientX","targetTouches","clientY","armLocation","armRotation","armLength","cameraLocation","cameraRotation","calculateCameraOrientation","rot","graph","onLoadCallback","loadInBackground","isLoaded","getLoadedProgress","getColumn","getValues","dataView","progress","sub","sum","prev","bar","MozBorderRadius","slide","onclick","togglePlay","onChangeCallback","playTimeout","playInterval","playLoop","setIndex","playNext","interval","clearInterval","getPlayInterval","setPlayLoop","doLoop","onChange","indexToLeft","startClientX","startSlideX","leftToIndex","_start","_end","_step","precision","_current","setRange","setStep","calculatePrettyStep","log10","LN10","step1","pow","step2","step5","toPrecision","getStep","defaultOptions","autoResize","orientation","maxHeight","minHeight","_create","body","domProps","emitter","bind","snap","toScreen","_toScreen","toGlobalScreen","_toGlobalScreen","toTime","_toTime","toGlobalTime","_toGlobalTime","timeAxis","currentTime","customTime","itemSet","itemsData","groupsData","setItems","Hammer","backgroundVertical","backgroundHorizontal","centerContainer","leftContainer","rightContainer","shadowTop","shadowBottom","shadowTopLeft","shadowBottomLeft","shadowTopRight","shadowBottomRight","_onTouch","_onPinch","_onDragStart","_onDrag","prevent_default","listeners","events","args","slice","scrollTop","scrollTopMin","touch","destroy","_stopAutoResize","component","_initAutoResize","setCustomTime","time","getCustomTime","newDataSet","initialLoad","fit","setWindow","getVisibleItems","setGroups","groups","what","dataRange","getItemRange","dataset","minItem","maxStartItem","maxEndItem","setSelection","getSelection","getWindow","getRange","resized","borderRootHeight","borderRootWidth","autoHeight","containerHeight","centerWidth","_updateScrollTop","visibilityTop","visibilityBottom","visibility","repaint","conversion","_startAutoResize","_onResize","lastWidth","lastHeight","watchTimer","setInterval","allowDragging","initialScrollTop","gesture","deltaY","oldScrollTop","_getScrollTop","newScrollTop","_setScrollTop","linegraph","backgroundHorizontalContainer","minimumStep","forcedStepSize","current","autoScale","stepIndex","marginStart","marginEnd","majorSteps","minorSteps","setMinimumStep","setFirst","safeSize","minimumStepValue","orderOfMagnitude","minorStepIdx","magnitudefactor","solutionFound","stepSize","first","niceStart","niceEnd","roundToMinor","marginRange","rounded","hasNext","previous","isMajor","now","hours","minutes","seconds","milliseconds","clone","direction","moveable","zoomable","zoomMin","zoomMax","_onDragEnd","_onHold","_onMouseWheel","validateDirection","getPointer","pageX","pageY","hammerUtil","changed","_applyRange","newStart","newEnd","deltaX","diffRange","fakeGesture","pointer","pointerDate","_pointerToDate","zoom","touches","initDate","move","EPSILON","orderByStart","orderByEnd","aTime","bTime","force","iMax","axis","collidingItem","jj","collision","nostack","SCALE","DAY","MILLISECOND","SECOND","MINUTE","HOUR","WEEKDAY","MONTH","YEAR","setFullYear","getFullYear","setMonth","setDate","setHours","setMinutes","setSeconds","setMilliseconds","getMilliseconds","getSeconds","getMinutes","getHours","getDate","getMonth","setScale","newScale","newStep","setAutoScale","enable","stepYear","stepMonth","stepDay","stepHour","stepMinute","stepSecond","stepMillisecond","date","year","getLabelMinor","format","getLabelMajor","_isResized","_previousWidth","_previousHeight","showCurrentTime","parent","title","currentTimeTimer","showCustomTime","eventParams","drag","dragging","stopPropagation","svg","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","linegraphSVG","DOMelements","lines","labels","conversionFactor","minWidth","stepPixels","stepPixelsForced","lineOffset","master","svgElements","amountOfGroups","addGroup","graphOptions","updateGroup","removeGroup","hide","show","lineContainer","display","_redrawGroupIcons","iconHeight","iconOffset","groupId","drawIcon","changeCalled","_calculateCharSize","minorLabelHeight","minorCharHeight","majorLabelHeight","majorCharHeight","minorLineWidth","minorLineHeight","majorLineWidth","majorLineHeight","_redrawLabels","amountOfSteps","stepDifference","valueAtZero","marginStartPos","maxLabelSize","_redrawLabel","_redrawLine","characterHeight","largestWidth","majorCharWidth","minorCharWidth","convertValue","invertedValue","convertedValue","textMinor","createTextNode","measureCharMinor","textMajor","measureCharMajor","groupsUsingDefaultStyles","usingDefaultStyle","zeroPosition","setZeroPosition","catmullRom","parametrization","alpha","SVGcontainer","path","fillPath","fillHeight","outline","shaded","barWidth","bar1Height","bar2Height","visibleItems","byStart","byEnd","inner","foreground","marker","Element","getLabelWidth","restack","_updateVisibleItems","markerHeight","lastMarkerHeight","dirty","displayed","offsetTop","offsetLeft","ii","repositionY","labelSet","setParent","_checkIfVisible","removeFromDataSet","removeItem","_constructByEndArray","endArray","initialPosByStart","newVisibleItems","initialPosByEnd","_checkIfInvisible","repositionX","align","groupOrder","selectable","editable","updateTime","onAdd","onUpdate","onMove","onRemove","itemOptions","itemListeners","_onAdd","_onUpdate","_onRemove","groupListeners","_onAddGroups","_onUpdateGroups","_onRemoveGroups","groupIds","selection","stackDirty","touchParams","UNGROUPED","box","_updateUngrouped","_onSelectItem","_onMultiSelectItem","_onAddItem","addCallback","fn","Function","markDirty","unselect","select","rawVisibleItems","_deselect","_orderGroups","visibleInterval","zoomed","lastVisibleInterval","firstGroup","_firstGroup","firstMargin","nonFirstMargin","groupMargin","groupResized","firstGroupIndex","firstGroupId","ungrouped","getLabelSet","oldItemsData","getItems","_order","getGroups","itemData","_removeItem","groupData","groupOptions","oldGroupId","oldGroup","itemFromTarget","selected","dragLeftItem","dragRightItem","itemProps","groupFromTarget","changes","ctrlKey","srcEvent","shiftKey","oldSelection","newSelection","xAbs","newItem","itemSetFromTarget","side","iconSize","iconSpacing","textArea","drawLegendIcons","getComputedStyle","paddingTop","yAxisOrientation","defaultGroup","sampling","graphHeight","barChart","dataAxis","legend","lastStart","rangePerPixelInv","_updateGraph","yAxisLeft","yAxisRight","legendLeft","legendRight","_updateAllGroupData","_updateGroup","groupsContent","ungroupedCounter","preprocessedGroup","preprocessedGroupData","processedGroupData","groupRanges","minDate","maxDate","_preprocessData","_updateYAxis","_convertYvalues","_drawLineGraph","_drawBarGraph","minVal","maxVal","yAxisLeftUsed","yAxisRightUsed","minLeft","minRight","maxLeft","maxRight","_toggleAxisVisiblity","drawIcons","axisUsed","coreDistance","_drawPoints","svgHeight","_catmullRom","_linear","dFill","datapoints","xValue","yValue","extractedData","increment","amountOfPoints","xDistance","pointsPerPixel","ceil","_catmullRomUniform","p0","p1","p2","p3","bp1","bp2","normalization","d1","d2","d3","A","N","M","d3powA","d2powA","d3pow2A","d2pow2A","d1pow2A","d1powA","majorLines","majorTexts","minorLines","minorTexts","lineTop","parentChanged","foregroundNextSibling","nextSibling","backgroundNextSibling","_repaintLabels","insertBefore","xFirstMajorLabel","cur","_repaintMinorText","_repaintMajorText","_repaintMajorLine","_repaintMinorLine","leftTime","leftText","widthText","arr","pop","childNodes","nodeValue","_repaintDeleteButton","anchor","deleteButton","itemSetHeight","marginLeft","baseClassName","_repaintDragLeft","_repaintDragRight","contentLeft","parentWidth","boxWidth","dragLeft","dragRight","_initializeMixinLoaders","renderRefreshRate","renderTimestep","renderTime","maxPhysicsTicksPerRender","physicsDiscreteStepsize","stabilize","initializing","triggerFunctions","edit","editEdge","connect","del","constants","nodes","radiusMin","radiusMax","shape","image","fixed","fontColor","fontSize","fontFace","level","highlightColor","edges","widthSelectionMultiplier","hoverWidth","fontFill","arrowScaleFactor","dash","gap","altLength","inheritColor","configurePhysics","physics","barnesHut","theta","gravitationalConstant","centralGravity","springLength","springConstant","damping","repulsion","nodeDistance","hierarchicalRepulsion","clustering","initialMaxNodes","clusterThreshold","reduceToNodes","chainThreshold","clusterEdgeThreshold","sectorThreshold","screenSizeThreshold","fontSizeMultiplier","maxFontSize","forceAmplification","distanceAmplification","edgeGrowth","nodeScaling","maxNodeSizeIncrements","activeAreaBoxSize","clusterLevelDifference","navigation","keyboard","speed","dataManipulation","initiallyVisible","hierarchicalLayout","levelSeparation","nodeSpacing","freezeForStabilization","smoothCurves","dynamic","roundness","dynamicSmoothCurves","maxVelocity","minVelocity","stabilizationIterations","link","editNode","back","addDescription","linkDescription","editEdgeDescription","addError","linkError","editError","editBoundError","deleteError","deleteClusterError","dragNetwork","dragNodes","hideEdgesOnDrag","hideNodesOnDrag","hoverObj","controlNodesActive","images","setOnloadCallback","_redraw","xIncrement","yIncrement","zoomIncrement","_loadPhysicsSystem","_loadSectorSystem","_loadClusterSystem","_loadSelectionSystem","_loadHierarchySystem","_setTranslation","freezeSimulation","cachedFunctions","calculationNodes","calculationNodeIndices","nodeIndices","canvasTopLeft","canvasBottomRight","pointerPosition","areaCenter","previousScale","nodesData","edgesData","nodesListeners","_addNodes","_updateNodes","_removeNodes","edgesListeners","_addEdges","_updateEdges","_removeEdges","moving","timer","_setupHierarchicalLayout","zoomExtent","startWithClustering","mousetrap","MixinLoader","_getScriptPath","scripts","getElementsByTagName","src","_getRange","node","minY","maxY","minX","maxX","nodeId","_findCenter","_centerNetwork","initialZoom","disableStart","zoomLevel","numberOfNodes","factor","yDistance","xZoomLevel","yZoomLevel","_updateNodeIndexList","_clearNodeIndexList","idx","dotData","DOTToGraph","_setNodes","_setEdges","_putDataInSector","_stabilize","dragGraph","onEdit","onEditEdge","onConnect","onDelete","editMode","groupname","_loadNavigationControls","_loadManipulationSystem","_configureSmoothCurves","_createKeyBinds","pinch","_onTap","_onDoubleTap","_onRelease","_onMouseMoveTitle","reset","_moveUp","_yStopMoving","_moveDown","_moveLeft","_xStopMoving","_moveRight","_zoomIn","_stopZoom","_zoomOut","_createManipulatorBar","_deleteSelected","_getPointer","pinched","_getScale","_handleTouch","_handleDragStart","_getNodeAt","_getTranslation","isSelected","_selectObject","objectId","selectionObj","xFixed","yFixed","_handleOnDrag","_XconvertDOMtoCanvas","_XconvertCanvasToDOM","_YconvertDOMtoCanvas","_YconvertCanvasToDOM","_handleTap","_handleDoubleTap","_handleOnHold","_handleOnRelease","_zoom","scaleOld","preScaleDragPointer","DOMtoCanvas","scaleFrac","tx","ty","updateClustersDefault","postScaleDragPointer","canvasToDOM","popupObj","_checkHidePopup","checkShow","_checkShowPopup","popupTimer","edgeId","_getEdgeAt","_hoverObject","_blurObject","lastPopupNode","getTitle","isOverlappingWith","edge","connected","popup","setPosition","setText","manipulationDiv","navigationDivs","oldNodesData","_updateSelection","angle","_resetLevels","_updateCalculationNodes","_reconnectEdges","_updateValueRange","updateLabels","setProperties","properties","oldEdgesData","oldEdge","disconnect","showInternalIds","_createBezierNodes","via","sectors","setValueRange","w","save","translate","_doInAllSectors","restore","offsetX","offsetY","_drawNodes","alwaysShow","setScaleAndPos","inArea","draw","sMax","_drawEdges","_drawControlNodes","_freezeDefinedNodes","_physicsTick","_restoreFrozenNodes","iterations","fixedData","_isMoving","vmin","isMoving","_discreteStepNodes","nodesPresent","discreteStepLimited","discreteStep","vminCorrected","_doInAllActiveSectors","_doInSupportSector","_animationStep","_handleNavigation","calculationTime","maxSteps","timeRequired","requestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","ua","toLowerCase","requiresTimeout","toggleFreeze","smooth","mass","internalMultiplier","parentEdgeId","positionBezierNode","mixin","storePosition","dataArray","allowedToMoveX","allowedToMoveY","focusOnNode","nodePosition","requiredScale","canvasCenter","distanceFromCenter","fromId","toId","widthSelected","customLength","originalFromId","originalToId","widthFixed","lengthFixed","controlNodesEnabled","controlNodes","positions","connectedNode","_drawLine","_drawArrow","_drawArrowCenter","_drawDashLine","attachEdge","detachEdge","xFrom","yFrom","xTo","yTo","xObj","yObj","_getDistanceToEdge","_getColor","colorObj","_getLineWidth","_line","midpointX","midpointY","_pointOnLine","_label","resize","_circle","_pointOnCircle","networkScaleInv","_getViaCoordinates","xVia","yVia","quadraticCurveTo","measureText","fillRect","mozDash","setLineDash","pattern","lineDashOffset","mozDashOffset","lineCap","dashedLine","percentage","atan2","arrow","edgeSegmentLength","fromBorderDist","distanceToBorder","fromBorderPoint","toBorderDist","toBorderPoint","x1","y1","x2","y2","x3","y3","lastX","lastY","minDistance","_getDistanceToLine","px","py","something","u","nodeIdFrom","nodeIdTo","getControlNodePositions","_enableControlNodes","_disableControlNodes","_getSelectedControlNode","fromDistance","toDistance","_restoreControlNodes","defaultIndex","DEFAULT","load","url","img","Image","onload","imagelist","grouplist","dynamicEdges","reroutedEdges","fontDrawThreshold","horizontalAlignLeft","verticalAlignTop","baseRadiusValue","radiusFixed","preassignedLevel","borderWidthSelected","fx","fy","vx","vy","minForce","resetCluster","dynamicEdgesLength","clusterSession","clusterSizeWidthFactor","clusterSizeHeightFactor","clusterSizeRadiusFactor","growthIndicator","networkScale","formationScale","clusterSize","containedNodes","containedEdges","clusterSessions","originalLabel","triggerFunction","groupObj","imageObj","_drawDatabase","_resizeDatabase","_drawBox","_resizeBox","_drawCircle","_resizeCircle","_drawEllipse","_resizeEllipse","_drawImage","_resizeImage","_drawText","_resizeText","_drawDot","_resizeShape","_drawSquare","_drawTriangle","_drawTriangleDown","_drawStar","_reset","clearSizeCache","_setForce","_addForce","isFixed","getDistance","globalAlpha","drawImage","textSize","getTextSize","clusterLineWidth","selectionLineWidth","roundRect","database","diameter","circle","defaultSize","ellipse","_drawShape","radiusMultiplier","baseline","labelUnderNode","lineCount","yLine","inView","clearVelocity","updateVelocity","massBeforeClustering","energyBefore","styleAttr","fontFamily","WebkitBorderRadius","whiteSpace","maxWidth","parseDOT","parseGraph","nextPreview","isAlphaNumeric","regexAlphaNumeric","merge","o","addNode","graphs","attr","addEdge","createEdge","getToken","tokenType","TOKENTYPE","NULL","token","isComment","DELIMITER","c2","DELIMITERS","IDENTIFIER","newSyntaxError","UNKNOWN","chop","strict","parseStatements","parseStatement","subgraph","parseSubgraph","parseEdge","parseAttributeStatement","parseNodeStatement","subgraphs","parseAttributeList","message","maxLength","substr","forEach2","array1","array2","elem1","elem2","convertEdge","dotEdge","graphEdge","graphData","dotNode","graphNode","subEdge","{","}","[","]",";","=",",","->","--","eventType","getTouchList","collectEventData","CanvasRenderingContext2D","square","s2","ir","triangleDown","star","n","r2d","kappa","ox","oy","xe","ye","xm","ym","bezierCurveTo","wEllipse","hEllipse","ymb","yeb","xt","yt","xi","yi","xl","yl","xr","yr","dashArray","dashLength","dashCount","slope","distRemaining","dashIndex","PhysicsMixin","ClusterMixin","SectorsMixin","SelectionMixin","ManipulationMixin","NavigationMixin","HierarchicalLayoutMixin","_loadMixin","sourceVariable","mixinFunction","_clearMixin","_loadSelectedForceSolver","_loadPhysicsConfiguration","hubThreshold","activeSector","drawingNode","blockConnectingEdgeSelection","forceAppendSelection","editModeDiv","closeDiv","_cleanNavigation","_loadNavigationElements","_callbacks","once","self","removeListener","removeAllListeners","callbacks","cb","hasListeners","_addEvent","_characterFromEvent","fromCharCode","_MAP","_KEYCODE_MAP","_stop","tag_name","tagName","contentEditable","_modifiersMatch","modifiers1","modifiers2","_resetSequences","do_not_reset","active_sequences","_sequence_levels","_inside_sequence","_getMatches","character","modifiers","combination","matches","_isModifier","seq","combo","_eventModifiers","altKey","metaKey","_fireCallback","cancelBubble","_handleCharacter","processed_sequence_callback","_handleKey","keyCode","_ignore_next_keyup","_resetSequenceTimer","_reset_timer","_getReverseMap","_REVERSE_MAP","_pickBestAction","_bindSequence","_increaseSequence","_callbackAndReset","_bindSingle","sequence_name","sequence","_SPECIAL_ALIASES","_SHIFT_MAP","_bindMultiple","combinations",8,9,13,16,17,18,20,27,32,33,34,35,36,37,38,39,40,45,46,91,93,224,106,107,109,110,111,186,187,188,189,190,191,192,219,220,221,222,"~","!","@","#","$","%","^","&","*","(",")","_","+",":","\"","<",">","?","|","command","return","escape","_direct_map","unbind","trigger","clusterToFit","maxNumberOfNodes","reposition","maxLevels","forceAggregateHubs","normalizeClusterLevels","increaseClusterLevel","repositionNodes","openCluster","isMovingBeforeClustering","_nodeInActiveArea","_sector","_addSector","decreaseClusterLevel","_expandClusterNode","_updateDynamicEdges","updateClusters","zoomDirection","recursive","doNotStart","amountOfNodes","_collapseSector","_formClusters","_openClusters","_openClustersBySize","_aggregateHubs","handleChains","chainPercentage","_getChainFraction","_reduceAmountOfChains","_getHubSize","_formClustersByHub","openAll","containedNodeId","childNode","_expelChildFromParent","_unselectAll","_releaseContainedEdges","_connectEdgeBackToChild","_validateEdges","othersPresent","childNodeId","_repositionBezierNodes","_formClustersByZoom","_forceClustersByZoom","minLength","_addToCluster","_clusterToSmallestNeighbour","smallestNeighbour","smallestNeighbourNode","neighbour","onlyEqual","_formClusterFromHub","hubNode","absorptionSizeOffset","allowCluster","edgesIdarray","amountOfInitialEdges","_addToContainedEdges","_connectEdgeToCluster","_containCircularEdgesFromNode","massBefore","correction","edgeToId","edgeFromId","k","_addToReroutedEdges","maxLevel","minLevel","clusterLevel","targetLevel","average","averageSquared","hubCounter","largestHub","variance","standardDeviation","fraction","reduceAmount","chains","total","_switchToSector","sectorId","sectorType","_switchToActiveSector","_switchToFrozenSector","_switchToSupportSector","_loadLatestSector","_previousSector","_setActiveSector","newId","_forgetLastSector","_createNewSector","_deleteActiveSector","_deleteFrozenSector","_freezeSector","_activateSector","_mergeThisWithFrozen","_collapseThisToSingleCluster","sector","unqiueIdentifier","previousSector","runFunction","argument","_doInAllFrozenSectors","_drawSectorNodes","_drawAllSectorNodes","_getNodesOverlappingWith","overlappingNodes","_getAllNodesOverlappingWith","_pointerToPositionObject","positionObject","_getEdgesOverlappingWith","overlappingEdges","_getAllEdgesOverlappingWith","_addToSelection","_addToHover","_removeFromSelection","doNotTrigger","_unselectClusters","_getSelectedNodeCount","_getSelectedNode","_getSelectedEdge","_getSelectedEdgeCount","_getSelectedObjectCount","_selectionIsEmpty","_clusterInSelection","_selectConnectedEdges","_hoverConnectedEdges","_unselectConnectedEdges","append","highlightEdges","nodeIds","getSelectedNodes","edgeIds","getSelectedEdges","idArray","RangeError","selectNodes","selectEdges","_clearManipulatorBar","_restoreOverloadedFunctions","functionName","_toggleEditMode","toolbar","getElementById","boundFunction","edgeBeingEdited","selectedControlNode","addNodeButton","_createAddNodeToolbar","addEdgeButton","_createAddEdgeToolbar","editButton","_editNode","_createEditEdgeToolbar","editModeButton","backButton","_addNode","_handleConnect","_finishConnect","_selectControlNode","_controlNodeDrag","_releaseControlNode","newNode","_editEdge","alert","connectFromId","_createEdge","defaultData","finalizedData","sourceNodeId","targetNodeId","selectedNodes","selectedEdges","wrapper","navigationDivActions","_stopMovement","hubsize","definedLevel","undefinedLevel","_changeConstants","_determineLevels","distribution","_getDistribution","_placeNodesByHierarchy","minPos","_placeBranchNodes","amount","maxCount","_setLevel","parentId","parentLevel","nodeMoved","_restoreNodes","graphToggleSmoothCurves","graph_toggleSmooth","graphRepositionNodes","showValueOfRange","graphGenerateOptions","optionsSpecific","radioButton1","radioButton2","checked","backupConstants","optionsDiv","switchConfigurations","radioButton","querySelector","tableId","table","constantsVariableName","valueId","rangeValue","_overWriteGraphConstants","RepulsionMixin","HierarchialRepulsionMixin","BarnesHutMixin","_toggleBarnesHut","barnesHutTree","_initializeForceCalculation","_calculateForces","_calculateGravitationalForces","_calculateNodeForces","_calculateSpringForcesWithSupport","_calculateHierarchicalSpringForces","_calculateSpringForces","supportNodes","supportNodeId","gravity","gravityForce","edgeLength","springForce","combinedClusterSize","node1","node2","node3","_calculateSpringForce","physicsConfiguration","hierarchicalLayoutDirections","parentElement","rangeElement","radioButton3","graph_repositionNodes","graph_generateOptions","nameArray","repulsingForce","a_base","minimumDistance","steepness","springFx","springFy","totalFx","totalFy","correctionFx","correctionFy","nodeCount","_formBarnesHutTree","_getForceContribution","children","NW","NE","SW","SE","parentBranch","childrenCount","centerOfMass","calcSize","MAX_VALUE","sizeDiff","minimumTreeSize","rootSize","halfRootSize","centerX","centerY","_splitBranch","_placeInTree","_updateBranchMass","totalMass","totalMassInv","biggestSize","skipMassUpdate","_placeInRegion","region","containedNode","_insertRegion","childSize","_drawTree","_drawBranch","branch"],"mappings":"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"} \ No newline at end of file diff --git a/dist/vis-light.min.js b/dist/vis-light.min.js index 5e00f40d..02e91288 100644 --- a/dist/vis-light.min.js +++ b/dist/vis-light.min.js @@ -22,15 +22,15 @@ * License for the specific language governing permissions and limitations under * the License. */ -!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e(require("moment"),require("hammerjs")):"function"==typeof define&&define.amd?define(["moment","hammerjs"],e):"object"==typeof exports?exports.vis=e(require("moment"),require("hammerjs")):t.vis=e(t.moment,t.hammerjs)}(this,function(__WEBPACK_EXTERNAL_MODULE_44__,__WEBPACK_EXTERNAL_MODULE_45__){return function(t){function e(s){if(i[s])return i[s].exports;var o=i[s]={exports:{},id:s,loaded:!1};return t[s].call(o.exports,o,o.exports,e),o.loaded=!0,o.exports}var i={};return e.m=t,e.c=i,e.p="",e(0)}([function(t,e,i){e.util=i(1),e.DOMutil=i(2),e.DataSet=i(3),e.DataView=i(4),e.Graph3d=i(5),e.graph3d={Camera:i(6),Filter:i(7),Point2d:i(8),Point3d:i(9),Slider:i(10),StepNumber:i(11)},e.Timeline=i(12),e.Graph2d=i(13),e.timeline={DataStep:i(14),Range:i(15),stack:i(16),TimeStep:i(17),components:{items:{Item:i(28),ItemBox:i(29),ItemPoint:i(30),ItemRange:i(31)},Component:i(18),CurrentTime:i(19),CustomTime:i(20),DataAxis:i(21),GraphGroup:i(22),Group:i(23),ItemSet:i(24),Legend:i(25),LineGraph:i(26),TimeAxis:i(27)}},e.Network=i(32),e.network={Edge:i(33),Groups:i(34),Images:i(35),Node:i(36),Popup:i(37),dotparser:i(38)},e.Graph=function(){throw new Error("Graph is renamed to Network. Please create a graph as new vis.Network(...)")}},function(module,exports,__webpack_require__){var moment=__webpack_require__(41);exports.isNumber=function(t){return t instanceof Number||"number"==typeof t},exports.isString=function(t){return t instanceof String||"string"==typeof t},exports.isDate=function(t){if(t instanceof Date)return!0;if(exports.isString(t)){var e=ASPDateRegex.exec(t);if(e)return!0;if(!isNaN(Date.parse(t)))return!0}return!1},exports.isDataTable=function(t){return"undefined"!=typeof google&&google.visualization&&google.visualization.DataTable&&t instanceof google.visualization.DataTable},exports.randomUUID=function(){var t=function(){return Math.floor(65536*Math.random()).toString(16)};return t()+t()+"-"+t()+"-"+t()+"-"+t()+"-"+t()+t()+t()},exports.extend=function(t){for(var e=1,i=arguments.length;i>e;e++){var s=arguments[e];for(var o in s)s.hasOwnProperty(o)&&(t[o]=s[o])}return t},exports.selectiveExtend=function(t,e){if(!Array.isArray(t))throw new Error("Array with property names expected as first argument");for(var i=2;ii;i++)if(t[i]!=e[i])return!1;return!0},exports.convert=function(t,e){var i;if(void 0===t)return void 0;if(null===t)return null;if(!e)return t;if("string"!=typeof e&&!(e instanceof String))throw new Error("Type must be a string");switch(e){case"boolean":case"Boolean":return Boolean(t);case"number":case"Number":return Number(t.valueOf());case"string":case"String":return String(t);case"Date":if(exports.isNumber(t))return new Date(t);if(t instanceof Date)return new Date(t.valueOf());if(moment.isMoment(t))return new Date(t.valueOf());if(exports.isString(t))return i=ASPDateRegex.exec(t),i?new Date(Number(i[1])):moment(t).toDate();throw new Error("Cannot convert object of type "+exports.getType(t)+" to type Date");case"Moment":if(exports.isNumber(t))return moment(t);if(t instanceof Date)return moment(t.valueOf());if(moment.isMoment(t))return moment(t);if(exports.isString(t))return i=ASPDateRegex.exec(t),moment(i?Number(i[1]):t);throw new Error("Cannot convert object of type "+exports.getType(t)+" to type Date");case"ISODate":if(exports.isNumber(t))return new Date(t);if(t instanceof Date)return t.toISOString();if(moment.isMoment(t))return t.toDate().toISOString();if(exports.isString(t))return i=ASPDateRegex.exec(t),i?new Date(Number(i[1])).toISOString():new Date(t).toISOString();throw new Error("Cannot convert object of type "+exports.getType(t)+" to type ISODate");case"ASPDate":if(exports.isNumber(t))return"/Date("+t+")/";if(t instanceof Date)return"/Date("+t.valueOf()+")/";if(exports.isString(t)){i=ASPDateRegex.exec(t);var s;return s=i?new Date(Number(i[1])).valueOf():new Date(t).valueOf(),"/Date("+s+")/"}throw new Error("Cannot convert object of type "+exports.getType(t)+" to type ASPDate");default:throw new Error('Unknown type "'+e+'"')}};var ASPDateRegex=/^\/?Date\((\-?\d+)/i;exports.getType=function(t){var e=typeof t;return"object"==e?null==t?"null":t instanceof Boolean?"Boolean":t instanceof Number?"Number":t instanceof String?"String":t instanceof Array?"Array":t instanceof Date?"Date":"Object":"number"==e?"Number":"boolean"==e?"Boolean":"string"==e?"String":e},exports.getAbsoluteLeft=function(t){return t.getBoundingClientRect().left+window.pageXOffset},exports.getAbsoluteTop=function(t){return t.getBoundingClientRect().top+window.pageYOffset},exports.addClassName=function(t,e){var i=t.className.split(" ");-1==i.indexOf(e)&&(i.push(e),t.className=i.join(" "))},exports.removeClassName=function(t,e){var i=t.className.split(" "),s=i.indexOf(e);-1!=s&&(i.splice(s,1),t.className=i.join(" "))},exports.forEach=function(t,e){var i,s;if(t instanceof Array)for(i=0,s=t.length;s>i;i++)e(t[i],i,t);else for(i in t)t.hasOwnProperty(i)&&e(t[i],i,t)},exports.toArray=function(t){var e=[];for(var i in t)t.hasOwnProperty(i)&&e.push(t[i]);return e},exports.updateProperty=function(t,e,i){return t[e]!==i?(t[e]=i,!0):!1},exports.addEventListener=function(t,e,i,s){t.addEventListener?(void 0===s&&(s=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.addEventListener(e,i,s)):t.attachEvent("on"+e,i)},exports.removeEventListener=function(t,e,i,s){t.removeEventListener?(void 0===s&&(s=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.removeEventListener(e,i,s)):t.detachEvent("on"+e,i)},exports.preventDefault=function(t){t||(t=window.event),t.preventDefault?t.preventDefault():t.returnValue=!1},exports.getTarget=function(t){t||(t=window.event);var e;return t.target?e=t.target:t.srcElement&&(e=t.srcElement),void 0!=e.nodeType&&3==e.nodeType&&(e=e.parentNode),e},exports.option={},exports.option.asBoolean=function(t,e){return"function"==typeof t&&(t=t()),null!=t?0!=t:e||null},exports.option.asNumber=function(t,e){return"function"==typeof t&&(t=t()),null!=t?Number(t)||e||null:e||null},exports.option.asString=function(t,e){return"function"==typeof t&&(t=t()),null!=t?String(t):e||null},exports.option.asSize=function(t,e){return"function"==typeof t&&(t=t()),exports.isString(t)?t:exports.isNumber(t)?t+"px":e||null},exports.option.asElement=function(t,e){return"function"==typeof t&&(t=t()),t||e||null},exports.GiveDec=function(Hex){var Value;return Value="A"==Hex?10:"B"==Hex?11:"C"==Hex?12:"D"==Hex?13:"E"==Hex?14:"F"==Hex?15:eval(Hex)},exports.GiveHex=function(t){var e;return e=10==t?"A":11==t?"B":12==t?"C":13==t?"D":14==t?"E":15==t?"F":""+t},exports.parseColor=function(t){var e;if(exports.isString(t))if(exports.isValidHex(t)){var i=exports.hexToHSV(t),s={h:i.h,s:.45*i.s,v:Math.min(1,1.05*i.v)},o={h:i.h,s:Math.min(1,1.25*i.v),v:.6*i.v},n=exports.HSVToHex(o.h,o.h,o.v),r=exports.HSVToHex(s.h,s.s,s.v);e={background:t,border:n,highlight:{background:r,border:n},hover:{background:r,border:n}}}else e={background:t,border:t,highlight:{background:t,border:t},hover:{background:t,border:t}};else e={},e.background=t.background||"white",e.border=t.border||e.background,exports.isString(t.highlight)?e.highlight={border:t.highlight,background:t.highlight}:(e.highlight={},e.highlight.background=t.highlight&&t.highlight.background||e.background,e.highlight.border=t.highlight&&t.highlight.border||e.border),exports.isString(t.hover)?e.hover={border:t.hover,background:t.hover}:(e.hover={},e.hover.background=t.hover&&t.hover.background||e.background,e.hover.border=t.hover&&t.hover.border||e.border);return e},exports.hexToRGB=function(t){t=t.replace("#","").toUpperCase();var e=exports.GiveDec(t.substring(0,1)),i=exports.GiveDec(t.substring(1,2)),s=exports.GiveDec(t.substring(2,3)),o=exports.GiveDec(t.substring(3,4)),n=exports.GiveDec(t.substring(4,5)),r=exports.GiveDec(t.substring(5,6)),a=16*e+i,h=16*s+o,i=16*n+r;return{r:a,g:h,b:i}},exports.RGBToHex=function(t,e,i){var s=exports.GiveHex(Math.floor(t/16)),o=exports.GiveHex(t%16),n=exports.GiveHex(Math.floor(e/16)),r=exports.GiveHex(e%16),a=exports.GiveHex(Math.floor(i/16)),h=exports.GiveHex(i%16),d=s+o+n+r+a+h;return"#"+d},exports.RGBToHSV=function(t,e,i){t/=255,e/=255,i/=255;var s=Math.min(t,Math.min(e,i)),o=Math.max(t,Math.max(e,i));if(s==o)return{h:0,s:0,v:s};var n=t==s?e-i:i==s?t-e:i-t,r=t==s?3:i==s?1:5,a=60*(r-n/(o-s))/360,h=(o-s)/o,d=o;return{h:a,s:h,v:d}},exports.HSVToRGB=function(t,e,i){var s,o,n,r=Math.floor(6*t),a=6*t-r,h=i*(1-e),d=i*(1-a*e),l=i*(1-(1-a)*e);switch(r%6){case 0:s=i,o=l,n=h;break;case 1:s=d,o=i,n=h;break;case 2:s=h,o=i,n=l;break;case 3:s=h,o=d,n=i;break;case 4:s=l,o=h,n=i;break;case 5:s=i,o=h,n=d}return{r:Math.floor(255*s),g:Math.floor(255*o),b:Math.floor(255*n)}},exports.HSVToHex=function(t,e,i){var s=exports.HSVToRGB(t,e,i);return exports.RGBToHex(s.r,s.g,s.b)},exports.hexToHSV=function(t){var e=exports.hexToRGB(t);return exports.RGBToHSV(e.r,e.g,e.b)},exports.isValidHex=function(t){var e=/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(t);return e},exports.selectiveBridgeObject=function(t,e){if("object"==typeof e){for(var i=Object.create(e),s=0;sa;)o=void 0===s?n[u][i]:n[u][i][s],n[u].isVisible(e)?h=!0:(o=r&&console.log("BinarySearch too many iterations. Aborting.")}return u},exports.binarySearchGeneric=function(t,e,i,s){var o,n,r,a,h=1e4,d=0,l=t,c=!1,p=0,u=l.length,m=p,g=u,f=Math.floor(.5*(u+p));if(0==u)f=-1;else if(1==u)r=l[f][i],f=r==e?0:-1;else{for(u-=1;0==c&&h>d;)n=l[Math.max(0,f-1)][i],r=l[f][i],a=l[Math.min(l.length-1,f+1)][i],r==e||e>n&&r>e||e>r&&a>e?(c=!0,r!=e&&("before"==s?e>n&&r>e&&(f=Math.max(0,f-1)):e>r&&a>e&&(f=Math.min(l.length-1,f+1)))):(e>r?m=Math.floor(.5*(u+p)):g=Math.floor(.5*(u+p)),o=Math.floor(.5*(u+p)),p==m&&u==g?(f=-1,c=!0):(u=g,p=m,f=Math.floor(.5*(u+p)))),d++;d>=h&&console.log("BinarySearch too many iterations. Aborting.")}return f}},function(t,e){e.prepareElements=function(t){for(var e in t)t.hasOwnProperty(e)&&(t[e].redundant=t[e].used,t[e].used=[])},e.cleanupElements=function(t){for(var e in t)if(t.hasOwnProperty(e)&&t[e].redundant){for(var i=0;i0?(s=e[t].redundant[0],e[t].redundant.shift()):(s=document.createElementNS("http://www.w3.org/2000/svg",t),i.appendChild(s)):(s=document.createElementNS("http://www.w3.org/2000/svg",t),e[t]={used:[],redundant:[]},i.appendChild(s)),e[t].used.push(s),s},e.getDOMElement=function(t,e,i){var s;return e.hasOwnProperty(t)?e[t].redundant.length>0?(s=e[t].redundant[0],e[t].redundant.shift()):(s=document.createElement(t),i.appendChild(s)):(s=document.createElement(t),e[t]={used:[],redundant:[]},i.appendChild(s)),e[t].used.push(s),s},e.drawPoint=function(t,i,s,o,n){var r;return"circle"==s.options.drawPoints.style?(r=e.getSVGElement("circle",o,n),r.setAttributeNS(null,"cx",t),r.setAttributeNS(null,"cy",i),r.setAttributeNS(null,"r",.5*s.options.drawPoints.size),r.setAttributeNS(null,"class",s.className+" point")):(r=e.getSVGElement("rect",o,n),r.setAttributeNS(null,"x",t-.5*s.options.drawPoints.size),r.setAttributeNS(null,"y",i-.5*s.options.drawPoints.size),r.setAttributeNS(null,"width",s.options.drawPoints.size),r.setAttributeNS(null,"height",s.options.drawPoints.size),r.setAttributeNS(null,"class",s.className+" point")),r},e.drawBar=function(t,i,s,o,n,r,a){var h=e.getSVGElement("rect",r,a);h.setAttributeNS(null,"x",t-.5*s),h.setAttributeNS(null,"y",i),h.setAttributeNS(null,"width",s),h.setAttributeNS(null,"height",o),h.setAttributeNS(null,"class",n)}},function(t,e,i){function s(t,e){if(!t||Array.isArray(t)||o.isDataTable(t)||(e=t,t=null),this._options=e||{},this._data={},this._fieldId=this._options.fieldId||"id",this._type={},this._options.type)for(var i in this._options.type)if(this._options.type.hasOwnProperty(i)){var s=this._options.type[i];this._type[i]="Date"==s||"ISODate"==s||"ASPDate"==s?"Date":s}if(this._options.convert)throw new Error('Option "convert" is deprecated. Use "type" instead.');this._subscribers={},t&&this.add(t)}var o=i(1);s.prototype.on=function(t,e){var i=this._subscribers[t];i||(i=[],this._subscribers[t]=i),i.push({callback:e})},s.prototype.subscribe=s.prototype.on,s.prototype.off=function(t,e){var i=this._subscribers[t];i&&(this._subscribers[t]=i.filter(function(t){return t.callback!=e}))},s.prototype.unsubscribe=s.prototype.off,s.prototype._trigger=function(t,e,i){if("*"==t)throw new Error("Cannot trigger event *");var s=[];t in this._subscribers&&(s=s.concat(this._subscribers[t])),"*"in this._subscribers&&(s=s.concat(this._subscribers["*"]));for(var o=0;or;r++)i=n._addItem(t[r]),s.push(i);else if(o.isDataTable(t))for(var h=this._getColumnNames(t),d=0,l=t.getNumberOfRows();l>d;d++){for(var c={},p=0,u=h.length;u>p;p++){var m=h[p];c[m]=t.getValue(d,p)}i=n._addItem(c),s.push(i)}else{if(!(t instanceof Object))throw new Error("Unknown dataType");i=n._addItem(t),s.push(i)}return s.length&&this._trigger("add",{items:s},e),s},s.prototype.update=function(t,e){var i=[],s=[],n=this,r=n._fieldId,a=function(t){var e=t[r];n._data[e]?(e=n._updateItem(t),s.push(e)):(e=n._addItem(t),i.push(e))};if(Array.isArray(t))for(var h=0,d=t.length;d>h;h++)a(t[h]);else if(o.isDataTable(t))for(var l=this._getColumnNames(t),c=0,p=t.getNumberOfRows();p>c;c++){for(var u={},m=0,g=l.length;g>m;m++){var f=l[m];u[f]=t.getValue(c,m)}a(u)}else{if(!(t instanceof Object))throw new Error("Unknown dataType");a(t)}return i.length&&this._trigger("add",{items:i},e),s.length&&this._trigger("update",{items:s},e),i.concat(s)},s.prototype.get=function(){var t,e,i,s,n=this,r=o.getType(arguments[0]);"String"==r||"Number"==r?(t=arguments[0],i=arguments[1],s=arguments[2]):"Array"==r?(e=arguments[0],i=arguments[1],s=arguments[2]):(i=arguments[0],s=arguments[1]);var a;if(i&&i.returnType){var h=["DataTable","Array","Object"];if(a=-1==h.indexOf(i.returnType)?"Array":i.returnType,s&&a!=o.getType(s))throw new Error('Type of parameter "data" ('+o.getType(s)+") does not correspond with specified options.type ("+i.type+")");if("DataTable"==a&&!o.isDataTable(s))throw new Error('Parameter "data" must be a DataTable when options.type is "DataTable"')}else a=s&&"DataTable"==o.getType(s)?"DataTable":"Array";var d,l,c,p,u=i&&i.type||this._options.type,m=i&&i.filter,g=[];if(void 0!=t)d=n._getItem(t,u),m&&!m(d)&&(d=null);else if(void 0!=e)for(c=0,p=e.length;p>c;c++)d=n._getItem(e[c],u),(!m||m(d))&&g.push(d);else for(l in this._data)this._data.hasOwnProperty(l)&&(d=n._getItem(l,u),(!m||m(d))&&g.push(d));if(i&&i.order&&void 0==t&&this._sort(g,i.order),i&&i.fields){var f=i.fields;if(void 0!=t)d=this._filterFields(d,f);else for(c=0,p=g.length;p>c;c++)g[c]=this._filterFields(g[c],f)}if("DataTable"==a){var v=this._getColumnNames(s);if(void 0!=t)n._appendRow(s,v,d);else for(c=0;cc;c++)s.push(g[c]);return s}return g},s.prototype.getIds=function(t){var e,i,s,o,n,r=this._data,a=t&&t.filter,h=t&&t.order,d=t&&t.type||this._options.type,l=[];if(a)if(h){n=[];for(s in r)r.hasOwnProperty(s)&&(o=this._getItem(s,d),a(o)&&n.push(o));for(this._sort(n,h),e=0,i=n.length;i>e;e++)l[e]=n[e][this._fieldId]}else for(s in r)r.hasOwnProperty(s)&&(o=this._getItem(s,d),a(o)&&l.push(o[this._fieldId]));else if(h){n=[];for(s in r)r.hasOwnProperty(s)&&n.push(r[s]);for(this._sort(n,h),e=0,i=n.length;i>e;e++)l[e]=n[e][this._fieldId]}else for(s in r)r.hasOwnProperty(s)&&(o=r[s],l.push(o[this._fieldId]));return l},s.prototype.getDataSet=function(){return this},s.prototype.forEach=function(t,e){var i,s,o=e&&e.filter,n=e&&e.type||this._options.type,r=this._data;if(e&&e.order)for(var a=this.get(e),h=0,d=a.length;d>h;h++)i=a[h],s=i[this._fieldId],t(i,s);else for(s in r)r.hasOwnProperty(s)&&(i=this._getItem(s,n),(!o||o(i))&&t(i,s))},s.prototype.map=function(t,e){var i,s=e&&e.filter,o=e&&e.type||this._options.type,n=[],r=this._data;for(var a in r)r.hasOwnProperty(a)&&(i=this._getItem(a,o),(!s||s(i))&&n.push(t(i,a)));return e&&e.order&&this._sort(n,e.order),n},s.prototype._filterFields=function(t,e){var i={};for(var s in t)t.hasOwnProperty(s)&&-1!=e.indexOf(s)&&(i[s]=t[s]);return i},s.prototype._sort=function(t,e){if(o.isString(e)){var i=e;t.sort(function(t,e){var s=t[i],o=e[i];return s>o?1:o>s?-1:0})}else{if("function"!=typeof e)throw new TypeError("Order must be a function or a string");t.sort(e)}},s.prototype.remove=function(t,e){var i,s,o,n=[];if(Array.isArray(t))for(i=0,s=t.length;s>i;i++)o=this._remove(t[i]),null!=o&&n.push(o);else o=this._remove(t),null!=o&&n.push(o);return n.length&&this._trigger("remove",{items:n},e),n},s.prototype._remove=function(t){if(o.isNumber(t)||o.isString(t)){if(this._data[t])return delete this._data[t],t}else if(t instanceof Object){var e=t[this._fieldId];if(e&&this._data[e])return delete this._data[e],e}return null},s.prototype.clear=function(t){var e=Object.keys(this._data);return this._data={},this._trigger("remove",{items:e},t),e},s.prototype.max=function(t){var e=this._data,i=null,s=null;for(var o in e)if(e.hasOwnProperty(o)){var n=e[o],r=n[t];null!=r&&(!i||r>s)&&(i=n,s=r)}return i},s.prototype.min=function(t){var e=this._data,i=null,s=null;for(var o in e)if(e.hasOwnProperty(o)){var n=e[o],r=n[t];null!=r&&(!i||s>r)&&(i=n,s=r)}return i},s.prototype.distinct=function(t){var e,i=this._data,s=[],n=this._options.type&&this._options.type[t]||null,r=0;for(var a in i)if(i.hasOwnProperty(a)){var h=i[a],d=h[t],l=!1;for(e=0;r>e;e++)if(s[e]==d){l=!0;break}l||void 0===d||(s[r]=d,r++)}if(n)for(e=0;ei;i++)e[i]=t.getColumnId(i)||t.getColumnLabel(i);return e},s.prototype._appendRow=function(t,e,i){for(var s=t.addRow(),o=0,n=e.length;n>o;o++){var r=e[o];t.setValue(s,o,i[r])}},t.exports=s},function(t,e,i){function s(t,e){this._data=null,this._ids={},this._options=e||{},this._fieldId="id",this._subscribers={};var i=this;this.listener=function(){i._onEvent.apply(i,arguments)},this.setData(t)}var o=i(1),n=i(3);s.prototype.setData=function(t){var e,i,s;if(this._data){this._data.unsubscribe&&this._data.unsubscribe("*",this.listener),e=[];for(var o in this._ids)this._ids.hasOwnProperty(o)&&e.push(o);this._ids={},this._trigger("remove",{items:e})}if(this._data=t,this._data){for(this._fieldId=this._options.fieldId||this._data&&this._data.options&&this._data.options.fieldId||"id",e=this._data.getIds({filter:this._options&&this._options.filter}),i=0,s=e.length;s>i;i++)o=e[i],this._ids[o]=!0;this._trigger("add",{items:e}),this._data.on&&this._data.on("*",this.listener)}},s.prototype.get=function(){var t,e,i,s=this,n=o.getType(arguments[0]);"String"==n||"Number"==n||"Array"==n?(t=arguments[0],e=arguments[1],i=arguments[2]):(e=arguments[0],i=arguments[1]);var r=o.extend({},this._options,e);this._options.filter&&e&&e.filter&&(r.filter=function(t){return s._options.filter(t)&&e.filter(t)});var a=[];return void 0!=t&&a.push(t),a.push(r),a.push(i),this._data&&this._data.get.apply(this._data,a)},s.prototype.getIds=function(t){var e;if(this._data){var i,s=this._options.filter;i=t&&t.filter?s?function(e){return s(e)&&t.filter(e)}:t.filter:s,e=this._data.getIds({filter:i,order:t&&t.order})}else e=[];return e},s.prototype.getDataSet=function(){for(var t=this;t instanceof s;)t=t._data;return t||null},s.prototype._onEvent=function(t,e,i){var s,o,n,r,a=e&&e.items,h=this._data,d=[],l=[],c=[];if(a&&h){switch(t){case"add":for(s=0,o=a.length;o>s;s++)n=a[s],r=this.get(n),r&&(this._ids[n]=!0,d.push(n));break;case"update":for(s=0,o=a.length;o>s;s++)n=a[s],r=this.get(n),r?this._ids[n]?l.push(n):(this._ids[n]=!0,d.push(n)):this._ids[n]&&(delete this._ids[n],c.push(n));break;case"remove":for(s=0,o=a.length;o>s;s++)n=a[s],this._ids[n]&&(delete this._ids[n],c.push(n))}d.length&&this._trigger("add",{items:d},i),l.length&&this._trigger("update",{items:l},i),c.length&&this._trigger("remove",{items:c},i)}},s.prototype.on=n.prototype.on,s.prototype.off=n.prototype.off,s.prototype._trigger=n.prototype._trigger,s.prototype.subscribe=s.prototype.on,s.prototype.unsubscribe=s.prototype.off,t.exports=s},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this.containerElement=t,this.width="400px",this.height="400px",this.margin=10,this.defaultXCenter="55%",this.defaultYCenter="50%",this.xLabel="x",this.yLabel="y",this.zLabel="z",this.filterLabel="time",this.legendLabel="value",this.style=s.STYLE.DOT,this.showPerspective=!0,this.showGrid=!0,this.keepAspectRatio=!0,this.showShadow=!1,this.showGrayBottom=!1,this.showTooltip=!1,this.verticalRatio=.5,this.animationInterval=1e3,this.animationPreload=!1,this.camera=new l,this.eye=new h(0,0,-1),this.dataTable=null,this.dataPoints=null,this.colX=void 0,this.colY=void 0,this.colZ=void 0,this.colValue=void 0,this.colFilter=void 0,this.xMin=0,this.xStep=void 0,this.xMax=1,this.yMin=0,this.yStep=void 0,this.yMax=1,this.zMin=0,this.zStep=void 0,this.zMax=1,this.valueMin=0,this.valueMax=1,this.xBarWidth=1,this.yBarWidth=1,this.colorAxis="#4D4D4D",this.colorGrid="#D3D3D3",this.colorDot="#7DC1FF",this.colorDotBorder="#3267D2",this.create(),this.setOptions(i),e&&this.setData(e)}var o=i(46),n=i(3),r=i(4),a=i(1),h=i(9),d=i(8),l=i(6),c=i(7),p=i(10),u=i(11);o(s.prototype),s.prototype._setScale=function(){this.scale=new h(1/(this.xMax-this.xMin),1/(this.yMax-this.yMin),1/(this.zMax-this.zMin)),this.keepAspectRatio&&(this.scale.x3&&(this.colFilter=3);else{if(this.style!==s.STYLE.DOTCOLOR&&this.style!==s.STYLE.DOTSIZE&&this.style!==s.STYLE.BARCOLOR&&this.style!==s.STYLE.BARSIZE)throw'Unknown style "'+this.style+'"';this.colX=0,this.colY=1,this.colZ=2,this.colValue=3,t.getNumberOfColumns()>4&&(this.colFilter=4)}},s.prototype.getNumberOfRows=function(t){return t.length},s.prototype.getNumberOfColumns=function(t){var e=0;for(var i in t[0])t[0].hasOwnProperty(i)&&e++;return e},s.prototype.getDistinctValues=function(t,e){for(var i=[],s=0;st[s][e]&&(i.min=t[s][e]),i.maxe;e++){var s=arguments[e];for(var o in s)s.hasOwnProperty(o)&&(t[o]=s[o])}return t},exports.selectiveExtend=function(t,e){if(!Array.isArray(t))throw new Error("Array with property names expected as first argument");for(var i=2;ii;i++)if(t[i]!=e[i])return!1;return!0},exports.convert=function(t,e){var i;if(void 0===t)return void 0;if(null===t)return null;if(!e)return t;if("string"!=typeof e&&!(e instanceof String))throw new Error("Type must be a string");switch(e){case"boolean":case"Boolean":return Boolean(t);case"number":case"Number":return Number(t.valueOf());case"string":case"String":return String(t);case"Date":if(exports.isNumber(t))return new Date(t);if(t instanceof Date)return new Date(t.valueOf());if(moment.isMoment(t))return new Date(t.valueOf());if(exports.isString(t))return i=ASPDateRegex.exec(t),i?new Date(Number(i[1])):moment(t).toDate();throw new Error("Cannot convert object of type "+exports.getType(t)+" to type Date");case"Moment":if(exports.isNumber(t))return moment(t);if(t instanceof Date)return moment(t.valueOf());if(moment.isMoment(t))return moment(t);if(exports.isString(t))return i=ASPDateRegex.exec(t),moment(i?Number(i[1]):t);throw new Error("Cannot convert object of type "+exports.getType(t)+" to type Date");case"ISODate":if(exports.isNumber(t))return new Date(t);if(t instanceof Date)return t.toISOString();if(moment.isMoment(t))return t.toDate().toISOString();if(exports.isString(t))return i=ASPDateRegex.exec(t),i?new Date(Number(i[1])).toISOString():new Date(t).toISOString();throw new Error("Cannot convert object of type "+exports.getType(t)+" to type ISODate");case"ASPDate":if(exports.isNumber(t))return"/Date("+t+")/";if(t instanceof Date)return"/Date("+t.valueOf()+")/";if(exports.isString(t)){i=ASPDateRegex.exec(t);var s;return s=i?new Date(Number(i[1])).valueOf():new Date(t).valueOf(),"/Date("+s+")/"}throw new Error("Cannot convert object of type "+exports.getType(t)+" to type ASPDate");default:throw new Error('Unknown type "'+e+'"')}};var ASPDateRegex=/^\/?Date\((\-?\d+)/i;exports.getType=function(t){var e=typeof t;return"object"==e?null==t?"null":t instanceof Boolean?"Boolean":t instanceof Number?"Number":t instanceof String?"String":t instanceof Array?"Array":t instanceof Date?"Date":"Object":"number"==e?"Number":"boolean"==e?"Boolean":"string"==e?"String":e},exports.getAbsoluteLeft=function(t){return t.getBoundingClientRect().left+window.pageXOffset},exports.getAbsoluteTop=function(t){return t.getBoundingClientRect().top+window.pageYOffset},exports.addClassName=function(t,e){var i=t.className.split(" ");-1==i.indexOf(e)&&(i.push(e),t.className=i.join(" "))},exports.removeClassName=function(t,e){var i=t.className.split(" "),s=i.indexOf(e);-1!=s&&(i.splice(s,1),t.className=i.join(" "))},exports.forEach=function(t,e){var i,s;if(t instanceof Array)for(i=0,s=t.length;s>i;i++)e(t[i],i,t);else for(i in t)t.hasOwnProperty(i)&&e(t[i],i,t)},exports.toArray=function(t){var e=[];for(var i in t)t.hasOwnProperty(i)&&e.push(t[i]);return e},exports.updateProperty=function(t,e,i){return t[e]!==i?(t[e]=i,!0):!1},exports.addEventListener=function(t,e,i,s){t.addEventListener?(void 0===s&&(s=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.addEventListener(e,i,s)):t.attachEvent("on"+e,i)},exports.removeEventListener=function(t,e,i,s){t.removeEventListener?(void 0===s&&(s=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.removeEventListener(e,i,s)):t.detachEvent("on"+e,i)},exports.preventDefault=function(t){t||(t=window.event),t.preventDefault?t.preventDefault():t.returnValue=!1},exports.getTarget=function(t){t||(t=window.event);var e;return t.target?e=t.target:t.srcElement&&(e=t.srcElement),void 0!=e.nodeType&&3==e.nodeType&&(e=e.parentNode),e},exports.option={},exports.option.asBoolean=function(t,e){return"function"==typeof t&&(t=t()),null!=t?0!=t:e||null},exports.option.asNumber=function(t,e){return"function"==typeof t&&(t=t()),null!=t?Number(t)||e||null:e||null},exports.option.asString=function(t,e){return"function"==typeof t&&(t=t()),null!=t?String(t):e||null},exports.option.asSize=function(t,e){return"function"==typeof t&&(t=t()),exports.isString(t)?t:exports.isNumber(t)?t+"px":e||null},exports.option.asElement=function(t,e){return"function"==typeof t&&(t=t()),t||e||null},exports.GiveDec=function(Hex){var Value;return Value="A"==Hex?10:"B"==Hex?11:"C"==Hex?12:"D"==Hex?13:"E"==Hex?14:"F"==Hex?15:eval(Hex)},exports.GiveHex=function(t){var e;return e=10==t?"A":11==t?"B":12==t?"C":13==t?"D":14==t?"E":15==t?"F":""+t},exports.parseColor=function(t){var e;if(exports.isString(t))if(exports.isValidHex(t)){var i=exports.hexToHSV(t),s={h:i.h,s:.45*i.s,v:Math.min(1,1.05*i.v)},o={h:i.h,s:Math.min(1,1.25*i.v),v:.6*i.v},n=exports.HSVToHex(o.h,o.h,o.v),r=exports.HSVToHex(s.h,s.s,s.v);e={background:t,border:n,highlight:{background:r,border:n},hover:{background:r,border:n}}}else e={background:t,border:t,highlight:{background:t,border:t},hover:{background:t,border:t}};else e={},e.background=t.background||"white",e.border=t.border||e.background,exports.isString(t.highlight)?e.highlight={border:t.highlight,background:t.highlight}:(e.highlight={},e.highlight.background=t.highlight&&t.highlight.background||e.background,e.highlight.border=t.highlight&&t.highlight.border||e.border),exports.isString(t.hover)?e.hover={border:t.hover,background:t.hover}:(e.hover={},e.hover.background=t.hover&&t.hover.background||e.background,e.hover.border=t.hover&&t.hover.border||e.border);return e},exports.hexToRGB=function(t){t=t.replace("#","").toUpperCase();var e=exports.GiveDec(t.substring(0,1)),i=exports.GiveDec(t.substring(1,2)),s=exports.GiveDec(t.substring(2,3)),o=exports.GiveDec(t.substring(3,4)),n=exports.GiveDec(t.substring(4,5)),r=exports.GiveDec(t.substring(5,6)),a=16*e+i,h=16*s+o,i=16*n+r;return{r:a,g:h,b:i}},exports.RGBToHex=function(t,e,i){var s=exports.GiveHex(Math.floor(t/16)),o=exports.GiveHex(t%16),n=exports.GiveHex(Math.floor(e/16)),r=exports.GiveHex(e%16),a=exports.GiveHex(Math.floor(i/16)),h=exports.GiveHex(i%16),d=s+o+n+r+a+h;return"#"+d},exports.RGBToHSV=function(t,e,i){t/=255,e/=255,i/=255;var s=Math.min(t,Math.min(e,i)),o=Math.max(t,Math.max(e,i));if(s==o)return{h:0,s:0,v:s};var n=t==s?e-i:i==s?t-e:i-t,r=t==s?3:i==s?1:5,a=60*(r-n/(o-s))/360,h=(o-s)/o,d=o;return{h:a,s:h,v:d}},exports.HSVToRGB=function(t,e,i){var s,o,n,r=Math.floor(6*t),a=6*t-r,h=i*(1-e),d=i*(1-a*e),l=i*(1-(1-a)*e);switch(r%6){case 0:s=i,o=l,n=h;break;case 1:s=d,o=i,n=h;break;case 2:s=h,o=i,n=l;break;case 3:s=h,o=d,n=i;break;case 4:s=l,o=h,n=i;break;case 5:s=i,o=h,n=d}return{r:Math.floor(255*s),g:Math.floor(255*o),b:Math.floor(255*n)}},exports.HSVToHex=function(t,e,i){var s=exports.HSVToRGB(t,e,i);return exports.RGBToHex(s.r,s.g,s.b)},exports.hexToHSV=function(t){var e=exports.hexToRGB(t);return exports.RGBToHSV(e.r,e.g,e.b)},exports.isValidHex=function(t){var e=/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(t);return e},exports.selectiveBridgeObject=function(t,e){if("object"==typeof e){for(var i=Object.create(e),s=0;sa;)o=void 0===s?n[u][i]:n[u][i][s],n[u].isVisible(e)?h=!0:(o=r&&console.log("BinarySearch too many iterations. Aborting.")}return u},exports.binarySearchGeneric=function(t,e,i,s){var o,n,r,a,h=1e4,d=0,l=t,c=!1,p=0,u=l.length,m=p,g=u,f=Math.floor(.5*(u+p));if(0==u)f=-1;else if(1==u)r=l[f][i],f=r==e?0:-1;else{for(u-=1;0==c&&h>d;)n=l[Math.max(0,f-1)][i],r=l[f][i],a=l[Math.min(l.length-1,f+1)][i],r==e||e>n&&r>e||e>r&&a>e?(c=!0,r!=e&&("before"==s?e>n&&r>e&&(f=Math.max(0,f-1)):e>r&&a>e&&(f=Math.min(l.length-1,f+1)))):(e>r?m=Math.floor(.5*(u+p)):g=Math.floor(.5*(u+p)),o=Math.floor(.5*(u+p)),p==m&&u==g?(f=-1,c=!0):(u=g,p=m,f=Math.floor(.5*(u+p)))),d++;d>=h&&console.log("BinarySearch too many iterations. Aborting.")}return f}},function(t,e){e.prepareElements=function(t){for(var e in t)t.hasOwnProperty(e)&&(t[e].redundant=t[e].used,t[e].used=[])},e.cleanupElements=function(t){for(var e in t)if(t.hasOwnProperty(e)&&t[e].redundant){for(var i=0;i0?(s=e[t].redundant[0],e[t].redundant.shift()):(s=document.createElementNS("http://www.w3.org/2000/svg",t),i.appendChild(s)):(s=document.createElementNS("http://www.w3.org/2000/svg",t),e[t]={used:[],redundant:[]},i.appendChild(s)),e[t].used.push(s),s},e.getDOMElement=function(t,e,i){var s;return e.hasOwnProperty(t)?e[t].redundant.length>0?(s=e[t].redundant[0],e[t].redundant.shift()):(s=document.createElement(t),i.appendChild(s)):(s=document.createElement(t),e[t]={used:[],redundant:[]},i.appendChild(s)),e[t].used.push(s),s},e.drawPoint=function(t,i,s,o,n){var r;return"circle"==s.options.drawPoints.style?(r=e.getSVGElement("circle",o,n),r.setAttributeNS(null,"cx",t),r.setAttributeNS(null,"cy",i),r.setAttributeNS(null,"r",.5*s.options.drawPoints.size),r.setAttributeNS(null,"class",s.className+" point")):(r=e.getSVGElement("rect",o,n),r.setAttributeNS(null,"x",t-.5*s.options.drawPoints.size),r.setAttributeNS(null,"y",i-.5*s.options.drawPoints.size),r.setAttributeNS(null,"width",s.options.drawPoints.size),r.setAttributeNS(null,"height",s.options.drawPoints.size),r.setAttributeNS(null,"class",s.className+" point")),r},e.drawBar=function(t,i,s,o,n,r,a){var h=e.getSVGElement("rect",r,a);h.setAttributeNS(null,"x",t-.5*s),h.setAttributeNS(null,"y",i),h.setAttributeNS(null,"width",s),h.setAttributeNS(null,"height",o),h.setAttributeNS(null,"class",n)}},function(t,e,i){function s(t,e){if(!t||Array.isArray(t)||o.isDataTable(t)||(e=t,t=null),this._options=e||{},this._data={},this._fieldId=this._options.fieldId||"id",this._type={},this._options.type)for(var i in this._options.type)if(this._options.type.hasOwnProperty(i)){var s=this._options.type[i];this._type[i]="Date"==s||"ISODate"==s||"ASPDate"==s?"Date":s}if(this._options.convert)throw new Error('Option "convert" is deprecated. Use "type" instead.');this._subscribers={},t&&this.add(t)}var o=i(1);s.prototype.on=function(t,e){var i=this._subscribers[t];i||(i=[],this._subscribers[t]=i),i.push({callback:e})},s.prototype.subscribe=s.prototype.on,s.prototype.off=function(t,e){var i=this._subscribers[t];i&&(this._subscribers[t]=i.filter(function(t){return t.callback!=e}))},s.prototype.unsubscribe=s.prototype.off,s.prototype._trigger=function(t,e,i){if("*"==t)throw new Error("Cannot trigger event *");var s=[];t in this._subscribers&&(s=s.concat(this._subscribers[t])),"*"in this._subscribers&&(s=s.concat(this._subscribers["*"]));for(var o=0;or;r++)i=n._addItem(t[r]),s.push(i);else if(o.isDataTable(t))for(var h=this._getColumnNames(t),d=0,l=t.getNumberOfRows();l>d;d++){for(var c={},p=0,u=h.length;u>p;p++){var m=h[p];c[m]=t.getValue(d,p)}i=n._addItem(c),s.push(i)}else{if(!(t instanceof Object))throw new Error("Unknown dataType");i=n._addItem(t),s.push(i)}return s.length&&this._trigger("add",{items:s},e),s},s.prototype.update=function(t,e){var i=[],s=[],n=this,r=n._fieldId,a=function(t){var e=t[r];n._data[e]?(e=n._updateItem(t),s.push(e)):(e=n._addItem(t),i.push(e))};if(Array.isArray(t))for(var h=0,d=t.length;d>h;h++)a(t[h]);else if(o.isDataTable(t))for(var l=this._getColumnNames(t),c=0,p=t.getNumberOfRows();p>c;c++){for(var u={},m=0,g=l.length;g>m;m++){var f=l[m];u[f]=t.getValue(c,m)}a(u)}else{if(!(t instanceof Object))throw new Error("Unknown dataType");a(t)}return i.length&&this._trigger("add",{items:i},e),s.length&&this._trigger("update",{items:s},e),i.concat(s)},s.prototype.get=function(){var t,e,i,s,n=this,r=o.getType(arguments[0]);"String"==r||"Number"==r?(t=arguments[0],i=arguments[1],s=arguments[2]):"Array"==r?(e=arguments[0],i=arguments[1],s=arguments[2]):(i=arguments[0],s=arguments[1]);var a;if(i&&i.returnType){var h=["DataTable","Array","Object"];if(a=-1==h.indexOf(i.returnType)?"Array":i.returnType,s&&a!=o.getType(s))throw new Error('Type of parameter "data" ('+o.getType(s)+") does not correspond with specified options.type ("+i.type+")");if("DataTable"==a&&!o.isDataTable(s))throw new Error('Parameter "data" must be a DataTable when options.type is "DataTable"')}else a=s&&"DataTable"==o.getType(s)?"DataTable":"Array";var d,l,c,p,u=i&&i.type||this._options.type,m=i&&i.filter,g=[];if(void 0!=t)d=n._getItem(t,u),m&&!m(d)&&(d=null);else if(void 0!=e)for(c=0,p=e.length;p>c;c++)d=n._getItem(e[c],u),(!m||m(d))&&g.push(d);else for(l in this._data)this._data.hasOwnProperty(l)&&(d=n._getItem(l,u),(!m||m(d))&&g.push(d));if(i&&i.order&&void 0==t&&this._sort(g,i.order),i&&i.fields){var f=i.fields;if(void 0!=t)d=this._filterFields(d,f);else for(c=0,p=g.length;p>c;c++)g[c]=this._filterFields(g[c],f)}if("DataTable"==a){var v=this._getColumnNames(s);if(void 0!=t)n._appendRow(s,v,d);else for(c=0;cc;c++)s.push(g[c]);return s}return g},s.prototype.getIds=function(t){var e,i,s,o,n,r=this._data,a=t&&t.filter,h=t&&t.order,d=t&&t.type||this._options.type,l=[];if(a)if(h){n=[];for(s in r)r.hasOwnProperty(s)&&(o=this._getItem(s,d),a(o)&&n.push(o));for(this._sort(n,h),e=0,i=n.length;i>e;e++)l[e]=n[e][this._fieldId]}else for(s in r)r.hasOwnProperty(s)&&(o=this._getItem(s,d),a(o)&&l.push(o[this._fieldId]));else if(h){n=[];for(s in r)r.hasOwnProperty(s)&&n.push(r[s]);for(this._sort(n,h),e=0,i=n.length;i>e;e++)l[e]=n[e][this._fieldId]}else for(s in r)r.hasOwnProperty(s)&&(o=r[s],l.push(o[this._fieldId]));return l},s.prototype.getDataSet=function(){return this},s.prototype.forEach=function(t,e){var i,s,o=e&&e.filter,n=e&&e.type||this._options.type,r=this._data;if(e&&e.order)for(var a=this.get(e),h=0,d=a.length;d>h;h++)i=a[h],s=i[this._fieldId],t(i,s);else for(s in r)r.hasOwnProperty(s)&&(i=this._getItem(s,n),(!o||o(i))&&t(i,s))},s.prototype.map=function(t,e){var i,s=e&&e.filter,o=e&&e.type||this._options.type,n=[],r=this._data;for(var a in r)r.hasOwnProperty(a)&&(i=this._getItem(a,o),(!s||s(i))&&n.push(t(i,a)));return e&&e.order&&this._sort(n,e.order),n},s.prototype._filterFields=function(t,e){var i={};for(var s in t)t.hasOwnProperty(s)&&-1!=e.indexOf(s)&&(i[s]=t[s]);return i},s.prototype._sort=function(t,e){if(o.isString(e)){var i=e;t.sort(function(t,e){var s=t[i],o=e[i];return s>o?1:o>s?-1:0})}else{if("function"!=typeof e)throw new TypeError("Order must be a function or a string");t.sort(e)}},s.prototype.remove=function(t,e){var i,s,o,n=[];if(Array.isArray(t))for(i=0,s=t.length;s>i;i++)o=this._remove(t[i]),null!=o&&n.push(o);else o=this._remove(t),null!=o&&n.push(o);return n.length&&this._trigger("remove",{items:n},e),n},s.prototype._remove=function(t){if(o.isNumber(t)||o.isString(t)){if(this._data[t])return delete this._data[t],t}else if(t instanceof Object){var e=t[this._fieldId];if(e&&this._data[e])return delete this._data[e],e}return null},s.prototype.clear=function(t){var e=Object.keys(this._data);return this._data={},this._trigger("remove",{items:e},t),e},s.prototype.max=function(t){var e=this._data,i=null,s=null;for(var o in e)if(e.hasOwnProperty(o)){var n=e[o],r=n[t];null!=r&&(!i||r>s)&&(i=n,s=r)}return i},s.prototype.min=function(t){var e=this._data,i=null,s=null;for(var o in e)if(e.hasOwnProperty(o)){var n=e[o],r=n[t];null!=r&&(!i||s>r)&&(i=n,s=r)}return i},s.prototype.distinct=function(t){var e,i=this._data,s=[],n=this._options.type&&this._options.type[t]||null,r=0;for(var a in i)if(i.hasOwnProperty(a)){var h=i[a],d=h[t],l=!1;for(e=0;r>e;e++)if(s[e]==d){l=!0;break}l||void 0===d||(s[r]=d,r++)}if(n)for(e=0;ei;i++)e[i]=t.getColumnId(i)||t.getColumnLabel(i);return e},s.prototype._appendRow=function(t,e,i){for(var s=t.addRow(),o=0,n=e.length;n>o;o++){var r=e[o];t.setValue(s,o,i[r])}},t.exports=s},function(t,e,i){function s(t,e){this._data=null,this._ids={},this._options=e||{},this._fieldId="id",this._subscribers={};var i=this;this.listener=function(){i._onEvent.apply(i,arguments)},this.setData(t)}var o=i(1),n=i(3);s.prototype.setData=function(t){var e,i,s;if(this._data){this._data.unsubscribe&&this._data.unsubscribe("*",this.listener),e=[];for(var o in this._ids)this._ids.hasOwnProperty(o)&&e.push(o);this._ids={},this._trigger("remove",{items:e})}if(this._data=t,this._data){for(this._fieldId=this._options.fieldId||this._data&&this._data.options&&this._data.options.fieldId||"id",e=this._data.getIds({filter:this._options&&this._options.filter}),i=0,s=e.length;s>i;i++)o=e[i],this._ids[o]=!0;this._trigger("add",{items:e}),this._data.on&&this._data.on("*",this.listener)}},s.prototype.get=function(){var t,e,i,s=this,n=o.getType(arguments[0]);"String"==n||"Number"==n||"Array"==n?(t=arguments[0],e=arguments[1],i=arguments[2]):(e=arguments[0],i=arguments[1]);var r=o.extend({},this._options,e);this._options.filter&&e&&e.filter&&(r.filter=function(t){return s._options.filter(t)&&e.filter(t)});var a=[];return void 0!=t&&a.push(t),a.push(r),a.push(i),this._data&&this._data.get.apply(this._data,a)},s.prototype.getIds=function(t){var e;if(this._data){var i,s=this._options.filter;i=t&&t.filter?s?function(e){return s(e)&&t.filter(e)}:t.filter:s,e=this._data.getIds({filter:i,order:t&&t.order})}else e=[];return e},s.prototype.getDataSet=function(){for(var t=this;t instanceof s;)t=t._data;return t||null},s.prototype._onEvent=function(t,e,i){var s,o,n,r,a=e&&e.items,h=this._data,d=[],l=[],c=[];if(a&&h){switch(t){case"add":for(s=0,o=a.length;o>s;s++)n=a[s],r=this.get(n),r&&(this._ids[n]=!0,d.push(n));break;case"update":for(s=0,o=a.length;o>s;s++)n=a[s],r=this.get(n),r?this._ids[n]?l.push(n):(this._ids[n]=!0,d.push(n)):this._ids[n]&&(delete this._ids[n],c.push(n));break;case"remove":for(s=0,o=a.length;o>s;s++)n=a[s],this._ids[n]&&(delete this._ids[n],c.push(n))}d.length&&this._trigger("add",{items:d},i),l.length&&this._trigger("update",{items:l},i),c.length&&this._trigger("remove",{items:c},i)}},s.prototype.on=n.prototype.on,s.prototype.off=n.prototype.off,s.prototype._trigger=n.prototype._trigger,s.prototype.subscribe=s.prototype.on,s.prototype.unsubscribe=s.prototype.off,t.exports=s},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this.containerElement=t,this.width="400px",this.height="400px",this.margin=10,this.defaultXCenter="55%",this.defaultYCenter="50%",this.xLabel="x",this.yLabel="y",this.zLabel="z",this.filterLabel="time",this.legendLabel="value",this.style=s.STYLE.DOT,this.showPerspective=!0,this.showGrid=!0,this.keepAspectRatio=!0,this.showShadow=!1,this.showGrayBottom=!1,this.showTooltip=!1,this.verticalRatio=.5,this.animationInterval=1e3,this.animationPreload=!1,this.camera=new l,this.eye=new h(0,0,-1),this.dataTable=null,this.dataPoints=null,this.colX=void 0,this.colY=void 0,this.colZ=void 0,this.colValue=void 0,this.colFilter=void 0,this.xMin=0,this.xStep=void 0,this.xMax=1,this.yMin=0,this.yStep=void 0,this.yMax=1,this.zMin=0,this.zStep=void 0,this.zMax=1,this.valueMin=0,this.valueMax=1,this.xBarWidth=1,this.yBarWidth=1,this.colorAxis="#4D4D4D",this.colorGrid="#D3D3D3",this.colorDot="#7DC1FF",this.colorDotBorder="#3267D2",this.create(),this.setOptions(i),e&&this.setData(e)}var o=i(46),n=i(3),r=i(4),a=i(1),h=i(9),d=i(8),l=i(6),c=i(7),p=i(10),u=i(11);o(s.prototype),s.prototype._setScale=function(){this.scale=new h(1/(this.xMax-this.xMin),1/(this.yMax-this.yMin),1/(this.zMax-this.zMin)),this.keepAspectRatio&&(this.scale.x3&&(this.colFilter=3);else{if(this.style!==s.STYLE.DOTCOLOR&&this.style!==s.STYLE.DOTSIZE&&this.style!==s.STYLE.BARCOLOR&&this.style!==s.STYLE.BARSIZE)throw'Unknown style "'+this.style+'"';this.colX=0,this.colY=1,this.colZ=2,this.colValue=3,t.getNumberOfColumns()>4&&(this.colFilter=4)}},s.prototype.getNumberOfRows=function(t){return t.length},s.prototype.getNumberOfColumns=function(t){var e=0;for(var i in t[0])t[0].hasOwnProperty(i)&&e++;return e},s.prototype.getDistinctValues=function(t,e){for(var i=[],s=0;st[s][e]&&(i.min=t[s][e]),i.maxt;t++){var g=(t-p)/(m-p),f=240*g,v=this._hsv2rgb(f,1,1);c.strokeStyle=v,c.beginPath(),c.moveTo(h,r+t),c.lineTo(a,r+t),c.stroke()}c.strokeStyle=this.colorAxis,c.strokeRect(h,r,i,n)}if(this.style===s.STYLE.DOTSIZE&&(c.strokeStyle=this.colorAxis,c.fillStyle=this.colorDot,c.beginPath(),c.moveTo(h,r),c.lineTo(a,r),c.lineTo(a-i+e,d),c.lineTo(h,d),c.closePath(),c.fill(),c.stroke()),this.style===s.STYLE.DOTCOLOR||this.style===s.STYLE.DOTSIZE){var y=5,b=new u(this.valueMin,this.valueMax,(this.valueMax-this.valueMin)/5,!0);for(b.start(),b.getCurrent()0?this.yMin:this.yMax,o=this._convert3Dto2D(new h(w,r,this.zMin)),Math.cos(2*x)>0?(f.textAlign="center",f.textBaseline="top",o.y+=b):Math.sin(2*x)<0?(f.textAlign="right",f.textBaseline="middle"):(f.textAlign="left",f.textBaseline="middle"),f.fillStyle=this.colorAxis,f.fillText(" "+i.getCurrent()+" ",o.x,o.y),i.next()}for(f.lineWidth=1,s=void 0===this.defaultYStep,i=new u(this.yMin,this.yMax,this.yStep,s),i.start(),i.getCurrent()0?this.xMin:this.xMax,o=this._convert3Dto2D(new h(n,i.getCurrent(),this.zMin)),Math.cos(2*x)<0?(f.textAlign="center",f.textBaseline="top",o.y+=b):Math.sin(2*x)>0?(f.textAlign="right",f.textBaseline="middle"):(f.textAlign="left",f.textBaseline="middle"),f.fillStyle=this.colorAxis,f.fillText(" "+i.getCurrent()+" ",o.x,o.y),i.next();for(f.lineWidth=1,s=void 0===this.defaultZStep,i=new u(this.zMin,this.zMax,this.zStep,s),i.start(),i.getCurrent()0?this.xMin:this.xMax,r=Math.sin(x)<0?this.yMin:this.yMax;!i.end();)t=this._convert3Dto2D(new h(n,r,i.getCurrent())),f.strokeStyle=this.colorAxis,f.beginPath(),f.moveTo(t.x,t.y),f.lineTo(t.x-b,t.y),f.stroke(),f.textAlign="right",f.textBaseline="middle",f.fillStyle=this.colorAxis,f.fillText(i.getCurrent()+" ",t.x-5,t.y),i.next();f.lineWidth=1,t=this._convert3Dto2D(new h(n,r,this.zMin)),e=this._convert3Dto2D(new h(n,r,this.zMax)),f.strokeStyle=this.colorAxis,f.beginPath(),f.moveTo(t.x,t.y),f.lineTo(e.x,e.y),f.stroke(),f.lineWidth=1,p=this._convert3Dto2D(new h(this.xMin,this.yMin,this.zMin)),m=this._convert3Dto2D(new h(this.xMax,this.yMin,this.zMin)),f.strokeStyle=this.colorAxis,f.beginPath(),f.moveTo(p.x,p.y),f.lineTo(m.x,m.y),f.stroke(),p=this._convert3Dto2D(new h(this.xMin,this.yMax,this.zMin)),m=this._convert3Dto2D(new h(this.xMax,this.yMax,this.zMin)),f.strokeStyle=this.colorAxis,f.beginPath(),f.moveTo(p.x,p.y),f.lineTo(m.x,m.y),f.stroke(),f.lineWidth=1,t=this._convert3Dto2D(new h(this.xMin,this.yMin,this.zMin)),e=this._convert3Dto2D(new h(this.xMin,this.yMax,this.zMin)),f.strokeStyle=this.colorAxis,f.beginPath(),f.moveTo(t.x,t.y),f.lineTo(e.x,e.y),f.stroke(),t=this._convert3Dto2D(new h(this.xMax,this.yMin,this.zMin)),e=this._convert3Dto2D(new h(this.xMax,this.yMax,this.zMin)),f.strokeStyle=this.colorAxis,f.beginPath(),f.moveTo(t.x,t.y),f.lineTo(e.x,e.y),f.stroke();var _=this.xLabel;_.length>0&&(c=.1/this.scale.y,n=(this.xMin+this.xMax)/2,r=Math.cos(x)>0?this.yMin-c:this.yMax+c,o=this._convert3Dto2D(new h(n,r,this.zMin)),Math.cos(2*x)>0?(f.textAlign="center",f.textBaseline="top"):Math.sin(2*x)<0?(f.textAlign="right",f.textBaseline="middle"):(f.textAlign="left",f.textBaseline="middle"),f.fillStyle=this.colorAxis,f.fillText(_,o.x,o.y));var S=this.yLabel;S.length>0&&(l=.1/this.scale.x,n=Math.sin(x)>0?this.xMin-l:this.xMax+l,r=(this.yMin+this.yMax)/2,o=this._convert3Dto2D(new h(n,r,this.zMin)),Math.cos(2*x)<0?(f.textAlign="center",f.textBaseline="top"):Math.sin(2*x)>0?(f.textAlign="right",f.textBaseline="middle"):(f.textAlign="left",f.textBaseline="middle"),f.fillStyle=this.colorAxis,f.fillText(S,o.x,o.y));var C=this.zLabel;C.length>0&&(d=30,n=Math.cos(x)>0?this.xMin:this.xMax,r=Math.sin(x)<0?this.yMin:this.yMax,a=(this.zMin+this.zMax)/2,o=this._convert3Dto2D(new h(n,r,a)),f.textAlign="right",f.textBaseline="middle",f.fillStyle=this.colorAxis,f.fillText(C,o.x-d,o.y))},s.prototype._hsv2rgb=function(t,e,i){var s,o,n,r,a,h;switch(r=i*e,a=Math.floor(t/60),h=r*(1-Math.abs(t/60%2-1)),a){case 0:s=r,o=h,n=0;break;case 1:s=h,o=r,n=0;break;case 2:s=0,o=r,n=h;break;case 3:s=0,o=h,n=r;break;case 4:s=h,o=0,n=r;break;case 5:s=r,o=0,n=h;break;default:s=0,o=0,n=0}return"RGB("+parseInt(255*s)+","+parseInt(255*o)+","+parseInt(255*n)+")"},s.prototype._redrawDataGrid=function(){var t,e,i,o,n,r,a,d,l,c,p,u,m,g=this.frame.canvas,f=g.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(n=0;n0}else r=!0;r?(m=(t.point.z+e.point.z+i.point.z+o.point.z)/4,c=240*(1-(m-this.zMin)*this.scale.z/this.verticalRatio),p=1,this.showShadow?(u=Math.min(1+S.x/C/2,1),a=this._hsv2rgb(c,p,u),d=a):(u=1,a=this._hsv2rgb(c,p,u),d=this.colorAxis)):(a="gray",d=this.colorAxis),l=.5,f.lineWidth=l,f.fillStyle=a,f.strokeStyle=d,f.beginPath(),f.moveTo(t.screen.x,t.screen.y),f.lineTo(e.screen.x,e.screen.y),f.lineTo(o.screen.x,o.screen.y),f.lineTo(i.screen.x,i.screen.y),f.closePath(),f.fill(),f.stroke()}}else for(n=0;np&&(p=0);var u,m,g;this.style===s.STYLE.DOTCOLOR?(u=240*(1-(d.point.value-this.valueMin)*this.scale.value),m=this._hsv2rgb(u,1,1),g=this._hsv2rgb(u,1,.8)):this.style===s.STYLE.DOTSIZE?(m=this.colorDot,g=this.colorDotBorder):(u=240*(1-(d.point.z-this.zMin)*this.scale.z/this.verticalRatio),m=this._hsv2rgb(u,1,1),g=this._hsv2rgb(u,1,.8)),i.lineWidth=1,i.strokeStyle=g,i.fillStyle=m,i.beginPath(),i.arc(d.screen.x,d.screen.y,p,0,2*Math.PI,!0),i.fill(),i.stroke()}}},s.prototype._redrawDataBar=function(){var t,e,i,o,n=this.frame.canvas,r=n.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(t=0;t0&&(t=this.dataPoints[0],s.lineWidth=1,s.strokeStyle="blue",s.beginPath(),s.moveTo(t.screen.x,t.screen.y)),e=1;e0&&s.stroke()}},s.prototype._onMouseDown=function(t){if(t=t||window.event,this.leftButtonDown&&this._onMouseUp(t),this.leftButtonDown=t.which?1===t.which:1===t.button,this.leftButtonDown||this.touchDown){this.startMouseX=getMouseX(t),this.startMouseY=getMouseY(t),this.startStart=new Date(this.start),this.startEnd=new Date(this.end),this.startArmRotation=this.camera.getArmRotation(),this.frame.style.cursor="move";var e=this;this.onmousemove=function(t){e._onMouseMove(t)},this.onmouseup=function(t){e._onMouseUp(t)},a.addEventListener(document,"mousemove",e.onmousemove),a.addEventListener(document,"mouseup",e.onmouseup),a.preventDefault(t)}},s.prototype._onMouseMove=function(t){t=t||window.event;var e=parseFloat(getMouseX(t))-this.startMouseX,i=parseFloat(getMouseY(t))-this.startMouseY,s=this.startArmRotation.horizontal+e/200,o=this.startArmRotation.vertical+i/200,n=4,r=Math.sin(n/360*2*Math.PI);Math.abs(Math.sin(s))0?1:0>t?-1:0}var s=e[0],o=e[1],n=e[2],r=i((o.x-s.x)*(t.y-s.y)-(o.y-s.y)*(t.x-s.x)),a=i((n.x-o.x)*(t.y-o.y)-(n.y-o.y)*(t.x-o.x)),h=i((s.x-n.x)*(t.y-n.y)-(s.y-n.y)*(t.x-n.x));return!(0!=r&&0!=a&&r!=a||0!=a&&0!=h&&a!=h||0!=r&&0!=h&&r!=h)},s.prototype._dataPointFromXY=function(t,e){var i,o=100,n=null,r=null,a=null,h=new d(t,e);if(this.style===s.STYLE.BAR||this.style===s.STYLE.BARCOLOR||this.style===s.STYLE.BARSIZE)for(i=this.dataPoints.length-1;i>=0;i--){n=this.dataPoints[i];var l=n.surfaces;if(l)for(var c=l.length-1;c>=0;c--){var p=l[c],u=p.corners,m=[u[0].screen,u[1].screen,u[2].screen],g=[u[2].screen,u[3].screen,u[0].screen];if(this._insideTriangle(h,m)||this._insideTriangle(h,g))return n}}else for(i=0;ib)&&o>b&&(a=b,r=n)}}return r},s.prototype._showTooltip=function(t){var e,i,s;this.tooltip?(e=this.tooltip.dom.content,i=this.tooltip.dom.line,s=this.tooltip.dom.dot):(e=document.createElement("div"),e.style.position="absolute",e.style.padding="10px",e.style.border="1px solid #4d4d4d",e.style.color="#1a1a1a",e.style.background="rgba(255,255,255,0.7)",e.style.borderRadius="2px",e.style.boxShadow="5px 5px 10px rgba(128,128,128,0.5)",i=document.createElement("div"),i.style.position="absolute",i.style.height="40px",i.style.width="0",i.style.borderLeft="1px solid #4d4d4d",s=document.createElement("div"),s.style.position="absolute",s.style.height="0",s.style.width="0",s.style.border="5px solid #4d4d4d",s.style.borderRadius="5px",this.tooltip={dataPoint:null,dom:{content:e,line:i,dot:s}}),this._hideTooltip(),this.tooltip.dataPoint=t,e.innerHTML="function"==typeof this.showTooltip?this.showTooltip(t.point):"
x:"+t.point.x+"
y:"+t.point.y+"
z:"+t.point.z+"
",e.style.left="0",e.style.top="0",this.frame.appendChild(e),this.frame.appendChild(i),this.frame.appendChild(s);var o=e.offsetWidth,n=e.offsetHeight,r=i.offsetHeight,a=s.offsetWidth,h=s.offsetHeight,d=t.screen.x-o/2;d=Math.min(Math.max(d,10),this.frame.clientWidth-10-o),i.style.left=t.screen.x+"px",i.style.top=t.screen.y-r+"px",e.style.left=d+"px",e.style.top=t.screen.y-r-n+"px",s.style.left=t.screen.x-a/2+"px",s.style.top=t.screen.y-h/2+"px"},s.prototype._hideTooltip=function(){if(this.tooltip){this.tooltip.dataPoint=null;for(var t in this.tooltip.dom)if(this.tooltip.dom.hasOwnProperty(t)){var e=this.tooltip.dom[t];e&&e.parentNode&&e.parentNode.removeChild(e)}}},getMouseX=function(t){return"clientX"in t?t.clientX:t.targetTouches[0]&&t.targetTouches[0].clientX||0},getMouseY=function(t){return"clientY"in t?t.clientY:t.targetTouches[0]&&t.targetTouches[0].clientY||0},t.exports=s},function(t,e,i){var s=i(9);Camera=function(){this.armLocation=new s,this.armRotation={},this.armRotation.horizontal=0,this.armRotation.vertical=0,this.armLength=1.7,this.cameraLocation=new s,this.cameraRotation=new s(.5*Math.PI,0,0),this.calculateCameraOrientation()},Camera.prototype.setArmLocation=function(t,e,i){this.armLocation.x=t,this.armLocation.y=e,this.armLocation.z=i,this.calculateCameraOrientation()},Camera.prototype.setArmRotation=function(t,e){void 0!==t&&(this.armRotation.horizontal=t),void 0!==e&&(this.armRotation.vertical=e,this.armRotation.vertical<0&&(this.armRotation.vertical=0),this.armRotation.vertical>.5*Math.PI&&(this.armRotation.vertical=.5*Math.PI)),(void 0!==t||void 0!==e)&&this.calculateCameraOrientation()},Camera.prototype.getArmRotation=function(){var t={};return t.horizontal=this.armRotation.horizontal,t.vertical=this.armRotation.vertical,t},Camera.prototype.setArmLength=function(t){void 0!==t&&(this.armLength=t,this.armLength<.71&&(this.armLength=.71),this.armLength>5&&(this.armLength=5),this.calculateCameraOrientation())},Camera.prototype.getArmLength=function(){return this.armLength},Camera.prototype.getCameraLocation=function(){return this.cameraLocation},Camera.prototype.getCameraRotation=function(){return this.cameraRotation},Camera.prototype.calculateCameraOrientation=function(){this.cameraLocation.x=this.armLocation.x-this.armLength*Math.sin(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.y=this.armLocation.y-this.armLength*Math.cos(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.z=this.armLocation.z+this.armLength*Math.sin(this.armRotation.vertical),this.cameraRotation.x=Math.PI/2-this.armRotation.vertical,this.cameraRotation.y=0,this.cameraRotation.z=-this.armRotation.horizontal},t.exports=Camera},function(t,e,i){function s(t,e,i){this.data=t,this.column=e,this.graph=i,this.index=void 0,this.value=void 0,this.values=i.getDistinctValues(t.get(),this.column),this.values.sort(function(t,e){return t>e?1:e>t?-1:0}),this.values.length>0&&this.selectValue(0),this.dataPoints=[],this.loaded=!1,this.onLoadCallback=void 0,i.animationPreload?(this.loaded=!1,this.loadInBackground()):this.loaded=!0}var o=i(4);s.prototype.isLoaded=function(){return this.loaded},s.prototype.getLoadedProgress=function(){for(var t=this.values.length,e=0;this.dataPoints[e];)e++;return Math.round(e/t*100)},s.prototype.getLabel=function(){return this.graph.filterLabel},s.prototype.getColumn=function(){return this.column},s.prototype.getSelectedValue=function(){return void 0===this.index?void 0:this.values[this.index]},s.prototype.getValues=function(){return this.values},s.prototype.getValue=function(t){if(t>=this.values.length)throw"Error: index out of range";return this.values[t]},s.prototype._getDataPoints=function(t){if(void 0===t&&(t=this.index),void 0===t)return[];var e;if(this.dataPoints[t])e=this.dataPoints[t];else{var i={};i.column=this.column,i.value=this.values[t];var s=new o(this.data,{filter:function(t){return t[i.column]==i.value}}).get();e=this.graph._getDataPoints(s),this.dataPoints[t]=e}return e},s.prototype.setOnLoadCallback=function(t){this.onLoadCallback=t},s.prototype.selectValue=function(t){if(t>=this.values.length)throw"Error: index out of range";this.index=t,this.value=this.values[t]},s.prototype.loadInBackground=function(t){void 0===t&&(t=0);var e=this.graph.frame;if(t0&&(t--,this.setIndex(t))},s.prototype.next=function(){var t=this.getIndex();t0?this.setIndex(0):this.index=void 0},s.prototype.setIndex=function(t){if(!(ts&&(s=0),s>this.values.length-1&&(s=this.values.length-1),s},s.prototype.indexToLeft=function(t){var e=parseFloat(this.frame.bar.style.width)-this.frame.slide.clientWidth-10,i=t/(this.values.length-1)*e,s=i+3;return s},s.prototype._onMouseMove=function(t){var e=t.clientX-this.startClientX,i=this.startSlideX+e,s=this.leftToIndex(i);this.setIndex(s),o.preventDefault()},s.prototype._onMouseUp=function(){this.frame.style.cursor="auto",o.removeEventListener(document,"mousemove",this.onmousemove),o.removeEventListener(document,"mouseup",this.onmouseup),o.preventDefault()},t.exports=s},function(t){function e(t,e,i,s){this._start=0,this._end=0,this._step=1,this.prettyStep=!0,this.precision=5,this._current=0,this.setRange(t,e,i,s)}e.prototype.setRange=function(t,e,i,s){this._start=t?t:0,this._end=e?e:0,this.setStep(i,s)},e.prototype.setStep=function(t,i){void 0===t||0>=t||(void 0!==i&&(this.prettyStep=i),this._step=this.prettyStep===!0?e.calculatePrettyStep(t):t)},e.calculatePrettyStep=function(t){var e=function(t){return Math.log(t)/Math.LN10},i=Math.pow(10,Math.round(e(t))),s=2*Math.pow(10,Math.round(e(t/2))),o=5*Math.pow(10,Math.round(e(t/5))),n=i;return Math.abs(s-t)<=Math.abs(n-t)&&(n=s),Math.abs(o-t)<=Math.abs(n-t)&&(n=o),0>=n&&(n=1),n},e.prototype.getCurrent=function(){return parseFloat(this._current.toPrecision(this.precision))},e.prototype.getStep=function(){return this._step},e.prototype.start=function(){this._current=this._start-this._start%this._step},e.prototype.next=function(){this._current+=this._step},e.prototype.end=function(){return this._current>this._end},t.exports=e},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");var o=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:"bottom",width:null,height:null,maxHeight:null,minHeight:null},this.options=r.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},util:{snap:null,toScreen:o._toScreen.bind(o),toGlobalScreen:o._toGlobalScreen.bind(o),toTime:o._toTime.bind(o),toGlobalTime:o._toGlobalTime.bind(o)}},this.range=new d(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new l(this.body),this.components.push(this.timeAxis),this.body.util.snap=this.timeAxis.snap.bind(this.timeAxis),this.currentTime=new c(this.body),this.components.push(this.currentTime),this.customTime=new p(this.body),this.components.push(this.customTime),this.itemSet=new u(this.body),this.components.push(this.itemSet),this.itemsData=null,this.groupsData=null,i&&this.setOptions(i),e?this.setItems(e):this.redraw()}var o=i(46),n=i(42),r=i(1),a=i(3),h=i(4),d=i(15),l=i(27),c=i(19),p=i(20),u=i(24);o(s.prototype),s.prototype._create=function(t){this.dom={},this.dom.root=document.createElement("div"),this.dom.background=document.createElement("div"),this.dom.backgroundVertical=document.createElement("div"),this.dom.backgroundHorizontal=document.createElement("div"),this.dom.centerContainer=document.createElement("div"),this.dom.leftContainer=document.createElement("div"),this.dom.rightContainer=document.createElement("div"),this.dom.center=document.createElement("div"),this.dom.left=document.createElement("div"),this.dom.right=document.createElement("div"),this.dom.top=document.createElement("div"),this.dom.bottom=document.createElement("div"),this.dom.shadowTop=document.createElement("div"),this.dom.shadowBottom=document.createElement("div"),this.dom.shadowTopLeft=document.createElement("div"),this.dom.shadowBottomLeft=document.createElement("div"),this.dom.shadowTopRight=document.createElement("div"),this.dom.shadowBottomRight=document.createElement("div"),this.dom.background.className="vispanel background",this.dom.backgroundVertical.className="vispanel background vertical",this.dom.backgroundHorizontal.className="vispanel background horizontal",this.dom.centerContainer.className="vispanel center",this.dom.leftContainer.className="vispanel left",this.dom.rightContainer.className="vispanel right",this.dom.top.className="vispanel top",this.dom.bottom.className="vispanel bottom",this.dom.left.className="content",this.dom.center.className="content",this.dom.right.className="content",this.dom.shadowTop.className="shadow top",this.dom.shadowBottom.className="shadow bottom",this.dom.shadowTopLeft.className="shadow top",this.dom.shadowBottomLeft.className="shadow bottom",this.dom.shadowTopRight.className="shadow top",this.dom.shadowBottomRight.className="shadow bottom",this.dom.root.appendChild(this.dom.background),this.dom.root.appendChild(this.dom.backgroundVertical),this.dom.root.appendChild(this.dom.backgroundHorizontal),this.dom.root.appendChild(this.dom.centerContainer),this.dom.root.appendChild(this.dom.leftContainer),this.dom.root.appendChild(this.dom.rightContainer),this.dom.root.appendChild(this.dom.top),this.dom.root.appendChild(this.dom.bottom),this.dom.centerContainer.appendChild(this.dom.center),this.dom.leftContainer.appendChild(this.dom.left),this.dom.rightContainer.appendChild(this.dom.right),this.dom.centerContainer.appendChild(this.dom.shadowTop),this.dom.centerContainer.appendChild(this.dom.shadowBottom),this.dom.leftContainer.appendChild(this.dom.shadowTopLeft),this.dom.leftContainer.appendChild(this.dom.shadowBottomLeft),this.dom.rightContainer.appendChild(this.dom.shadowTopRight),this.dom.rightContainer.appendChild(this.dom.shadowBottomRight),this.on("rangechange",this.redraw.bind(this)),this.on("change",this.redraw.bind(this)),this.on("touch",this._onTouch.bind(this)),this.on("pinch",this._onPinch.bind(this)),this.on("dragstart",this._onDragStart.bind(this)),this.on("drag",this._onDrag.bind(this)),this.hammer=n(this.dom.root,{prevent_default:!0}),this.listeners={};var e=this,i=["touch","pinch","tap","doubletap","hold","dragstart","drag","dragend","mousewheel","DOMMouseScroll"];if(i.forEach(function(t){var i=function(){var i=[t].concat(Array.prototype.slice.call(arguments,0));e.emit.apply(e,i)};e.hammer.on(t,i),e.listeners[t]=i}),this.props={root:{},background:{},centerContainer:{},leftContainer:{},rightContainer:{},center:{},left:{},right:{},top:{},bottom:{},border:{},scrollTop:0,scrollTopMin:0},this.touch={},!t)throw new Error("No container provided");t.appendChild(this.dom.root)},s.prototype.destroy=function(){this.clear(),this.off(),this._stopAutoResize(),this.dom.root.parentNode&&this.dom.root.parentNode.removeChild(this.dom.root),this.dom=null;for(var t in this.listeners)this.listeners.hasOwnProperty(t)&&delete this.listeners[t];this.listeners=null,this.hammer=null,this.components.forEach(function(t){t.destroy()}),this.body=null},s.prototype.setOptions=function(t){if(t){var e=["width","height","minHeight","maxHeight","autoResize","start","end","orientation"];r.selectiveExtend(e,this.options,t),this._initAutoResize()}if(this.components.forEach(function(e){e.setOptions(t)}),t&&t.order)throw new Error("Option order is deprecated. There is no replacement for this feature.");this.redraw()},s.prototype.setCustomTime=function(t){if(!this.customTime)throw new Error("Cannot get custom time: Custom time bar is not enabled");this.customTime.setCustomTime(t)},s.prototype.getCustomTime=function(){if(!this.customTime)throw new Error("Cannot get custom time: Custom time bar is not enabled");return this.customTime.getCustomTime()},s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof a||t instanceof h?t:new a(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.itemSet&&this.itemSet.setItems(e),i&&("start"in this.options||"end"in this.options)){this.fit();var s="start"in this.options?r.convert(this.options.start,"Date"):null,o="end"in this.options?r.convert(this.options.end,"Date"):null;this.setWindow(s,o)}},s.prototype.getVisibleItems=function(){return this.itemSet&&this.itemSet.getVisibleItems()||[]},s.prototype.setGroups=function(t){var e;e=t?t instanceof a||t instanceof h?t:new a(t):null,this.groupsData=e,this.itemSet.setGroups(e)},s.prototype.clear=function(t){(!t||t.items)&&this.setItems(null),(!t||t.groups)&&this.setGroups(null),(!t||t.options)&&(this.components.forEach(function(t){t.setOptions(t.defaultOptions)}),this.setOptions(this.defaultOptions))},s.prototype.fit=function(){var t=this.getItemRange(),e=t.min,i=t.max;if(null!=e&&null!=i){var s=i.valueOf()-e.valueOf();0>=s&&(s=864e5),e=new Date(e.valueOf()-.05*s),i=new Date(i.valueOf()+.05*s)}(null!==e||null!==i)&&this.range.setRange(e,i)},s.prototype.getItemRange=function(){var t=this.itemsData.getDataSet(),e=null,i=null;if(t){var s=t.min("start");e=s?r.convert(s.start,"Date").valueOf():null;var o=t.max("start");o&&(i=r.convert(o.start,"Date").valueOf());var n=t.max("end");n&&(i=null==i?r.convert(n.end,"Date").valueOf():Math.max(i,r.convert(n.end,"Date").valueOf()))}return{min:null!=e?new Date(e):null,max:null!=i?new Date(i):null}},s.prototype.setSelection=function(t){this.itemSet&&this.itemSet.setSelection(t)},s.prototype.getSelection=function(){return this.itemSet&&this.itemSet.getSelection()||[]},s.prototype.setWindow=function(t,e){if(1==arguments.length){var i=arguments[0];this.range.setRange(i.start,i.end)}else this.range.setRange(t,e)},s.prototype.getWindow=function(){var t=this.range.getRange();return{start:new Date(t.start),end:new Date(t.end)}},s.prototype.redraw=function(){var t=!1,e=this.options,i=this.props,s=this.dom;if(s){s.root.className="vis timeline root "+e.orientation,s.root.style.maxHeight=r.option.asSize(e.maxHeight,""),s.root.style.minHeight=r.option.asSize(e.minHeight,""),s.root.style.width=r.option.asSize(e.width,""),i.border.left=(s.centerContainer.offsetWidth-s.centerContainer.clientWidth)/2,i.border.right=i.border.left,i.border.top=(s.centerContainer.offsetHeight-s.centerContainer.clientHeight)/2,i.border.bottom=i.border.top;var o=s.root.offsetHeight-s.root.clientHeight,n=s.root.offsetWidth-s.root.clientWidth;i.center.height=s.center.offsetHeight,i.left.height=s.left.offsetHeight,i.right.height=s.right.offsetHeight,i.top.height=s.top.clientHeight||-i.border.top,i.bottom.height=s.bottom.clientHeight||-i.border.bottom;var a=Math.max(i.left.height,i.center.height,i.right.height),h=i.top.height+a+i.bottom.height+o+i.border.top+i.border.bottom;s.root.style.height=r.option.asSize(e.height,h+"px"),i.root.height=s.root.offsetHeight,i.background.height=i.root.height-o;var d=i.root.height-i.top.height-i.bottom.height-o;i.centerContainer.height=d,i.leftContainer.height=d,i.rightContainer.height=i.leftContainer.height,i.root.width=s.root.offsetWidth,i.background.width=i.root.width-n,i.left.width=s.leftContainer.clientWidth||-i.border.left,i.leftContainer.width=i.left.width,i.right.width=s.rightContainer.clientWidth||-i.border.right,i.rightContainer.width=i.right.width;var l=i.root.width-i.left.width-i.right.width-n;i.center.width=l,i.centerContainer.width=l,i.top.width=l,i.bottom.width=l,s.background.style.height=i.background.height+"px",s.backgroundVertical.style.height=i.background.height+"px",s.backgroundHorizontal.style.height=i.centerContainer.height+"px",s.centerContainer.style.height=i.centerContainer.height+"px",s.leftContainer.style.height=i.leftContainer.height+"px",s.rightContainer.style.height=i.rightContainer.height+"px",s.background.style.width=i.background.width+"px",s.backgroundVertical.style.width=i.centerContainer.width+"px",s.backgroundHorizontal.style.width=i.background.width+"px",s.centerContainer.style.width=i.center.width+"px",s.top.style.width=i.top.width+"px",s.bottom.style.width=i.bottom.width+"px",s.background.style.left="0",s.background.style.top="0",s.backgroundVertical.style.left=i.left.width+"px",s.backgroundVertical.style.top="0",s.backgroundHorizontal.style.left="0",s.backgroundHorizontal.style.top=i.top.height+"px",s.centerContainer.style.left=i.left.width+"px",s.centerContainer.style.top=i.top.height+"px",s.leftContainer.style.left="0",s.leftContainer.style.top=i.top.height+"px",s.rightContainer.style.left=i.left.width+i.center.width+"px",s.rightContainer.style.top=i.top.height+"px",s.top.style.left=i.left.width+"px",s.top.style.top="0",s.bottom.style.left=i.left.width+"px",s.bottom.style.top=i.top.height+i.centerContainer.height+"px",this._updateScrollTop();var c=this.props.scrollTop;"bottom"==e.orientation&&(c+=Math.max(this.props.centerContainer.height-this.props.center.height-this.props.border.top-this.props.border.bottom,0)),s.center.style.left="0",s.center.style.top=c+"px",s.left.style.left="0",s.left.style.top=c+"px",s.right.style.left="0",s.right.style.top=c+"px";var p=0==this.props.scrollTop?"hidden":"",u=this.props.scrollTop==this.props.scrollTopMin?"hidden":"";s.shadowTop.style.visibility=p,s.shadowBottom.style.visibility=u,s.shadowTopLeft.style.visibility=p,s.shadowBottomLeft.style.visibility=u,s.shadowTopRight.style.visibility=p,s.shadowBottomRight.style.visibility=u,this.components.forEach(function(e){t=e.redraw()||t}),t&&this.redraw()}},s.prototype.repaint=function(){throw new Error("Function repaint is deprecated. Use redraw instead.")},s.prototype._toTime=function(t){var e=this.range.conversion(this.props.center.width);return new Date(t/e.scale+e.offset)},s.prototype._toGlobalTime=function(t){var e=this.range.conversion(this.props.root.width);return new Date(t/e.scale+e.offset)},s.prototype._toScreen=function(t){var e=this.range.conversion(this.props.center.width);return(t.valueOf()-e.offset)*e.scale},s.prototype._toGlobalScreen=function(t){var e=this.range.conversion(this.props.root.width);return(t.valueOf()-e.offset)*e.scale},s.prototype._initAutoResize=function(){1==this.options.autoResize?this._startAutoResize():this._stopAutoResize()},s.prototype._startAutoResize=function(){var t=this;this._stopAutoResize(),this._onResize=function(){return 1!=t.options.autoResize?void t._stopAutoResize():void(t.dom.root&&(t.dom.root.clientWidth!=t.props.lastWidth||t.dom.root.clientHeight!=t.props.lastHeight)&&(t.props.lastWidth=t.dom.root.clientWidth,t.props.lastHeight=t.dom.root.clientHeight,t.emit("change")))},r.addEventListener(window,"resize",this._onResize),this.watchTimer=setInterval(this._onResize,1e3)},s.prototype._stopAutoResize=function(){this.watchTimer&&(clearInterval(this.watchTimer),this.watchTimer=void 0),r.removeEventListener(window,"resize",this._onResize),this._onResize=null},s.prototype._onTouch=function(){this.touch.allowDragging=!0},s.prototype._onPinch=function(){this.touch.allowDragging=!1},s.prototype._onDragStart=function(){this.touch.initialScrollTop=this.props.scrollTop},s.prototype._onDrag=function(t){if(this.touch.allowDragging){var e=t.gesture.deltaY,i=this._getScrollTop(),s=this._setScrollTop(this.touch.initialScrollTop+e);s!=i&&this.redraw()}},s.prototype._setScrollTop=function(t){return this.props.scrollTop=t,this._updateScrollTop(),this.props.scrollTop},s.prototype._updateScrollTop=function(){var t=Math.min(this.props.centerContainer.height-this.props.center.height,0);return t!=this.props.scrollTopMin&&("bottom"==this.options.orientation&&(this.props.scrollTop+=t-this.props.scrollTopMin),this.props.scrollTopMin=t),this.props.scrollTop>0&&(this.props.scrollTop=0),this.props.scrollTop=s&&(s=864e5),e=new Date(e.valueOf()-.05*s),i=new Date(i.valueOf()+.05*s)}(null!==e||null!==i)&&this.range.setRange(e,i)},s.prototype.getItemRange=function(){var t=this.itemsData,e=null,i=null;if(t){var s=t.min("start");e=s?r.convert(s.start,"Date").valueOf():null;var o=t.max("start");o&&(i=r.convert(o.start,"Date").valueOf());var n=t.max("end");n&&(i=null==i?r.convert(n.end,"Date").valueOf():Math.max(i,r.convert(n.end,"Date").valueOf()))}return{min:null!=e?new Date(e):null,max:null!=i?new Date(i):null}},s.prototype.setWindow=function(t,e){if(1==arguments.length){var i=arguments[0];this.range.setRange(i.start,i.end)}else this.range.setRange(t,e)},s.prototype.getWindow=function(){var t=this.range.getRange();return{start:new Date(t.start),end:new Date(t.end)}},s.prototype.redraw=function(){var t=!1,e=this.options,i=this.props,s=this.dom;if(s){s.root.className="vis timeline root "+e.orientation,s.root.style.maxHeight=r.option.asSize(e.maxHeight,""),s.root.style.minHeight=r.option.asSize(e.minHeight,""),s.root.style.width=r.option.asSize(e.width,""),i.border.left=(s.centerContainer.offsetWidth-s.centerContainer.clientWidth)/2,i.border.right=i.border.left,i.border.top=(s.centerContainer.offsetHeight-s.centerContainer.clientHeight)/2,i.border.bottom=i.border.top;var o=s.root.offsetHeight-s.root.clientHeight,n=s.root.offsetWidth-s.root.clientWidth;i.center.height=s.center.offsetHeight,i.left.height=s.left.offsetHeight,i.right.height=s.right.offsetHeight,i.top.height=s.top.clientHeight||-i.border.top,i.bottom.height=s.bottom.clientHeight||-i.border.bottom;var a=Math.max(i.left.height,i.center.height,i.right.height),h=i.top.height+a+i.bottom.height+o+i.border.top+i.border.bottom;s.root.style.height=r.option.asSize(e.height,h+"px"),i.root.height=s.root.offsetHeight,i.background.height=i.root.height-o;var d=i.root.height-i.top.height-i.bottom.height-o;i.centerContainer.height=d,i.leftContainer.height=d,i.rightContainer.height=i.leftContainer.height,i.root.width=s.root.offsetWidth,i.background.width=i.root.width-n,i.left.width=s.leftContainer.clientWidth||-i.border.left,i.leftContainer.width=i.left.width,i.right.width=s.rightContainer.clientWidth||-i.border.right,i.rightContainer.width=i.right.width;var l=i.root.width-i.left.width-i.right.width-n;i.center.width=l,i.centerContainer.width=l,i.top.width=l,i.bottom.width=l,s.background.style.height=i.background.height+"px",s.backgroundVertical.style.height=i.background.height+"px",s.backgroundHorizontalContainer.style.height=i.centerContainer.height+"px",s.centerContainer.style.height=i.centerContainer.height+"px",s.leftContainer.style.height=i.leftContainer.height+"px",s.rightContainer.style.height=i.rightContainer.height+"px",s.background.style.width=i.background.width+"px",s.backgroundVertical.style.width=i.centerContainer.width+"px",s.backgroundHorizontalContainer.style.width=i.background.width+"px",s.backgroundHorizontal.style.width=i.background.width+"px",s.centerContainer.style.width=i.center.width+"px",s.top.style.width=i.top.width+"px",s.bottom.style.width=i.bottom.width+"px",s.background.style.left="0",s.background.style.top="0",s.backgroundVertical.style.left=i.left.width+"px",s.backgroundVertical.style.top="0",s.backgroundHorizontalContainer.style.left="0",s.backgroundHorizontalContainer.style.top=i.top.height+"px",s.centerContainer.style.left=i.left.width+"px",s.centerContainer.style.top=i.top.height+"px",s.leftContainer.style.left="0",s.leftContainer.style.top=i.top.height+"px",s.rightContainer.style.left=i.left.width+i.center.width+"px",s.rightContainer.style.top=i.top.height+"px",s.top.style.left=i.left.width+"px",s.top.style.top="0",s.bottom.style.left=i.left.width+"px",s.bottom.style.top=i.top.height+i.centerContainer.height+"px",this._updateScrollTop();var c=this.props.scrollTop;"bottom"==e.orientation&&(c+=Math.max(this.props.centerContainer.height-this.props.center.height-this.props.border.top-this.props.border.bottom,0)),s.center.style.left="0",s.center.style.top=c+"px",s.backgroundHorizontal.style.left="0",s.backgroundHorizontal.style.top=c+"px",s.left.style.left="0",s.left.style.top=c+"px",s.right.style.left="0",s.right.style.top=c+"px";var p=0==this.props.scrollTop?"hidden":"",u=this.props.scrollTop==this.props.scrollTopMin?"hidden":"";s.shadowTop.style.visibility=p,s.shadowBottom.style.visibility=u,s.shadowTopLeft.style.visibility=p,s.shadowBottomLeft.style.visibility=u,s.shadowTopRight.style.visibility=p,s.shadowBottomRight.style.visibility=u,this.components.forEach(function(e){t=e.redraw()||t}),t&&this.redraw()}},s.prototype._toTime=function(t){var e=this.range.conversion(this.props.center.width);return new Date(t/e.scale+e.offset)},s.prototype._toGlobalTime=function(t){var e=this.range.conversion(this.props.root.width);return new Date(t/e.scale+e.offset)},s.prototype._toScreen=function(t){var e=this.range.conversion(this.props.center.width);return(t.valueOf()-e.offset)*e.scale},s.prototype._toGlobalScreen=function(t){var e=this.range.conversion(this.props.root.width);return(t.valueOf()-e.offset)*e.scale},s.prototype._initAutoResize=function(){1==this.options.autoResize?this._startAutoResize():this._stopAutoResize()},s.prototype._startAutoResize=function(){var t=this;this._stopAutoResize(),this._onResize=function(){return 1!=t.options.autoResize?void t._stopAutoResize():void(t.dom.root&&(t.dom.root.clientWidth!=t.props.lastWidth||t.dom.root.clientHeight!=t.props.lastHeight)&&(t.props.lastWidth=t.dom.root.clientWidth,t.props.lastHeight=t.dom.root.clientHeight,t.emit("change")))},r.addEventListener(window,"resize",this._onResize),this.watchTimer=setInterval(this._onResize,1e3)},s.prototype._stopAutoResize=function(){this.watchTimer&&(clearInterval(this.watchTimer),this.watchTimer=void 0),r.removeEventListener(window,"resize",this._onResize),this._onResize=null},s.prototype._onTouch=function(){this.touch.allowDragging=!0},s.prototype._onPinch=function(){this.touch.allowDragging=!1},s.prototype._onDragStart=function(){this.touch.initialScrollTop=this.props.scrollTop},s.prototype._onDrag=function(t){if(this.touch.allowDragging){var e=t.gesture.deltaY,i=this._getScrollTop(),s=this._setScrollTop(this.touch.initialScrollTop+e);s!=i&&this.redraw()}},s.prototype._setScrollTop=function(t){return this.props.scrollTop=t,this._updateScrollTop(),this.props.scrollTop},s.prototype._updateScrollTop=function(){var t=Math.min(this.props.centerContainer.height-this.props.center.height,0);return t!=this.props.scrollTopMin&&("bottom"==this.options.orientation&&(this.props.scrollTop+=t-this.props.scrollTopMin),this.props.scrollTopMin=t),this.props.scrollTop>0&&(this.props.scrollTop=0),this.props.scrollTopn&&(h=n);for(var d=!1,l=h;Math.abs(l)<=Math.abs(n);l++){a=Math.pow(10,l);for(var c=0;c=o){d=!0,r=c;break}}if(1==d)break}this.stepIndex=r,this.scale=a,this.step=a*this.minorSteps[r]},e.prototype.first=function(){this.setFirst()},e.prototype.setFirst=function(){var t=this._start-this.scale*this.minorSteps[this.stepIndex],e=this._end+this.scale*this.minorSteps[this.stepIndex];this.marginEnd=this.roundToMinor(e),this.marginStart=this.roundToMinor(t),this.marginRange=this.marginEnd-this.marginStart,this.current=this.marginEnd},e.prototype.roundToMinor=function(t){var e=t-t%(this.scale*this.minorSteps[this.stepIndex]);return t%(this.scale*this.minorSteps[this.stepIndex])>.5*this.scale*this.minorSteps[this.stepIndex]?e+this.scale*this.minorSteps[this.stepIndex]:e},e.prototype.hasNext=function(){return this.current>=this.marginStart},e.prototype.next=function(){var t=this.current;this.current-=this.step,this.current==t&&(this.current=this._end)},e.prototype.previous=function(){this.current+=this.step,this.marginEnd+=this.step,this.marginRange=this.marginEnd-this.marginStart},e.prototype.getCurrent=function(){for(var t=""+Number(this.current).toPrecision(5),e=t.length-1;e>0;e--){if("0"!=t[e]){if("."==t[e]||","==t[e]){t=t.slice(0,e);break}break}t=t.slice(0,e)}return t},e.prototype.snap=function(){},e.prototype.isMajor=function(){return this.current%(this.scale*this.majorSteps[this.stepIndex])==0},t.exports=e},function(t,e,i){function s(t,e){var i=h().hours(0).minutes(0).seconds(0).milliseconds(0);this.start=i.clone().add("days",-3).valueOf(),this.end=i.clone().add("days",4).valueOf(),this.body=t,this.defaultOptions={start:null,end:null,direction:"horizontal",moveable:!0,zoomable:!0,min:null,max:null,zoomMin:10,zoomMax:31536e10},this.options=r.extend({},this.defaultOptions),this.props={touch:{}},this.body.emitter.on("dragstart",this._onDragStart.bind(this)),this.body.emitter.on("drag",this._onDrag.bind(this)),this.body.emitter.on("dragend",this._onDragEnd.bind(this)),this.body.emitter.on("hold",this._onHold.bind(this)),this.body.emitter.on("mousewheel",this._onMouseWheel.bind(this)),this.body.emitter.on("DOMMouseScroll",this._onMouseWheel.bind(this)),this.body.emitter.on("touch",this._onTouch.bind(this)),this.body.emitter.on("pinch",this._onPinch.bind(this)),this.setOptions(e)}function o(t){if("horizontal"!=t&&"vertical"!=t)throw new TypeError('Unknown direction "'+t+'". Choose "horizontal" or "vertical".')}function n(t,e){return{x:t.pageX-r.getAbsoluteLeft(e),y:t.pageY-r.getAbsoluteTop(e)}}var r=i(1),a=i(39),h=i(41),d=i(18);s.prototype=new d,s.prototype.setOptions=function(t){if(t){var e=["direction","min","max","zoomMin","zoomMax","moveable","zoomable"];r.selectiveExtend(e,this.options,t),("start"in t||"end"in t)&&this.setRange(t.start,t.end)}},s.prototype.setRange=function(t,e){var i=this._applyRange(t,e);if(i){var s={start:new Date(this.start),end:new Date(this.end)};this.body.emitter.emit("rangechange",s),this.body.emitter.emit("rangechanged",s)}},s.prototype._applyRange=function(t,e){var i,s=null!=t?r.convert(t,"Date").valueOf():this.start,o=null!=e?r.convert(e,"Date").valueOf():this.end,n=null!=this.options.max?r.convert(this.options.max,"Date").valueOf():null,a=null!=this.options.min?r.convert(this.options.min,"Date").valueOf():null;if(isNaN(s)||null===s)throw new Error('Invalid start "'+t+'"');if(isNaN(o)||null===o)throw new Error('Invalid end "'+e+'"');if(s>o&&(o=s),null!==a&&a>s&&(i=a-s,s+=i,o+=i,null!=n&&o>n&&(o=n)),null!==n&&o>n&&(i=o-n,s-=i,o-=i,null!=a&&a>s&&(s=a)),null!==this.options.zoomMin){var h=parseFloat(this.options.zoomMin);0>h&&(h=0),h>o-s&&(this.end-this.start===h?(s=this.start,o=this.end):(i=h-(o-s),s-=i/2,o+=i/2))}if(null!==this.options.zoomMax){var d=parseFloat(this.options.zoomMax);0>d&&(d=0),o-s>d&&(this.end-this.start===d?(s=this.start,o=this.end):(i=o-s-d,s+=i/2,o-=i/2))}var l=this.start!=s||this.end!=o;return this.start=s,this.end=o,l},s.prototype.getRange=function(){return{start:this.start,end:this.end}},s.prototype.conversion=function(t){return s.conversion(this.start,this.end,t)},s.conversion=function(t,e,i){return 0!=i&&e-t!=0?{offset:t,scale:i/(e-t)}:{offset:0,scale:1}},s.prototype._onDragStart=function(){this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.start=this.start,this.props.touch.end=this.end,this.body.dom.root&&(this.body.dom.root.style.cursor="move"))},s.prototype._onDrag=function(t){if(this.options.moveable){var e=this.options.direction;if(o(e),this.props.touch.allowDragging){var i="horizontal"==e?t.gesture.deltaX:t.gesture.deltaY,s=this.props.touch.end-this.props.touch.start,n="horizontal"==e?this.body.domProps.center.width:this.body.domProps.center.height,r=-i/n*s;this._applyRange(this.props.touch.start+r,this.props.touch.end+r),this.body.emitter.emit("rangechange",{start:new Date(this.start),end:new Date(this.end)})}}},s.prototype._onDragEnd=function(){this.options.moveable&&this.props.touch.allowDragging&&(this.body.dom.root&&(this.body.dom.root.style.cursor="auto"),this.body.emitter.emit("rangechanged",{start:new Date(this.start),end:new Date(this.end)}))},s.prototype._onMouseWheel=function(t){if(this.options.zoomable&&this.options.moveable){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i;i=0>e?1-e/5:1/(1+e/5);var s=a.fakeGesture(this,t),o=n(s.center,this.body.dom.center),r=this._pointerToDate(o);this.zoom(i,r)}t.preventDefault()}},s.prototype._onTouch=function(){this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.allowDragging=!0,this.props.touch.center=null},s.prototype._onHold=function(){this.props.touch.allowDragging=!1},s.prototype._onPinch=function(t){if(this.options.zoomable&&this.options.moveable&&(this.props.touch.allowDragging=!1,t.gesture.touches.length>1)){this.props.touch.center||(this.props.touch.center=n(t.gesture.center,this.body.dom.center));var e=1/t.gesture.scale,i=this._pointerToDate(this.props.touch.center),s=parseInt(i+(this.props.touch.start-i)*e),o=parseInt(i+(this.props.touch.end-i)*e);this.setRange(s,o)}},s.prototype._pointerToDate=function(t){var e,i=this.options.direction;if(o(i),"horizontal"==i){var s=this.body.domProps.center.width;return e=this.conversion(s),t.x/e.scale+e.offset}var n=this.body.domProps.center.height;return e=this.conversion(n),t.y/e.scale+e.offset},s.prototype.zoom=function(t,e){null==e&&(e=(this.start+this.end)/2);var i=e+(this.start-e)*t,s=e+(this.end-e)*t;this.setRange(i,s)},s.prototype.move=function(t){var e=this.end-this.start,i=this.start+e*t,s=this.end+e*t;this.start=i,this.end=s},s.prototype.moveTo=function(t){var e=(this.start+this.end)/2,i=e-t,s=this.start-i,o=this.end-i;this.setRange(s,o)},t.exports=s},function(t,e){var i=.001;e.orderByStart=function(t){t.sort(function(t,e){return t.data.start-e.data.start})},e.orderByEnd=function(t){t.sort(function(t,e){var i="end"in t.data?t.data.end:t.data.start,s="end"in e.data?e.data.end:e.data.start;return i-s})},e.stack=function(t,i,s){var o,n;if(s)for(o=0,n=t.length;n>o;o++)t[o].top=null;for(o=0,n=t.length;n>o;o++){var r=t[o];if(null===r.top){r.top=i.axis;do{for(var a=null,h=0,d=t.length;d>h;h++){var l=t[h];if(null!==l.top&&l!==r&&e.collision(r,l,i.item)){a=l;break}}null!=a&&(r.top=a.top+a.height+i.item.vertical)}while(a)}}},e.nostack=function(t,e){var i,s;for(i=0,s=t.length;s>i;i++)t[i].top=e.axis},e.collision=function(t,e,s){return t.left-s.horizontal+ie.left&&t.top-s.vertical+ie.top}},function(t,e,i){function s(t,e,i){this.current=new Date,this._start=new Date,this._end=new Date,this.autoScale=!0,this.scale=s.SCALE.DAY,this.step=1,this.setRange(t,e,i)}var o=i(41);s.SCALE={MILLISECOND:1,SECOND:2,MINUTE:3,HOUR:4,DAY:5,WEEKDAY:6,MONTH:7,YEAR:8},s.prototype.setRange=function(t,e,i){if(!(t instanceof Date&&e instanceof Date))throw"No legal start or end date in method setRange";this._start=void 0!=t?new Date(t.valueOf()):new Date,this._end=void 0!=e?new Date(e.valueOf()):new Date,this.autoScale&&this.setMinimumStep(i)},s.prototype.first=function(){this.current=new Date(this._start.valueOf()),this.roundToMinor()},s.prototype.roundToMinor=function(){switch(this.scale){case s.SCALE.YEAR:this.current.setFullYear(this.step*Math.floor(this.current.getFullYear()/this.step)),this.current.setMonth(0);case s.SCALE.MONTH:this.current.setDate(1);case s.SCALE.DAY:case s.SCALE.WEEKDAY:this.current.setHours(0);case s.SCALE.HOUR:this.current.setMinutes(0);case s.SCALE.MINUTE:this.current.setSeconds(0);case s.SCALE.SECOND:this.current.setMilliseconds(0)}if(1!=this.step)switch(this.scale){case s.SCALE.MILLISECOND:this.current.setMilliseconds(this.current.getMilliseconds()-this.current.getMilliseconds()%this.step);break;case s.SCALE.SECOND:this.current.setSeconds(this.current.getSeconds()-this.current.getSeconds()%this.step);break;case s.SCALE.MINUTE:this.current.setMinutes(this.current.getMinutes()-this.current.getMinutes()%this.step);break;case s.SCALE.HOUR:this.current.setHours(this.current.getHours()-this.current.getHours()%this.step);break;case s.SCALE.WEEKDAY:case s.SCALE.DAY:this.current.setDate(this.current.getDate()-1-(this.current.getDate()-1)%this.step+1);break;case s.SCALE.MONTH:this.current.setMonth(this.current.getMonth()-this.current.getMonth()%this.step);break;case s.SCALE.YEAR:this.current.setFullYear(this.current.getFullYear()-this.current.getFullYear()%this.step)}},s.prototype.hasNext=function(){return this.current.valueOf()<=this._end.valueOf()},s.prototype.next=function(){var t=this.current.valueOf();if(this.current.getMonth()<6)switch(this.scale){case s.SCALE.MILLISECOND:this.current=new Date(this.current.valueOf()+this.step);break;case s.SCALE.SECOND:this.current=new Date(this.current.valueOf()+1e3*this.step);break;case s.SCALE.MINUTE:this.current=new Date(this.current.valueOf()+1e3*this.step*60);break;case s.SCALE.HOUR:this.current=new Date(this.current.valueOf()+1e3*this.step*60*60);var e=this.current.getHours();this.current.setHours(e-e%this.step);break;case s.SCALE.WEEKDAY:case s.SCALE.DAY:this.current.setDate(this.current.getDate()+this.step);break;case s.SCALE.MONTH:this.current.setMonth(this.current.getMonth()+this.step);break;case s.SCALE.YEAR:this.current.setFullYear(this.current.getFullYear()+this.step)}else switch(this.scale){case s.SCALE.MILLISECOND:this.current=new Date(this.current.valueOf()+this.step);break;case s.SCALE.SECOND:this.current.setSeconds(this.current.getSeconds()+this.step);break;case s.SCALE.MINUTE:this.current.setMinutes(this.current.getMinutes()+this.step);break;case s.SCALE.HOUR:this.current.setHours(this.current.getHours()+this.step);break;case s.SCALE.WEEKDAY:case s.SCALE.DAY:this.current.setDate(this.current.getDate()+this.step);break;case s.SCALE.MONTH:this.current.setMonth(this.current.getMonth()+this.step);break;case s.SCALE.YEAR:this.current.setFullYear(this.current.getFullYear()+this.step)}if(1!=this.step)switch(this.scale){case s.SCALE.MILLISECOND:this.current.getMilliseconds()0&&(this.step=e),this.autoScale=!1},s.prototype.setAutoScale=function(t){this.autoScale=t},s.prototype.setMinimumStep=function(t){if(void 0!=t){var e=31104e6,i=2592e6,o=864e5,n=36e5,r=6e4,a=1e3,h=1;1e3*e>t&&(this.scale=s.SCALE.YEAR,this.step=1e3),500*e>t&&(this.scale=s.SCALE.YEAR,this.step=500),100*e>t&&(this.scale=s.SCALE.YEAR,this.step=100),50*e>t&&(this.scale=s.SCALE.YEAR,this.step=50),10*e>t&&(this.scale=s.SCALE.YEAR,this.step=10),5*e>t&&(this.scale=s.SCALE.YEAR,this.step=5),e>t&&(this.scale=s.SCALE.YEAR,this.step=1),3*i>t&&(this.scale=s.SCALE.MONTH,this.step=3),i>t&&(this.scale=s.SCALE.MONTH,this.step=1),5*o>t&&(this.scale=s.SCALE.DAY,this.step=5),2*o>t&&(this.scale=s.SCALE.DAY,this.step=2),o>t&&(this.scale=s.SCALE.DAY,this.step=1),o/2>t&&(this.scale=s.SCALE.WEEKDAY,this.step=1),4*n>t&&(this.scale=s.SCALE.HOUR,this.step=4),n>t&&(this.scale=s.SCALE.HOUR,this.step=1),15*r>t&&(this.scale=s.SCALE.MINUTE,this.step=15),10*r>t&&(this.scale=s.SCALE.MINUTE,this.step=10),5*r>t&&(this.scale=s.SCALE.MINUTE,this.step=5),r>t&&(this.scale=s.SCALE.MINUTE,this.step=1),15*a>t&&(this.scale=s.SCALE.SECOND,this.step=15),10*a>t&&(this.scale=s.SCALE.SECOND,this.step=10),5*a>t&&(this.scale=s.SCALE.SECOND,this.step=5),a>t&&(this.scale=s.SCALE.SECOND,this.step=1),200*h>t&&(this.scale=s.SCALE.MILLISECOND,this.step=200),100*h>t&&(this.scale=s.SCALE.MILLISECOND,this.step=100),50*h>t&&(this.scale=s.SCALE.MILLISECOND,this.step=50),10*h>t&&(this.scale=s.SCALE.MILLISECOND,this.step=10),5*h>t&&(this.scale=s.SCALE.MILLISECOND,this.step=5),h>t&&(this.scale=s.SCALE.MILLISECOND,this.step=1)}},s.prototype.snap=function(t){var e=new Date(t.valueOf());if(this.scale==s.SCALE.YEAR){var i=e.getFullYear()+Math.round(e.getMonth()/12);e.setFullYear(Math.round(i/this.step)*this.step),e.setMonth(0),e.setDate(0),e.setHours(0),e.setMinutes(0),e.setSeconds(0),e.setMilliseconds(0)}else if(this.scale==s.SCALE.MONTH)e.getDate()>15?(e.setDate(1),e.setMonth(e.getMonth()+1)):e.setDate(1),e.setHours(0),e.setMinutes(0),e.setSeconds(0),e.setMilliseconds(0);else if(this.scale==s.SCALE.DAY){switch(this.step){case 5:case 2:e.setHours(24*Math.round(e.getHours()/24));break;default:e.setHours(12*Math.round(e.getHours()/12))}e.setMinutes(0),e.setSeconds(0),e.setMilliseconds(0)}else if(this.scale==s.SCALE.WEEKDAY){switch(this.step){case 5:case 2:e.setHours(12*Math.round(e.getHours()/12));break;default:e.setHours(6*Math.round(e.getHours()/6))}e.setMinutes(0),e.setSeconds(0),e.setMilliseconds(0)}else if(this.scale==s.SCALE.HOUR){switch(this.step){case 4:e.setMinutes(60*Math.round(e.getMinutes()/60));break;default:e.setMinutes(30*Math.round(e.getMinutes()/30))}e.setSeconds(0),e.setMilliseconds(0)}else if(this.scale==s.SCALE.MINUTE){switch(this.step){case 15:case 10:e.setMinutes(5*Math.round(e.getMinutes()/5)),e.setSeconds(0);break;case 5:e.setSeconds(60*Math.round(e.getSeconds()/60));break;default:e.setSeconds(30*Math.round(e.getSeconds()/30))}e.setMilliseconds(0)}else if(this.scale==s.SCALE.SECOND)switch(this.step){case 15:case 10:e.setSeconds(5*Math.round(e.getSeconds()/5)),e.setMilliseconds(0);break;case 5:e.setMilliseconds(1e3*Math.round(e.getMilliseconds()/1e3));break;default:e.setMilliseconds(500*Math.round(e.getMilliseconds()/500))}else if(this.scale==s.SCALE.MILLISECOND){var o=this.step>5?this.step/2:1;e.setMilliseconds(Math.round(e.getMilliseconds()/o)*o)}return e},s.prototype.isMajor=function(){switch(this.scale){case s.SCALE.MILLISECOND:return 0==this.current.getMilliseconds();case s.SCALE.SECOND:return 0==this.current.getSeconds();case s.SCALE.MINUTE:return 0==this.current.getHours()&&0==this.current.getMinutes();case s.SCALE.HOUR:return 0==this.current.getHours();case s.SCALE.WEEKDAY:case s.SCALE.DAY:return 1==this.current.getDate();case s.SCALE.MONTH:return 0==this.current.getMonth();case s.SCALE.YEAR:return!1;default:return!1}},s.prototype.getLabelMinor=function(t){switch(void 0==t&&(t=this.current),this.scale){case s.SCALE.MILLISECOND:return o(t).format("SSS");case s.SCALE.SECOND:return o(t).format("s");case s.SCALE.MINUTE:return o(t).format("HH:mm");case s.SCALE.HOUR:return o(t).format("HH:mm");case s.SCALE.WEEKDAY:return o(t).format("ddd D");case s.SCALE.DAY:return o(t).format("D");case s.SCALE.MONTH:return o(t).format("MMM");case s.SCALE.YEAR:return o(t).format("YYYY");default:return""}},s.prototype.getLabelMajor=function(t){switch(void 0==t&&(t=this.current),this.scale){case s.SCALE.MILLISECOND:return o(t).format("HH:mm:ss");case s.SCALE.SECOND:return o(t).format("D MMMM HH:mm");case s.SCALE.MINUTE:case s.SCALE.HOUR:return o(t).format("ddd D MMMM");case s.SCALE.WEEKDAY:case s.SCALE.DAY:return o(t).format("MMMM YYYY");case s.SCALE.MONTH:return o(t).format("YYYY");case s.SCALE.YEAR:return"";default:return""}},t.exports=s},function(t){function e(){this.options=null,this.props=null}e.prototype.setOptions=function(t){t&&util.extend(this.options,t)},e.prototype.redraw=function(){return!1},e.prototype.destroy=function(){},e.prototype._isResized=function(){var t=this.props._previousWidth!==this.props.width||this.props._previousHeight!==this.props.height;return this.props._previousWidth=this.props.width,this.props._previousHeight=this.props.height,t},t.exports=e},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCurrentTime:!0},this.options=o.extend({},this.defaultOptions),this._create(),this.setOptions(e)}var o=i(1),n=i(18);s.prototype=new n,s.prototype._create=function(){var t=document.createElement("div");t.className="currenttime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t},s.prototype.destroy=function(){this.options.showCurrentTime=!1,this.redraw(),this.body=null},s.prototype.setOptions=function(t){t&&o.selectiveExtend(["showCurrentTime"],this.options,t)},s.prototype.redraw=function(){if(this.options.showCurrentTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar),this.start());var e=new Date,i=this.body.util.toScreen(e);this.bar.style.left=i+"px",this.bar.title="Current time: "+e}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),this.stop();return!1},s.prototype.start=function(){function t(){e.stop();var i=e.body.range.conversion(e.body.domProps.center.width).scale,s=1/i/10;30>s&&(s=30),s>1e3&&(s=1e3),e.redraw(),e.currentTimeTimer=setTimeout(t,s)}var e=this;t()},s.prototype.stop=function(){void 0!==this.currentTimeTimer&&(clearTimeout(this.currentTimeTimer),delete this.currentTimeTimer)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCustomTime:!1},this.options=n.extend({},this.defaultOptions),this.customTime=new Date,this.eventParams={},this._create(),this.setOptions(e)}var o=i(42),n=i(1),r=i(18);s.prototype=new r,s.prototype.setOptions=function(t){t&&n.selectiveExtend(["showCustomTime"],this.options,t)},s.prototype._create=function(){var t=document.createElement("div");t.className="customtime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t;var e=document.createElement("div");e.style.position="relative",e.style.top="0px",e.style.left="-10px",e.style.height="100%",e.style.width="20px",t.appendChild(e),this.hammer=o(t,{prevent_default:!0}),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this))},s.prototype.destroy=function(){this.options.showCustomTime=!1,this.redraw(),this.hammer.enable(!1),this.hammer=null,this.body=null},s.prototype.redraw=function(){if(this.options.showCustomTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar));var e=this.body.util.toScreen(this.customTime);this.bar.style.left=e+"px",this.bar.title="Time: "+this.customTime}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar);return!1},s.prototype.setCustomTime=function(t){this.customTime=new Date(t.valueOf()),this.redraw()},s.prototype.getCustomTime=function(){return new Date(this.customTime.valueOf())},s.prototype._onDragStart=function(t){this.eventParams.dragging=!0,this.eventParams.customTime=this.customTime,t.stopPropagation(),t.preventDefault()},s.prototype._onDrag=function(t){if(this.eventParams.dragging){var e=t.gesture.deltaX,i=this.body.util.toScreen(this.eventParams.customTime)+e,s=this.body.util.toTime(i);this.setCustomTime(s),this.body.emitter.emit("timechange",{time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault()}},s.prototype._onDragEnd=function(t){this.eventParams.dragging&&(this.body.emitter.emit("timechanged",{time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault())},t.exports=s},function(t,e,i){function s(t,e,i){this.id=o.randomUUID(),this.body=t,this.defaultOptions={orientation:"left",showMinorLabels:!0,showMajorLabels:!0,icons:!0,majorLinesOffset:7,minorLinesOffset:4,labelOffsetX:10,labelOffsetY:2,iconWidth:20,width:"40px",visible:!0},this.linegraphSVG=i,this.props={},this.DOMelements={lines:{},labels:{}},this.dom={},this.range={start:0,end:0},this.options=o.extend({},this.defaultOptions),this.conversionFactor=1,this.setOptions(e),this.width=Number((""+this.options.width).replace("px","")),this.minWidth=this.width,this.height=this.linegraphSVG.offsetHeight,this.stepPixels=25,this.stepPixelsForced=25,this.lineOffset=0,this.master=!0,this.svgElements={},this.groups={},this.amountOfGroups=0,this._create()}var o=i(1),n=i(2),r=i(18),a=i(14);s.prototype=new r,s.prototype.addGroup=function(t,e){this.groups.hasOwnProperty(t)||(this.groups[t]=e),this.amountOfGroups+=1},s.prototype.updateGroup=function(t,e){this.groups[t]=e},s.prototype.removeGroup=function(t){this.groups.hasOwnProperty(t)&&(delete this.groups[t],this.amountOfGroups-=1)},s.prototype.setOptions=function(t){if(t){var e=!1;this.options.orientation!=t.orientation&&void 0!==t.orientation&&(e=!0);var i=["orientation","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","width","visible"];o.selectiveExtend(i,this.options,t),this.minWidth=Number((""+this.options.width).replace("px","")),1==e&&this.dom.frame&&(this.hide(),this.show())}},s.prototype._create=function(){this.dom.frame=document.createElement("div"),this.dom.frame.style.width=this.options.width,this.dom.frame.style.height=this.height,this.dom.lineContainer=document.createElement("div"),this.dom.lineContainer.style.width="100%",this.dom.lineContainer.style.height=this.height,this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="absolute",this.svg.style.top="0px",this.svg.style.height="100%",this.svg.style.width="100%",this.svg.style.display="block",this.dom.frame.appendChild(this.svg)},s.prototype._redrawGroupIcons=function(){n.prepareElements(this.svgElements);var t,e=this.options.iconWidth,i=15,s=4,o=s+.5*i;t="left"==this.options.orientation?s:this.width-e-s;for(var r in this.groups)this.groups.hasOwnProperty(r)&&(this.groups[r].drawIcon(t,o,this.svgElements,this.svg,e,i),o+=i+s);n.cleanupElements(this.svgElements)},s.prototype.show=function(){this.dom.frame.parentNode||("left"==this.options.orientation?this.body.dom.left.appendChild(this.dom.frame):this.body.dom.right.appendChild(this.dom.frame)),this.dom.lineContainer.parentNode||this.body.dom.backgroundHorizontal.appendChild(this.dom.lineContainer)},s.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.lineContainer.parentNode&&this.dom.lineContainer.parentNode.removeChild(this.dom.lineContainer)},s.prototype.setRange=function(t,e){this.range.start=t,this.range.end=e},s.prototype.redraw=function(){var t=!1;if(0==this.amountOfGroups)this.hide();else{this.show(),this.height=Number(this.linegraphSVG.style.height.replace("px","")),this.dom.lineContainer.style.height=this.height+"px",this.width=1==this.options.visible?Number((""+this.options.width).replace("px","")):0;var e=this.props,i=this.dom.frame;i.className="dataaxis",this._calculateCharSize();var s=this.options.orientation,o=this.options.showMinorLabels,n=this.options.showMajorLabels;e.minorLabelHeight=o?e.minorCharHeight:0,e.majorLabelHeight=n?e.majorCharHeight:0,e.minorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.minorLinesOffset,e.minorLineHeight=1,e.majorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.majorLinesOffset,e.majorLineHeight=1,"left"==s?(i.style.top="0",i.style.left="0",i.style.bottom="",i.style.width=this.width+"px",i.style.height=this.height+"px"):(i.style.top="",i.style.bottom="0",i.style.left="0",i.style.width=this.width+"px",i.style.height=this.height+"px"),t=this._redrawLabels(),1==this.options.icons&&this._redrawGroupIcons()}return t},s.prototype._redrawLabels=function(){n.prepareElements(this.DOMelements);var t=this.options.orientation,e=this.master?this.props.majorCharHeight||10:this.stepPixelsForced,i=new a(this.range.start,this.range.end,e,this.dom.frame.offsetHeight);this.step=i,i.first();var s=this.dom.frame.offsetHeight/(i.marginRange/i.step+1);this.stepPixels=s;var o=this.height/s,r=0;if(0==this.master){s=this.stepPixelsForced,r=Math.round(this.height/s-o);for(var h=0;.5*r>h;h++)i.previous();o=this.height/s}this.valueAtZero=i.marginEnd;var d=0,l=1;i.next(),this.maxLabelSize=0;for(var c=0;l=0&&this._redrawLabel(c-2,i.getCurrent(),t,"yAxis major",this.props.majorCharHeight),this._redrawLine(c,t,"grid horizontal major",this.options.majorLinesOffset,this.props.majorLineWidth)):this._redrawLine(c,t,"grid horizontal minor",this.options.minorLinesOffset,this.props.minorLineWidth),i.next(),l++}this.conversionFactor=d/((o-1)*i.step);var u=1==this.options.icons?this.options.iconWidth+this.options.labelOffsetX+15:this.options.labelOffsetX+15;return this.maxLabelSize>this.width-u&&1==this.options.visible?(this.width=this.maxLabelSize+u,this.options.width=this.width+"px",n.cleanupElements(this.DOMelements),this.redraw(),!0):this.maxLabelSizethis.minWidth?(this.width=Math.max(this.minWidth,this.maxLabelSize+u),this.options.width=this.width+"px",n.cleanupElements(this.DOMelements),this.redraw(),!0):(n.cleanupElements(this.DOMelements),!1)},s.prototype._redrawLabel=function(t,e,i,s,o){var r=n.getDOMElement("div",this.DOMelements,this.dom.frame);r.className=s,r.innerHTML=e,"left"==i?(r.style.left="-"+this.options.labelOffsetX+"px",r.style.textAlign="right"):(r.style.right="-"+this.options.labelOffsetX+"px",r.style.textAlign="left"),r.style.top=t-.5*o+this.options.labelOffsetY+"px",e+="";var a=Math.max(this.props.majorCharWidth,this.props.minorCharWidth);this.maxLabelSizee.axis){var c=d-e.axis;l-=c,o.forEach(h,function(t){t.top-=c})}a=l+e.item.vertical/2}else a=e.axis+e.item.vertical;a=Math.max(a,this.props.label.height);var p=this.dom.foreground;this.top=p.offsetTop,this.left=p.offsetLeft,this.width=p.offsetWidth,s=o.updateProperty(this,"height",a)||s,s=o.updateProperty(this.props.label,"width",this.dom.inner.clientWidth)||s,s=o.updateProperty(this.props.label,"height",this.dom.inner.clientHeight)||s,this.dom.background.style.height=a+"px",this.dom.foreground.style.height=a+"px",this.dom.label.style.height=a+"px";for(var u=0,m=this.visibleItems.length;m>u;u++){var g=this.visibleItems[u];g.repositionY()}return s},s.prototype.show=function(){this.dom.label.parentNode||this.itemSet.dom.labelSet.appendChild(this.dom.label),this.dom.foreground.parentNode||this.itemSet.dom.foreground.appendChild(this.dom.foreground),this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background),this.dom.axis.parentNode||this.itemSet.dom.axis.appendChild(this.dom.axis)},s.prototype.hide=function(){var t=this.dom.label;t.parentNode&&t.parentNode.removeChild(t);var e=this.dom.foreground;e.parentNode&&e.parentNode.removeChild(e);var i=this.dom.background;i.parentNode&&i.parentNode.removeChild(i);var s=this.dom.axis;s.parentNode&&s.parentNode.removeChild(s)},s.prototype.add=function(t){if(this.items[t.id]=t,t.setParent(this),t instanceof r&&-1==this.visibleItems.indexOf(t)){var e=this.itemSet.body.range;this._checkIfVisible(t,this.visibleItems,e)}},s.prototype.remove=function(t){delete this.items[t.id],t.setParent(this.itemSet);var e=this.visibleItems.indexOf(t);-1!=e&&this.visibleItems.splice(e,1)},s.prototype.removeFromDataSet=function(t){this.itemSet.removeItem(t.id)},s.prototype.order=function(){var t=o.toArray(this.items);this.orderedItems.byStart=t,this.orderedItems.byEnd=this._constructByEndArray(t),n.orderByStart(this.orderedItems.byStart),n.orderByEnd(this.orderedItems.byEnd)},s.prototype._constructByEndArray=function(t){for(var e=[],i=0;i0)for(n=0;n=0&&!this._checkIfInvisible(t.byStart[n],r,i);n--);for(n=s+1;n=0&&!this._checkIfInvisible(t.byEnd[n],r,i);n--);for(n=a+1;ne;e++)s=this.selection[e],o=this.items[s],o&&o.unselect();for(this.selection=[],e=0,i=t.length;i>e;e++)s=t[e],o=this.items[s],o&&(this.selection.push(s),o.select())}},s.prototype.getSelection=function(){return this.selection.concat([])},s.prototype.getVisibleItems=function(){var t=this.body.range.getRange(),e=this.body.util.toScreen(t.start),i=this.body.util.toScreen(t.end),s=[];for(var o in this.groups)if(this.groups.hasOwnProperty(o))for(var n=this.groups[o],r=n.visibleItems,a=0;ae&&s.push(h.id)}return s},s.prototype._deselect=function(t){for(var e=this.selection,i=0,s=e.length;s>i;i++)if(e[i]==t){e.splice(i,1);break}},s.prototype.redraw=function(){var t=this.options.margin,e=this.body.range,i=n.option.asSize,s=this.options,o=s.orientation,r=!1,a=this.dom.frame,h=s.editable.updateTime||s.editable.updateGroup;a.className="itemset"+(h?" editable":""),r=this._orderGroups()||r;var d=e.end-e.start,l=d!=this.lastVisibleInterval||this.props.width!=this.props.lastWidth;l&&(this.stackDirty=!0),this.lastVisibleInterval=d,this.props.lastWidth=this.props.width;var c=this.stackDirty,p=this._firstGroup(),u={item:t.item,axis:t.axis},m={item:t.item,axis:t.item.vertical/2},g=0,f=t.axis+t.item.vertical;return n.forEach(this.groups,function(t){var i=t==p?u:m,s=t.redraw(e,i,c);r=s||r,g+=t.height}),g=Math.max(g,f),this.stackDirty=!1,a.style.height=i(g),this.props.top=a.offsetTop,this.props.left=a.offsetLeft,this.props.width=a.offsetWidth,this.props.height=g,this.dom.axis.style.top=i("top"==o?this.body.domProps.top.height+this.body.domProps.border.top:this.body.domProps.top.height+this.body.domProps.centerContainer.height),this.dom.axis.style.left=this.body.domProps.border.left+"px",r=this._isResized()||r},s.prototype._firstGroup=function(){var t="top"==this.options.orientation?0:this.groupIds.length-1,e=this.groupIds[t],i=this.groups[e]||this.groups[u];return i||null},s.prototype._updateUngrouped=function(){var t=this.groups[u];if(this.groupsData)t&&(t.hide(),delete this.groups[u]);else if(!t){var e=null,i=null;t=new d(e,i,this),this.groups[u]=t;for(var s in this.items)this.items.hasOwnProperty(s)&&t.add(this.items[s]);t.show()}},s.prototype.getLabelSet=function(){return this.dom.labelSet},s.prototype.setItems=function(t){var e,i=this,s=this.itemsData;if(t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.itemsData=t}else this.itemsData=null;if(s&&(n.forEach(this.itemListeners,function(t,e){s.off(e,t)}),e=s.getIds(),this._onRemove(e)),this.itemsData){var o=this.id;n.forEach(this.itemListeners,function(t,e){i.itemsData.on(e,t,o)}),e=this.itemsData.getIds(),this._onAdd(e),this._updateUngrouped()}},s.prototype.getItems=function(){return this.itemsData},s.prototype.setGroups=function(t){var e,i=this;if(this.groupsData&&(n.forEach(this.groupListeners,function(t,e){i.groupsData.unsubscribe(e,t)}),e=this.groupsData.getIds(),this.groupsData=null,this._onRemoveGroups(e)),t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.groupsData=t}else this.groupsData=null;if(this.groupsData){var s=this.id;n.forEach(this.groupListeners,function(t,e){i.groupsData.on(e,t,s)}),e=this.groupsData.getIds(),this._onAddGroups(e)}this._updateUngrouped(),this._order(),this.body.emitter.emit("change")},s.prototype.getGroups=function(){return this.groupsData},s.prototype.removeItem=function(t){var e=this.itemsData.get(t),i=this.itemsData.getDataSet();e&&this.options.onRemove(e,function(e){e&&i.remove(t)})},s.prototype._onUpdate=function(t){var e=this;t.forEach(function(t){var i=e.itemsData.get(t,e.itemOptions),o=e.items[t],n=i.type||e.options.type||(i.end?"range":"box"),r=s.types[n];if(o&&(r&&o instanceof r?e._updateItem(o,i):(e._removeItem(o),o=null)),!o){if(!r)throw new TypeError("rangeoverflow"==n?'Item type "rangeoverflow" is deprecated. Use css styling instead: .vis.timeline .item.range .content {overflow: visible;}':'Unknown item type "'+n+'"');o=new r(i,e.conversion,e.options),o.id=t,e._addItem(o)}}),this._order(),this.stackDirty=!0,this.body.emitter.emit("change")},s.prototype._onAdd=s.prototype._onUpdate,s.prototype._onRemove=function(t){var e=0,i=this;t.forEach(function(t){var s=i.items[t];s&&(e++,i._removeItem(s))}),e&&(this._order(),this.stackDirty=!0,this.body.emitter.emit("change"))},s.prototype._order=function(){n.forEach(this.groups,function(t){t.order()})},s.prototype._onUpdateGroups=function(t){this._onAddGroups(t)},s.prototype._onAddGroups=function(t){var e=this;t.forEach(function(t){var i=e.groupsData.get(t),s=e.groups[t];if(s)s.setData(i);else{if(t==u)throw new Error("Illegal group id. "+t+" is a reserved id.");var o=Object.create(e.options);n.extend(o,{height:null}),s=new d(t,i,e),e.groups[t]=s;for(var r in e.items)if(e.items.hasOwnProperty(r)){var a=e.items[r];a.data.group==t&&s.add(a)}s.order(),s.show()}}),this.body.emitter.emit("change")},s.prototype._onRemoveGroups=function(t){var e=this.groups;t.forEach(function(t){var i=e[t];i&&(i.hide(),delete e[t])}),this.markDirty(),this.body.emitter.emit("change")},s.prototype._orderGroups=function(){if(this.groupsData){var t=this.groupsData.getIds({order:this.options.groupOrder}),e=!n.equalArray(t,this.groupIds);if(e){var i=this.groups;t.forEach(function(t){i[t].hide()}),t.forEach(function(t){i[t].show()}),this.groupIds=t}return e}return!1},s.prototype._addItem=function(t){this.items[t.id]=t;var e=this.groupsData?t.data.group:u,i=this.groups[e];i&&i.add(t)},s.prototype._updateItem=function(t,e){var i=t.data.group;if(t.data=e,t.displayed&&t.redraw(),i!=t.data.group){var s=this.groups[i];s&&s.remove(t);var o=this.groupsData?t.data.group:u,n=this.groups[o];n&&n.add(t)}},s.prototype._removeItem=function(t){t.hide(),delete this.items[t.id];var e=this.selection.indexOf(t.id);-1!=e&&this.selection.splice(e,1);var i=this.groupsData?t.data.group:u,s=this.groups[i];s&&s.remove(t)},s.prototype._constructByEndArray=function(t){for(var e=[],i=0;i0||o.length>0)&&this.body.emitter.emit("select",{items:this.getSelection()}),t.stopPropagation()}},s.prototype._onAddItem=function(t){if(this.options.selectable&&this.options.editable.add){var e=this,i=this.body.util.snap||null,o=s.itemFromTarget(t);if(o){var r=e.itemsData.get(o.id);this.options.onUpdate(r,function(t){t&&e.itemsData.update(t)})}else{var a=n.getAbsoluteLeft(this.dom.frame),h=t.gesture.center.pageX-a,d=this.body.util.toTime(h),l={start:i?i(d):d,content:"new item"};if("range"===this.options.type){var c=this.body.util.toTime(h+this.props.width/5);l.end=i?i(c):c}l[this.itemsData.fieldId]=n.randomUUID();var p=s.groupFromTarget(t);p&&(l.group=p.groupId),this.options.onAdd(l,function(t){t&&e.itemsData.add(l)})}}},s.prototype._onMultiSelectItem=function(t){if(this.options.selectable){var e,i=s.itemFromTarget(t);if(i){e=this.getSelection();var o=e.indexOf(i.id);-1==o?e.push(i.id):e.splice(o,1),this.setSelection(e),this.body.emitter.emit("select",{items:this.getSelection()}),t.stopPropagation()}}},s.itemFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-item"))return e["timeline-item"];e=e.parentNode}return null},s.groupFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-group"))return e["timeline-group"];e=e.parentNode}return null},s.itemSetFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-itemset"))return e["timeline-itemset"];e=e.parentNode}return null},t.exports=s},function(t,e,i){function s(t,e,i){this.body=t,this.defaultOptions={enabled:!0,icons:!0,iconSize:20,iconSpacing:6,left:{visible:!0,position:"top-left"},right:{visible:!0,position:"top-left"}},this.side=i,this.options=o.extend({},this.defaultOptions),this.svgElements={},this.dom={},this.groups={},this.amountOfGroups=0,this._create(),this.setOptions(e)}var o=i(1),n=i(2),r=i(18);s.prototype=new r,s.prototype.addGroup=function(t,e){this.groups.hasOwnProperty(t)||(this.groups[t]=e),this.amountOfGroups+=1},s.prototype.updateGroup=function(t,e){this.groups[t]=e},s.prototype.removeGroup=function(t){this.groups.hasOwnProperty(t)&&(delete this.groups[t],this.amountOfGroups-=1)},s.prototype._create=function(){this.dom.frame=document.createElement("div"),this.dom.frame.className="legend",this.dom.frame.style.position="absolute",this.dom.frame.style.top="10px",this.dom.frame.style.display="block",this.dom.textArea=document.createElement("div"),this.dom.textArea.className="legendText",this.dom.textArea.style.position="relative",this.dom.textArea.style.top="0px",this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="absolute",this.svg.style.top="0px",this.svg.style.width=this.options.iconSize+5+"px",this.dom.frame.appendChild(this.svg),this.dom.frame.appendChild(this.dom.textArea)},s.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame)},s.prototype.show=function(){this.dom.frame.parentNode||this.body.dom.center.appendChild(this.dom.frame)},s.prototype.setOptions=function(t){var e=["enabled","orientation","icons","left","right"];o.selectiveDeepExtend(e,this.options,t)},s.prototype.redraw=function(){if(0==this.options[this.side].visible||0==this.amountOfGroups||0==this.options.enabled)this.hide();else{this.show(),"top-left"==this.options[this.side].position||"bottom-left"==this.options[this.side].position?(this.dom.frame.style.left="4px",this.dom.frame.style.textAlign="left",this.dom.textArea.style.textAlign="left",this.dom.textArea.style.left=this.options.iconSize+15+"px",this.dom.textArea.style.right="",this.svg.style.left="0px",this.svg.style.right=""):(this.dom.frame.style.right="4px",this.dom.frame.style.textAlign="right",this.dom.textArea.style.textAlign="right",this.dom.textArea.style.right=this.options.iconSize+15+"px",this.dom.textArea.style.left="",this.svg.style.right="0px",this.svg.style.left=""),"top-left"==this.options[this.side].position||"top-right"==this.options[this.side].position?(this.dom.frame.style.top=4-Number(this.body.dom.center.style.top.replace("px",""))+"px",this.dom.frame.style.bottom=""):(this.dom.frame.style.bottom=4-Number(this.body.dom.center.style.top.replace("px",""))+"px",this.dom.frame.style.top=""),0==this.options.icons?(this.dom.frame.style.width=this.dom.textArea.offsetWidth+10+"px",this.dom.textArea.style.right="",this.dom.textArea.style.left="",this.svg.style.width="0px"):(this.dom.frame.style.width=this.options.iconSize+15+this.dom.textArea.offsetWidth+10+"px",this.drawLegendIcons());var t="";for(var e in this.groups)this.groups.hasOwnProperty(e)&&(t+=this.groups[e].content+"
");this.dom.textArea.innerHTML=t,this.dom.textArea.style.lineHeight=.75*this.options.iconSize+this.options.iconSpacing+"px"}},s.prototype.drawLegendIcons=function(){if(this.dom.frame.parentNode){n.prepareElements(this.svgElements);var t=window.getComputedStyle(this.dom.frame).paddingTop,e=Number(t.replace("px","")),i=e,s=this.options.iconSize,o=.75*this.options.iconSize,r=e+.5*o+3;this.svg.style.width=s+5+e+"px";for(var a in this.groups)this.groups.hasOwnProperty(a)&&(this.groups[a].drawIcon(i,r,this.svgElements,this.svg,s,o),r+=o+this.options.iconSpacing);n.cleanupElements(this.svgElements)}},t.exports=s},function(t,e,i){function s(t,e){this.id=o.randomUUID(),this.body=t,this.defaultOptions={yAxisOrientation:"left",defaultGroup:"default",sort:!0,sampling:!0,graphHeight:"400px",shaded:{enabled:!1,orientation:"bottom"},style:"line",barChart:{width:50,align:"center"},catmullRom:{enabled:!0,parametrization:"centripetal",alpha:.5},drawPoints:{enabled:!0,size:6,style:"square"},dataAxis:{showMinorLabels:!0,showMajorLabels:!0,icons:!1,width:"40px",visible:!0},legend:{enabled:!1,icons:!0,left:{visible:!0,position:"top-left"},right:{visible:!0,position:"top-right"}}},this.options=o.extend({},this.defaultOptions),this.dom={},this.props={},this.hammer=null,this.groups={};var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e){i._onAdd(e.items)},update:function(t,e){i._onUpdate(e.items)},remove:function(t,e){i._onRemove(e.items)}},this.groupListeners={add:function(t,e){i._onAddGroups(e.items)},update:function(t,e){i._onUpdateGroups(e.items)},remove:function(t,e){i._onRemoveGroups(e.items)}},this.items={},this.selection=[],this.lastStart=this.body.range.start,this.touchParams={},this.svgElements={},this.setOptions(e),this.groupsUsingDefaultStyles=[0],this.body.emitter.on("rangechange",function(){if(0!=i.lastStart){var t=i.body.range.start-i.lastStart,e=i.body.range.end-i.body.range.start;if(0!=i.width){var s=i.width/e,o=t*s;i.svg.style.left=-i.width-o+"px"}}}),this.body.emitter.on("rangechanged",function(){i.lastStart=i.body.range.start,i.svg.style.left=o.option.asSize(-i.width),i._updateGraph.apply(i)}),this._create(),this.body.emitter.emit("change")}var o=i(1),n=i(2),r=i(3),a=i(4),h=i(18),d=i(21),l=i(22),c=i(25),p="__ungrouped__";s.prototype=new h,s.prototype._create=function(){var t=document.createElement("div");t.className="LineGraph",this.dom.frame=t,this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="relative",this.svg.style.height=(""+this.options.graphHeight).replace("px","")+"px",this.svg.style.display="block",t.appendChild(this.svg),this.options.dataAxis.orientation="left",this.yAxisLeft=new d(this.body,this.options.dataAxis,this.svg),this.options.dataAxis.orientation="right",this.yAxisRight=new d(this.body,this.options.dataAxis,this.svg),delete this.options.dataAxis.orientation,this.legendLeft=new c(this.body,this.options.legend,"left"),this.legendRight=new c(this.body,this.options.legend,"right"),this.show()},s.prototype.setOptions=function(t){if(t){var e=["sampling","defaultGroup","graphHeight","yAxisOrientation","style","barChart","dataAxis","sort"];o.selectiveDeepExtend(e,this.options,t),o.mergeOptions(this.options,t,"catmullRom"),o.mergeOptions(this.options,t,"drawPoints"),o.mergeOptions(this.options,t,"shaded"),o.mergeOptions(this.options,t,"legend"),t.catmullRom&&"object"==typeof t.catmullRom&&t.catmullRom.parametrization&&("uniform"==t.catmullRom.parametrization?this.options.catmullRom.alpha=0:"chordal"==t.catmullRom.parametrization?this.options.catmullRom.alpha=1:(this.options.catmullRom.parametrization="centripetal",this.options.catmullRom.alpha=.5)),this.yAxisLeft&&void 0!==t.dataAxis&&(this.yAxisLeft.setOptions(this.options.dataAxis),this.yAxisRight.setOptions(this.options.dataAxis)),this.legendLeft&&void 0!==t.legend&&(this.legendLeft.setOptions(this.options.legend),this.legendRight.setOptions(this.options.legend)),this.groups.hasOwnProperty(p)&&this.groups[p].setOptions(t)}this.dom.frame&&this._updateGraph()},s.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame)},s.prototype.show=function(){this.dom.frame.parentNode||this.body.dom.center.appendChild(this.dom.frame)},s.prototype.setItems=function(t){var e,i=this,s=this.itemsData;if(t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.itemsData=t}else this.itemsData=null;if(s&&(o.forEach(this.itemListeners,function(t,e){s.off(e,t)}),e=s.getIds(),this._onRemove(e)),this.itemsData){var n=this.id;o.forEach(this.itemListeners,function(t,e){i.itemsData.on(e,t,n)}),e=this.itemsData.getIds(),this._onAdd(e)}this._updateUngrouped(),this._updateGraph(),this.redraw()},s.prototype.setGroups=function(t){var e,i=this;if(this.groupsData&&(o.forEach(this.groupListeners,function(t,e){i.groupsData.unsubscribe(e,t)}),e=this.groupsData.getIds(),this.groupsData=null,this._onRemoveGroups(e)),t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.groupsData=t}else this.groupsData=null;if(this.groupsData){var s=this.id;o.forEach(this.groupListeners,function(t,e){i.groupsData.on(e,t,s)}),e=this.groupsData.getIds(),this._onAddGroups(e)}this._onUpdate()},s.prototype._onUpdate=function(){this._updateUngrouped(),this._updateAllGroupData(),this._updateGraph(),this.redraw()},s.prototype._onAdd=function(t){this._onUpdate(t)},s.prototype._onRemove=function(t){this._onUpdate(t)},s.prototype._onUpdateGroups=function(t){for(var e=0;e0){for(s=0;su){e.push(f);break}e.push(f)}}else for(var g=0;gp&&f.x0){for(var p=0;pi?i:a,d=s>d?s:d):(r=!0,h=h>i?i:h,l=s>l?s:l)}1==n&&this.yAxisLeft.setRange(a,d),1==r&&this.yAxisRight.setRange(h,l)}return o=this._toggleAxisVisiblity(n,this.yAxisLeft)||o,o=this._toggleAxisVisiblity(r,this.yAxisRight)||o,1==r&&1==n?(this.yAxisLeft.drawIcons=!0,this.yAxisRight.drawIcons=!0):(this.yAxisLeft.drawIcons=!1,this.yAxisRight.drawIcons=!1),this.yAxisRight.master=!n,0==this.yAxisRight.master?(1==r&&(this.yAxisLeft.lineOffset=this.yAxisRight.width),o=this.yAxisLeft.redraw()||o,this.yAxisRight.stepPixelsForced=this.yAxisLeft.stepPixels,o=this.yAxisRight.redraw()||o):o=this.yAxisRight.redraw()||o,o},s.prototype._toggleAxisVisiblity=function(t,e){var i=!1; -return 0==t?e.dom.frame.parentNode&&(e.hide(),i=!0):e.dom.frame.parentNode||(e.show(),i=!0),i},s.prototype._drawBarGraph=function(t,e){if(null!=t&&t.length>0){var i,s=.1*e.options.barChart.width,o=0,r=e.options.barChart.width;"left"==e.options.barChart.align?o-=.5*r:"right"==e.options.barChart.align&&(o+=.5*r);for(var a=0;a0&&(i=Math.min(i,Math.abs(t[a-1].x-t[a].x))),r>i&&(r=s>i?s:i),n.drawBar(t[a].x+o,t[a].y,r,e.zeroPosition-t[a].y,e.className+" bar",this.svgElements,this.svg);1==e.options.drawPoints.enabled&&this._drawPoints(t,e,this.svgElements,this.svg,o)}},s.prototype._drawLineGraph=function(t,e){if(null!=t&&t.length>0){var i,s,o=Number(this.svg.style.height.replace("px",""));if(i=n.getSVGElement("path",this.svgElements,this.svg),i.setAttributeNS(null,"class",e.className),s=1==e.options.catmullRom.enabled?this._catmullRom(t,e):this._linear(t),1==e.options.shaded.enabled){var r,a=n.getSVGElement("path",this.svgElements,this.svg);r="top"==e.options.shaded.orientation?"M"+t[0].x+",0 "+s+"L"+t[t.length-1].x+",0":"M"+t[0].x+","+o+" "+s+"L"+t[t.length-1].x+","+o,a.setAttributeNS(null,"class",e.className+" fill"),a.setAttributeNS(null,"d",r)}i.setAttributeNS(null,"d","M"+s),1==e.options.drawPoints.enabled&&this._drawPoints(t,e,this.svgElements,this.svg)}},s.prototype._drawPoints=function(t,e,i,s,o){void 0===o&&(o=0);for(var r=0;rp;p+=r)i=n(t[p].x)+this.width-1,s=t[p].y,o.push({x:i,y:s}),h=h>s?s:h,d=s>d?s:d;return{min:h,max:d,data:o}},s.prototype._convertYvalues=function(t,e){var i,s,o=[],n=this.yAxisLeft,r=Number(this.svg.style.height.replace("px",""));"right"==e.options.yAxisOrientation&&(n=this.yAxisRight);for(var a=0;al;l++)e=0==l?t[0]:t[l-1],i=t[l],s=t[l+1],o=d>l+2?t[l+2]:s,n={x:(-e.x+6*i.x+s.x)*h,y:(-e.y+6*i.y+s.y)*h},r={x:(i.x+6*s.x-o.x)*h,y:(i.y+6*s.y-o.y)*h},a+="C"+n.x+","+n.y+" "+r.x+","+r.y+" "+s.x+","+s.y+" ";return a},s.prototype._catmullRom=function(t,e){var i=e.options.catmullRom.alpha;if(0==i||void 0===i)return this._catmullRomUniform(t);for(var s,o,n,r,a,h,d,l,c,p,u,m,g,f,v,y,b,x,w,_=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",S=t.length,C=0;S-1>C;C++)s=0==C?t[0]:t[C-1],o=t[C],n=t[C+1],r=S>C+2?t[C+2]:n,d=Math.sqrt(Math.pow(s.x-o.x,2)+Math.pow(s.y-o.y,2)),l=Math.sqrt(Math.pow(o.x-n.x,2)+Math.pow(o.y-n.y,2)),c=Math.sqrt(Math.pow(n.x-r.x,2)+Math.pow(n.y-r.y,2)),f=Math.pow(c,i),y=Math.pow(c,2*i),v=Math.pow(l,i),b=Math.pow(l,2*i),w=Math.pow(d,i),x=Math.pow(d,2*i),p=2*x+3*w*v+b,u=2*y+3*f*v+b,m=3*w*(w+v),m>0&&(m=1/m),g=3*f*(f+v),g>0&&(g=1/g),a={x:(-b*s.x+p*o.x+x*n.x)*m,y:(-b*s.y+p*o.y+x*n.y)*m},h={x:(y*o.x+u*n.x-b*r.x)*g,y:(y*o.y+u*n.y-b*r.y)*g},0==a.x&&0==a.y&&(a=o),0==h.x&&0==h.y&&(h=n),_+="C"+a.x+","+a.y+" "+h.x+","+h.y+" "+n.x+","+n.y+" ";return _},s.prototype._linear=function(t){for(var e="",i=0;id;){d++;var l=n.getCurrent(),c=this.body.util.toScreen(l),p=n.isMajor();this.options.showMinorLabels&&this._repaintMinorText(c,n.getLabelMinor(),t),p&&this.options.showMajorLabels?(c>0&&(void 0==h&&(h=c),this._repaintMajorText(c,n.getLabelMajor(),t)),this._repaintMajorLine(c,t)):this._repaintMinorLine(c,t),n.next()}if(this.options.showMajorLabels){var u=this.body.util.toTime(0),m=n.getLabelMajor(u),g=m.length*(this.props.majorCharWidth||10)+10;(void 0==h||h>g)&&this._repaintMajorText(0,m,t)}o.forEach(this.dom.redundant,function(t){for(;t.length;){var e=t.pop();e&&e.parentNode&&e.parentNode.removeChild(e)}})},s.prototype._repaintMinorText=function(t,e,i){var s=this.dom.redundant.minorTexts.shift();if(!s){var o=document.createTextNode("");s=document.createElement("div"),s.appendChild(o),s.className="text minor",this.dom.foreground.appendChild(s)}this.dom.minorTexts.push(s),s.childNodes[0].nodeValue=e,s.style.top="top"==i?this.props.majorLabelHeight+"px":"0",s.style.left=t+"px"},s.prototype._repaintMajorText=function(t,e,i){var s=this.dom.redundant.majorTexts.shift();if(!s){var o=document.createTextNode(e);s=document.createElement("div"),s.className="text major",s.appendChild(o),this.dom.foreground.appendChild(s)}this.dom.majorTexts.push(s),s.childNodes[0].nodeValue=e,s.style.top="top"==i?"0":this.props.minorLabelHeight+"px",s.style.left=t+"px"},s.prototype._repaintMinorLine=function(t,e){var i=this.dom.redundant.minorLines.shift();i||(i=document.createElement("div"),i.className="grid vertical minor",this.dom.background.appendChild(i)),this.dom.minorLines.push(i);var s=this.props;i.style.top="top"==e?s.majorLabelHeight+"px":this.body.domProps.top.height+"px",i.style.height=s.minorLineHeight+"px",i.style.left=t-s.minorLineWidth/2+"px"},s.prototype._repaintMajorLine=function(t,e){var i=this.dom.redundant.majorLines.shift();i||(i=document.createElement("DIV"),i.className="grid vertical major",this.dom.background.appendChild(i)),this.dom.majorLines.push(i);var s=this.props;i.style.top="top"==e?"0":this.body.domProps.top.height+"px",i.style.left=t-s.majorLineWidth/2+"px",i.style.height=s.majorLineHeight+"px"},s.prototype._calculateCharSize=function(){this.dom.measureCharMinor||(this.dom.measureCharMinor=document.createElement("DIV"),this.dom.measureCharMinor.className="text minor measure",this.dom.measureCharMinor.style.position="absolute",this.dom.measureCharMinor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMinor)),this.props.minorCharHeight=this.dom.measureCharMinor.clientHeight,this.props.minorCharWidth=this.dom.measureCharMinor.clientWidth,this.dom.measureCharMajor||(this.dom.measureCharMajor=document.createElement("DIV"),this.dom.measureCharMajor.className="text minor measure",this.dom.measureCharMajor.style.position="absolute",this.dom.measureCharMajor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMajor)),this.props.majorCharHeight=this.dom.measureCharMajor.clientHeight,this.props.majorCharWidth=this.dom.measureCharMajor.clientWidth},s.prototype.snap=function(t){return this.step.snap(t)},t.exports=s},function(t,e,i){function s(t,e,i){this.id=null,this.parent=null,this.data=t,this.dom=null,this.conversion=e||{},this.options=i||{},this.selected=!1,this.displayed=!1,this.dirty=!0,this.top=null,this.left=null,this.width=null,this.height=null}var o=i(42);s.prototype.select=function(){this.selected=!0,this.displayed&&this.redraw()},s.prototype.unselect=function(){this.selected=!1,this.displayed&&this.redraw()},s.prototype.setParent=function(t){this.displayed?(this.hide(),this.parent=t,this.parent&&this.show()):this.parent=t},s.prototype.isVisible=function(){return!1},s.prototype.show=function(){return!1},s.prototype.hide=function(){return!1},s.prototype.redraw=function(){},s.prototype.repositionX=function(){},s.prototype.repositionY=function(){},s.prototype._repaintDeleteButton=function(t){if(this.selected&&this.options.editable.remove&&!this.dom.deleteButton){var e=this,i=document.createElement("div");i.className="delete",i.title="Delete this item",o(i,{preventDefault:!0}).on("tap",function(t){e.parent.removeFromDataSet(e),t.stopPropagation()}),t.appendChild(i),this.dom.deleteButton=i}else!this.selected&&this.dom.deleteButton&&(this.dom.deleteButton.parentNode&&this.dom.deleteButton.parentNode.removeChild(this.dom.deleteButton),this.dom.deleteButton=null)},t.exports=s},function(t,e,i){function s(t,e,i){if(this.props={dot:{width:0,height:0},line:{width:0,height:0}},t&&void 0==t.start)throw new Error('Property "start" missing in item '+t);o.call(this,t,e,i)}var o=i(28);s.prototype=new o(null,null,null),s.prototype.isVisible=function(t){var e=(t.end-t.start)/4;return this.data.start>t.start-e&&this.data.startt.start-e&&this.data.startt.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),t.box["timeline-item"]=this),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.foreground;if(!e)throw new Error("Cannot redraw time axis: parent has no foreground container element");e.appendChild(t.box)}if(this.displayed=!0,this.data.content!=this.content){if(this.content=this.data.content,this.content instanceof Element)t.content.innerHTML="",t.content.appendChild(this.content);else{if(void 0==this.data.content)throw new Error('Property "content" missing in item '+this.data.id);t.content.innerHTML=this.content}this.dirty=!0}this.data.title!=this.title&&(t.box.title=this.data.title,this.title=this.data.title);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");this.className!=i&&(this.className=i,t.box.className=this.baseClassName+i,this.dirty=!0),this.dirty&&(this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.props.content.width=this.dom.content.offsetWidth,this.height=this.dom.box.offsetHeight,this.dirty=!1),this._repaintDeleteButton(t.box),this._repaintDragLeft(),this._repaintDragRight()},s.prototype.show=function(){this.displayed||this.redraw()},s.prototype.hide=function(){if(this.displayed){var t=this.dom.box;t.parentNode&&t.parentNode.removeChild(t),this.top=null,this.left=null,this.displayed=!1}},s.prototype.repositionX=function(){var t,e=this.props,i=this.parent.width,s=this.conversion.toScreen(this.data.start),o=this.conversion.toScreen(this.data.end),n=this.options.padding;-i>s&&(s=-i),o>2*i&&(o=2*i);var r=Math.max(o-s,1);this.overflow?(t=Math.max(-s,0),this.left=s,this.width=r+this.props.content.width):(t=0>s?Math.min(-s,o-s-e.content.width-2*n):0,this.left=s,this.width=r),this.dom.box.style.left=this.left+"px",this.dom.box.style.width=r+"px",this.dom.content.style.left=t+"px"},s.prototype.repositionY=function(){var t=this.options.orientation,e=this.dom.box;e.style.top="top"==t?this.top+"px":this.parent.height-this.top-this.height+"px"},s.prototype._repaintDragLeft=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragLeft){var t=document.createElement("div");t.className="drag-left",t.dragLeftItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragLeft=t}else!this.selected&&this.dom.dragLeft&&(this.dom.dragLeft.parentNode&&this.dom.dragLeft.parentNode.removeChild(this.dom.dragLeft),this.dom.dragLeft=null)},s.prototype._repaintDragRight=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragRight){var t=document.createElement("div");t.className="drag-right",t.dragRightItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragRight=t}else!this.selected&&this.dom.dragRight&&(this.dom.dragRight.parentNode&&this.dom.dragRight.parentNode.removeChild(this.dom.dragRight),this.dom.dragRight=null)},t.exports=s},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this._initializeMixinLoaders(),this.containerElement=t,this.width="100%",this.height="100%",this.renderRefreshRate=60,this.renderTimestep=1e3/this.renderRefreshRate,this.renderTime=.5*this.renderTimestep,this.maxPhysicsTicksPerRender=3,this.physicsDiscreteStepsize=.5,this.stabilize=!0,this.selectable=!0,this.initializing=!0,this.triggerFunctions={add:null,edit:null,editEdge:null,connect:null,del:null},this.constants={nodes:{radiusMin:10,radiusMax:30,radius:10,shape:"ellipse",image:void 0,widthMin:16,widthMax:64,fixed:!1,fontColor:"black",fontSize:14,fontFace:"verdana",level:-1,color:{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},borderColor:"#2B7CE9",backgroundColor:"#97C2FC",highlightColor:"#D2E5FF",group:void 0,borderWidth:1},edges:{widthMin:1,widthMax:15,width:1,widthSelectionMultiplier:2,hoverWidth:1.5,style:"line",color:{color:"#848484",highlight:"#848484",hover:"#848484"},fontColor:"#343434",fontSize:14,fontFace:"arial",fontFill:"white",arrowScaleFactor:1,dash:{length:10,gap:5,altLength:void 0},inheritColor:"from"},configurePhysics:!1,physics:{barnesHut:{enabled:!0,theta:1/.6,gravitationalConstant:-2e3,centralGravity:.3,springLength:95,springConstant:.04,damping:.09},repulsion:{centralGravity:0,springLength:200,springConstant:.05,nodeDistance:100,damping:.09},hierarchicalRepulsion:{enabled:!1,centralGravity:0,springLength:100,springConstant:.01,nodeDistance:150,damping:.09},damping:null,centralGravity:null,springLength:null,springConstant:null},clustering:{enabled:!1,initialMaxNodes:100,clusterThreshold:500,reduceToNodes:300,chainThreshold:.4,clusterEdgeThreshold:20,sectorThreshold:100,screenSizeThreshold:.2,fontSizeMultiplier:4,maxFontSize:1e3,forceAmplification:.1,distanceAmplification:.1,edgeGrowth:20,nodeScaling:{width:1,height:1,radius:1},maxNodeSizeIncrements:600,activeAreaBoxSize:80,clusterLevelDifference:2},navigation:{enabled:!1},keyboard:{enabled:!1,speed:{x:10,y:10,zoom:.02}},dataManipulation:{enabled:!1,initiallyVisible:!1},hierarchicalLayout:{enabled:!1,levelSeparation:150,nodeSpacing:100,direction:"UD"},freezeForStabilization:!1,smoothCurves:{enabled:!0,dynamic:!0,type:"continuous",roundness:.5},dynamicSmoothCurves:!0,maxVelocity:30,minVelocity:.1,stabilizationIterations:1e3,labels:{add:"Add Node",edit:"Edit",link:"Add Link",del:"Delete selected",editNode:"Edit Node",editEdge:"Edit Edge",back:"Back",addDescription:"Click in an empty space to place a new node.",linkDescription:"Click on a node and drag the edge to another node to connect them.",editEdgeDescription:"Click on the control points and drag them to a node to connect to it.",addError:"The function for add does not support two arguments (data,callback).",linkError:"The function for connect does not support two arguments (data,callback).",editError:"The function for edit does not support two arguments (data, callback).",editBoundError:"No edit function has been bound to this button.",deleteError:"The function for delete does not support two arguments (data, callback).",deleteClusterError:"Clusters cannot be deleted."},tooltip:{delay:300,fontColor:"black",fontSize:14,fontFace:"verdana",color:{border:"#666",background:"#FFFFC6"}},dragNetwork:!0,dragNodes:!0,zoomable:!0,hover:!1,hideEdgesOnDrag:!1,hideNodesOnDrag:!1},this.hoverObj={nodes:{},edges:{}},this.controlNodesActive=!1;var o=this;this.groups=new p,this.images=new u,this.images.setOnloadCallback(function(){o._redraw()}),this.xIncrement=0,this.yIncrement=0,this.zoomIncrement=0,this._loadPhysicsSystem(),this._create(),this._loadSectorSystem(),this._loadClusterSystem(),this._loadSelectionSystem(),this._loadHierarchySystem(),this._setTranslation(this.frame.clientWidth/2,this.frame.clientHeight/2),this._setScale(1),this.setOptions(i),this.freezeSimulation=!1,this.cachedFunctions={},this.calculationNodes={},this.calculationNodeIndices=[],this.nodeIndices=[],this.nodes={},this.edges={},this.canvasTopLeft={x:0,y:0},this.canvasBottomRight={x:0,y:0},this.pointerPosition={x:0,y:0},this.areaCenter={},this.scale=1,this.previousScale=this.scale,this.nodesData=null,this.edgesData=null,this.nodesListeners={add:function(t,e){o._addNodes(e.items),o.start()},update:function(t,e){o._updateNodes(e.items),o.start()},remove:function(t,e){o._removeNodes(e.items),o.start()}},this.edgesListeners={add:function(t,e){o._addEdges(e.items),o.start()},update:function(t,e){o._updateEdges(e.items),o.start()},remove:function(t,e){o._removeEdges(e.items),o.start()}},this.moving=!0,this.timer=void 0,this.setData(e,this.constants.clustering.enabled||this.constants.hierarchicalLayout.enabled),this.initializing=!1,1==this.constants.hierarchicalLayout.enabled?this._setupHierarchicalLayout():0==this.stabilize&&this.zoomExtent(!0,this.constants.clustering.enabled),this.constants.clustering.enabled&&this.startWithClustering()}var o=i(46),n=i(42),r=i(47),a=i(1),h=i(39),d=i(3),l=i(4),c=i(38),p=i(34),u=i(35),m=i(36),g=i(33),f=i(37),v=i(43);i(40),o(s.prototype),s.prototype._getScriptPath=function(){for(var t=document.getElementsByTagName("script"),e=0;et.x&&(s=t.x),ot.y&&(e=t.y),i=this.constants.clustering.initialMaxNodes?49.07548/(o+142.05338)+91444e-8:12.662/(o+7.4147)+.0964822:1==this.constants.clustering.enabled&&o>=this.constants.clustering.initialMaxNodes?77.5271985/(o+187.266146)+476710517e-13:30.5062972/(o+19.93597763)+.08413486;var n=Math.min(this.frame.canvas.clientWidth/600,this.frame.canvas.clientHeight/600);i*=n}else{var r=1.1*(Math.abs(s.minX)+Math.abs(s.maxX)),a=1.1*(Math.abs(s.minY)+Math.abs(s.maxY)),h=this.frame.canvas.clientWidth/r,d=this.frame.canvas.clientHeight/a;i=d>=h?h:d}i>1&&(i=1),this._setScale(i),this._centerNetwork(s),0==e&&(this.moving=!0,this.start())},s.prototype._updateNodeIndexList=function(){this._clearNodeIndexList();for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodeIndices.push(t)},s.prototype.setData=function(t,e){if(void 0===e&&(e=!1),t&&t.dot&&(t.nodes||t.edges))throw new SyntaxError('Data must contain either parameter "dot" or parameter pair "nodes" and "edges", but not both.');if(this.setOptions(t&&t.options),t&&t.dot){if(t&&t.dot){var i=c.DOTToGraph(t.dot);return void this.setData(i)}}else this._setNodes(t&&t.nodes),this._setEdges(t&&t.edges);if(this._putDataInSector(),!e)if(this.stabilize){var s=this;setTimeout(function(){s._stabilize(),s.start()},0)}else this.start()},s.prototype.setOptions=function(t){if(t){var e;if(void 0!==t.width&&(this.width=t.width),void 0!==t.height&&(this.height=t.height),void 0!==t.stabilize&&(this.stabilize=t.stabilize),void 0!==t.selectable&&(this.selectable=t.selectable),void 0!==t.freezeForStabilization&&(this.constants.freezeForStabilization=t.freezeForStabilization),void 0!==t.configurePhysics&&(this.constants.configurePhysics=t.configurePhysics),void 0!==t.stabilizationIterations&&(this.constants.stabilizationIterations=t.stabilizationIterations),void 0!==t.dragNetwork&&(this.constants.dragNetwork=t.dragNetwork),void 0!==t.dragNodes&&(this.constants.dragNodes=t.dragNodes),void 0!==t.zoomable&&(this.constants.zoomable=t.zoomable),void 0!==t.hover&&(this.constants.hover=t.hover),void 0!==t.hideEdgesOnDrag&&(this.constants.hideEdgesOnDrag=t.hideEdgesOnDrag),void 0!==t.hideNodesOnDrag&&(this.constants.hideNodesOnDrag=t.hideNodesOnDrag),void 0!==t.dragGraph)throw new Error("Option dragGraph is renamed to dragNetwork");if(void 0!==t.labels)for(e in t.labels)t.labels.hasOwnProperty(e)&&(this.constants.labels[e]=t.labels[e]);if(t.onAdd&&(this.triggerFunctions.add=t.onAdd),t.onEdit&&(this.triggerFunctions.edit=t.onEdit),t.onEditEdge&&(this.triggerFunctions.editEdge=t.onEditEdge),t.onConnect&&(this.triggerFunctions.connect=t.onConnect),t.onDelete&&(this.triggerFunctions.del=t.onDelete),t.physics){if(t.physics.barnesHut){this.constants.physics.barnesHut.enabled=!0;for(e in t.physics.barnesHut)t.physics.barnesHut.hasOwnProperty(e)&&(this.constants.physics.barnesHut[e]=t.physics.barnesHut[e])}if(t.physics.repulsion){this.constants.physics.barnesHut.enabled=!1;for(e in t.physics.repulsion)t.physics.repulsion.hasOwnProperty(e)&&(this.constants.physics.repulsion[e]=t.physics.repulsion[e])}if(t.physics.hierarchicalRepulsion){this.constants.hierarchicalLayout.enabled=!0,this.constants.physics.hierarchicalRepulsion.enabled=!0,this.constants.physics.barnesHut.enabled=!1;for(e in t.physics.hierarchicalRepulsion)t.physics.hierarchicalRepulsion.hasOwnProperty(e)&&(this.constants.physics.hierarchicalRepulsion[e]=t.physics.hierarchicalRepulsion[e])}}if(void 0!==t.smoothCurves)if("boolean"==typeof t.smoothCurves)this.constants.smoothCurves.enabled=t.smoothCurves;else{this.constants.smoothCurves.enabled=!0;for(e in t.smoothCurves)t.smoothCurves.hasOwnProperty(e)&&(this.constants.smoothCurves[e]=t.smoothCurves[e])}if(t.hierarchicalLayout){this.constants.hierarchicalLayout.enabled=!0;for(e in t.hierarchicalLayout)t.hierarchicalLayout.hasOwnProperty(e)&&(this.constants.hierarchicalLayout[e]=t.hierarchicalLayout[e])}else void 0!==t.hierarchicalLayout&&(this.constants.hierarchicalLayout.enabled=!1);if(t.clustering){this.constants.clustering.enabled=!0;for(e in t.clustering)t.clustering.hasOwnProperty(e)&&(this.constants.clustering[e]=t.clustering[e])}else void 0!==t.clustering&&(this.constants.clustering.enabled=!1);if(t.navigation){this.constants.navigation.enabled=!0;for(e in t.navigation)t.navigation.hasOwnProperty(e)&&(this.constants.navigation[e]=t.navigation[e])}else void 0!==t.navigation&&(this.constants.navigation.enabled=!1);if(t.keyboard){this.constants.keyboard.enabled=!0;for(e in t.keyboard)t.keyboard.hasOwnProperty(e)&&(this.constants.keyboard[e]=t.keyboard[e])}else void 0!==t.keyboard&&(this.constants.keyboard.enabled=!1);if(t.dataManipulation){this.constants.dataManipulation.enabled=!0;for(e in t.dataManipulation)t.dataManipulation.hasOwnProperty(e)&&(this.constants.dataManipulation[e]=t.dataManipulation[e]);this.editMode=this.constants.dataManipulation.initiallyVisible}else void 0!==t.dataManipulation&&(this.constants.dataManipulation.enabled=!1);if(t.edges){for(e in t.edges)t.edges.hasOwnProperty(e)&&"object"!=typeof t.edges[e]&&(this.constants.edges[e]=t.edges[e]);void 0!==t.edges.color&&(a.isString(t.edges.color)?(this.constants.edges.color={},this.constants.edges.color.color=t.edges.color,this.constants.edges.color.highlight=t.edges.color,this.constants.edges.color.hover=t.edges.color):(void 0!==t.edges.color.color&&(this.constants.edges.color.color=t.edges.color.color),void 0!==t.edges.color.highlight&&(this.constants.edges.color.highlight=t.edges.color.highlight),void 0!==t.edges.color.hover&&(this.constants.edges.color.hover=t.edges.color.hover))),t.edges.fontColor||void 0!==t.edges.color&&(a.isString(t.edges.color)?this.constants.edges.fontColor=t.edges.color:void 0!==t.edges.color.color&&(this.constants.edges.fontColor=t.edges.color.color)),t.edges.dash&&(void 0!==t.edges.dash.length&&(this.constants.edges.dash.length=t.edges.dash.length),void 0!==t.edges.dash.gap&&(this.constants.edges.dash.gap=t.edges.dash.gap),void 0!==t.edges.dash.altLength&&(this.constants.edges.dash.altLength=t.edges.dash.altLength)) +},this.frame.next.onclick=function(t){i.next(t)}}this.onChangeCallback=void 0,this.values=[],this.index=void 0,this.playTimeout=void 0,this.playInterval=1e3,this.playLoop=!0}var o=i(1);s.prototype.prev=function(){var t=this.getIndex();t>0&&(t--,this.setIndex(t))},s.prototype.next=function(){var t=this.getIndex();t0?this.setIndex(0):this.index=void 0},s.prototype.setIndex=function(t){if(!(ts&&(s=0),s>this.values.length-1&&(s=this.values.length-1),s},s.prototype.indexToLeft=function(t){var e=parseFloat(this.frame.bar.style.width)-this.frame.slide.clientWidth-10,i=t/(this.values.length-1)*e,s=i+3;return s},s.prototype._onMouseMove=function(t){var e=t.clientX-this.startClientX,i=this.startSlideX+e,s=this.leftToIndex(i);this.setIndex(s),o.preventDefault()},s.prototype._onMouseUp=function(){this.frame.style.cursor="auto",o.removeEventListener(document,"mousemove",this.onmousemove),o.removeEventListener(document,"mouseup",this.onmouseup),o.preventDefault()},t.exports=s},function(t){function e(t,e,i,s){this._start=0,this._end=0,this._step=1,this.prettyStep=!0,this.precision=5,this._current=0,this.setRange(t,e,i,s)}e.prototype.setRange=function(t,e,i,s){this._start=t?t:0,this._end=e?e:0,this.setStep(i,s)},e.prototype.setStep=function(t,i){void 0===t||0>=t||(void 0!==i&&(this.prettyStep=i),this._step=this.prettyStep===!0?e.calculatePrettyStep(t):t)},e.calculatePrettyStep=function(t){var e=function(t){return Math.log(t)/Math.LN10},i=Math.pow(10,Math.round(e(t))),s=2*Math.pow(10,Math.round(e(t/2))),o=5*Math.pow(10,Math.round(e(t/5))),n=i;return Math.abs(s-t)<=Math.abs(n-t)&&(n=s),Math.abs(o-t)<=Math.abs(n-t)&&(n=o),0>=n&&(n=1),n},e.prototype.getCurrent=function(){return parseFloat(this._current.toPrecision(this.precision))},e.prototype.getStep=function(){return this._step},e.prototype.start=function(){this._current=this._start-this._start%this._step},e.prototype.next=function(){this._current+=this._step},e.prototype.end=function(){return this._current>this._end},t.exports=e},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");var o=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:"bottom",width:null,height:null,maxHeight:null,minHeight:null},this.options=r.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},util:{snap:null,toScreen:o._toScreen.bind(o),toGlobalScreen:o._toGlobalScreen.bind(o),toTime:o._toTime.bind(o),toGlobalTime:o._toGlobalTime.bind(o)}},this.range=new d(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new l(this.body),this.components.push(this.timeAxis),this.body.util.snap=this.timeAxis.snap.bind(this.timeAxis),this.currentTime=new c(this.body),this.components.push(this.currentTime),this.customTime=new p(this.body),this.components.push(this.customTime),this.itemSet=new u(this.body),this.components.push(this.itemSet),this.itemsData=null,this.groupsData=null,i&&this.setOptions(i),e?this.setItems(e):this.redraw()}var o=i(46),n=i(40),r=i(1),a=i(3),h=i(4),d=i(15),l=i(27),c=i(19),p=i(20),u=i(24);o(s.prototype),s.prototype._create=function(t){this.dom={},this.dom.root=document.createElement("div"),this.dom.background=document.createElement("div"),this.dom.backgroundVertical=document.createElement("div"),this.dom.backgroundHorizontal=document.createElement("div"),this.dom.centerContainer=document.createElement("div"),this.dom.leftContainer=document.createElement("div"),this.dom.rightContainer=document.createElement("div"),this.dom.center=document.createElement("div"),this.dom.left=document.createElement("div"),this.dom.right=document.createElement("div"),this.dom.top=document.createElement("div"),this.dom.bottom=document.createElement("div"),this.dom.shadowTop=document.createElement("div"),this.dom.shadowBottom=document.createElement("div"),this.dom.shadowTopLeft=document.createElement("div"),this.dom.shadowBottomLeft=document.createElement("div"),this.dom.shadowTopRight=document.createElement("div"),this.dom.shadowBottomRight=document.createElement("div"),this.dom.background.className="vispanel background",this.dom.backgroundVertical.className="vispanel background vertical",this.dom.backgroundHorizontal.className="vispanel background horizontal",this.dom.centerContainer.className="vispanel center",this.dom.leftContainer.className="vispanel left",this.dom.rightContainer.className="vispanel right",this.dom.top.className="vispanel top",this.dom.bottom.className="vispanel bottom",this.dom.left.className="content",this.dom.center.className="content",this.dom.right.className="content",this.dom.shadowTop.className="shadow top",this.dom.shadowBottom.className="shadow bottom",this.dom.shadowTopLeft.className="shadow top",this.dom.shadowBottomLeft.className="shadow bottom",this.dom.shadowTopRight.className="shadow top",this.dom.shadowBottomRight.className="shadow bottom",this.dom.root.appendChild(this.dom.background),this.dom.root.appendChild(this.dom.backgroundVertical),this.dom.root.appendChild(this.dom.backgroundHorizontal),this.dom.root.appendChild(this.dom.centerContainer),this.dom.root.appendChild(this.dom.leftContainer),this.dom.root.appendChild(this.dom.rightContainer),this.dom.root.appendChild(this.dom.top),this.dom.root.appendChild(this.dom.bottom),this.dom.centerContainer.appendChild(this.dom.center),this.dom.leftContainer.appendChild(this.dom.left),this.dom.rightContainer.appendChild(this.dom.right),this.dom.centerContainer.appendChild(this.dom.shadowTop),this.dom.centerContainer.appendChild(this.dom.shadowBottom),this.dom.leftContainer.appendChild(this.dom.shadowTopLeft),this.dom.leftContainer.appendChild(this.dom.shadowBottomLeft),this.dom.rightContainer.appendChild(this.dom.shadowTopRight),this.dom.rightContainer.appendChild(this.dom.shadowBottomRight),this.on("rangechange",this.redraw.bind(this)),this.on("change",this.redraw.bind(this)),this.on("touch",this._onTouch.bind(this)),this.on("pinch",this._onPinch.bind(this)),this.on("dragstart",this._onDragStart.bind(this)),this.on("drag",this._onDrag.bind(this)),this.hammer=n(this.dom.root,{prevent_default:!0}),this.listeners={};var e=this,i=["touch","pinch","tap","doubletap","hold","dragstart","drag","dragend","mousewheel","DOMMouseScroll"];if(i.forEach(function(t){var i=function(){var i=[t].concat(Array.prototype.slice.call(arguments,0));e.emit.apply(e,i)};e.hammer.on(t,i),e.listeners[t]=i}),this.props={root:{},background:{},centerContainer:{},leftContainer:{},rightContainer:{},center:{},left:{},right:{},top:{},bottom:{},border:{},scrollTop:0,scrollTopMin:0},this.touch={},!t)throw new Error("No container provided");t.appendChild(this.dom.root)},s.prototype.destroy=function(){this.clear(),this.off(),this._stopAutoResize(),this.dom.root.parentNode&&this.dom.root.parentNode.removeChild(this.dom.root),this.dom=null;for(var t in this.listeners)this.listeners.hasOwnProperty(t)&&delete this.listeners[t];this.listeners=null,this.hammer=null,this.components.forEach(function(t){t.destroy()}),this.body=null},s.prototype.setOptions=function(t){if(t){var e=["width","height","minHeight","maxHeight","autoResize","start","end","orientation"];r.selectiveExtend(e,this.options,t),this._initAutoResize()}if(this.components.forEach(function(e){e.setOptions(t)}),t&&t.order)throw new Error("Option order is deprecated. There is no replacement for this feature.");this.redraw()},s.prototype.setCustomTime=function(t){if(!this.customTime)throw new Error("Cannot get custom time: Custom time bar is not enabled");this.customTime.setCustomTime(t)},s.prototype.getCustomTime=function(){if(!this.customTime)throw new Error("Cannot get custom time: Custom time bar is not enabled");return this.customTime.getCustomTime()},s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof a||t instanceof h?t:new a(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.itemSet&&this.itemSet.setItems(e),i&&("start"in this.options||"end"in this.options)){this.fit();var s="start"in this.options?r.convert(this.options.start,"Date"):null,o="end"in this.options?r.convert(this.options.end,"Date"):null;this.setWindow(s,o)}},s.prototype.getVisibleItems=function(){return this.itemSet&&this.itemSet.getVisibleItems()||[]},s.prototype.setGroups=function(t){var e;e=t?t instanceof a||t instanceof h?t:new a(t):null,this.groupsData=e,this.itemSet.setGroups(e)},s.prototype.clear=function(t){(!t||t.items)&&this.setItems(null),(!t||t.groups)&&this.setGroups(null),(!t||t.options)&&(this.components.forEach(function(t){t.setOptions(t.defaultOptions)}),this.setOptions(this.defaultOptions))},s.prototype.fit=function(){var t=this.getItemRange(),e=t.min,i=t.max;if(null!=e&&null!=i){var s=i.valueOf()-e.valueOf();0>=s&&(s=864e5),e=new Date(e.valueOf()-.05*s),i=new Date(i.valueOf()+.05*s)}(null!==e||null!==i)&&this.range.setRange(e,i)},s.prototype.getItemRange=function(){var t=this.itemsData.getDataSet(),e=null,i=null;if(t){var s=t.min("start");e=s?r.convert(s.start,"Date").valueOf():null;var o=t.max("start");o&&(i=r.convert(o.start,"Date").valueOf());var n=t.max("end");n&&(i=null==i?r.convert(n.end,"Date").valueOf():Math.max(i,r.convert(n.end,"Date").valueOf()))}return{min:null!=e?new Date(e):null,max:null!=i?new Date(i):null}},s.prototype.setSelection=function(t){this.itemSet&&this.itemSet.setSelection(t)},s.prototype.getSelection=function(){return this.itemSet&&this.itemSet.getSelection()||[]},s.prototype.setWindow=function(t,e){if(1==arguments.length){var i=arguments[0];this.range.setRange(i.start,i.end)}else this.range.setRange(t,e)},s.prototype.getWindow=function(){var t=this.range.getRange();return{start:new Date(t.start),end:new Date(t.end)}},s.prototype.redraw=function(){var t=!1,e=this.options,i=this.props,s=this.dom;if(s){s.root.className="vis timeline root "+e.orientation,s.root.style.maxHeight=r.option.asSize(e.maxHeight,""),s.root.style.minHeight=r.option.asSize(e.minHeight,""),s.root.style.width=r.option.asSize(e.width,""),i.border.left=(s.centerContainer.offsetWidth-s.centerContainer.clientWidth)/2,i.border.right=i.border.left,i.border.top=(s.centerContainer.offsetHeight-s.centerContainer.clientHeight)/2,i.border.bottom=i.border.top;var o=s.root.offsetHeight-s.root.clientHeight,n=s.root.offsetWidth-s.root.clientWidth;i.center.height=s.center.offsetHeight,i.left.height=s.left.offsetHeight,i.right.height=s.right.offsetHeight,i.top.height=s.top.clientHeight||-i.border.top,i.bottom.height=s.bottom.clientHeight||-i.border.bottom;var a=Math.max(i.left.height,i.center.height,i.right.height),h=i.top.height+a+i.bottom.height+o+i.border.top+i.border.bottom;s.root.style.height=r.option.asSize(e.height,h+"px"),i.root.height=s.root.offsetHeight,i.background.height=i.root.height-o;var d=i.root.height-i.top.height-i.bottom.height-o;i.centerContainer.height=d,i.leftContainer.height=d,i.rightContainer.height=i.leftContainer.height,i.root.width=s.root.offsetWidth,i.background.width=i.root.width-n,i.left.width=s.leftContainer.clientWidth||-i.border.left,i.leftContainer.width=i.left.width,i.right.width=s.rightContainer.clientWidth||-i.border.right,i.rightContainer.width=i.right.width;var l=i.root.width-i.left.width-i.right.width-n;i.center.width=l,i.centerContainer.width=l,i.top.width=l,i.bottom.width=l,s.background.style.height=i.background.height+"px",s.backgroundVertical.style.height=i.background.height+"px",s.backgroundHorizontal.style.height=i.centerContainer.height+"px",s.centerContainer.style.height=i.centerContainer.height+"px",s.leftContainer.style.height=i.leftContainer.height+"px",s.rightContainer.style.height=i.rightContainer.height+"px",s.background.style.width=i.background.width+"px",s.backgroundVertical.style.width=i.centerContainer.width+"px",s.backgroundHorizontal.style.width=i.background.width+"px",s.centerContainer.style.width=i.center.width+"px",s.top.style.width=i.top.width+"px",s.bottom.style.width=i.bottom.width+"px",s.background.style.left="0",s.background.style.top="0",s.backgroundVertical.style.left=i.left.width+"px",s.backgroundVertical.style.top="0",s.backgroundHorizontal.style.left="0",s.backgroundHorizontal.style.top=i.top.height+"px",s.centerContainer.style.left=i.left.width+"px",s.centerContainer.style.top=i.top.height+"px",s.leftContainer.style.left="0",s.leftContainer.style.top=i.top.height+"px",s.rightContainer.style.left=i.left.width+i.center.width+"px",s.rightContainer.style.top=i.top.height+"px",s.top.style.left=i.left.width+"px",s.top.style.top="0",s.bottom.style.left=i.left.width+"px",s.bottom.style.top=i.top.height+i.centerContainer.height+"px",this._updateScrollTop();var c=this.props.scrollTop;"bottom"==e.orientation&&(c+=Math.max(this.props.centerContainer.height-this.props.center.height-this.props.border.top-this.props.border.bottom,0)),s.center.style.left="0",s.center.style.top=c+"px",s.left.style.left="0",s.left.style.top=c+"px",s.right.style.left="0",s.right.style.top=c+"px";var p=0==this.props.scrollTop?"hidden":"",u=this.props.scrollTop==this.props.scrollTopMin?"hidden":"";s.shadowTop.style.visibility=p,s.shadowBottom.style.visibility=u,s.shadowTopLeft.style.visibility=p,s.shadowBottomLeft.style.visibility=u,s.shadowTopRight.style.visibility=p,s.shadowBottomRight.style.visibility=u,this.components.forEach(function(e){t=e.redraw()||t}),t&&this.redraw()}},s.prototype.repaint=function(){throw new Error("Function repaint is deprecated. Use redraw instead.")},s.prototype._toTime=function(t){var e=this.range.conversion(this.props.center.width);return new Date(t/e.scale+e.offset)},s.prototype._toGlobalTime=function(t){var e=this.range.conversion(this.props.root.width);return new Date(t/e.scale+e.offset)},s.prototype._toScreen=function(t){var e=this.range.conversion(this.props.center.width);return(t.valueOf()-e.offset)*e.scale},s.prototype._toGlobalScreen=function(t){var e=this.range.conversion(this.props.root.width);return(t.valueOf()-e.offset)*e.scale},s.prototype._initAutoResize=function(){1==this.options.autoResize?this._startAutoResize():this._stopAutoResize()},s.prototype._startAutoResize=function(){var t=this;this._stopAutoResize(),this._onResize=function(){return 1!=t.options.autoResize?void t._stopAutoResize():void(t.dom.root&&(t.dom.root.clientWidth!=t.props.lastWidth||t.dom.root.clientHeight!=t.props.lastHeight)&&(t.props.lastWidth=t.dom.root.clientWidth,t.props.lastHeight=t.dom.root.clientHeight,t.emit("change")))},r.addEventListener(window,"resize",this._onResize),this.watchTimer=setInterval(this._onResize,1e3)},s.prototype._stopAutoResize=function(){this.watchTimer&&(clearInterval(this.watchTimer),this.watchTimer=void 0),r.removeEventListener(window,"resize",this._onResize),this._onResize=null},s.prototype._onTouch=function(){this.touch.allowDragging=!0},s.prototype._onPinch=function(){this.touch.allowDragging=!1},s.prototype._onDragStart=function(){this.touch.initialScrollTop=this.props.scrollTop},s.prototype._onDrag=function(t){if(this.touch.allowDragging){var e=t.gesture.deltaY,i=this._getScrollTop(),s=this._setScrollTop(this.touch.initialScrollTop+e);s!=i&&this.redraw()}},s.prototype._setScrollTop=function(t){return this.props.scrollTop=t,this._updateScrollTop(),this.props.scrollTop},s.prototype._updateScrollTop=function(){var t=Math.min(this.props.centerContainer.height-this.props.center.height,0);return t!=this.props.scrollTopMin&&("bottom"==this.options.orientation&&(this.props.scrollTop+=t-this.props.scrollTopMin),this.props.scrollTopMin=t),this.props.scrollTop>0&&(this.props.scrollTop=0),this.props.scrollTop=s&&(s=864e5),e=new Date(e.valueOf()-.05*s),i=new Date(i.valueOf()+.05*s)}(null!==e||null!==i)&&this.range.setRange(e,i)},s.prototype.getItemRange=function(){var t=this.itemsData,e=null,i=null;if(t){var s=t.min("start");e=s?r.convert(s.start,"Date").valueOf():null;var o=t.max("start");o&&(i=r.convert(o.start,"Date").valueOf());var n=t.max("end");n&&(i=null==i?r.convert(n.end,"Date").valueOf():Math.max(i,r.convert(n.end,"Date").valueOf()))}return{min:null!=e?new Date(e):null,max:null!=i?new Date(i):null}},s.prototype.setWindow=function(t,e){if(1==arguments.length){var i=arguments[0];this.range.setRange(i.start,i.end)}else this.range.setRange(t,e)},s.prototype.getWindow=function(){var t=this.range.getRange();return{start:new Date(t.start),end:new Date(t.end)}},s.prototype.redraw=function(){var t=!1,e=this.options,i=this.props,s=this.dom;if(s){s.root.className="vis timeline root "+e.orientation,s.root.style.maxHeight=r.option.asSize(e.maxHeight,""),s.root.style.minHeight=r.option.asSize(e.minHeight,""),s.root.style.width=r.option.asSize(e.width,""),i.border.left=(s.centerContainer.offsetWidth-s.centerContainer.clientWidth)/2,i.border.right=i.border.left,i.border.top=(s.centerContainer.offsetHeight-s.centerContainer.clientHeight)/2,i.border.bottom=i.border.top;var o=s.root.offsetHeight-s.root.clientHeight,n=s.root.offsetWidth-s.root.clientWidth;i.center.height=s.center.offsetHeight,i.left.height=s.left.offsetHeight,i.right.height=s.right.offsetHeight,i.top.height=s.top.clientHeight||-i.border.top,i.bottom.height=s.bottom.clientHeight||-i.border.bottom;var a=Math.max(i.left.height,i.center.height,i.right.height),h=i.top.height+a+i.bottom.height+o+i.border.top+i.border.bottom;s.root.style.height=r.option.asSize(e.height,h+"px"),i.root.height=s.root.offsetHeight,i.background.height=i.root.height-o;var d=i.root.height-i.top.height-i.bottom.height-o;i.centerContainer.height=d,i.leftContainer.height=d,i.rightContainer.height=i.leftContainer.height,i.root.width=s.root.offsetWidth,i.background.width=i.root.width-n,i.left.width=s.leftContainer.clientWidth||-i.border.left,i.leftContainer.width=i.left.width,i.right.width=s.rightContainer.clientWidth||-i.border.right,i.rightContainer.width=i.right.width;var l=i.root.width-i.left.width-i.right.width-n;i.center.width=l,i.centerContainer.width=l,i.top.width=l,i.bottom.width=l,s.background.style.height=i.background.height+"px",s.backgroundVertical.style.height=i.background.height+"px",s.backgroundHorizontalContainer.style.height=i.centerContainer.height+"px",s.centerContainer.style.height=i.centerContainer.height+"px",s.leftContainer.style.height=i.leftContainer.height+"px",s.rightContainer.style.height=i.rightContainer.height+"px",s.background.style.width=i.background.width+"px",s.backgroundVertical.style.width=i.centerContainer.width+"px",s.backgroundHorizontalContainer.style.width=i.background.width+"px",s.backgroundHorizontal.style.width=i.background.width+"px",s.centerContainer.style.width=i.center.width+"px",s.top.style.width=i.top.width+"px",s.bottom.style.width=i.bottom.width+"px",s.background.style.left="0",s.background.style.top="0",s.backgroundVertical.style.left=i.left.width+"px",s.backgroundVertical.style.top="0",s.backgroundHorizontalContainer.style.left="0",s.backgroundHorizontalContainer.style.top=i.top.height+"px",s.centerContainer.style.left=i.left.width+"px",s.centerContainer.style.top=i.top.height+"px",s.leftContainer.style.left="0",s.leftContainer.style.top=i.top.height+"px",s.rightContainer.style.left=i.left.width+i.center.width+"px",s.rightContainer.style.top=i.top.height+"px",s.top.style.left=i.left.width+"px",s.top.style.top="0",s.bottom.style.left=i.left.width+"px",s.bottom.style.top=i.top.height+i.centerContainer.height+"px",this._updateScrollTop();var c=this.props.scrollTop;"bottom"==e.orientation&&(c+=Math.max(this.props.centerContainer.height-this.props.center.height-this.props.border.top-this.props.border.bottom,0)),s.center.style.left="0",s.center.style.top=c+"px",s.backgroundHorizontal.style.left="0",s.backgroundHorizontal.style.top=c+"px",s.left.style.left="0",s.left.style.top=c+"px",s.right.style.left="0",s.right.style.top=c+"px";var p=0==this.props.scrollTop?"hidden":"",u=this.props.scrollTop==this.props.scrollTopMin?"hidden":"";s.shadowTop.style.visibility=p,s.shadowBottom.style.visibility=u,s.shadowTopLeft.style.visibility=p,s.shadowBottomLeft.style.visibility=u,s.shadowTopRight.style.visibility=p,s.shadowBottomRight.style.visibility=u,this.components.forEach(function(e){t=e.redraw()||t}),t&&this.redraw()}},s.prototype._toTime=function(t){var e=this.range.conversion(this.props.center.width);return new Date(t/e.scale+e.offset)},s.prototype._toGlobalTime=function(t){var e=this.range.conversion(this.props.root.width);return new Date(t/e.scale+e.offset)},s.prototype._toScreen=function(t){var e=this.range.conversion(this.props.center.width);return(t.valueOf()-e.offset)*e.scale},s.prototype._toGlobalScreen=function(t){var e=this.range.conversion(this.props.root.width);return(t.valueOf()-e.offset)*e.scale},s.prototype._initAutoResize=function(){1==this.options.autoResize?this._startAutoResize():this._stopAutoResize()},s.prototype._startAutoResize=function(){var t=this;this._stopAutoResize(),this._onResize=function(){return 1!=t.options.autoResize?void t._stopAutoResize():void(t.dom.root&&(t.dom.root.clientWidth!=t.props.lastWidth||t.dom.root.clientHeight!=t.props.lastHeight)&&(t.props.lastWidth=t.dom.root.clientWidth,t.props.lastHeight=t.dom.root.clientHeight,t.emit("change")))},r.addEventListener(window,"resize",this._onResize),this.watchTimer=setInterval(this._onResize,1e3)},s.prototype._stopAutoResize=function(){this.watchTimer&&(clearInterval(this.watchTimer),this.watchTimer=void 0),r.removeEventListener(window,"resize",this._onResize),this._onResize=null},s.prototype._onTouch=function(){this.touch.allowDragging=!0},s.prototype._onPinch=function(){this.touch.allowDragging=!1},s.prototype._onDragStart=function(){this.touch.initialScrollTop=this.props.scrollTop},s.prototype._onDrag=function(t){if(this.touch.allowDragging){var e=t.gesture.deltaY,i=this._getScrollTop(),s=this._setScrollTop(this.touch.initialScrollTop+e);s!=i&&this.redraw()}},s.prototype._setScrollTop=function(t){return this.props.scrollTop=t,this._updateScrollTop(),this.props.scrollTop},s.prototype._updateScrollTop=function(){var t=Math.min(this.props.centerContainer.height-this.props.center.height,0);return t!=this.props.scrollTopMin&&("bottom"==this.options.orientation&&(this.props.scrollTop+=t-this.props.scrollTopMin),this.props.scrollTopMin=t),this.props.scrollTop>0&&(this.props.scrollTop=0),this.props.scrollTopn&&(h=n);for(var d=!1,l=h;Math.abs(l)<=Math.abs(n);l++){a=Math.pow(10,l);for(var c=0;c=o){d=!0,r=c;break}}if(1==d)break}this.stepIndex=r,this.scale=a,this.step=a*this.minorSteps[r]},e.prototype.first=function(){this.setFirst()},e.prototype.setFirst=function(){var t=this._start-this.scale*this.minorSteps[this.stepIndex],e=this._end+this.scale*this.minorSteps[this.stepIndex];this.marginEnd=this.roundToMinor(e),this.marginStart=this.roundToMinor(t),this.marginRange=this.marginEnd-this.marginStart,this.current=this.marginEnd},e.prototype.roundToMinor=function(t){var e=t-t%(this.scale*this.minorSteps[this.stepIndex]);return t%(this.scale*this.minorSteps[this.stepIndex])>.5*this.scale*this.minorSteps[this.stepIndex]?e+this.scale*this.minorSteps[this.stepIndex]:e},e.prototype.hasNext=function(){return this.current>=this.marginStart},e.prototype.next=function(){var t=this.current;this.current-=this.step,this.current==t&&(this.current=this._end)},e.prototype.previous=function(){this.current+=this.step,this.marginEnd+=this.step,this.marginRange=this.marginEnd-this.marginStart},e.prototype.getCurrent=function(){for(var t=""+Number(this.current).toPrecision(5),e=t.length-1;e>0;e--){if("0"!=t[e]){if("."==t[e]||","==t[e]){t=t.slice(0,e);break}break}t=t.slice(0,e)}return t},e.prototype.snap=function(){},e.prototype.isMajor=function(){return this.current%(this.scale*this.majorSteps[this.stepIndex])==0},t.exports=e},function(t,e,i){function s(t,e){var i=h().hours(0).minutes(0).seconds(0).milliseconds(0);this.start=i.clone().add("days",-3).valueOf(),this.end=i.clone().add("days",4).valueOf(),this.body=t,this.defaultOptions={start:null,end:null,direction:"horizontal",moveable:!0,zoomable:!0,min:null,max:null,zoomMin:10,zoomMax:31536e10},this.options=r.extend({},this.defaultOptions),this.props={touch:{}},this.body.emitter.on("dragstart",this._onDragStart.bind(this)),this.body.emitter.on("drag",this._onDrag.bind(this)),this.body.emitter.on("dragend",this._onDragEnd.bind(this)),this.body.emitter.on("hold",this._onHold.bind(this)),this.body.emitter.on("mousewheel",this._onMouseWheel.bind(this)),this.body.emitter.on("DOMMouseScroll",this._onMouseWheel.bind(this)),this.body.emitter.on("touch",this._onTouch.bind(this)),this.body.emitter.on("pinch",this._onPinch.bind(this)),this.setOptions(e)}function o(t){if("horizontal"!=t&&"vertical"!=t)throw new TypeError('Unknown direction "'+t+'". Choose "horizontal" or "vertical".')}function n(t,e){return{x:t.pageX-r.getAbsoluteLeft(e),y:t.pageY-r.getAbsoluteTop(e)}}var r=i(1),a=i(43),h=i(39),d=i(18);s.prototype=new d,s.prototype.setOptions=function(t){if(t){var e=["direction","min","max","zoomMin","zoomMax","moveable","zoomable"];r.selectiveExtend(e,this.options,t),("start"in t||"end"in t)&&this.setRange(t.start,t.end)}},s.prototype.setRange=function(t,e){var i=this._applyRange(t,e);if(i){var s={start:new Date(this.start),end:new Date(this.end)};this.body.emitter.emit("rangechange",s),this.body.emitter.emit("rangechanged",s)}},s.prototype._applyRange=function(t,e){var i,s=null!=t?r.convert(t,"Date").valueOf():this.start,o=null!=e?r.convert(e,"Date").valueOf():this.end,n=null!=this.options.max?r.convert(this.options.max,"Date").valueOf():null,a=null!=this.options.min?r.convert(this.options.min,"Date").valueOf():null;if(isNaN(s)||null===s)throw new Error('Invalid start "'+t+'"');if(isNaN(o)||null===o)throw new Error('Invalid end "'+e+'"');if(s>o&&(o=s),null!==a&&a>s&&(i=a-s,s+=i,o+=i,null!=n&&o>n&&(o=n)),null!==n&&o>n&&(i=o-n,s-=i,o-=i,null!=a&&a>s&&(s=a)),null!==this.options.zoomMin){var h=parseFloat(this.options.zoomMin);0>h&&(h=0),h>o-s&&(this.end-this.start===h?(s=this.start,o=this.end):(i=h-(o-s),s-=i/2,o+=i/2))}if(null!==this.options.zoomMax){var d=parseFloat(this.options.zoomMax);0>d&&(d=0),o-s>d&&(this.end-this.start===d?(s=this.start,o=this.end):(i=o-s-d,s+=i/2,o-=i/2))}var l=this.start!=s||this.end!=o;return this.start=s,this.end=o,l},s.prototype.getRange=function(){return{start:this.start,end:this.end}},s.prototype.conversion=function(t){return s.conversion(this.start,this.end,t)},s.conversion=function(t,e,i){return 0!=i&&e-t!=0?{offset:t,scale:i/(e-t)}:{offset:0,scale:1}},s.prototype._onDragStart=function(){this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.start=this.start,this.props.touch.end=this.end,this.body.dom.root&&(this.body.dom.root.style.cursor="move"))},s.prototype._onDrag=function(t){if(this.options.moveable){var e=this.options.direction;if(o(e),this.props.touch.allowDragging){var i="horizontal"==e?t.gesture.deltaX:t.gesture.deltaY,s=this.props.touch.end-this.props.touch.start,n="horizontal"==e?this.body.domProps.center.width:this.body.domProps.center.height,r=-i/n*s;this._applyRange(this.props.touch.start+r,this.props.touch.end+r),this.body.emitter.emit("rangechange",{start:new Date(this.start),end:new Date(this.end)})}}},s.prototype._onDragEnd=function(){this.options.moveable&&this.props.touch.allowDragging&&(this.body.dom.root&&(this.body.dom.root.style.cursor="auto"),this.body.emitter.emit("rangechanged",{start:new Date(this.start),end:new Date(this.end)}))},s.prototype._onMouseWheel=function(t){if(this.options.zoomable&&this.options.moveable){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i;i=0>e?1-e/5:1/(1+e/5);var s=a.fakeGesture(this,t),o=n(s.center,this.body.dom.center),r=this._pointerToDate(o);this.zoom(i,r)}t.preventDefault()}},s.prototype._onTouch=function(){this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.allowDragging=!0,this.props.touch.center=null},s.prototype._onHold=function(){this.props.touch.allowDragging=!1},s.prototype._onPinch=function(t){if(this.options.zoomable&&this.options.moveable&&(this.props.touch.allowDragging=!1,t.gesture.touches.length>1)){this.props.touch.center||(this.props.touch.center=n(t.gesture.center,this.body.dom.center));var e=1/t.gesture.scale,i=this._pointerToDate(this.props.touch.center),s=parseInt(i+(this.props.touch.start-i)*e),o=parseInt(i+(this.props.touch.end-i)*e);this.setRange(s,o)}},s.prototype._pointerToDate=function(t){var e,i=this.options.direction;if(o(i),"horizontal"==i){var s=this.body.domProps.center.width;return e=this.conversion(s),t.x/e.scale+e.offset}var n=this.body.domProps.center.height;return e=this.conversion(n),t.y/e.scale+e.offset},s.prototype.zoom=function(t,e){null==e&&(e=(this.start+this.end)/2);var i=e+(this.start-e)*t,s=e+(this.end-e)*t;this.setRange(i,s)},s.prototype.move=function(t){var e=this.end-this.start,i=this.start+e*t,s=this.end+e*t;this.start=i,this.end=s},s.prototype.moveTo=function(t){var e=(this.start+this.end)/2,i=e-t,s=this.start-i,o=this.end-i;this.setRange(s,o)},t.exports=s},function(t,e){var i=.001;e.orderByStart=function(t){t.sort(function(t,e){return t.data.start-e.data.start})},e.orderByEnd=function(t){t.sort(function(t,e){var i="end"in t.data?t.data.end:t.data.start,s="end"in e.data?e.data.end:e.data.start;return i-s})},e.stack=function(t,i,s){var o,n;if(s)for(o=0,n=t.length;n>o;o++)t[o].top=null;for(o=0,n=t.length;n>o;o++){var r=t[o];if(null===r.top){r.top=i.axis;do{for(var a=null,h=0,d=t.length;d>h;h++){var l=t[h];if(null!==l.top&&l!==r&&e.collision(r,l,i.item)){a=l;break}}null!=a&&(r.top=a.top+a.height+i.item.vertical)}while(a)}}},e.nostack=function(t,e){var i,s;for(i=0,s=t.length;s>i;i++)t[i].top=e.axis},e.collision=function(t,e,s){return t.left-s.horizontal+ie.left&&t.top-s.vertical+ie.top}},function(t,e,i){function s(t,e,i){this.current=new Date,this._start=new Date,this._end=new Date,this.autoScale=!0,this.scale=s.SCALE.DAY,this.step=1,this.setRange(t,e,i)}var o=i(39);s.SCALE={MILLISECOND:1,SECOND:2,MINUTE:3,HOUR:4,DAY:5,WEEKDAY:6,MONTH:7,YEAR:8},s.prototype.setRange=function(t,e,i){if(!(t instanceof Date&&e instanceof Date))throw"No legal start or end date in method setRange";this._start=void 0!=t?new Date(t.valueOf()):new Date,this._end=void 0!=e?new Date(e.valueOf()):new Date,this.autoScale&&this.setMinimumStep(i)},s.prototype.first=function(){this.current=new Date(this._start.valueOf()),this.roundToMinor()},s.prototype.roundToMinor=function(){switch(this.scale){case s.SCALE.YEAR:this.current.setFullYear(this.step*Math.floor(this.current.getFullYear()/this.step)),this.current.setMonth(0);case s.SCALE.MONTH:this.current.setDate(1);case s.SCALE.DAY:case s.SCALE.WEEKDAY:this.current.setHours(0);case s.SCALE.HOUR:this.current.setMinutes(0);case s.SCALE.MINUTE:this.current.setSeconds(0);case s.SCALE.SECOND:this.current.setMilliseconds(0)}if(1!=this.step)switch(this.scale){case s.SCALE.MILLISECOND:this.current.setMilliseconds(this.current.getMilliseconds()-this.current.getMilliseconds()%this.step);break;case s.SCALE.SECOND:this.current.setSeconds(this.current.getSeconds()-this.current.getSeconds()%this.step);break;case s.SCALE.MINUTE:this.current.setMinutes(this.current.getMinutes()-this.current.getMinutes()%this.step);break;case s.SCALE.HOUR:this.current.setHours(this.current.getHours()-this.current.getHours()%this.step);break;case s.SCALE.WEEKDAY:case s.SCALE.DAY:this.current.setDate(this.current.getDate()-1-(this.current.getDate()-1)%this.step+1);break;case s.SCALE.MONTH:this.current.setMonth(this.current.getMonth()-this.current.getMonth()%this.step);break;case s.SCALE.YEAR:this.current.setFullYear(this.current.getFullYear()-this.current.getFullYear()%this.step)}},s.prototype.hasNext=function(){return this.current.valueOf()<=this._end.valueOf()},s.prototype.next=function(){var t=this.current.valueOf();if(this.current.getMonth()<6)switch(this.scale){case s.SCALE.MILLISECOND:this.current=new Date(this.current.valueOf()+this.step);break;case s.SCALE.SECOND:this.current=new Date(this.current.valueOf()+1e3*this.step);break;case s.SCALE.MINUTE:this.current=new Date(this.current.valueOf()+1e3*this.step*60);break;case s.SCALE.HOUR:this.current=new Date(this.current.valueOf()+1e3*this.step*60*60);var e=this.current.getHours();this.current.setHours(e-e%this.step);break;case s.SCALE.WEEKDAY:case s.SCALE.DAY:this.current.setDate(this.current.getDate()+this.step);break;case s.SCALE.MONTH:this.current.setMonth(this.current.getMonth()+this.step);break;case s.SCALE.YEAR:this.current.setFullYear(this.current.getFullYear()+this.step)}else switch(this.scale){case s.SCALE.MILLISECOND:this.current=new Date(this.current.valueOf()+this.step);break;case s.SCALE.SECOND:this.current.setSeconds(this.current.getSeconds()+this.step);break;case s.SCALE.MINUTE:this.current.setMinutes(this.current.getMinutes()+this.step);break;case s.SCALE.HOUR:this.current.setHours(this.current.getHours()+this.step);break;case s.SCALE.WEEKDAY:case s.SCALE.DAY:this.current.setDate(this.current.getDate()+this.step);break;case s.SCALE.MONTH:this.current.setMonth(this.current.getMonth()+this.step);break;case s.SCALE.YEAR:this.current.setFullYear(this.current.getFullYear()+this.step)}if(1!=this.step)switch(this.scale){case s.SCALE.MILLISECOND:this.current.getMilliseconds()0&&(this.step=e),this.autoScale=!1},s.prototype.setAutoScale=function(t){this.autoScale=t},s.prototype.setMinimumStep=function(t){if(void 0!=t){var e=31104e6,i=2592e6,o=864e5,n=36e5,r=6e4,a=1e3,h=1;1e3*e>t&&(this.scale=s.SCALE.YEAR,this.step=1e3),500*e>t&&(this.scale=s.SCALE.YEAR,this.step=500),100*e>t&&(this.scale=s.SCALE.YEAR,this.step=100),50*e>t&&(this.scale=s.SCALE.YEAR,this.step=50),10*e>t&&(this.scale=s.SCALE.YEAR,this.step=10),5*e>t&&(this.scale=s.SCALE.YEAR,this.step=5),e>t&&(this.scale=s.SCALE.YEAR,this.step=1),3*i>t&&(this.scale=s.SCALE.MONTH,this.step=3),i>t&&(this.scale=s.SCALE.MONTH,this.step=1),5*o>t&&(this.scale=s.SCALE.DAY,this.step=5),2*o>t&&(this.scale=s.SCALE.DAY,this.step=2),o>t&&(this.scale=s.SCALE.DAY,this.step=1),o/2>t&&(this.scale=s.SCALE.WEEKDAY,this.step=1),4*n>t&&(this.scale=s.SCALE.HOUR,this.step=4),n>t&&(this.scale=s.SCALE.HOUR,this.step=1),15*r>t&&(this.scale=s.SCALE.MINUTE,this.step=15),10*r>t&&(this.scale=s.SCALE.MINUTE,this.step=10),5*r>t&&(this.scale=s.SCALE.MINUTE,this.step=5),r>t&&(this.scale=s.SCALE.MINUTE,this.step=1),15*a>t&&(this.scale=s.SCALE.SECOND,this.step=15),10*a>t&&(this.scale=s.SCALE.SECOND,this.step=10),5*a>t&&(this.scale=s.SCALE.SECOND,this.step=5),a>t&&(this.scale=s.SCALE.SECOND,this.step=1),200*h>t&&(this.scale=s.SCALE.MILLISECOND,this.step=200),100*h>t&&(this.scale=s.SCALE.MILLISECOND,this.step=100),50*h>t&&(this.scale=s.SCALE.MILLISECOND,this.step=50),10*h>t&&(this.scale=s.SCALE.MILLISECOND,this.step=10),5*h>t&&(this.scale=s.SCALE.MILLISECOND,this.step=5),h>t&&(this.scale=s.SCALE.MILLISECOND,this.step=1)}},s.prototype.snap=function(t){var e=new Date(t.valueOf());if(this.scale==s.SCALE.YEAR){var i=e.getFullYear()+Math.round(e.getMonth()/12);e.setFullYear(Math.round(i/this.step)*this.step),e.setMonth(0),e.setDate(0),e.setHours(0),e.setMinutes(0),e.setSeconds(0),e.setMilliseconds(0)}else if(this.scale==s.SCALE.MONTH)e.getDate()>15?(e.setDate(1),e.setMonth(e.getMonth()+1)):e.setDate(1),e.setHours(0),e.setMinutes(0),e.setSeconds(0),e.setMilliseconds(0);else if(this.scale==s.SCALE.DAY){switch(this.step){case 5:case 2:e.setHours(24*Math.round(e.getHours()/24));break;default:e.setHours(12*Math.round(e.getHours()/12))}e.setMinutes(0),e.setSeconds(0),e.setMilliseconds(0)}else if(this.scale==s.SCALE.WEEKDAY){switch(this.step){case 5:case 2:e.setHours(12*Math.round(e.getHours()/12));break;default:e.setHours(6*Math.round(e.getHours()/6))}e.setMinutes(0),e.setSeconds(0),e.setMilliseconds(0)}else if(this.scale==s.SCALE.HOUR){switch(this.step){case 4:e.setMinutes(60*Math.round(e.getMinutes()/60));break;default:e.setMinutes(30*Math.round(e.getMinutes()/30))}e.setSeconds(0),e.setMilliseconds(0)}else if(this.scale==s.SCALE.MINUTE){switch(this.step){case 15:case 10:e.setMinutes(5*Math.round(e.getMinutes()/5)),e.setSeconds(0);break;case 5:e.setSeconds(60*Math.round(e.getSeconds()/60));break;default:e.setSeconds(30*Math.round(e.getSeconds()/30))}e.setMilliseconds(0)}else if(this.scale==s.SCALE.SECOND)switch(this.step){case 15:case 10:e.setSeconds(5*Math.round(e.getSeconds()/5)),e.setMilliseconds(0);break;case 5:e.setMilliseconds(1e3*Math.round(e.getMilliseconds()/1e3));break;default:e.setMilliseconds(500*Math.round(e.getMilliseconds()/500))}else if(this.scale==s.SCALE.MILLISECOND){var o=this.step>5?this.step/2:1;e.setMilliseconds(Math.round(e.getMilliseconds()/o)*o)}return e},s.prototype.isMajor=function(){switch(this.scale){case s.SCALE.MILLISECOND:return 0==this.current.getMilliseconds();case s.SCALE.SECOND:return 0==this.current.getSeconds();case s.SCALE.MINUTE:return 0==this.current.getHours()&&0==this.current.getMinutes();case s.SCALE.HOUR:return 0==this.current.getHours();case s.SCALE.WEEKDAY:case s.SCALE.DAY:return 1==this.current.getDate();case s.SCALE.MONTH:return 0==this.current.getMonth();case s.SCALE.YEAR:return!1;default:return!1}},s.prototype.getLabelMinor=function(t){switch(void 0==t&&(t=this.current),this.scale){case s.SCALE.MILLISECOND:return o(t).format("SSS");case s.SCALE.SECOND:return o(t).format("s");case s.SCALE.MINUTE:return o(t).format("HH:mm");case s.SCALE.HOUR:return o(t).format("HH:mm");case s.SCALE.WEEKDAY:return o(t).format("ddd D");case s.SCALE.DAY:return o(t).format("D");case s.SCALE.MONTH:return o(t).format("MMM");case s.SCALE.YEAR:return o(t).format("YYYY");default:return""}},s.prototype.getLabelMajor=function(t){switch(void 0==t&&(t=this.current),this.scale){case s.SCALE.MILLISECOND:return o(t).format("HH:mm:ss");case s.SCALE.SECOND:return o(t).format("D MMMM HH:mm");case s.SCALE.MINUTE:case s.SCALE.HOUR:return o(t).format("ddd D MMMM");case s.SCALE.WEEKDAY:case s.SCALE.DAY:return o(t).format("MMMM YYYY");case s.SCALE.MONTH:return o(t).format("YYYY");case s.SCALE.YEAR:return"";default:return""}},t.exports=s},function(t){function e(){this.options=null,this.props=null}e.prototype.setOptions=function(t){t&&util.extend(this.options,t)},e.prototype.redraw=function(){return!1},e.prototype.destroy=function(){},e.prototype._isResized=function(){var t=this.props._previousWidth!==this.props.width||this.props._previousHeight!==this.props.height;return this.props._previousWidth=this.props.width,this.props._previousHeight=this.props.height,t},t.exports=e},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCurrentTime:!0},this.options=o.extend({},this.defaultOptions),this._create(),this.setOptions(e)}var o=i(1),n=i(18);s.prototype=new n,s.prototype._create=function(){var t=document.createElement("div");t.className="currenttime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t},s.prototype.destroy=function(){this.options.showCurrentTime=!1,this.redraw(),this.body=null},s.prototype.setOptions=function(t){t&&o.selectiveExtend(["showCurrentTime"],this.options,t)},s.prototype.redraw=function(){if(this.options.showCurrentTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar),this.start());var e=new Date,i=this.body.util.toScreen(e);this.bar.style.left=i+"px",this.bar.title="Current time: "+e}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),this.stop();return!1},s.prototype.start=function(){function t(){e.stop();var i=e.body.range.conversion(e.body.domProps.center.width).scale,s=1/i/10;30>s&&(s=30),s>1e3&&(s=1e3),e.redraw(),e.currentTimeTimer=setTimeout(t,s)}var e=this;t()},s.prototype.stop=function(){void 0!==this.currentTimeTimer&&(clearTimeout(this.currentTimeTimer),delete this.currentTimeTimer)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCustomTime:!1},this.options=n.extend({},this.defaultOptions),this.customTime=new Date,this.eventParams={},this._create(),this.setOptions(e)}var o=i(40),n=i(1),r=i(18);s.prototype=new r,s.prototype.setOptions=function(t){t&&n.selectiveExtend(["showCustomTime"],this.options,t)},s.prototype._create=function(){var t=document.createElement("div");t.className="customtime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t;var e=document.createElement("div");e.style.position="relative",e.style.top="0px",e.style.left="-10px",e.style.height="100%",e.style.width="20px",t.appendChild(e),this.hammer=o(t,{prevent_default:!0}),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this))},s.prototype.destroy=function(){this.options.showCustomTime=!1,this.redraw(),this.hammer.enable(!1),this.hammer=null,this.body=null},s.prototype.redraw=function(){if(this.options.showCustomTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar));var e=this.body.util.toScreen(this.customTime);this.bar.style.left=e+"px",this.bar.title="Time: "+this.customTime}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar);return!1},s.prototype.setCustomTime=function(t){this.customTime=new Date(t.valueOf()),this.redraw()},s.prototype.getCustomTime=function(){return new Date(this.customTime.valueOf())},s.prototype._onDragStart=function(t){this.eventParams.dragging=!0,this.eventParams.customTime=this.customTime,t.stopPropagation(),t.preventDefault()},s.prototype._onDrag=function(t){if(this.eventParams.dragging){var e=t.gesture.deltaX,i=this.body.util.toScreen(this.eventParams.customTime)+e,s=this.body.util.toTime(i);this.setCustomTime(s),this.body.emitter.emit("timechange",{time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault()}},s.prototype._onDragEnd=function(t){this.eventParams.dragging&&(this.body.emitter.emit("timechanged",{time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault())},t.exports=s},function(t,e,i){function s(t,e,i){this.id=o.randomUUID(),this.body=t,this.defaultOptions={orientation:"left",showMinorLabels:!0,showMajorLabels:!0,icons:!0,majorLinesOffset:7,minorLinesOffset:4,labelOffsetX:10,labelOffsetY:2,iconWidth:20,width:"40px",visible:!0},this.linegraphSVG=i,this.props={},this.DOMelements={lines:{},labels:{}},this.dom={},this.range={start:0,end:0},this.options=o.extend({},this.defaultOptions),this.conversionFactor=1,this.setOptions(e),this.width=Number((""+this.options.width).replace("px","")),this.minWidth=this.width,this.height=this.linegraphSVG.offsetHeight,this.stepPixels=25,this.stepPixelsForced=25,this.lineOffset=0,this.master=!0,this.svgElements={},this.groups={},this.amountOfGroups=0,this._create()}var o=i(1),n=i(2),r=i(18),a=i(14);s.prototype=new r,s.prototype.addGroup=function(t,e){this.groups.hasOwnProperty(t)||(this.groups[t]=e),this.amountOfGroups+=1},s.prototype.updateGroup=function(t,e){this.groups[t]=e},s.prototype.removeGroup=function(t){this.groups.hasOwnProperty(t)&&(delete this.groups[t],this.amountOfGroups-=1)},s.prototype.setOptions=function(t){if(t){var e=!1;this.options.orientation!=t.orientation&&void 0!==t.orientation&&(e=!0);var i=["orientation","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","width","visible"];o.selectiveExtend(i,this.options,t),this.minWidth=Number((""+this.options.width).replace("px","")),1==e&&this.dom.frame&&(this.hide(),this.show())}},s.prototype._create=function(){this.dom.frame=document.createElement("div"),this.dom.frame.style.width=this.options.width,this.dom.frame.style.height=this.height,this.dom.lineContainer=document.createElement("div"),this.dom.lineContainer.style.width="100%",this.dom.lineContainer.style.height=this.height,this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="absolute",this.svg.style.top="0px",this.svg.style.height="100%",this.svg.style.width="100%",this.svg.style.display="block",this.dom.frame.appendChild(this.svg)},s.prototype._redrawGroupIcons=function(){n.prepareElements(this.svgElements);var t,e=this.options.iconWidth,i=15,s=4,o=s+.5*i;t="left"==this.options.orientation?s:this.width-e-s;for(var r in this.groups)this.groups.hasOwnProperty(r)&&(this.groups[r].drawIcon(t,o,this.svgElements,this.svg,e,i),o+=i+s);n.cleanupElements(this.svgElements)},s.prototype.show=function(){this.dom.frame.parentNode||("left"==this.options.orientation?this.body.dom.left.appendChild(this.dom.frame):this.body.dom.right.appendChild(this.dom.frame)),this.dom.lineContainer.parentNode||this.body.dom.backgroundHorizontal.appendChild(this.dom.lineContainer)},s.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.lineContainer.parentNode&&this.dom.lineContainer.parentNode.removeChild(this.dom.lineContainer)},s.prototype.setRange=function(t,e){this.range.start=t,this.range.end=e},s.prototype.redraw=function(){var t=!1;if(0==this.amountOfGroups)this.hide();else{this.show(),this.height=Number(this.linegraphSVG.style.height.replace("px","")),this.dom.lineContainer.style.height=this.height+"px",this.width=1==this.options.visible?Number((""+this.options.width).replace("px","")):0;var e=this.props,i=this.dom.frame;i.className="dataaxis",this._calculateCharSize();var s=this.options.orientation,o=this.options.showMinorLabels,n=this.options.showMajorLabels;e.minorLabelHeight=o?e.minorCharHeight:0,e.majorLabelHeight=n?e.majorCharHeight:0,e.minorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.minorLinesOffset,e.minorLineHeight=1,e.majorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.majorLinesOffset,e.majorLineHeight=1,"left"==s?(i.style.top="0",i.style.left="0",i.style.bottom="",i.style.width=this.width+"px",i.style.height=this.height+"px"):(i.style.top="",i.style.bottom="0",i.style.left="0",i.style.width=this.width+"px",i.style.height=this.height+"px"),t=this._redrawLabels(),1==this.options.icons&&this._redrawGroupIcons()}return t},s.prototype._redrawLabels=function(){n.prepareElements(this.DOMelements);var t=this.options.orientation,e=this.master?this.props.majorCharHeight||10:this.stepPixelsForced,i=new a(this.range.start,this.range.end,e,this.dom.frame.offsetHeight);this.step=i,i.first();var s=this.dom.frame.offsetHeight/(i.marginRange/i.step+1);this.stepPixels=s;var o=this.height/s,r=0;if(0==this.master){s=this.stepPixelsForced,r=Math.round(this.height/s-o);for(var h=0;.5*r>h;h++)i.previous();o=this.height/s}this.valueAtZero=i.marginEnd;var d=0,l=1;i.next(),this.maxLabelSize=0;for(var c=0;l=0&&this._redrawLabel(c-2,i.getCurrent(),t,"yAxis major",this.props.majorCharHeight),this._redrawLine(c,t,"grid horizontal major",this.options.majorLinesOffset,this.props.majorLineWidth)):this._redrawLine(c,t,"grid horizontal minor",this.options.minorLinesOffset,this.props.minorLineWidth),i.next(),l++}this.conversionFactor=d/((o-1)*i.step);var u=1==this.options.icons?this.options.iconWidth+this.options.labelOffsetX+15:this.options.labelOffsetX+15;return this.maxLabelSize>this.width-u&&1==this.options.visible?(this.width=this.maxLabelSize+u,this.options.width=this.width+"px",n.cleanupElements(this.DOMelements),this.redraw(),!0):this.maxLabelSizethis.minWidth?(this.width=Math.max(this.minWidth,this.maxLabelSize+u),this.options.width=this.width+"px",n.cleanupElements(this.DOMelements),this.redraw(),!0):(n.cleanupElements(this.DOMelements),!1)},s.prototype._redrawLabel=function(t,e,i,s,o){var r=n.getDOMElement("div",this.DOMelements,this.dom.frame);r.className=s,r.innerHTML=e,"left"==i?(r.style.left="-"+this.options.labelOffsetX+"px",r.style.textAlign="right"):(r.style.right="-"+this.options.labelOffsetX+"px",r.style.textAlign="left"),r.style.top=t-.5*o+this.options.labelOffsetY+"px",e+="";var a=Math.max(this.props.majorCharWidth,this.props.minorCharWidth);this.maxLabelSizee.axis){var c=d-e.axis;l-=c,o.forEach(h,function(t){t.top-=c})}a=l+e.item.vertical/2}else a=e.axis+e.item.vertical;a=Math.max(a,this.props.label.height);var p=this.dom.foreground;this.top=p.offsetTop,this.left=p.offsetLeft,this.width=p.offsetWidth,s=o.updateProperty(this,"height",a)||s,s=o.updateProperty(this.props.label,"width",this.dom.inner.clientWidth)||s,s=o.updateProperty(this.props.label,"height",this.dom.inner.clientHeight)||s,this.dom.background.style.height=a+"px",this.dom.foreground.style.height=a+"px",this.dom.label.style.height=a+"px";for(var u=0,m=this.visibleItems.length;m>u;u++){var g=this.visibleItems[u];g.repositionY()}return s},s.prototype.show=function(){this.dom.label.parentNode||this.itemSet.dom.labelSet.appendChild(this.dom.label),this.dom.foreground.parentNode||this.itemSet.dom.foreground.appendChild(this.dom.foreground),this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background),this.dom.axis.parentNode||this.itemSet.dom.axis.appendChild(this.dom.axis)},s.prototype.hide=function(){var t=this.dom.label;t.parentNode&&t.parentNode.removeChild(t);var e=this.dom.foreground;e.parentNode&&e.parentNode.removeChild(e);var i=this.dom.background;i.parentNode&&i.parentNode.removeChild(i);var s=this.dom.axis;s.parentNode&&s.parentNode.removeChild(s)},s.prototype.add=function(t){if(this.items[t.id]=t,t.setParent(this),t instanceof r&&-1==this.visibleItems.indexOf(t)){var e=this.itemSet.body.range;this._checkIfVisible(t,this.visibleItems,e)}},s.prototype.remove=function(t){delete this.items[t.id],t.setParent(this.itemSet);var e=this.visibleItems.indexOf(t);-1!=e&&this.visibleItems.splice(e,1)},s.prototype.removeFromDataSet=function(t){this.itemSet.removeItem(t.id)},s.prototype.order=function(){var t=o.toArray(this.items);this.orderedItems.byStart=t,this.orderedItems.byEnd=this._constructByEndArray(t),n.orderByStart(this.orderedItems.byStart),n.orderByEnd(this.orderedItems.byEnd)},s.prototype._constructByEndArray=function(t){for(var e=[],i=0;i0)for(n=0;n=0&&!this._checkIfInvisible(t.byStart[n],r,i);n--);for(n=s+1;n=0&&!this._checkIfInvisible(t.byEnd[n],r,i);n--);for(n=a+1;ne;e++)s=this.selection[e],o=this.items[s],o&&o.unselect();for(this.selection=[],e=0,i=t.length;i>e;e++)s=t[e],o=this.items[s],o&&(this.selection.push(s),o.select())}},s.prototype.getSelection=function(){return this.selection.concat([])},s.prototype.getVisibleItems=function(){var t=this.body.range.getRange(),e=this.body.util.toScreen(t.start),i=this.body.util.toScreen(t.end),s=[];for(var o in this.groups)if(this.groups.hasOwnProperty(o))for(var n=this.groups[o],r=n.visibleItems,a=0;ae&&s.push(h.id)}return s},s.prototype._deselect=function(t){for(var e=this.selection,i=0,s=e.length;s>i;i++)if(e[i]==t){e.splice(i,1);break}},s.prototype.redraw=function(){var t=this.options.margin,e=this.body.range,i=n.option.asSize,s=this.options,o=s.orientation,r=!1,a=this.dom.frame,h=s.editable.updateTime||s.editable.updateGroup;a.className="itemset"+(h?" editable":""),r=this._orderGroups()||r;var d=e.end-e.start,l=d!=this.lastVisibleInterval||this.props.width!=this.props.lastWidth;l&&(this.stackDirty=!0),this.lastVisibleInterval=d,this.props.lastWidth=this.props.width;var c=this.stackDirty,p=this._firstGroup(),u={item:t.item,axis:t.axis},m={item:t.item,axis:t.item.vertical/2},g=0,f=t.axis+t.item.vertical;return n.forEach(this.groups,function(t){var i=t==p?u:m,s=t.redraw(e,i,c);r=s||r,g+=t.height}),g=Math.max(g,f),this.stackDirty=!1,a.style.height=i(g),this.props.top=a.offsetTop,this.props.left=a.offsetLeft,this.props.width=a.offsetWidth,this.props.height=g,this.dom.axis.style.top=i("top"==o?this.body.domProps.top.height+this.body.domProps.border.top:this.body.domProps.top.height+this.body.domProps.centerContainer.height),this.dom.axis.style.left=this.body.domProps.border.left+"px",r=this._isResized()||r},s.prototype._firstGroup=function(){var t="top"==this.options.orientation?0:this.groupIds.length-1,e=this.groupIds[t],i=this.groups[e]||this.groups[u];return i||null},s.prototype._updateUngrouped=function(){var t=this.groups[u];if(this.groupsData)t&&(t.hide(),delete this.groups[u]);else if(!t){var e=null,i=null;t=new d(e,i,this),this.groups[u]=t;for(var s in this.items)this.items.hasOwnProperty(s)&&t.add(this.items[s]);t.show()}},s.prototype.getLabelSet=function(){return this.dom.labelSet},s.prototype.setItems=function(t){var e,i=this,s=this.itemsData;if(t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.itemsData=t}else this.itemsData=null;if(s&&(n.forEach(this.itemListeners,function(t,e){s.off(e,t)}),e=s.getIds(),this._onRemove(e)),this.itemsData){var o=this.id;n.forEach(this.itemListeners,function(t,e){i.itemsData.on(e,t,o)}),e=this.itemsData.getIds(),this._onAdd(e),this._updateUngrouped()}},s.prototype.getItems=function(){return this.itemsData},s.prototype.setGroups=function(t){var e,i=this;if(this.groupsData&&(n.forEach(this.groupListeners,function(t,e){i.groupsData.unsubscribe(e,t)}),e=this.groupsData.getIds(),this.groupsData=null,this._onRemoveGroups(e)),t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.groupsData=t}else this.groupsData=null;if(this.groupsData){var s=this.id;n.forEach(this.groupListeners,function(t,e){i.groupsData.on(e,t,s)}),e=this.groupsData.getIds(),this._onAddGroups(e)}this._updateUngrouped(),this._order(),this.body.emitter.emit("change")},s.prototype.getGroups=function(){return this.groupsData},s.prototype.removeItem=function(t){var e=this.itemsData.get(t),i=this.itemsData.getDataSet();e&&this.options.onRemove(e,function(e){e&&i.remove(t)})},s.prototype._onUpdate=function(t){var e=this;t.forEach(function(t){var i=e.itemsData.get(t,e.itemOptions),o=e.items[t],n=i.type||e.options.type||(i.end?"range":"box"),r=s.types[n];if(o&&(r&&o instanceof r?e._updateItem(o,i):(e._removeItem(o),o=null)),!o){if(!r)throw new TypeError("rangeoverflow"==n?'Item type "rangeoverflow" is deprecated. Use css styling instead: .vis.timeline .item.range .content {overflow: visible;}':'Unknown item type "'+n+'"');o=new r(i,e.conversion,e.options),o.id=t,e._addItem(o)}}),this._order(),this.stackDirty=!0,this.body.emitter.emit("change")},s.prototype._onAdd=s.prototype._onUpdate,s.prototype._onRemove=function(t){var e=0,i=this;t.forEach(function(t){var s=i.items[t];s&&(e++,i._removeItem(s))}),e&&(this._order(),this.stackDirty=!0,this.body.emitter.emit("change"))},s.prototype._order=function(){n.forEach(this.groups,function(t){t.order()})},s.prototype._onUpdateGroups=function(t){this._onAddGroups(t)},s.prototype._onAddGroups=function(t){var e=this;t.forEach(function(t){var i=e.groupsData.get(t),s=e.groups[t];if(s)s.setData(i);else{if(t==u)throw new Error("Illegal group id. "+t+" is a reserved id.");var o=Object.create(e.options);n.extend(o,{height:null}),s=new d(t,i,e),e.groups[t]=s;for(var r in e.items)if(e.items.hasOwnProperty(r)){var a=e.items[r];a.data.group==t&&s.add(a)}s.order(),s.show()}}),this.body.emitter.emit("change")},s.prototype._onRemoveGroups=function(t){var e=this.groups;t.forEach(function(t){var i=e[t];i&&(i.hide(),delete e[t])}),this.markDirty(),this.body.emitter.emit("change")},s.prototype._orderGroups=function(){if(this.groupsData){var t=this.groupsData.getIds({order:this.options.groupOrder}),e=!n.equalArray(t,this.groupIds);if(e){var i=this.groups;t.forEach(function(t){i[t].hide()}),t.forEach(function(t){i[t].show()}),this.groupIds=t}return e}return!1},s.prototype._addItem=function(t){this.items[t.id]=t;var e=this.groupsData?t.data.group:u,i=this.groups[e];i&&i.add(t)},s.prototype._updateItem=function(t,e){var i=t.data.group;if(t.data=e,t.displayed&&t.redraw(),i!=t.data.group){var s=this.groups[i];s&&s.remove(t);var o=this.groupsData?t.data.group:u,n=this.groups[o];n&&n.add(t)}},s.prototype._removeItem=function(t){t.hide(),delete this.items[t.id];var e=this.selection.indexOf(t.id);-1!=e&&this.selection.splice(e,1);var i=this.groupsData?t.data.group:u,s=this.groups[i];s&&s.remove(t)},s.prototype._constructByEndArray=function(t){for(var e=[],i=0;i0||o.length>0)&&this.body.emitter.emit("select",{items:this.getSelection()}),t.stopPropagation()}},s.prototype._onAddItem=function(t){if(this.options.selectable&&this.options.editable.add){var e=this,i=this.body.util.snap||null,o=s.itemFromTarget(t);if(o){var r=e.itemsData.get(o.id);this.options.onUpdate(r,function(t){t&&e.itemsData.update(t)})}else{var a=n.getAbsoluteLeft(this.dom.frame),h=t.gesture.center.pageX-a,d=this.body.util.toTime(h),l={start:i?i(d):d,content:"new item"};if("range"===this.options.type){var c=this.body.util.toTime(h+this.props.width/5);l.end=i?i(c):c}l[this.itemsData.fieldId]=n.randomUUID();var p=s.groupFromTarget(t);p&&(l.group=p.groupId),this.options.onAdd(l,function(t){t&&e.itemsData.add(l)})}}},s.prototype._onMultiSelectItem=function(t){if(this.options.selectable){var e,i=s.itemFromTarget(t);if(i){e=this.getSelection();var o=e.indexOf(i.id);-1==o?e.push(i.id):e.splice(o,1),this.setSelection(e),this.body.emitter.emit("select",{items:this.getSelection()}),t.stopPropagation()}}},s.itemFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-item"))return e["timeline-item"];e=e.parentNode}return null},s.groupFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-group"))return e["timeline-group"];e=e.parentNode}return null},s.itemSetFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-itemset"))return e["timeline-itemset"];e=e.parentNode}return null},t.exports=s},function(t,e,i){function s(t,e,i){this.body=t,this.defaultOptions={enabled:!0,icons:!0,iconSize:20,iconSpacing:6,left:{visible:!0,position:"top-left"},right:{visible:!0,position:"top-left"}},this.side=i,this.options=o.extend({},this.defaultOptions),this.svgElements={},this.dom={},this.groups={},this.amountOfGroups=0,this._create(),this.setOptions(e)}var o=i(1),n=i(2),r=i(18);s.prototype=new r,s.prototype.addGroup=function(t,e){this.groups.hasOwnProperty(t)||(this.groups[t]=e),this.amountOfGroups+=1},s.prototype.updateGroup=function(t,e){this.groups[t]=e},s.prototype.removeGroup=function(t){this.groups.hasOwnProperty(t)&&(delete this.groups[t],this.amountOfGroups-=1)},s.prototype._create=function(){this.dom.frame=document.createElement("div"),this.dom.frame.className="legend",this.dom.frame.style.position="absolute",this.dom.frame.style.top="10px",this.dom.frame.style.display="block",this.dom.textArea=document.createElement("div"),this.dom.textArea.className="legendText",this.dom.textArea.style.position="relative",this.dom.textArea.style.top="0px",this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="absolute",this.svg.style.top="0px",this.svg.style.width=this.options.iconSize+5+"px",this.dom.frame.appendChild(this.svg),this.dom.frame.appendChild(this.dom.textArea)},s.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame)},s.prototype.show=function(){this.dom.frame.parentNode||this.body.dom.center.appendChild(this.dom.frame)},s.prototype.setOptions=function(t){var e=["enabled","orientation","icons","left","right"];o.selectiveDeepExtend(e,this.options,t)},s.prototype.redraw=function(){if(0==this.options[this.side].visible||0==this.amountOfGroups||0==this.options.enabled)this.hide();else{this.show(),"top-left"==this.options[this.side].position||"bottom-left"==this.options[this.side].position?(this.dom.frame.style.left="4px",this.dom.frame.style.textAlign="left",this.dom.textArea.style.textAlign="left",this.dom.textArea.style.left=this.options.iconSize+15+"px",this.dom.textArea.style.right="",this.svg.style.left="0px",this.svg.style.right=""):(this.dom.frame.style.right="4px",this.dom.frame.style.textAlign="right",this.dom.textArea.style.textAlign="right",this.dom.textArea.style.right=this.options.iconSize+15+"px",this.dom.textArea.style.left="",this.svg.style.right="0px",this.svg.style.left=""),"top-left"==this.options[this.side].position||"top-right"==this.options[this.side].position?(this.dom.frame.style.top=4-Number(this.body.dom.center.style.top.replace("px",""))+"px",this.dom.frame.style.bottom=""):(this.dom.frame.style.bottom=4-Number(this.body.dom.center.style.top.replace("px",""))+"px",this.dom.frame.style.top=""),0==this.options.icons?(this.dom.frame.style.width=this.dom.textArea.offsetWidth+10+"px",this.dom.textArea.style.right="",this.dom.textArea.style.left="",this.svg.style.width="0px"):(this.dom.frame.style.width=this.options.iconSize+15+this.dom.textArea.offsetWidth+10+"px",this.drawLegendIcons());var t="";for(var e in this.groups)this.groups.hasOwnProperty(e)&&(t+=this.groups[e].content+"
");this.dom.textArea.innerHTML=t,this.dom.textArea.style.lineHeight=.75*this.options.iconSize+this.options.iconSpacing+"px"}},s.prototype.drawLegendIcons=function(){if(this.dom.frame.parentNode){n.prepareElements(this.svgElements);var t=window.getComputedStyle(this.dom.frame).paddingTop,e=Number(t.replace("px","")),i=e,s=this.options.iconSize,o=.75*this.options.iconSize,r=e+.5*o+3;this.svg.style.width=s+5+e+"px";for(var a in this.groups)this.groups.hasOwnProperty(a)&&(this.groups[a].drawIcon(i,r,this.svgElements,this.svg,s,o),r+=o+this.options.iconSpacing);n.cleanupElements(this.svgElements)}},t.exports=s},function(t,e,i){function s(t,e){this.id=o.randomUUID(),this.body=t,this.defaultOptions={yAxisOrientation:"left",defaultGroup:"default",sort:!0,sampling:!0,graphHeight:"400px",shaded:{enabled:!1,orientation:"bottom"},style:"line",barChart:{width:50,align:"center"},catmullRom:{enabled:!0,parametrization:"centripetal",alpha:.5},drawPoints:{enabled:!0,size:6,style:"square"},dataAxis:{showMinorLabels:!0,showMajorLabels:!0,icons:!1,width:"40px",visible:!0},legend:{enabled:!1,icons:!0,left:{visible:!0,position:"top-left"},right:{visible:!0,position:"top-right"}}},this.options=o.extend({},this.defaultOptions),this.dom={},this.props={},this.hammer=null,this.groups={};var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e){i._onAdd(e.items)},update:function(t,e){i._onUpdate(e.items)},remove:function(t,e){i._onRemove(e.items)}},this.groupListeners={add:function(t,e){i._onAddGroups(e.items)},update:function(t,e){i._onUpdateGroups(e.items)},remove:function(t,e){i._onRemoveGroups(e.items)}},this.items={},this.selection=[],this.lastStart=this.body.range.start,this.touchParams={},this.svgElements={},this.setOptions(e),this.groupsUsingDefaultStyles=[0],this.body.emitter.on("rangechange",function(){if(0!=i.lastStart){var t=i.body.range.start-i.lastStart,e=i.body.range.end-i.body.range.start;if(0!=i.width){var s=i.width/e,o=t*s;i.svg.style.left=-i.width-o+"px"}}}),this.body.emitter.on("rangechanged",function(){i.lastStart=i.body.range.start,i.svg.style.left=o.option.asSize(-i.width),i._updateGraph.apply(i)}),this._create(),this.body.emitter.emit("change")}var o=i(1),n=i(2),r=i(3),a=i(4),h=i(18),d=i(21),l=i(22),c=i(25),p="__ungrouped__";s.prototype=new h,s.prototype._create=function(){var t=document.createElement("div");t.className="LineGraph",this.dom.frame=t,this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="relative",this.svg.style.height=(""+this.options.graphHeight).replace("px","")+"px",this.svg.style.display="block",t.appendChild(this.svg),this.options.dataAxis.orientation="left",this.yAxisLeft=new d(this.body,this.options.dataAxis,this.svg),this.options.dataAxis.orientation="right",this.yAxisRight=new d(this.body,this.options.dataAxis,this.svg),delete this.options.dataAxis.orientation,this.legendLeft=new c(this.body,this.options.legend,"left"),this.legendRight=new c(this.body,this.options.legend,"right"),this.show()},s.prototype.setOptions=function(t){if(t){var e=["sampling","defaultGroup","graphHeight","yAxisOrientation","style","barChart","dataAxis","sort"];o.selectiveDeepExtend(e,this.options,t),o.mergeOptions(this.options,t,"catmullRom"),o.mergeOptions(this.options,t,"drawPoints"),o.mergeOptions(this.options,t,"shaded"),o.mergeOptions(this.options,t,"legend"),t.catmullRom&&"object"==typeof t.catmullRom&&t.catmullRom.parametrization&&("uniform"==t.catmullRom.parametrization?this.options.catmullRom.alpha=0:"chordal"==t.catmullRom.parametrization?this.options.catmullRom.alpha=1:(this.options.catmullRom.parametrization="centripetal",this.options.catmullRom.alpha=.5)),this.yAxisLeft&&void 0!==t.dataAxis&&(this.yAxisLeft.setOptions(this.options.dataAxis),this.yAxisRight.setOptions(this.options.dataAxis)),this.legendLeft&&void 0!==t.legend&&(this.legendLeft.setOptions(this.options.legend),this.legendRight.setOptions(this.options.legend)),this.groups.hasOwnProperty(p)&&this.groups[p].setOptions(t)}this.dom.frame&&this._updateGraph()},s.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame)},s.prototype.show=function(){this.dom.frame.parentNode||this.body.dom.center.appendChild(this.dom.frame)},s.prototype.setItems=function(t){var e,i=this,s=this.itemsData;if(t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.itemsData=t}else this.itemsData=null;if(s&&(o.forEach(this.itemListeners,function(t,e){s.off(e,t)}),e=s.getIds(),this._onRemove(e)),this.itemsData){var n=this.id;o.forEach(this.itemListeners,function(t,e){i.itemsData.on(e,t,n)}),e=this.itemsData.getIds(),this._onAdd(e)}this._updateUngrouped(),this._updateGraph(),this.redraw()},s.prototype.setGroups=function(t){var e,i=this;if(this.groupsData&&(o.forEach(this.groupListeners,function(t,e){i.groupsData.unsubscribe(e,t)}),e=this.groupsData.getIds(),this.groupsData=null,this._onRemoveGroups(e)),t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.groupsData=t}else this.groupsData=null;if(this.groupsData){var s=this.id;o.forEach(this.groupListeners,function(t,e){i.groupsData.on(e,t,s)}),e=this.groupsData.getIds(),this._onAddGroups(e)}this._onUpdate()},s.prototype._onUpdate=function(){this._updateUngrouped(),this._updateAllGroupData(),this._updateGraph(),this.redraw()},s.prototype._onAdd=function(t){this._onUpdate(t)},s.prototype._onRemove=function(t){this._onUpdate(t)},s.prototype._onUpdateGroups=function(t){for(var e=0;e0){for(s=0;su){e.push(f);break}e.push(f)}}else for(var g=0;gp&&f.x0){for(var p=0;pi?i:a,d=s>d?s:d):(r=!0,h=h>i?i:h,l=s>l?s:l)}1==n&&this.yAxisLeft.setRange(a,d),1==r&&this.yAxisRight.setRange(h,l)}return o=this._toggleAxisVisiblity(n,this.yAxisLeft)||o,o=this._toggleAxisVisiblity(r,this.yAxisRight)||o,1==r&&1==n?(this.yAxisLeft.drawIcons=!0,this.yAxisRight.drawIcons=!0):(this.yAxisLeft.drawIcons=!1,this.yAxisRight.drawIcons=!1),this.yAxisRight.master=!n,0==this.yAxisRight.master?(1==r&&(this.yAxisLeft.lineOffset=this.yAxisRight.width),o=this.yAxisLeft.redraw()||o,this.yAxisRight.stepPixelsForced=this.yAxisLeft.stepPixels,o=this.yAxisRight.redraw()||o):o=this.yAxisRight.redraw()||o,o},s.prototype._toggleAxisVisiblity=function(t,e){var i=!1; +return 0==t?e.dom.frame.parentNode&&(e.hide(),i=!0):e.dom.frame.parentNode||(e.show(),i=!0),i},s.prototype._drawBarGraph=function(t,e){if(null!=t&&t.length>0){var i,s=.1*e.options.barChart.width,o=0,r=e.options.barChart.width;"left"==e.options.barChart.align?o-=.5*r:"right"==e.options.barChart.align&&(o+=.5*r);for(var a=0;a0&&(i=Math.min(i,Math.abs(t[a-1].x-t[a].x))),r>i&&(r=s>i?s:i),n.drawBar(t[a].x+o,t[a].y,r,e.zeroPosition-t[a].y,e.className+" bar",this.svgElements,this.svg);1==e.options.drawPoints.enabled&&this._drawPoints(t,e,this.svgElements,this.svg,o)}},s.prototype._drawLineGraph=function(t,e){if(null!=t&&t.length>0){var i,s,o=Number(this.svg.style.height.replace("px",""));if(i=n.getSVGElement("path",this.svgElements,this.svg),i.setAttributeNS(null,"class",e.className),s=1==e.options.catmullRom.enabled?this._catmullRom(t,e):this._linear(t),1==e.options.shaded.enabled){var r,a=n.getSVGElement("path",this.svgElements,this.svg);r="top"==e.options.shaded.orientation?"M"+t[0].x+",0 "+s+"L"+t[t.length-1].x+",0":"M"+t[0].x+","+o+" "+s+"L"+t[t.length-1].x+","+o,a.setAttributeNS(null,"class",e.className+" fill"),a.setAttributeNS(null,"d",r)}i.setAttributeNS(null,"d","M"+s),1==e.options.drawPoints.enabled&&this._drawPoints(t,e,this.svgElements,this.svg)}},s.prototype._drawPoints=function(t,e,i,s,o){void 0===o&&(o=0);for(var r=0;rp;p+=r)i=n(t[p].x)+this.width-1,s=t[p].y,o.push({x:i,y:s}),h=h>s?s:h,d=s>d?s:d;return{min:h,max:d,data:o}},s.prototype._convertYvalues=function(t,e){var i,s,o=[],n=this.yAxisLeft,r=Number(this.svg.style.height.replace("px",""));"right"==e.options.yAxisOrientation&&(n=this.yAxisRight);for(var a=0;al;l++)e=0==l?t[0]:t[l-1],i=t[l],s=t[l+1],o=d>l+2?t[l+2]:s,n={x:(-e.x+6*i.x+s.x)*h,y:(-e.y+6*i.y+s.y)*h},r={x:(i.x+6*s.x-o.x)*h,y:(i.y+6*s.y-o.y)*h},a+="C"+n.x+","+n.y+" "+r.x+","+r.y+" "+s.x+","+s.y+" ";return a},s.prototype._catmullRom=function(t,e){var i=e.options.catmullRom.alpha;if(0==i||void 0===i)return this._catmullRomUniform(t);for(var s,o,n,r,a,h,d,l,c,p,u,m,g,f,v,y,b,x,w,_=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",S=t.length,C=0;S-1>C;C++)s=0==C?t[0]:t[C-1],o=t[C],n=t[C+1],r=S>C+2?t[C+2]:n,d=Math.sqrt(Math.pow(s.x-o.x,2)+Math.pow(s.y-o.y,2)),l=Math.sqrt(Math.pow(o.x-n.x,2)+Math.pow(o.y-n.y,2)),c=Math.sqrt(Math.pow(n.x-r.x,2)+Math.pow(n.y-r.y,2)),f=Math.pow(c,i),y=Math.pow(c,2*i),v=Math.pow(l,i),b=Math.pow(l,2*i),w=Math.pow(d,i),x=Math.pow(d,2*i),p=2*x+3*w*v+b,u=2*y+3*f*v+b,m=3*w*(w+v),m>0&&(m=1/m),g=3*f*(f+v),g>0&&(g=1/g),a={x:(-b*s.x+p*o.x+x*n.x)*m,y:(-b*s.y+p*o.y+x*n.y)*m},h={x:(y*o.x+u*n.x-b*r.x)*g,y:(y*o.y+u*n.y-b*r.y)*g},0==a.x&&0==a.y&&(a=o),0==h.x&&0==h.y&&(h=n),_+="C"+a.x+","+a.y+" "+h.x+","+h.y+" "+n.x+","+n.y+" ";return _},s.prototype._linear=function(t){for(var e="",i=0;id;){d++;var l=n.getCurrent(),c=this.body.util.toScreen(l),p=n.isMajor();this.options.showMinorLabels&&this._repaintMinorText(c,n.getLabelMinor(),t),p&&this.options.showMajorLabels?(c>0&&(void 0==h&&(h=c),this._repaintMajorText(c,n.getLabelMajor(),t)),this._repaintMajorLine(c,t)):this._repaintMinorLine(c,t),n.next()}if(this.options.showMajorLabels){var u=this.body.util.toTime(0),m=n.getLabelMajor(u),g=m.length*(this.props.majorCharWidth||10)+10;(void 0==h||h>g)&&this._repaintMajorText(0,m,t)}o.forEach(this.dom.redundant,function(t){for(;t.length;){var e=t.pop();e&&e.parentNode&&e.parentNode.removeChild(e)}})},s.prototype._repaintMinorText=function(t,e,i){var s=this.dom.redundant.minorTexts.shift();if(!s){var o=document.createTextNode("");s=document.createElement("div"),s.appendChild(o),s.className="text minor",this.dom.foreground.appendChild(s)}this.dom.minorTexts.push(s),s.childNodes[0].nodeValue=e,s.style.top="top"==i?this.props.majorLabelHeight+"px":"0",s.style.left=t+"px"},s.prototype._repaintMajorText=function(t,e,i){var s=this.dom.redundant.majorTexts.shift();if(!s){var o=document.createTextNode(e);s=document.createElement("div"),s.className="text major",s.appendChild(o),this.dom.foreground.appendChild(s)}this.dom.majorTexts.push(s),s.childNodes[0].nodeValue=e,s.style.top="top"==i?"0":this.props.minorLabelHeight+"px",s.style.left=t+"px"},s.prototype._repaintMinorLine=function(t,e){var i=this.dom.redundant.minorLines.shift();i||(i=document.createElement("div"),i.className="grid vertical minor",this.dom.background.appendChild(i)),this.dom.minorLines.push(i);var s=this.props;i.style.top="top"==e?s.majorLabelHeight+"px":this.body.domProps.top.height+"px",i.style.height=s.minorLineHeight+"px",i.style.left=t-s.minorLineWidth/2+"px"},s.prototype._repaintMajorLine=function(t,e){var i=this.dom.redundant.majorLines.shift();i||(i=document.createElement("DIV"),i.className="grid vertical major",this.dom.background.appendChild(i)),this.dom.majorLines.push(i);var s=this.props;i.style.top="top"==e?"0":this.body.domProps.top.height+"px",i.style.left=t-s.majorLineWidth/2+"px",i.style.height=s.majorLineHeight+"px"},s.prototype._calculateCharSize=function(){this.dom.measureCharMinor||(this.dom.measureCharMinor=document.createElement("DIV"),this.dom.measureCharMinor.className="text minor measure",this.dom.measureCharMinor.style.position="absolute",this.dom.measureCharMinor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMinor)),this.props.minorCharHeight=this.dom.measureCharMinor.clientHeight,this.props.minorCharWidth=this.dom.measureCharMinor.clientWidth,this.dom.measureCharMajor||(this.dom.measureCharMajor=document.createElement("DIV"),this.dom.measureCharMajor.className="text minor measure",this.dom.measureCharMajor.style.position="absolute",this.dom.measureCharMajor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMajor)),this.props.majorCharHeight=this.dom.measureCharMajor.clientHeight,this.props.majorCharWidth=this.dom.measureCharMajor.clientWidth},s.prototype.snap=function(t){return this.step.snap(t)},t.exports=s},function(t,e,i){function s(t,e,i){this.id=null,this.parent=null,this.data=t,this.dom=null,this.conversion=e||{},this.options=i||{},this.selected=!1,this.displayed=!1,this.dirty=!0,this.top=null,this.left=null,this.width=null,this.height=null}var o=i(40);s.prototype.select=function(){this.selected=!0,this.displayed&&this.redraw()},s.prototype.unselect=function(){this.selected=!1,this.displayed&&this.redraw()},s.prototype.setParent=function(t){this.displayed?(this.hide(),this.parent=t,this.parent&&this.show()):this.parent=t},s.prototype.isVisible=function(){return!1},s.prototype.show=function(){return!1},s.prototype.hide=function(){return!1},s.prototype.redraw=function(){},s.prototype.repositionX=function(){},s.prototype.repositionY=function(){},s.prototype._repaintDeleteButton=function(t){if(this.selected&&this.options.editable.remove&&!this.dom.deleteButton){var e=this,i=document.createElement("div");i.className="delete",i.title="Delete this item",o(i,{preventDefault:!0}).on("tap",function(t){e.parent.removeFromDataSet(e),t.stopPropagation()}),t.appendChild(i),this.dom.deleteButton=i}else!this.selected&&this.dom.deleteButton&&(this.dom.deleteButton.parentNode&&this.dom.deleteButton.parentNode.removeChild(this.dom.deleteButton),this.dom.deleteButton=null)},t.exports=s},function(t,e,i){function s(t,e,i){if(this.props={dot:{width:0,height:0},line:{width:0,height:0}},t&&void 0==t.start)throw new Error('Property "start" missing in item '+t);o.call(this,t,e,i)}var o=i(28);s.prototype=new o(null,null,null),s.prototype.isVisible=function(t){var e=(t.end-t.start)/4;return this.data.start>t.start-e&&this.data.startt.start-e&&this.data.startt.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),t.box["timeline-item"]=this),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.foreground;if(!e)throw new Error("Cannot redraw time axis: parent has no foreground container element");e.appendChild(t.box)}if(this.displayed=!0,this.data.content!=this.content){if(this.content=this.data.content,this.content instanceof Element)t.content.innerHTML="",t.content.appendChild(this.content);else{if(void 0==this.data.content)throw new Error('Property "content" missing in item '+this.data.id);t.content.innerHTML=this.content}this.dirty=!0}this.data.title!=this.title&&(t.box.title=this.data.title,this.title=this.data.title);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");this.className!=i&&(this.className=i,t.box.className=this.baseClassName+i,this.dirty=!0),this.dirty&&(this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.props.content.width=this.dom.content.offsetWidth,this.height=this.dom.box.offsetHeight,this.dirty=!1),this._repaintDeleteButton(t.box),this._repaintDragLeft(),this._repaintDragRight()},s.prototype.show=function(){this.displayed||this.redraw()},s.prototype.hide=function(){if(this.displayed){var t=this.dom.box;t.parentNode&&t.parentNode.removeChild(t),this.top=null,this.left=null,this.displayed=!1}},s.prototype.repositionX=function(){var t,e=this.props,i=this.parent.width,s=this.conversion.toScreen(this.data.start),o=this.conversion.toScreen(this.data.end),n=this.options.padding;-i>s&&(s=-i),o>2*i&&(o=2*i);var r=Math.max(o-s,1);this.overflow?(t=Math.max(-s,0),this.left=s,this.width=r+this.props.content.width):(t=0>s?Math.min(-s,o-s-e.content.width-2*n):0,this.left=s,this.width=r),this.dom.box.style.left=this.left+"px",this.dom.box.style.width=r+"px",this.dom.content.style.left=t+"px"},s.prototype.repositionY=function(){var t=this.options.orientation,e=this.dom.box;e.style.top="top"==t?this.top+"px":this.parent.height-this.top-this.height+"px"},s.prototype._repaintDragLeft=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragLeft){var t=document.createElement("div");t.className="drag-left",t.dragLeftItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragLeft=t}else!this.selected&&this.dom.dragLeft&&(this.dom.dragLeft.parentNode&&this.dom.dragLeft.parentNode.removeChild(this.dom.dragLeft),this.dom.dragLeft=null)},s.prototype._repaintDragRight=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragRight){var t=document.createElement("div");t.className="drag-right",t.dragRightItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragRight=t}else!this.selected&&this.dom.dragRight&&(this.dom.dragRight.parentNode&&this.dom.dragRight.parentNode.removeChild(this.dom.dragRight),this.dom.dragRight=null)},t.exports=s},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this._initializeMixinLoaders(),this.containerElement=t,this.width="100%",this.height="100%",this.renderRefreshRate=60,this.renderTimestep=1e3/this.renderRefreshRate,this.renderTime=.5*this.renderTimestep,this.maxPhysicsTicksPerRender=3,this.physicsDiscreteStepsize=.5,this.stabilize=!0,this.selectable=!0,this.initializing=!0,this.triggerFunctions={add:null,edit:null,editEdge:null,connect:null,del:null},this.constants={nodes:{radiusMin:10,radiusMax:30,radius:10,shape:"ellipse",image:void 0,widthMin:16,widthMax:64,fixed:!1,fontColor:"black",fontSize:14,fontFace:"verdana",level:-1,color:{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},borderColor:"#2B7CE9",backgroundColor:"#97C2FC",highlightColor:"#D2E5FF",group:void 0,borderWidth:1},edges:{widthMin:1,widthMax:15,width:1,widthSelectionMultiplier:2,hoverWidth:1.5,style:"line",color:{color:"#848484",highlight:"#848484",hover:"#848484"},fontColor:"#343434",fontSize:14,fontFace:"arial",fontFill:"white",arrowScaleFactor:1,dash:{length:10,gap:5,altLength:void 0},inheritColor:"from"},configurePhysics:!1,physics:{barnesHut:{enabled:!0,theta:1/.6,gravitationalConstant:-2e3,centralGravity:.3,springLength:95,springConstant:.04,damping:.09},repulsion:{centralGravity:0,springLength:200,springConstant:.05,nodeDistance:100,damping:.09},hierarchicalRepulsion:{enabled:!1,centralGravity:0,springLength:100,springConstant:.01,nodeDistance:150,damping:.09},damping:null,centralGravity:null,springLength:null,springConstant:null},clustering:{enabled:!1,initialMaxNodes:100,clusterThreshold:500,reduceToNodes:300,chainThreshold:.4,clusterEdgeThreshold:20,sectorThreshold:100,screenSizeThreshold:.2,fontSizeMultiplier:4,maxFontSize:1e3,forceAmplification:.1,distanceAmplification:.1,edgeGrowth:20,nodeScaling:{width:1,height:1,radius:1},maxNodeSizeIncrements:600,activeAreaBoxSize:80,clusterLevelDifference:2},navigation:{enabled:!1},keyboard:{enabled:!1,speed:{x:10,y:10,zoom:.02}},dataManipulation:{enabled:!1,initiallyVisible:!1},hierarchicalLayout:{enabled:!1,levelSeparation:150,nodeSpacing:100,direction:"UD"},freezeForStabilization:!1,smoothCurves:{enabled:!0,dynamic:!0,type:"continuous",roundness:.5},dynamicSmoothCurves:!0,maxVelocity:30,minVelocity:.1,stabilizationIterations:1e3,labels:{add:"Add Node",edit:"Edit",link:"Add Link",del:"Delete selected",editNode:"Edit Node",editEdge:"Edit Edge",back:"Back",addDescription:"Click in an empty space to place a new node.",linkDescription:"Click on a node and drag the edge to another node to connect them.",editEdgeDescription:"Click on the control points and drag them to a node to connect to it.",addError:"The function for add does not support two arguments (data,callback).",linkError:"The function for connect does not support two arguments (data,callback).",editError:"The function for edit does not support two arguments (data, callback).",editBoundError:"No edit function has been bound to this button.",deleteError:"The function for delete does not support two arguments (data, callback).",deleteClusterError:"Clusters cannot be deleted."},tooltip:{delay:300,fontColor:"black",fontSize:14,fontFace:"verdana",color:{border:"#666",background:"#FFFFC6"}},dragNetwork:!0,dragNodes:!0,zoomable:!0,hover:!1,hideEdgesOnDrag:!1,hideNodesOnDrag:!1},this.hoverObj={nodes:{},edges:{}},this.controlNodesActive=!1;var o=this;this.groups=new p,this.images=new u,this.images.setOnloadCallback(function(){o._redraw()}),this.xIncrement=0,this.yIncrement=0,this.zoomIncrement=0,this._loadPhysicsSystem(),this._create(),this._loadSectorSystem(),this._loadClusterSystem(),this._loadSelectionSystem(),this._loadHierarchySystem(),this._setTranslation(this.frame.clientWidth/2,this.frame.clientHeight/2),this._setScale(1),this.setOptions(i),this.freezeSimulation=!1,this.cachedFunctions={},this.calculationNodes={},this.calculationNodeIndices=[],this.nodeIndices=[],this.nodes={},this.edges={},this.canvasTopLeft={x:0,y:0},this.canvasBottomRight={x:0,y:0},this.pointerPosition={x:0,y:0},this.areaCenter={},this.scale=1,this.previousScale=this.scale,this.nodesData=null,this.edgesData=null,this.nodesListeners={add:function(t,e){o._addNodes(e.items),o.start()},update:function(t,e){o._updateNodes(e.items),o.start()},remove:function(t,e){o._removeNodes(e.items),o.start()}},this.edgesListeners={add:function(t,e){o._addEdges(e.items),o.start()},update:function(t,e){o._updateEdges(e.items),o.start()},remove:function(t,e){o._removeEdges(e.items),o.start()}},this.moving=!0,this.timer=void 0,this.setData(e,this.constants.clustering.enabled||this.constants.hierarchicalLayout.enabled),this.initializing=!1,1==this.constants.hierarchicalLayout.enabled?this._setupHierarchicalLayout():0==this.stabilize&&this.zoomExtent(!0,this.constants.clustering.enabled),this.constants.clustering.enabled&&this.startWithClustering()}var o=i(46),n=i(40),r=i(47),a=i(1),h=i(43),d=i(3),l=i(4),c=i(38),p=i(34),u=i(35),m=i(36),g=i(33),f=i(37),v=i(45);i(44),o(s.prototype),s.prototype._getScriptPath=function(){for(var t=document.getElementsByTagName("script"),e=0;et.x&&(s=t.x),ot.y&&(e=t.y),i=this.constants.clustering.initialMaxNodes?49.07548/(o+142.05338)+91444e-8:12.662/(o+7.4147)+.0964822:1==this.constants.clustering.enabled&&o>=this.constants.clustering.initialMaxNodes?77.5271985/(o+187.266146)+476710517e-13:30.5062972/(o+19.93597763)+.08413486;var n=Math.min(this.frame.canvas.clientWidth/600,this.frame.canvas.clientHeight/600);i*=n}else{var r=1.1*(Math.abs(s.minX)+Math.abs(s.maxX)),a=1.1*(Math.abs(s.minY)+Math.abs(s.maxY)),h=this.frame.canvas.clientWidth/r,d=this.frame.canvas.clientHeight/a;i=d>=h?h:d}i>1&&(i=1),this._setScale(i),this._centerNetwork(s),0==e&&(this.moving=!0,this.start())},s.prototype._updateNodeIndexList=function(){this._clearNodeIndexList();for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodeIndices.push(t)},s.prototype.setData=function(t,e){if(void 0===e&&(e=!1),t&&t.dot&&(t.nodes||t.edges))throw new SyntaxError('Data must contain either parameter "dot" or parameter pair "nodes" and "edges", but not both.');if(this.setOptions(t&&t.options),t&&t.dot){if(t&&t.dot){var i=c.DOTToGraph(t.dot);return void this.setData(i)}}else this._setNodes(t&&t.nodes),this._setEdges(t&&t.edges);if(this._putDataInSector(),!e)if(this.stabilize){var s=this;setTimeout(function(){s._stabilize(),s.start()},0)}else this.start()},s.prototype.setOptions=function(t){if(t){var e;if(void 0!==t.width&&(this.width=t.width),void 0!==t.height&&(this.height=t.height),void 0!==t.stabilize&&(this.stabilize=t.stabilize),void 0!==t.selectable&&(this.selectable=t.selectable),void 0!==t.freezeForStabilization&&(this.constants.freezeForStabilization=t.freezeForStabilization),void 0!==t.configurePhysics&&(this.constants.configurePhysics=t.configurePhysics),void 0!==t.stabilizationIterations&&(this.constants.stabilizationIterations=t.stabilizationIterations),void 0!==t.dragNetwork&&(this.constants.dragNetwork=t.dragNetwork),void 0!==t.dragNodes&&(this.constants.dragNodes=t.dragNodes),void 0!==t.zoomable&&(this.constants.zoomable=t.zoomable),void 0!==t.hover&&(this.constants.hover=t.hover),void 0!==t.hideEdgesOnDrag&&(this.constants.hideEdgesOnDrag=t.hideEdgesOnDrag),void 0!==t.hideNodesOnDrag&&(this.constants.hideNodesOnDrag=t.hideNodesOnDrag),void 0!==t.dragGraph)throw new Error("Option dragGraph is renamed to dragNetwork");if(void 0!==t.labels)for(e in t.labels)t.labels.hasOwnProperty(e)&&(this.constants.labels[e]=t.labels[e]);if(t.onAdd&&(this.triggerFunctions.add=t.onAdd),t.onEdit&&(this.triggerFunctions.edit=t.onEdit),t.onEditEdge&&(this.triggerFunctions.editEdge=t.onEditEdge),t.onConnect&&(this.triggerFunctions.connect=t.onConnect),t.onDelete&&(this.triggerFunctions.del=t.onDelete),t.physics){if(t.physics.barnesHut){this.constants.physics.barnesHut.enabled=!0;for(e in t.physics.barnesHut)t.physics.barnesHut.hasOwnProperty(e)&&(this.constants.physics.barnesHut[e]=t.physics.barnesHut[e])}if(t.physics.repulsion){this.constants.physics.barnesHut.enabled=!1;for(e in t.physics.repulsion)t.physics.repulsion.hasOwnProperty(e)&&(this.constants.physics.repulsion[e]=t.physics.repulsion[e])}if(t.physics.hierarchicalRepulsion){this.constants.hierarchicalLayout.enabled=!0,this.constants.physics.hierarchicalRepulsion.enabled=!0,this.constants.physics.barnesHut.enabled=!1;for(e in t.physics.hierarchicalRepulsion)t.physics.hierarchicalRepulsion.hasOwnProperty(e)&&(this.constants.physics.hierarchicalRepulsion[e]=t.physics.hierarchicalRepulsion[e])}}if(void 0!==t.smoothCurves)if("boolean"==typeof t.smoothCurves)this.constants.smoothCurves.enabled=t.smoothCurves;else{this.constants.smoothCurves.enabled=!0;for(e in t.smoothCurves)t.smoothCurves.hasOwnProperty(e)&&(this.constants.smoothCurves[e]=t.smoothCurves[e])}if(t.hierarchicalLayout){this.constants.hierarchicalLayout.enabled=!0;for(e in t.hierarchicalLayout)t.hierarchicalLayout.hasOwnProperty(e)&&(this.constants.hierarchicalLayout[e]=t.hierarchicalLayout[e])}else void 0!==t.hierarchicalLayout&&(this.constants.hierarchicalLayout.enabled=!1);if(t.clustering){this.constants.clustering.enabled=!0;for(e in t.clustering)t.clustering.hasOwnProperty(e)&&(this.constants.clustering[e]=t.clustering[e])}else void 0!==t.clustering&&(this.constants.clustering.enabled=!1);if(t.navigation){this.constants.navigation.enabled=!0;for(e in t.navigation)t.navigation.hasOwnProperty(e)&&(this.constants.navigation[e]=t.navigation[e])}else void 0!==t.navigation&&(this.constants.navigation.enabled=!1);if(t.keyboard){this.constants.keyboard.enabled=!0;for(e in t.keyboard)t.keyboard.hasOwnProperty(e)&&(this.constants.keyboard[e]=t.keyboard[e])}else void 0!==t.keyboard&&(this.constants.keyboard.enabled=!1);if(t.dataManipulation){this.constants.dataManipulation.enabled=!0;for(e in t.dataManipulation)t.dataManipulation.hasOwnProperty(e)&&(this.constants.dataManipulation[e]=t.dataManipulation[e]);this.editMode=this.constants.dataManipulation.initiallyVisible}else void 0!==t.dataManipulation&&(this.constants.dataManipulation.enabled=!1);if(t.edges){for(e in t.edges)t.edges.hasOwnProperty(e)&&"object"!=typeof t.edges[e]&&(this.constants.edges[e]=t.edges[e]);void 0!==t.edges.color&&(a.isString(t.edges.color)?(this.constants.edges.color={},this.constants.edges.color.color=t.edges.color,this.constants.edges.color.highlight=t.edges.color,this.constants.edges.color.hover=t.edges.color):(void 0!==t.edges.color.color&&(this.constants.edges.color.color=t.edges.color.color),void 0!==t.edges.color.highlight&&(this.constants.edges.color.highlight=t.edges.color.highlight),void 0!==t.edges.color.hover&&(this.constants.edges.color.hover=t.edges.color.hover))),t.edges.fontColor||void 0!==t.edges.color&&(a.isString(t.edges.color)?this.constants.edges.fontColor=t.edges.color:void 0!==t.edges.color.color&&(this.constants.edges.fontColor=t.edges.color.color)),t.edges.dash&&(void 0!==t.edges.dash.length&&(this.constants.edges.dash.length=t.edges.dash.length),void 0!==t.edges.dash.gap&&(this.constants.edges.dash.gap=t.edges.dash.gap),void 0!==t.edges.dash.altLength&&(this.constants.edges.dash.altLength=t.edges.dash.altLength)) }if(t.nodes){for(e in t.nodes)t.nodes.hasOwnProperty(e)&&(this.constants.nodes[e]=t.nodes[e]);t.nodes.color&&(this.constants.nodes.color=a.parseColor(t.nodes.color))}if(t.groups)for(var i in t.groups)if(t.groups.hasOwnProperty(i)){var s=t.groups[i];this.groups.add(i,s)}if(t.tooltip){for(e in t.tooltip)t.tooltip.hasOwnProperty(e)&&(this.constants.tooltip[e]=t.tooltip[e]);t.tooltip.color&&(this.constants.tooltip.color=a.parseColor(t.tooltip.color))}}this._loadPhysicsSystem(),this._loadNavigationControls(),this._loadManipulationSystem(),this._configureSmoothCurves(),this._createKeyBinds(),this.setSize(this.width,this.height),this.moving=!0,this.start()},s.prototype._create=function(){for(;this.containerElement.hasChildNodes();)this.containerElement.removeChild(this.containerElement.firstChild);if(this.frame=document.createElement("div"),this.frame.className="network-frame",this.frame.style.position="relative",this.frame.style.overflow="hidden",this.frame.canvas=document.createElement("canvas"),this.frame.canvas.style.position="relative",this.frame.appendChild(this.frame.canvas),!this.frame.canvas.getContext){var t=document.createElement("DIV");t.style.color="red",t.style.fontWeight="bold",t.style.padding="10px",t.innerHTML="Error: your browser does not support HTML canvas",this.frame.canvas.appendChild(t)}var e=this;this.drag={},this.pinch={},this.hammer=n(this.frame.canvas,{prevent_default:!0}),this.hammer.on("tap",e._onTap.bind(e)),this.hammer.on("doubletap",e._onDoubleTap.bind(e)),this.hammer.on("hold",e._onHold.bind(e)),this.hammer.on("pinch",e._onPinch.bind(e)),this.hammer.on("touch",e._onTouch.bind(e)),this.hammer.on("dragstart",e._onDragStart.bind(e)),this.hammer.on("drag",e._onDrag.bind(e)),this.hammer.on("dragend",e._onDragEnd.bind(e)),this.hammer.on("release",e._onRelease.bind(e)),this.hammer.on("mousewheel",e._onMouseWheel.bind(e)),this.hammer.on("DOMMouseScroll",e._onMouseWheel.bind(e)),this.hammer.on("mousemove",e._onMouseMoveTitle.bind(e)),this.containerElement.appendChild(this.frame)},s.prototype._createKeyBinds=function(){var t=this;this.mousetrap=r,this.mousetrap.reset(),1==this.constants.keyboard.enabled&&(this.mousetrap.bind("up",this._moveUp.bind(t),"keydown"),this.mousetrap.bind("up",this._yStopMoving.bind(t),"keyup"),this.mousetrap.bind("down",this._moveDown.bind(t),"keydown"),this.mousetrap.bind("down",this._yStopMoving.bind(t),"keyup"),this.mousetrap.bind("left",this._moveLeft.bind(t),"keydown"),this.mousetrap.bind("left",this._xStopMoving.bind(t),"keyup"),this.mousetrap.bind("right",this._moveRight.bind(t),"keydown"),this.mousetrap.bind("right",this._xStopMoving.bind(t),"keyup"),this.mousetrap.bind("=",this._zoomIn.bind(t),"keydown"),this.mousetrap.bind("=",this._stopZoom.bind(t),"keyup"),this.mousetrap.bind("-",this._zoomOut.bind(t),"keydown"),this.mousetrap.bind("-",this._stopZoom.bind(t),"keyup"),this.mousetrap.bind("[",this._zoomIn.bind(t),"keydown"),this.mousetrap.bind("[",this._stopZoom.bind(t),"keyup"),this.mousetrap.bind("]",this._zoomOut.bind(t),"keydown"),this.mousetrap.bind("]",this._stopZoom.bind(t),"keyup"),this.mousetrap.bind("pageup",this._zoomIn.bind(t),"keydown"),this.mousetrap.bind("pageup",this._stopZoom.bind(t),"keyup"),this.mousetrap.bind("pagedown",this._zoomOut.bind(t),"keydown"),this.mousetrap.bind("pagedown",this._stopZoom.bind(t),"keyup")),1==this.constants.dataManipulation.enabled&&(this.mousetrap.bind("escape",this._createManipulatorBar.bind(t)),this.mousetrap.bind("del",this._deleteSelected.bind(t)))},s.prototype._getPointer=function(t){return{x:t.pageX-a.getAbsoluteLeft(this.frame.canvas),y:t.pageY-a.getAbsoluteTop(this.frame.canvas)}},s.prototype._onTouch=function(t){this.drag.pointer=this._getPointer(t.gesture.center),this.drag.pinched=!1,this.pinch.scale=this._getScale(),this._handleTouch(this.drag.pointer)},s.prototype._onDragStart=function(){this._handleDragStart()},s.prototype._handleDragStart=function(){var t=this.drag,e=this._getNodeAt(t.pointer);if(t.dragging=!0,t.selection=[],t.translation=this._getTranslation(),t.nodeId=null,null!=e){t.nodeId=e.id,e.isSelected()||this._selectObject(e,!1);for(var i in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(i)){var s=this.selectionObj.nodes[i],o={id:s.id,node:s,x:s.x,y:s.y,xFixed:s.xFixed,yFixed:s.yFixed};s.xFixed=!0,s.yFixed=!0,t.selection.push(o)}}},s.prototype._onDrag=function(t){this._handleOnDrag(t)},s.prototype._handleOnDrag=function(t){if(!this.drag.pinched){var e=this._getPointer(t.gesture.center),i=this,s=this.drag,o=s.selection;if(o&&o.length&&1==this.constants.dragNodes){var n=e.x-s.pointer.x,r=e.y-s.pointer.y;o.forEach(function(t){var e=t.node;t.xFixed||(e.x=i._XconvertDOMtoCanvas(i._XconvertCanvasToDOM(t.x)+n)),t.yFixed||(e.y=i._YconvertDOMtoCanvas(i._YconvertCanvasToDOM(t.y)+r))}),this.moving||(this.moving=!0,this.start())}else if(1==this.constants.dragNetwork){var a=e.x-this.drag.pointer.x,h=e.y-this.drag.pointer.y;this._setTranslation(this.drag.translation.x+a,this.drag.translation.y+h),this._redraw()}}},s.prototype._onDragEnd=function(){this.drag.dragging=!1;var t=this.drag.selection;t&&(t.forEach(function(t){t.node.xFixed=t.xFixed,t.node.yFixed=t.yFixed}),this.moving=!0,this.start()),this._redraw()},s.prototype._onTap=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleTap(e)},s.prototype._onDoubleTap=function(t){var e=this._getPointer(t.gesture.center);this._handleDoubleTap(e)},s.prototype._onHold=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleOnHold(e)},s.prototype._onRelease=function(t){var e=this._getPointer(t.gesture.center);this._handleOnRelease(e)},s.prototype._onPinch=function(t){var e=this._getPointer(t.gesture.center);this.drag.pinched=!0,"scale"in this.pinch||(this.pinch.scale=1);var i=this.pinch.scale*t.gesture.scale;this._zoom(i,e)},s.prototype._zoom=function(t,e){if(1==this.constants.zoomable){var i=this._getScale();1e-5>t&&(t=1e-5),t>10&&(t=10);var s=null;void 0!==this.drag&&1==this.drag.dragging&&(s=this.DOMtoCanvas(this.drag.pointer));var o=this._getTranslation(),n=t/i,r=(1-n)*e.x+o.x*n,a=(1-n)*e.y+o.y*n;if(this.areaCenter={x:this._XconvertDOMtoCanvas(e.x),y:this._YconvertDOMtoCanvas(e.y)},this._setScale(t),this._setTranslation(r,a),this.updateClustersDefault(),null!=s){var h=this.canvasToDOM(s);this.drag.pointer.x=h.x,this.drag.pointer.y=h.y}return this._redraw(),t>i?this.emit("zoom",{direction:"+"}):this.emit("zoom",{direction:"-"}),t}},s.prototype._onMouseWheel=function(t){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i=this._getScale(),s=e/10;0>e&&(s/=1-s),i*=1+s;var o=h.fakeGesture(this,t),n=this._getPointer(o.center);this._zoom(i,n)}t.preventDefault()},s.prototype._onMouseMoveTitle=function(t){var e=h.fakeGesture(this,t),i=this._getPointer(e.center);this.popupObj&&this._checkHidePopup(i);var s=this,o=function(){s._checkShowPopup(i)};if(this.popupTimer&&clearInterval(this.popupTimer),this.drag.dragging||(this.popupTimer=setTimeout(o,this.constants.tooltip.delay)),1==this.constants.hover){for(var n in this.hoverObj.edges)this.hoverObj.edges.hasOwnProperty(n)&&(this.hoverObj.edges[n].hover=!1,delete this.hoverObj.edges[n]);var r=this._getNodeAt(i);null==r&&(r=this._getEdgeAt(i)),null!=r&&this._hoverObject(r);for(var a in this.hoverObj.nodes)this.hoverObj.nodes.hasOwnProperty(a)&&(r instanceof m&&r.id!=a||r instanceof g||null==r)&&(this._blurObject(this.hoverObj.nodes[a]),delete this.hoverObj.nodes[a]);this.redraw()}},s.prototype._checkShowPopup=function(t){var e,i={left:this._XconvertDOMtoCanvas(t.x),top:this._YconvertDOMtoCanvas(t.y),right:this._XconvertDOMtoCanvas(t.x),bottom:this._YconvertDOMtoCanvas(t.y)},s=this.popupObj;if(void 0==this.popupObj){var o=this.nodes;for(e in o)if(o.hasOwnProperty(e)){var n=o[e];if(void 0!==n.getTitle()&&n.isOverlappingWith(i)){this.popupObj=n;break}}}if(void 0===this.popupObj){var r=this.edges;for(e in r)if(r.hasOwnProperty(e)){var a=r[e];if(a.connected&&void 0!==a.getTitle()&&a.isOverlappingWith(i)){this.popupObj=a;break}}}if(this.popupObj){if(this.popupObj!=s){var h=this;h.popup||(h.popup=new f(h.frame,h.constants.tooltip)),h.popup.setPosition(t.x-3,t.y-3),h.popup.setText(h.popupObj.getTitle()),h.popup.show()}}else this.popup&&this.popup.hide()},s.prototype._checkHidePopup=function(t){this.popupObj&&this._getNodeAt(t)||(this.popupObj=void 0,this.popup&&this.popup.hide())},s.prototype.setSize=function(t,e){this.frame.style.width=t,this.frame.style.height=e,this.frame.canvas.style.width="100%",this.frame.canvas.style.height="100%",this.frame.canvas.width=this.frame.canvas.clientWidth,this.frame.canvas.height=this.frame.canvas.clientHeight,void 0!==this.manipulationDiv&&(this.manipulationDiv.style.width=this.frame.canvas.clientWidth+"px"),void 0!==this.navigationDivs&&void 0!==this.navigationDivs.wrapper&&(this.navigationDivs.wrapper.style.width=this.frame.canvas.clientWidth+"px",this.navigationDivs.wrapper.style.height=this.frame.canvas.clientHeight+"px"),this.emit("resize",{width:this.frame.canvas.width,height:this.frame.canvas.height})},s.prototype._setNodes=function(t){var e=this.nodesData;if(t instanceof d||t instanceof l)this.nodesData=t;else if(t instanceof Array)this.nodesData=new d,this.nodesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.nodesData=new d}if(e&&a.forEach(this.nodesListeners,function(t,i){e.off(i,t)}),this.nodes={},this.nodesData){var i=this;a.forEach(this.nodesListeners,function(t,e){i.nodesData.on(e,t)});var s=this.nodesData.getIds();this._addNodes(s)}this._updateSelection()},s.prototype._addNodes=function(t){for(var e,i=0,s=t.length;s>i;i++){e=t[i];var o=this.nodesData.get(e),n=new m(o,this.images,this.groups,this.constants);if(this.nodes[e]=n,!(0!=n.xFixed&&0!=n.yFixed||null!==n.x&&null!==n.y)){var r=1*t.length,a=2*Math.PI*Math.random();0==n.xFixed&&(n.x=r*Math.cos(a)),0==n.yFixed&&(n.y=r*Math.sin(a))}this.moving=!0}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateValueRange(this.nodes),this.updateLabels()},s.prototype._updateNodes=function(t){for(var e=this.nodes,i=this.nodesData,s=0,o=t.length;o>s;s++){var n=t[s],r=e[n],a=i.get(n);r?r.setProperties(a,this.constants):(r=new m(properties,this.images,this.groups,this.constants),e[n]=r)}this.moving=!0,1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateNodeIndexList(),this._reconnectEdges(),this._updateValueRange(e)},s.prototype._removeNodes=function(t){for(var e=this.nodes,i=0,s=t.length;s>i;i++){var o=t[i];delete e[o]}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateSelection(),this._updateValueRange(e)},s.prototype._setEdges=function(t){var e=this.edgesData;if(t instanceof d||t instanceof l)this.edgesData=t;else if(t instanceof Array)this.edgesData=new d,this.edgesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.edgesData=new d}if(e&&a.forEach(this.edgesListeners,function(t,i){e.off(i,t)}),this.edges={},this.edgesData){var i=this;a.forEach(this.edgesListeners,function(t,e){i.edgesData.on(e,t)});var s=this.edgesData.getIds();this._addEdges(s)}this._reconnectEdges()},s.prototype._addEdges=function(t){for(var e=this.edges,i=this.edgesData,s=0,o=t.length;o>s;s++){var n=t[s],r=e[n];r&&r.disconnect();var a=i.get(n,{showInternalIds:!0});e[n]=new g(a,this,this.constants)}this.moving=!0,this._updateValueRange(e),this._createBezierNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes()},s.prototype._updateEdges=function(t){for(var e=this.edges,i=this.edgesData,s=0,o=t.length;o>s;s++){var n=t[s],r=i.get(n),a=e[n];a?(a.disconnect(),a.setProperties(r,this.constants),a.connect()):(a=new g(r,this,this.constants),this.edges[n]=a)}this._createBezierNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this.moving=!0,this._updateValueRange(e)},s.prototype._removeEdges=function(t){for(var e=this.edges,i=0,s=t.length;s>i;i++){var o=t[i],n=e[o];n&&(null!=n.via&&delete this.sectors.support.nodes[n.via.id],n.disconnect(),delete e[o])}this.moving=!0,this._updateValueRange(e),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes()},s.prototype._reconnectEdges=function(){var t,e=this.nodes,i=this.edges;for(t in e)e.hasOwnProperty(t)&&(e[t].edges=[]);for(t in i)if(i.hasOwnProperty(t)){var s=i[t];s.from=null,s.to=null,s.connect()}},s.prototype._updateValueRange=function(t){var e,i=void 0,s=void 0;for(e in t)if(t.hasOwnProperty(e)){var o=t[e].getValue();void 0!==o&&(i=void 0===i?o:Math.min(o,i),s=void 0===s?o:Math.max(o,s))}if(void 0!==i&&void 0!==s)for(e in t)t.hasOwnProperty(e)&&t[e].setValueRange(i,s)},s.prototype.redraw=function(){this.setSize(this.width,this.height),this._redraw()},s.prototype._redraw=function(){var t=this.frame.canvas.getContext("2d"),e=this.frame.canvas.width,i=this.frame.canvas.height;t.clearRect(0,0,e,i),t.save(),t.translate(this.translation.x,this.translation.y),t.scale(this.scale,this.scale),this.canvasTopLeft={x:this._XconvertDOMtoCanvas(0),y:this._YconvertDOMtoCanvas(0)},this.canvasBottomRight={x:this._XconvertDOMtoCanvas(this.frame.canvas.clientWidth),y:this._YconvertDOMtoCanvas(this.frame.canvas.clientHeight)},this._doInAllSectors("_drawAllSectorNodes",t),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideEdgesOnDrag)&&this._doInAllSectors("_drawEdges",t),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideNodesOnDrag)&&this._doInAllSectors("_drawNodes",t,!1),1==this.controlNodesActive&&this._doInAllSectors("_drawControlNodes",t),t.restore()},s.prototype._setTranslation=function(t,e){void 0===this.translation&&(this.translation={x:0,y:0}),void 0!==t&&(this.translation.x=t),void 0!==e&&(this.translation.y=e),this.emit("viewChanged")},s.prototype._getTranslation=function(){return{x:this.translation.x,y:this.translation.y}},s.prototype._setScale=function(t){this.scale=t},s.prototype._getScale=function(){return this.scale},s.prototype._XconvertDOMtoCanvas=function(t){return(t-this.translation.x)/this.scale},s.prototype._XconvertCanvasToDOM=function(t){return t*this.scale+this.translation.x},s.prototype._YconvertDOMtoCanvas=function(t){return(t-this.translation.y)/this.scale},s.prototype._YconvertCanvasToDOM=function(t){return t*this.scale+this.translation.y},s.prototype.canvasToDOM=function(t){return{x:this._XconvertCanvasToDOM(t.x),y:this._YconvertCanvasToDOM(t.y)}},s.prototype.DOMtoCanvas=function(t){return{x:this._XconvertDOMtoCanvas(t.x),y:this._YconvertDOMtoCanvas(t.y)}},s.prototype._drawNodes=function(t,e){void 0===e&&(e=!1);var i=this.nodes,s=[];for(var o in i)i.hasOwnProperty(o)&&(i[o].setScaleAndPos(this.scale,this.canvasTopLeft,this.canvasBottomRight),i[o].isSelected()?s.push(o):(i[o].inArea()||e)&&i[o].draw(t));for(var n=0,r=s.length;r>n;n++)(i[s[n]].inArea()||e)&&i[s[n]].draw(t)},s.prototype._drawEdges=function(t){var e=this.edges;for(var i in e)if(e.hasOwnProperty(i)){var s=e[i];s.setScale(this.scale),s.connected&&e[i].draw(t)}},s.prototype._drawControlNodes=function(t){var e=this.edges;for(var i in e)e.hasOwnProperty(i)&&e[i]._drawControlNodes(t)},s.prototype._stabilize=function(){1==this.constants.freezeForStabilization&&this._freezeDefinedNodes();for(var t=0;this.moving&&t0)for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStepLimited(e,this.constants.maxVelocity),s=!0);else for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStep(e),s=!0);if(1==s){var o=this.constants.minVelocity/Math.max(this.scale,.05);o>.5*this.constants.maxVelocity?this.moving=!0:(this.moving=this._isMoving(o),0==this.moving&&this.emit("stabilized",{iterations:null}),this.moving=this.moving||this.configurePhysics)}},s.prototype._physicsTick=function(){this.freezeSimulation||this.moving&&(this._doInAllActiveSectors("_initializeForceCalculation"),this._doInAllActiveSectors("_discreteStepNodes"),this.constants.smoothCurves&&this._doInSupportSector("_discreteStepNodes"),this._findCenter(this._getRange()))},s.prototype._animationStep=function(){this.timer=void 0,this._handleNavigation(),this.start();var t=Date.now(),e=1;this._physicsTick();for(var i=Date.now()-t;i<.9*(this.renderTimestep-this.renderTime)&&eh}return!1},s.prototype._getColor=function(){var t=this.color;return"to"==this.inheritColor?t={highlight:this.to.color.highlight.border,hover:this.to.color.hover.border,color:this.to.color.border}:("from"==this.inheritColor||1==this.inheritColor)&&(t={highlight:this.from.color.highlight.border,hover:this.from.color.hover.border,color:this.from.color.border}),1==this.selected?t.highlight:1==this.hover?t.hover:t.color},s.prototype._drawLine=function(t){if(t.strokeStyle=this._getColor(),t.lineWidth=this._getLineWidth(),this.from!=this.to){var e,i=this._line(t);if(this.label){if(1==this.smoothCurves.enabled&&null!=i){var s=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),o=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:s,y:o}}else e=this._pointOnLine(.5);this._label(t,this.label,e.x,e.y)}}else{var n,r,a=this.length/4,h=this.from;h.width||h.resize(t),h.width>h.height?(n=h.x+h.width/2,r=h.y-a):(n=h.x+a,r=h.y-h.height/2),this._circle(t,n,r,a),e=this._pointOnCircle(n,r,a,.5),this._label(t,this.label,e.x,e.y)}},s.prototype._getLineWidth=function(){return 1==this.selected?Math.min(this.widthSelected,this.widthMax)*this.networkScaleInv:1==this.hover?Math.min(this.hoverWidth,this.widthMax)*this.networkScaleInv:this.width*this.networkScaleInv},s.prototype._getViaCoordinates=function(){var t=null,e=null,i=this.smoothCurves.roundness,s=this.smoothCurves.type,o=Math.abs(this.from.x-this.to.x),n=Math.abs(this.from.y-this.to.y);return"discrete"==s||"diagonalCross"==s?Math.abs(this.from.x-this.to.x)this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n)),"discrete"==s&&(t=i*n>o?this.from.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o)),"discrete"==s&&(e=i*o>n?this.from.y:e)):"straightCross"==s?Math.abs(this.from.x-this.to.x)Math.abs(this.from.y-this.to.y)&&(t=this.from.xthis.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n,t=this.to.x>t?this.to.x:t):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n,t=this.to.x>t?this.to.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xe?this.to.y:e):this.from.x>this.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o,e=this.to.y>e?this.to.y:e):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o,e=this.to.yl.height?(a=l.x+.5*l.width,h=l.y-d):(a=l.x+d,h=l.y-.5*l.height),this._circle(t,a,h,d);var s=.2*Math.PI,o=(10+5*this.width)*this.arrowScaleFactor;e=this._pointOnCircle(a,h,d,.5),t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&(e=this._pointOnCircle(a,h,d,.5),this._label(t,this.label,e.x,e.y))}},s.prototype._drawArrow=function(t){1==this.selected?(t.strokeStyle=this.color.highlight,t.fillStyle=this.color.highlight):1==this.hover?(t.strokeStyle=this.color.hover,t.fillStyle=this.color.hover):(t.strokeStyle=this.color.color,t.fillStyle=this.color.color),t.lineWidth=this._getLineWidth(); -var e,i;if(this.from!=this.to){e=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x);var s,o=this.to.x-this.from.x,n=this.to.y-this.from.y,r=Math.sqrt(o*o+n*n),a=this.from.distanceToBorder(t,e+Math.PI),h=(r-a)/r,d=h*this.from.x+(1-h)*this.to.x,l=h*this.from.y+(1-h)*this.to.y;1==this.smoothCurves.dynamic&&1==this.smoothCurves.enabled?s=this.via:1==this.smoothCurves.enabled&&(s=this._getViaCoordinates()),1==this.smoothCurves.enabled&&null!=s.x&&(e=Math.atan2(this.to.y-s.y,this.to.x-s.x),o=this.to.x-s.x,n=this.to.y-s.y,r=Math.sqrt(o*o+n*n));var c,p,u=this.to.distanceToBorder(t,e),m=(r-u)/r;if(1==this.smoothCurves.enabled&&null!=s.x?(c=(1-m)*s.x+m*this.to.x,p=(1-m)*s.y+m*this.to.y):(c=(1-m)*this.from.x+m*this.to.x,p=(1-m)*this.from.y+m*this.to.y),t.beginPath(),t.moveTo(d,l),1==this.smoothCurves.enabled&&null!=s.x?t.quadraticCurveTo(s.x,s.y,c,p):t.lineTo(c,p),t.stroke(),i=(10+5*this.width)*this.arrowScaleFactor,t.arrow(c,p,e,i),t.fill(),t.stroke(),this.label){var g;if(1==this.smoothCurves.enabled&&null!=s){var f=.5*(.5*(this.from.x+s.x)+.5*(this.to.x+s.x)),v=.5*(.5*(this.from.y+s.y)+.5*(this.to.y+s.y));g={x:f,y:v}}else g=this._pointOnLine(.5);this._label(t,this.label,g.x,g.y)}}else{var y,b,x,w=this.from,_=.25*Math.max(100,this.length);w.width||w.resize(t),w.width>w.height?(y=w.x+.5*w.width,b=w.y-_,x={x:y,y:w.y,angle:.9*Math.PI}):(y=w.x+_,b=w.y-.5*w.height,x={x:w.x,y:b,angle:.6*Math.PI}),t.beginPath(),t.arc(y,b,_,0,2*Math.PI,!1),t.stroke();var i=(10+5*this.width)*this.arrowScaleFactor;t.arrow(x.x,x.y,x.angle,i),t.fill(),t.stroke(),this.label&&(g=this._pointOnCircle(y,b,_,.5),this._label(t,this.label,g.x,g.y))}},s.prototype._getDistanceToEdge=function(t,e,i,s,o,n){if(this.from!=this.to){if(1==this.smoothCurves.enabled){var r,a;if(1==this.smoothCurves.enabled&&1==this.smoothCurves.dynamic)r=this.via.x,a=this.via.y;else{var h=this._getViaCoordinates();r=h.x,a=h.y}var d,l,c,p,u,m,g,f=1e9;for(l=0;10>l;l++)c=.1*l,p=Math.pow(1-c,2)*t+2*c*(1-c)*r+Math.pow(c,2)*i,u=Math.pow(1-c,2)*e+2*c*(1-c)*a+Math.pow(c,2)*s,l>0&&(d=this._getDistanceToLine(m,g,p,u,o,n),f=f>d?d:f),m=p,g=u;return f}return this._getDistanceToLine(t,e,i,s,o,n)}var p,u,v,y,b=this.length/4,x=this.from;return x.width||x.resize(ctx),x.width>x.height?(p=x.x+x.width/2,u=x.y-b):(p=x.x+b,u=x.y-x.height/2),v=p-o,y=u-n,Math.abs(Math.sqrt(v*v+y*y)-b)},s.prototype._getDistanceToLine=function(t,e,i,s,o,n){var r=i-t,a=s-e,h=r*r+a*a,d=((o-t)*r+(n-e)*a)/h;d>1?d=1:0>d&&(d=0);var l=t+d*r,c=e+d*a,p=l-o,u=c-n;return Math.sqrt(p*p+u*u)},s.prototype.setScale=function(t){this.networkScaleInv=1/t},s.prototype.select=function(){this.selected=!0},s.prototype.unselect=function(){this.selected=!1},s.prototype.positionBezierNode=function(){null!==this.via&&(this.via.x=.5*(this.from.x+this.to.x),this.via.y=.5*(this.from.y+this.to.y))},s.prototype._drawControlNodes=function(t){if(1==this.controlNodesEnabled){if(null===this.controlNodes.from&&null===this.controlNodes.to){var e="edgeIdFrom:".concat(this.id),i="edgeIdTo:".concat(this.id),s={nodes:{group:"",radius:8},physics:{damping:0},clustering:{maxNodeSizeIncrements:0,nodeScaling:{width:0,height:0,radius:0}}};this.controlNodes.from=new n({id:e,shape:"dot",color:{background:"#ff4e00",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s),this.controlNodes.to=new n({id:i,shape:"dot",color:{background:"#ff4e00",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s)}0==this.controlNodes.from.selected&&0==this.controlNodes.to.selected&&(this.controlNodes.positions=this.getControlNodePositions(t),this.controlNodes.from.x=this.controlNodes.positions.from.x,this.controlNodes.from.y=this.controlNodes.positions.from.y,this.controlNodes.to.x=this.controlNodes.positions.to.x,this.controlNodes.to.y=this.controlNodes.positions.to.y),this.controlNodes.from.draw(t),this.controlNodes.to.draw(t)}else this.controlNodes={from:null,to:null,positions:{}}},s.prototype._enableControlNodes=function(){this.controlNodesEnabled=!0},s.prototype._disableControlNodes=function(){this.controlNodesEnabled=!1},s.prototype._getSelectedControlNode=function(t,e){var i=this.controlNodes.positions,s=Math.sqrt(Math.pow(t-i.from.x,2)+Math.pow(e-i.from.y,2)),o=Math.sqrt(Math.pow(t-i.to.x,2)+Math.pow(e-i.to.y,2));return 15>s?(this.connectedNode=this.from,this.from=this.controlNodes.from,this.controlNodes.from):15>o?(this.connectedNode=this.to,this.to=this.controlNodes.to,this.controlNodes.to):null},s.prototype._restoreControlNodes=function(){1==this.controlNodes.from.selected&&(this.from=this.connectedNode,this.connectedNode=null,this.controlNodes.from.unselect()),1==this.controlNodes.to.selected&&(this.to=this.connectedNode,this.connectedNode=null,this.controlNodes.to.unselect())},s.prototype.getControlNodePositions=function(t){var e,i=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),s=this.to.x-this.from.x,o=this.to.y-this.from.y,n=Math.sqrt(s*s+o*o),r=this.from.distanceToBorder(t,i+Math.PI),a=(n-r)/n,h=a*this.from.x+(1-a)*this.to.x,d=a*this.from.y+(1-a)*this.to.y;1==this.smoothCurves.dynamic&&1==this.smoothCurves.enabled?e=this.via:1==this.smoothCurves.enabled&&(e=this._getViaCoordinates()),1==this.smoothCurves.enabled&&null!=e.x&&(i=Math.atan2(this.to.y-e.y,this.to.x-e.x),s=this.to.x-e.x,o=this.to.y-e.y,n=Math.sqrt(s*s+o*o));var l,c,p=this.to.distanceToBorder(t,i),u=(n-p)/n;return 1==this.smoothCurves.enabled&&null!=e.x?(l=(1-u)*e.x+u*this.to.x,c=(1-u)*e.y+u*this.to.y):(l=(1-u)*this.from.x+u*this.to.x,c=(1-u)*this.from.y+u*this.to.y),{from:{x:h,y:d},to:{x:l,y:c}}},t.exports=s},function(t,e,i){function s(){this.clear(),this.defaultIndex=0}var o=i(1);s.DEFAULT=[{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},{border:"#FFA500",background:"#FFFF00",highlight:{border:"#FFA500",background:"#FFFFA3"},hover:{border:"#FFA500",background:"#FFFFA3"}},{border:"#FA0A10",background:"#FB7E81",highlight:{border:"#FA0A10",background:"#FFAFB1"},hover:{border:"#FA0A10",background:"#FFAFB1"}},{border:"#41A906",background:"#7BE141",highlight:{border:"#41A906",background:"#A1EC76"},hover:{border:"#41A906",background:"#A1EC76"}},{border:"#E129F0",background:"#EB7DF4",highlight:{border:"#E129F0",background:"#F0B3F5"},hover:{border:"#E129F0",background:"#F0B3F5"}},{border:"#7C29F0",background:"#AD85E4",highlight:{border:"#7C29F0",background:"#D3BDF0"},hover:{border:"#7C29F0",background:"#D3BDF0"}},{border:"#C37F00",background:"#FFA807",highlight:{border:"#C37F00",background:"#FFCA66"},hover:{border:"#C37F00",background:"#FFCA66"}},{border:"#4220FB",background:"#6E6EFD",highlight:{border:"#4220FB",background:"#9B9BFD"},hover:{border:"#4220FB",background:"#9B9BFD"}},{border:"#FD5A77",background:"#FFC0CB",highlight:{border:"#FD5A77",background:"#FFD1D9"},hover:{border:"#FD5A77",background:"#FFD1D9"}},{border:"#4AD63A",background:"#C2FABC",highlight:{border:"#4AD63A",background:"#E6FFE3"},hover:{border:"#4AD63A",background:"#E6FFE3"}}],s.prototype.clear=function(){this.groups={},this.groups.length=function(){var t=0;for(var e in this)this.hasOwnProperty(e)&&t++;return t}},s.prototype.get=function(t){var e=this.groups[t];if(void 0==e){var i=this.defaultIndex%s.DEFAULT.length;this.defaultIndex++,e={},e.color=s.DEFAULT[i],this.groups[t]=e}return e},s.prototype.add=function(t,e){return this.groups[t]=e,e.color&&(e.color=o.parseColor(e.color)),e},t.exports=s},function(t){function e(){this.images={},this.callback=void 0}e.prototype.setOnloadCallback=function(t){this.callback=t},e.prototype.load=function(t){var e=this.images[t];if(void 0==e){var i=this;e=new Image,this.images[t]=e,e.onload=function(){i.callback&&i.callback(this)},e.src=t}return e},t.exports=e},function(t,e,i){function s(t,e,i,s){this.selected=!1,this.hover=!1,this.edges=[],this.dynamicEdges=[],this.reroutedEdges={},this.group=s.nodes.group,this.fontSize=Number(s.nodes.fontSize),this.fontFace=s.nodes.fontFace,this.fontColor=s.nodes.fontColor,this.fontDrawThreshold=3,this.color=s.nodes.color,this.id=void 0,this.shape=s.nodes.shape,this.image=s.nodes.image,this.x=null,this.y=null,this.xFixed=!1,this.yFixed=!1,this.horizontalAlignLeft=!0,this.verticalAlignTop=!0,this.radius=s.nodes.radius,this.baseRadiusValue=s.nodes.radius,this.radiusFixed=!1,this.radiusMin=s.nodes.radiusMin,this.radiusMax=s.nodes.radiusMax,this.level=-1,this.preassignedLevel=!1,this.borderWidth=s.nodes.borderWidth,this.borderWidthSelected=s.nodes.borderWidthSelected,this.imagelist=e,this.grouplist=i,this.fx=0,this.fy=0,this.vx=0,this.vy=0,this.minForce=s.minForce,this.damping=s.physics.damping,this.mass=1,this.fixedData={x:null,y:null},this.setProperties(t,s),this.resetCluster(),this.dynamicEdgesLength=0,this.clusterSession=0,this.clusterSizeWidthFactor=s.clustering.nodeScaling.width,this.clusterSizeHeightFactor=s.clustering.nodeScaling.height,this.clusterSizeRadiusFactor=s.clustering.nodeScaling.radius,this.maxNodeSizeIncrements=s.clustering.maxNodeSizeIncrements,this.growthIndicator=0,this.networkScaleInv=1,this.networkScale=1,this.canvasTopLeft={x:-300,y:-300},this.canvasBottomRight={x:300,y:300},this.parentEdgeId=null}var o=i(1);s.prototype.resetCluster=function(){this.formationScale=void 0,this.clusterSize=1,this.containedNodes={},this.containedEdges={},this.clusterSessions=[]},s.prototype.attachEdge=function(t){-1==this.edges.indexOf(t)&&this.edges.push(t),-1==this.dynamicEdges.indexOf(t)&&this.dynamicEdges.push(t),this.dynamicEdgesLength=this.dynamicEdges.length},s.prototype.detachEdge=function(t){var e=this.edges.indexOf(t);-1!=e&&(this.edges.splice(e,1),this.dynamicEdges.splice(e,1)),this.dynamicEdgesLength=this.dynamicEdges.length},s.prototype.setProperties=function(t,e){if(t){if(this.originalLabel=void 0,void 0!==t.id&&(this.id=t.id),void 0!==t.label&&(this.label=t.label,this.originalLabel=t.label),void 0!==t.title&&(this.title=t.title),void 0!==t.group&&(this.group=t.group),void 0!==t.x&&(this.x=t.x),void 0!==t.y&&(this.y=t.y),void 0!==t.value&&(this.value=t.value),void 0!==t.level&&(this.level=t.level,this.preassignedLevel=!0),void 0!==t.borderWidth&&(this.borderWidth=t.borderWidth),void 0!==t.borderWidthSelected&&(this.borderWidthSelected=t.borderWidthSelected),void 0!==t.mass&&(this.mass=t.mass),void 0!==t.horizontalAlignLeft&&(this.horizontalAlignLeft=t.horizontalAlignLeft),void 0!==t.verticalAlignTop&&(this.verticalAlignTop=t.verticalAlignTop),void 0!==t.triggerFunction&&(this.triggerFunction=t.triggerFunction),void 0===this.id)throw"Node must have an id";if(void 0!==this.group){var i=this.grouplist.get(this.group);for(var s in i)i.hasOwnProperty(s)&&(this[s]=i[s])}if(void 0!==t.shape&&(this.shape=t.shape),void 0!==t.image&&(this.image=t.image),void 0!==t.radius&&(this.radius=t.radius,this.baseRadiusValue=this.radius),void 0!==t.color&&(this.color=o.parseColor(t.color)),void 0!==t.fontColor&&(this.fontColor=t.fontColor),void 0!==t.fontSize&&(this.fontSize=t.fontSize),void 0!==t.fontFace&&(this.fontFace=t.fontFace),void 0!==this.image&&""!=this.image){if(!this.imagelist)throw"No imagelist provided";this.imageObj=this.imagelist.load(this.image)}switch(this.xFixed=this.xFixed||void 0!==t.x&&!t.allowedToMoveX,this.yFixed=this.yFixed||void 0!==t.y&&!t.allowedToMoveY,this.radiusFixed=this.radiusFixed||void 0!==t.radius,"image"==this.shape&&(this.radiusMin=e.nodes.widthMin,this.radiusMax=e.nodes.widthMax),this.shape){case"database":this.draw=this._drawDatabase,this.resize=this._resizeDatabase;break;case"box":this.draw=this._drawBox,this.resize=this._resizeBox;break;case"circle":this.draw=this._drawCircle,this.resize=this._resizeCircle;break;case"ellipse":this.draw=this._drawEllipse,this.resize=this._resizeEllipse;break;case"image":this.draw=this._drawImage,this.resize=this._resizeImage;break;case"text":this.draw=this._drawText,this.resize=this._resizeText;break;case"dot":this.draw=this._drawDot,this.resize=this._resizeShape;break;case"square":this.draw=this._drawSquare,this.resize=this._resizeShape;break;case"triangle":this.draw=this._drawTriangle,this.resize=this._resizeShape;break;case"triangleDown":this.draw=this._drawTriangleDown,this.resize=this._resizeShape;break;case"star":this.draw=this._drawStar,this.resize=this._resizeShape;break;default:this.draw=this._drawEllipse,this.resize=this._resizeEllipse}this._reset()}},s.prototype.select=function(){this.selected=!0,this._reset()},s.prototype.unselect=function(){this.selected=!1,this._reset()},s.prototype.clearSizeCache=function(){this._reset()},s.prototype._reset=function(){this.width=void 0,this.height=void 0},s.prototype.getTitle=function(){return"function"==typeof this.title?this.title():this.title},s.prototype.distanceToBorder=function(t,e){var i=1;switch(this.width||this.resize(t),this.shape){case"circle":case"dot":return this.radius+i;case"ellipse":var s=this.width/2,o=this.height/2,n=Math.sin(e)*s,r=Math.cos(e)*o;return s*o/Math.sqrt(n*n+r*r);case"box":case"image":case"text":default:return this.width?Math.min(Math.abs(this.width/2/Math.cos(e)),Math.abs(this.height/2/Math.sin(e)))+i:0}},s.prototype._setForce=function(t,e){this.fx=t,this.fy=e},s.prototype._addForce=function(t,e){this.fx+=t,this.fy+=e},s.prototype.discreteStep=function(t){if(!this.xFixed){var e=this.damping*this.vx,i=(this.fx-e)/this.mass;this.vx+=i*t,this.x+=this.vx*t}if(!this.yFixed){var s=this.damping*this.vy,o=(this.fy-s)/this.mass;this.vy+=o*t,this.y+=this.vy*t}},s.prototype.discreteStepLimited=function(t,e){if(this.xFixed)this.fx=0;else{var i=this.damping*this.vx,s=(this.fx-i)/this.mass;this.vx+=s*t,this.vx=Math.abs(this.vx)>e?this.vx>0?e:-e:this.vx,this.x+=this.vx*t}if(this.yFixed)this.fy=0;else{var o=this.damping*this.vy,n=(this.fy-o)/this.mass;this.vy+=n*t,this.vy=Math.abs(this.vy)>e?this.vy>0?e:-e:this.vy,this.y+=this.vy*t}},s.prototype.isFixed=function(){return this.xFixed&&this.yFixed},s.prototype.isMoving=function(t){return Math.abs(this.vx)>t||Math.abs(this.vy)>t},s.prototype.isSelected=function(){return this.selected},s.prototype.getValue=function(){return this.value},s.prototype.getDistance=function(t,e){var i=this.x-t,s=this.y-e;return Math.sqrt(i*i+s*s)},s.prototype.setValueRange=function(t,e){if(!this.radiusFixed&&void 0!==this.value)if(e==t)this.radius=(this.radiusMin+this.radiusMax)/2;else{var i=(this.radiusMax-this.radiusMin)/(e-t);this.radius=(this.value-t)*i+this.radiusMin}this.baseRadiusValue=this.radius},s.prototype.draw=function(){throw"Draw method not initialized for node"},s.prototype.resize=function(){throw"Resize method not initialized for node"},s.prototype.isOverlappingWith=function(t){return this.leftt.left&&this.topt.top},s.prototype._resizeImage=function(){if(!this.width||!this.height){var t,e;if(this.value){this.radius=this.baseRadiusValue;var i=this.imageObj.height/this.imageObj.width;void 0!==i?(t=this.radius||this.imageObj.width,e=this.radius*i||this.imageObj.height):(t=0,e=0)}else t=this.imageObj.width,e=this.imageObj.height;this.width=t,this.height=e,this.growthIndicator=0,this.width>0&&this.height>0&&(this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-t)}},s.prototype._drawImage=function(t){this._resizeImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e;if(0!=this.imageObj.width){if(this.clusterSize>1){var i=this.clusterSize>1?10:0;i*=this.networkScaleInv,i=Math.min(.2*this.width,i),t.globalAlpha=.5,t.drawImage(this.imageObj,this.left-i,this.top-i,this.width+2*i,this.height+2*i)}t.globalAlpha=1,t.drawImage(this.imageObj,this.left,this.top,this.width,this.height),e=this.y+this.height/2}else e=this.y;this._label(t,this.label,this.x,e,void 0,"top")},s.prototype._resizeBox=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawBox=function(t){this._resizeBox(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.borderWidth,s=this.borderWidthSelected||2*this.borderWidth;t.strokeStyle=this.selected?this.color.highlight.border:this.hover?this.color.hover.border:this.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.roundRect(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth,this.radius),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.color.highlight.background:this.color.background,t.roundRect(this.left,this.top,this.width,this.height,this.radius),t.fill(),t.stroke(),this._label(t,this.label,this.x,this.y)},s.prototype._resizeDatabase=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=i.width+2*e;this.width=s,this.height=s,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-s}},s.prototype._drawDatabase=function(t){this._resizeDatabase(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.borderWidth,s=this.borderWidthSelected||2*this.borderWidth;t.strokeStyle=this.selected?this.color.highlight.border:this.hover?this.color.hover.border:this.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.database(this.x-this.width/2-2*t.lineWidth,this.y-.5*this.height-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.color.highlight.background:this.hover?this.color.hover.background:this.color.background,t.database(this.x-this.width/2,this.y-.5*this.height,this.width,this.height),t.fill(),t.stroke(),this._label(t,this.label,this.x,this.y)},s.prototype._resizeCircle=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=Math.max(i.width,i.height)+2*e;this.radius=s/2,this.width=s,this.height=s,this.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.radius-.5*s}},s.prototype._drawCircle=function(t){this._resizeCircle(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.borderWidth,s=this.borderWidthSelected||2*this.borderWidth;t.strokeStyle=this.selected?this.color.highlight.border:this.hover?this.color.hover.border:this.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.circle(this.x,this.y,this.radius+2*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.color.highlight.background:this.hover?this.color.hover.background:this.color.background,t.circle(this.x,this.y,this.radius),t.fill(),t.stroke(),this._label(t,this.label,this.x,this.y)},s.prototype._resizeEllipse=function(t){if(!this.width){var e=this.getTextSize(t);this.width=1.5*e.width,this.height=2*e.height,this.width1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.ellipse(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.color.highlight.background:this.hover?this.color.hover.background:this.color.background,t.ellipse(this.left,this.top,this.width,this.height),t.fill(),t.stroke(),this._label(t,this.label,this.x,this.y)},s.prototype._drawDot=function(t){this._drawShape(t,"circle")},s.prototype._drawTriangle=function(t){this._drawShape(t,"triangle")},s.prototype._drawTriangleDown=function(t){this._drawShape(t,"triangleDown")},s.prototype._drawSquare=function(t){this._drawShape(t,"square")},s.prototype._drawStar=function(t){this._drawShape(t,"star")},s.prototype._resizeShape=function(){if(!this.width){this.radius=this.baseRadiusValue;var t=2*this.radius;this.width=t,this.height=t,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-t}},s.prototype._drawShape=function(t,e){this._resizeShape(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var i=2.5,s=this.borderWidth,o=this.borderWidthSelected||2*this.borderWidth,n=2;switch(e){case"dot":n=2;break;case"square":n=2;break;case"triangle":n=3;break;case"triangleDown":n=3;break;case"star":n=4}t.strokeStyle=this.selected?this.color.highlight.border:this.hover?this.color.hover.border:this.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t[e](this.x,this.y,this.radius+n*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.color.highlight.background:this.hover?this.color.hover.background:this.color.background,t[e](this.x,this.y,this.radius),t.fill(),t.stroke(),this.label&&this._label(t,this.label,this.x,this.y+this.height/2,void 0,"top",!0)},s.prototype._resizeText=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawText=function(t){this._resizeText(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._label(t,this.label,this.x,this.y)},s.prototype._label=function(t,e,i,s,o,n,r){if(e&&this.fontSize*this.networkScale>this.fontDrawThreshold){t.font=(this.selected?"bold ":"")+this.fontSize+"px "+this.fontFace,t.fillStyle=this.fontColor||"black",t.textAlign=o||"center",t.textBaseline=n||"middle";var a=e.split("\n"),h=a.length,d=this.fontSize+4,l=s+(1-h)/2*d;1==r&&(l=s+(1-h)/(2*d));for(var c=0;h>c;c++)t.fillText(a[c],i,l),l+=d}},s.prototype.getTextSize=function(t){if(void 0!==this.label){t.font=(this.selected?"bold ":"")+this.fontSize+"px "+this.fontFace;for(var e=this.label.split("\n"),i=(this.fontSize+4)*e.length,s=0,o=0,n=e.length;n>o;o++)s=Math.max(s,t.measureText(e[o]).width);return{width:s,height:i}}return{width:0,height:0}},s.prototype.inArea=function(){return void 0!==this.width?this.x+this.width*this.networkScaleInv>=this.canvasTopLeft.x&&this.x-this.width*this.networkScaleInv=this.canvasTopLeft.y&&this.y-this.height*this.networkScaleInv=this.canvasTopLeft.x&&this.x=this.canvasTopLeft.y&&this.ys&&(n=s-e-this.padding),no&&(r=o-i-this.padding),ri;i++)if(e.id===r.nodes[i].id){o=r.nodes[i];break}for(o||(o={id:e.id},t.node&&(o.attr=a(o.attr,t.node))),i=n.length-1;i>=0;i--){var h=n[i];h.nodes||(h.nodes=[]),-1==h.nodes.indexOf(o)&&h.nodes.push(o)}e.attr&&(o.attr=a(o.attr,e.attr))}function l(t,e){if(t.edges||(t.edges=[]),t.edges.push(e),t.edge){var i=a({},t.edge);e.attr=a(i,e.attr)}}function c(t,e,i,s,o){var n={from:e,to:i,type:s};return t.edge&&(n.attr=a({},t.edge)),n.attr=a(n.attr||{},o),n}function p(){for(O=M.NULL,N="";" "==L||" "==L||"\n"==L||"\r"==L;)o();do{var t=!1;if("#"==L){for(var e=T-1;" "==D.charAt(e)||" "==D.charAt(e);)e--;if("\n"==D.charAt(e)||""==D.charAt(e)){for(;""!=L&&"\n"!=L;)o();t=!0}}if("/"==L&&"/"==n()){for(;""!=L&&"\n"!=L;)o();t=!0}if("/"==L&&"*"==n()){for(;""!=L;){if("*"==L&&"/"==n()){o(),o();break}o()}t=!0}for(;" "==L||" "==L||"\n"==L||"\r"==L;)o()}while(t);if(""==L)return void(O=M.DELIMITER);var i=L+n();if(E[i])return O=M.DELIMITER,N=i,o(),void o();if(E[L])return O=M.DELIMITER,N=L,void o();if(r(L)||"-"==L){for(N+=L,o();r(L);)N+=L,o();return"false"==N?N=!1:"true"==N?N=!0:isNaN(Number(N))||(N=Number(N)),void(O=M.IDENTIFIER)}if('"'==L){for(o();""!=L&&('"'!=L||'"'==L&&'"'==n());)N+=L,'"'==L&&o(),o();if('"'!=L)throw w('End of string " expected');return o(),void(O=M.IDENTIFIER)}for(O=M.UNKNOWN;""!=L;)N+=L,o();throw new SyntaxError('Syntax error in part "'+_(N,30)+'"')}function u(){var t={};if(s(),p(),"strict"==N&&(t.strict=!0,p()),("graph"==N||"digraph"==N)&&(t.type=N,p()),O==M.IDENTIFIER&&(t.id=N,p()),"{"!=N)throw w("Angle bracket { expected");if(p(),m(t),"}"!=N)throw w("Angle bracket } expected");if(p(),""!==N)throw w("End of file expected");return p(),delete t.node,delete t.edge,delete t.graph,t}function m(t){for(;""!==N&&"}"!=N;)g(t),";"==N&&p()}function g(t){var e=f(t);if(e)return void b(t,e);var i=v(t);if(!i){if(O!=M.IDENTIFIER)throw w("Identifier expected");var s=N;if(p(),"="==N){if(p(),O!=M.IDENTIFIER)throw w("Identifier expected");t[s]=N,p()}else y(t,s)}}function f(t){var e=null;if("subgraph"==N&&(e={},e.type="subgraph",p(),O==M.IDENTIFIER&&(e.id=N,p())),"{"==N){if(p(),e||(e={}),e.parent=t,e.node=t.node,e.edge=t.edge,e.graph=t.graph,m(e),"}"!=N)throw w("Angle bracket } expected");p(),delete e.node,delete e.edge,delete e.graph,delete e.parent,t.subgraphs||(t.subgraphs=[]),t.subgraphs.push(e)}return e}function v(t){return"node"==N?(p(),t.node=x(),"node"):"edge"==N?(p(),t.edge=x(),"edge"):"graph"==N?(p(),t.graph=x(),"graph"):null}function y(t,e){var i={id:e},s=x();s&&(i.attr=s),d(t,i),b(t,e)}function b(t,e){for(;"->"==N||"--"==N;){var i,s=N;p();var o=f(t);if(o)i=o;else{if(O!=M.IDENTIFIER)throw w("Identifier or subgraph expected");i=N,d(t,{id:i}),p()}var n=x(),r=c(t,e,i,s,n);l(t,r),e=i}}function x(){for(var t=null;"["==N;){for(p(),t={};""!==N&&"]"!=N;){if(O!=M.IDENTIFIER)throw w("Attribute name expected");var e=N;if(p(),"="!=N)throw w("Equal sign = expected");if(p(),O!=M.IDENTIFIER)throw w("Attribute value expected");var i=N;h(t,e,i),p(),","==N&&p()}if("]"!=N)throw w("Bracket ] expected");p()}return t}function w(t){return new SyntaxError(t+', got "'+_(N,30)+'" (char '+T+")")}function _(t,e){return t.length<=e?t:t.substr(0,27)+"..."}function S(t,e,i){t instanceof Array?t.forEach(function(t){e instanceof Array?e.forEach(function(e){i(t,e)}):i(t,e)}):e instanceof Array?e.forEach(function(e){i(t,e)}):i(t,e)}function C(t){function e(t){var e={from:t.from,to:t.to};return a(e,t.attr),e.style="->"==t.type?"arrow":"line",e}var s=i(t),o={nodes:[],edges:[],options:{}};return s.nodes&&s.nodes.forEach(function(t){var e={id:t.id,label:String(t.label||t.id)};a(e,t.attr),e.image&&(e.shape="image"),o.nodes.push(e)}),s.edges&&s.edges.forEach(function(t){var i,s;i=t.from instanceof Object?t.from.nodes:{id:t.from},s=t.to instanceof Object?t.to.nodes:{id:t.to},t.from instanceof Object&&t.from.edges&&t.from.edges.forEach(function(t){var i=e(t);o.edges.push(i)}),S(i,s,function(i,s){var n=c(o,i.id,s.id,t.type,t.attr),r=e(n);o.edges.push(r)}),t.to instanceof Object&&t.to.edges&&t.to.edges.forEach(function(t){var i=e(t);o.edges.push(i)})}),s.attr&&(o.options=s.attr),o}var M={NULL:0,DELIMITER:1,IDENTIFIER:2,UNKNOWN:3},E={"{":!0,"}":!0,"[":!0,"]":!0,";":!0,"=":!0,",":!0,"->":!0,"--":!0},D="",T=0,L="",N="",O=M.NULL,k=/[a-zA-Z_0-9.:#]/;e.parseDOT=i,e.DOTToGraph=C},function(t,e,i){var s=i(42);e.fakeGesture=function(t,e){var i=null,o=s.event.getTouchList(e,i),n=s.event.collectEventData(this,i,o,e);return isNaN(n.center.pageX)&&(n.center.pageX=e.pageX),isNaN(n.center.pageY)&&(n.center.pageY=e.pageY),n}},function(){"undefined"!=typeof CanvasRenderingContext2D&&(CanvasRenderingContext2D.prototype.circle=function(t,e,i){this.beginPath(),this.arc(t,e,i,0,2*Math.PI,!1) -},CanvasRenderingContext2D.prototype.square=function(t,e,i){this.beginPath(),this.rect(t-i,e-i,2*i,2*i)},CanvasRenderingContext2D.prototype.triangle=function(t,e,i){this.beginPath();var s=2*i,o=s/2,n=Math.sqrt(3)/6*s,r=Math.sqrt(s*s-o*o);this.moveTo(t,e-(r-n)),this.lineTo(t+o,e+n),this.lineTo(t-o,e+n),this.lineTo(t,e-(r-n)),this.closePath()},CanvasRenderingContext2D.prototype.triangleDown=function(t,e,i){this.beginPath();var s=2*i,o=s/2,n=Math.sqrt(3)/6*s,r=Math.sqrt(s*s-o*o);this.moveTo(t,e+(r-n)),this.lineTo(t+o,e-n),this.lineTo(t-o,e-n),this.lineTo(t,e+(r-n)),this.closePath()},CanvasRenderingContext2D.prototype.star=function(t,e,i){this.beginPath();for(var s=0;10>s;s++){var o=s%2===0?1.3*i:.5*i;this.lineTo(t+o*Math.sin(2*s*Math.PI/10),e-o*Math.cos(2*s*Math.PI/10))}this.closePath()},CanvasRenderingContext2D.prototype.roundRect=function(t,e,i,s,o){var n=Math.PI/180;0>i-2*o&&(o=i/2),0>s-2*o&&(o=s/2),this.beginPath(),this.moveTo(t+o,e),this.lineTo(t+i-o,e),this.arc(t+i-o,e+o,o,270*n,360*n,!1),this.lineTo(t+i,e+s-o),this.arc(t+i-o,e+s-o,o,0,90*n,!1),this.lineTo(t+o,e+s),this.arc(t+o,e+s-o,o,90*n,180*n,!1),this.lineTo(t,e+o),this.arc(t+o,e+o,o,180*n,270*n,!1)},CanvasRenderingContext2D.prototype.ellipse=function(t,e,i,s){var o=.5522848,n=i/2*o,r=s/2*o,a=t+i,h=e+s,d=t+i/2,l=e+s/2;this.beginPath(),this.moveTo(t,l),this.bezierCurveTo(t,l-r,d-n,e,d,e),this.bezierCurveTo(d+n,e,a,l-r,a,l),this.bezierCurveTo(a,l+r,d+n,h,d,h),this.bezierCurveTo(d-n,h,t,l+r,t,l)},CanvasRenderingContext2D.prototype.database=function(t,e,i,s){var o=1/3,n=i,r=s*o,a=.5522848,h=n/2*a,d=r/2*a,l=t+n,c=e+r,p=t+n/2,u=e+r/2,m=e+(s-r/2),g=e+s;this.beginPath(),this.moveTo(l,u),this.bezierCurveTo(l,u+d,p+h,c,p,c),this.bezierCurveTo(p-h,c,t,u+d,t,u),this.bezierCurveTo(t,u-d,p-h,e,p,e),this.bezierCurveTo(p+h,e,l,u-d,l,u),this.lineTo(l,m),this.bezierCurveTo(l,m+d,p+h,g,p,g),this.bezierCurveTo(p-h,g,t,m+d,t,m),this.lineTo(t,u)},CanvasRenderingContext2D.prototype.arrow=function(t,e,i,s){var o=t-s*Math.cos(i),n=e-s*Math.sin(i),r=t-.9*s*Math.cos(i),a=e-.9*s*Math.sin(i),h=o+s/3*Math.cos(i+.5*Math.PI),d=n+s/3*Math.sin(i+.5*Math.PI),l=o+s/3*Math.cos(i-.5*Math.PI),c=n+s/3*Math.sin(i-.5*Math.PI);this.beginPath(),this.moveTo(t,e),this.lineTo(h,d),this.lineTo(r,a),this.lineTo(l,c),this.closePath()},CanvasRenderingContext2D.prototype.dashedLine=function(t,e,i,s,o){o||(o=[10,5]),0==p&&(p=.001);var n=o.length;this.moveTo(t,e);for(var r=i-t,a=s-e,h=a/r,d=Math.sqrt(r*r+a*a),l=0,c=!0;d>=.1;){var p=o[l++%n];p>d&&(p=d);var u=Math.sqrt(p*p/(1+h*h));0>r&&(u=-u),t+=u,e+=h*u,this[c?"lineTo":"moveTo"](t,e),d-=p,c=!c}})},function(t,e,i){t.exports="undefined"!=typeof window&&window.moment||i(44)},function(t,e,i){t.exports="undefined"!=typeof window?window.Hammer||i(45):function(){throw Error("hammer.js is only available in a browser, not in node.js.")}},function(t,e,i){var s=i(54),o=i(48),n=i(49),r=i(50),a=i(51),h=i(52),d=i(53);e._loadMixin=function(t){for(var e in t)t.hasOwnProperty(e)&&(this[e]=t[e])},e._clearMixin=function(t){for(var e in t)t.hasOwnProperty(e)&&(this[e]=void 0)},e._loadPhysicsSystem=function(){this._loadMixin(s),this._loadSelectedForceSolver(),1==this.constants.configurePhysics&&this._loadPhysicsConfiguration()},e._loadClusterSystem=function(){this.clusterSession=0,this.hubThreshold=5,this._loadMixin(o)},e._loadSectorSystem=function(){this.sectors={},this.activeSector=["default"],this.sectors.active={},this.sectors.active["default"]={nodes:{},edges:{},nodeIndices:[],formationScale:1,drawingNode:void 0},this.sectors.frozen={},this.sectors.support={nodes:{},edges:{},nodeIndices:[],formationScale:1,drawingNode:void 0},this.nodeIndices=this.sectors.active["default"].nodeIndices,this._loadMixin(n)},e._loadSelectionSystem=function(){this.selectionObj={nodes:{},edges:{}},this._loadMixin(r)},e._loadManipulationSystem=function(){this.blockConnectingEdgeSelection=!1,this.forceAppendSelection=!1,1==this.constants.dataManipulation.enabled?(void 0===this.manipulationDiv&&(this.manipulationDiv=document.createElement("div"),this.manipulationDiv.className="network-manipulationDiv",this.manipulationDiv.id="network-manipulationDiv",this.manipulationDiv.style.display=1==this.editMode?"block":"none",this.containerElement.insertBefore(this.manipulationDiv,this.frame)),void 0===this.editModeDiv&&(this.editModeDiv=document.createElement("div"),this.editModeDiv.className="network-manipulation-editMode",this.editModeDiv.id="network-manipulation-editMode",this.editModeDiv.style.display=1==this.editMode?"none":"block",this.containerElement.insertBefore(this.editModeDiv,this.frame)),void 0===this.closeDiv&&(this.closeDiv=document.createElement("div"),this.closeDiv.className="network-manipulation-closeDiv",this.closeDiv.id="network-manipulation-closeDiv",this.closeDiv.style.display=this.manipulationDiv.style.display,this.containerElement.insertBefore(this.closeDiv,this.frame)),this._loadMixin(a),this._createManipulatorBar()):void 0!==this.manipulationDiv&&(this._createManipulatorBar(),this.containerElement.removeChild(this.manipulationDiv),this.containerElement.removeChild(this.editModeDiv),this.containerElement.removeChild(this.closeDiv),this.manipulationDiv=void 0,this.editModeDiv=void 0,this.closeDiv=void 0,this._clearMixin(a))},e._loadNavigationControls=function(){this._loadMixin(h),this._cleanNavigation(),1==this.constants.navigation.enabled&&this._loadNavigationElements()},e._loadHierarchySystem=function(){this._loadMixin(d)}},function(t){t.exports=__WEBPACK_EXTERNAL_MODULE_44__},function(t){t.exports=__WEBPACK_EXTERNAL_MODULE_45__},function(t){function e(t){return t?i(t):void 0}function i(t){for(var i in e.prototype)t[i]=e.prototype[i];return t}t.exports=e,e.prototype.on=e.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks[t]=this._callbacks[t]||[]).push(e),this},e.prototype.once=function(t,e){function i(){s.off(t,i),e.apply(this,arguments)}var s=this;return this._callbacks=this._callbacks||{},i.fn=e,this.on(t,i),this},e.prototype.off=e.prototype.removeListener=e.prototype.removeAllListeners=e.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var i=this._callbacks[t];if(!i)return this;if(1==arguments.length)return delete this._callbacks[t],this;for(var s,o=0;os;++s)i[s].apply(this,e)}return this},e.prototype.listeners=function(t){return this._callbacks=this._callbacks||{},this._callbacks[t]||[]},e.prototype.hasListeners=function(t){return!!this.listeners(t).length}},function(t){function e(t,e,i){return t.addEventListener?t.addEventListener(e,i,!1):void t.attachEvent("on"+e,i)}function i(t){return"keypress"==t.type?String.fromCharCode(t.which):x[t.which]?x[t.which]:w[t.which]?w[t.which]:String.fromCharCode(t.which).toLowerCase()}function s(t){var e=t.target||t.srcElement,i=e.tagName;return(" "+e.className+" ").indexOf(" mousetrap ")>-1?!1:"INPUT"==i||"SELECT"==i||"TEXTAREA"==i||e.contentEditable&&"true"==e.contentEditable}function o(t,e){return t.sort().join(",")===e.sort().join(",")}function n(t){t=t||{};var e,i=!1;for(e in E)t[e]?i=!0:E[e]=0;i||(T=!1)}function r(t,e,i,s,n){var r,a,h=[];if(!C[t])return[];for("keyup"==i&&c(t)&&(e=[t]),r=0;r95&&112>t||x.hasOwnProperty(t)&&(y[x[t]]=t)}return y}function m(t,e,i){return i||(i=u()[t]?"keydown":"keypress"),"keypress"==i&&e.length&&(i="keydown"),i}function g(t,e,s,o){E[t]=0,o||(o=m(e[0],[]));var r,a=function(){T=o,++E[t],p()},d=function(t){h(s,t),"keyup"!==o&&(D=i(t)),setTimeout(n,10)};for(r=0;r1)return g(t,d,e,i);for(h="+"===t?["+"]:t.split("+"),n=0;n":".","?":"/","|":"\\"},S={option:"alt",command:"meta","return":"enter",escape:"esc"},C={},M={},E={},D=!1,T=!1,L=1;20>L;++L)x[111+L]="f"+L;for(L=0;9>=L;++L)x[L+96]=L;e(document,"keypress",l),e(document,"keydown",l),e(document,"keyup",l);var N={bind:function(t,e,i){return v(t instanceof Array?t:[t],e,i),M[t+":"+i]=e,this},unbind:function(t,e){return M[t+":"+e]&&(delete M[t+":"+e],this.bind(t,function(){},e)),this},trigger:function(t,e){return M[t+":"+e](),this},reset:function(){return C={},M={},this}};t.exports=N},function(t,e){e.startWithClustering=function(){this.clusterToFit(this.constants.clustering.initialMaxNodes,!0),this.updateLabels(),this.stabilize&&this._stabilize(),this.start()},e.clusterToFit=function(t,e){for(var i=this.nodeIndices.length,s=50,o=0;i>t&&s>o;)o%3==0?(this.forceAggregateHubs(!0),this.normalizeClusterLevels()):this.increaseClusterLevel(),i=this.nodeIndices.length,o+=1;o>0&&1==e&&this.repositionNodes(),this._updateCalculationNodes()},e.openCluster=function(t){var e=this.moving;if(t.clusterSize>this.constants.clustering.sectorThreshold&&this._nodeInActiveArea(t)&&("default"!=this._sector()||1!=this.nodeIndices.length)){this._addSector(t);for(var i=0;this.nodeIndices.lengthi;)this.decreaseClusterLevel(),i+=1}else this._expandClusterNode(t,!1,!0),this._updateNodeIndexList(),this._updateDynamicEdges(),this._updateCalculationNodes(),this.updateLabels();this.moving!=e&&this.start()},e.updateClustersDefault=function(){1==this.constants.clustering.enabled&&this.updateClusters(0,!1,!1)},e.increaseClusterLevel=function(){this.updateClusters(-1,!1,!0)},e.decreaseClusterLevel=function(){this.updateClusters(1,!1,!0)},e.updateClusters=function(t,e,i,s){var o=this.moving,n=this.nodeIndices.length;this.previousScale>this.scale&&0==t&&this._collapseSector(),this.previousScale>this.scale||-1==t?this._formClusters(i):(this.previousScalethis.scale||-1==t)&&(this._aggregateHubs(i),this._updateNodeIndexList()),(this.previousScale>this.scale||-1==t)&&(this.handleChains(),this._updateNodeIndexList()),this.previousScale=this.scale,this._updateDynamicEdges(),this.updateLabels(),this.nodeIndices.lengththis.constants.clustering.chainThreshold&&this._reduceAmountOfChains(1-this.constants.clustering.chainThreshold/t)},e._aggregateHubs=function(t){this._getHubSize(),this._formClustersByHub(t,!1)},e.forceAggregateHubs=function(t){var e=this.moving,i=this.nodeIndices.length;this._aggregateHubs(!0),this._updateNodeIndexList(),this._updateDynamicEdges(),this.updateLabels(),this.nodeIndices.length!=i&&(this.clusterSession+=1),(0==t||void 0===t)&&this.moving!=e&&this.start()},e._openClustersBySize=function(){for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];1==e.inView()&&(e.width*this.scale>this.constants.clustering.screenSizeThreshold*this.frame.canvas.clientWidth||e.height*this.scale>this.constants.clustering.screenSizeThreshold*this.frame.canvas.clientHeight)&&this.openCluster(e)}},e._openClusters=function(t,e){for(var i=0;i1&&(t.clusterSizei)){var r=n.from,a=n.to;n.to.mass>n.from.mass&&(r=n.to,a=n.from),1==a.dynamicEdgesLength?this._addToCluster(r,a,!1):1==r.dynamicEdgesLength&&this._addToCluster(a,r,!1)}}},e._forceClustersByZoom=function(){for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];if(1==e.dynamicEdgesLength&&0!=e.dynamicEdges.length){var i=e.dynamicEdges[0],s=i.toId==e.id?this.nodes[i.fromId]:this.nodes[i.toId];e.id!=s.id&&(s.mass>e.mass?this._addToCluster(s,e,!0):this._addToCluster(e,s,!0))}}},e._clusterToSmallestNeighbour=function(t){for(var e=-1,i=null,s=0;so.clusterSessions.length&&(e=o.clusterSessions.length,i=o)}null!=o&&void 0!==this.nodes[o.id]&&this._addToCluster(o,t,!0)},e._formClustersByHub=function(t,e){for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&this._formClusterFromHub(this.nodes[i],t,e)},e._formClusterFromHub=function(t,e,i,s){if(void 0===s&&(s=0),t.dynamicEdgesLength>=this.hubThreshold&&0==i||t.dynamicEdgesLength==this.hubThreshold&&1==i){for(var o,n,r,a=this.constants.clustering.clusterEdgeThreshold/this.scale,h=!1,d=[],l=t.dynamicEdges.length,c=0;l>c;c++)d.push(t.dynamicEdges[c].id);if(0==e)for(h=!1,c=0;l>c;c++){var p=this.edges[d[c]];if(void 0!==p&&p.connected&&p.toId!=p.fromId&&(o=p.to.x-p.from.x,n=p.to.y-p.from.y,r=Math.sqrt(o*o+n*n),a>r)){h=!0;break}}if(!e&&h||e)for(c=0;l>c;c++)if(p=this.edges[d[c]],void 0!==p){var u=this.nodes[p.fromId==t.id?p.toId:p.fromId];u.dynamicEdges.length<=this.hubThreshold+s&&u.id!=t.id&&this._addToCluster(t,u,e)}}},e._addToCluster=function(t,e,i){t.containedNodes[e.id]=e;for(var s=0;s1)for(var s=0;s1&&(e.label="[".concat(String(e.clusterSize),"]"))}for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(e=this.nodes[t],1==e.clusterSize&&(e.label=void 0!==e.originalLabel?e.originalLabel:String(e.id)))},e.normalizeClusterLevels=function(){var t,e=0,i=1e9,s=0;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(s=this.nodes[t].clusterSessions.length,s>e&&(e=s),i>s&&(i=s));if(e-i>this.constants.clustering.clusterLevelDifference){var o=this.nodeIndices.length,n=e-this.constants.clustering.clusterLevelDifference;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodes[t].clusterSessions.lengths&&(s=n.dynamicEdgesLength),t+=n.dynamicEdgesLength,e+=Math.pow(n.dynamicEdgesLength,2),i+=1}t/=i,e/=i;var r=e-Math.pow(t,2),a=Math.sqrt(r);this.hubThreshold=Math.floor(t+2*a),this.hubThreshold>s&&(this.hubThreshold=s)},e._reduceAmountOfChains=function(t){this.hubThreshold=2;var e=Math.floor(this.nodeIndices.length*t);for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&2==this.nodes[i].dynamicEdgesLength&&this.nodes[i].dynamicEdges.length>=2&&e>0&&(this._formClusterFromHub(this.nodes[i],!0,!0,1),e-=1)},e._getChainFraction=function(){var t=0,e=0;for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&(2==this.nodes[i].dynamicEdgesLength&&this.nodes[i].dynamicEdges.length>=2&&(t+=1),e+=1);return t/e}},function(t,e,i){var s=i(1);e._putDataInSector=function(){this.sectors.active[this._sector()].nodes=this.nodes,this.sectors.active[this._sector()].edges=this.edges,this.sectors.active[this._sector()].nodeIndices=this.nodeIndices},e._switchToSector=function(t,e){void 0===e||"active"==e?this._switchToActiveSector(t):this._switchToFrozenSector(t)},e._switchToActiveSector=function(t){this.nodeIndices=this.sectors.active[t].nodeIndices,this.nodes=this.sectors.active[t].nodes,this.edges=this.sectors.active[t].edges},e._switchToSupportSector=function(){this.nodeIndices=this.sectors.support.nodeIndices,this.nodes=this.sectors.support.nodes,this.edges=this.sectors.support.edges},e._switchToFrozenSector=function(t){this.nodeIndices=this.sectors.frozen[t].nodeIndices,this.nodes=this.sectors.frozen[t].nodes,this.edges=this.sectors.frozen[t].edges},e._loadLatestSector=function(){this._switchToSector(this._sector())},e._sector=function(){return this.activeSector[this.activeSector.length-1]},e._previousSector=function(){if(this.activeSector.length>1)return this.activeSector[this.activeSector.length-2];throw new TypeError("there are not enough sectors in the this.activeSector array.")},e._setActiveSector=function(t){this.activeSector.push(t)},e._forgetLastSector=function(){this.activeSector.pop()},e._createNewSector=function(t){this.sectors.active[t]={nodes:{},edges:{},nodeIndices:[],formationScale:this.scale,drawingNode:void 0},this.sectors.active[t].drawingNode=new Node({id:t,color:{background:"#eaefef",border:"495c5e"}},{},{},this.constants),this.sectors.active[t].drawingNode.clusterSize=2},e._deleteActiveSector=function(t){delete this.sectors.active[t]},e._deleteFrozenSector=function(t){delete this.sectors.frozen[t]},e._freezeSector=function(t){this.sectors.frozen[t]=this.sectors.active[t],this._deleteActiveSector(t)},e._activateSector=function(t){this.sectors.active[t]=this.sectors.frozen[t],this._deleteFrozenSector(t)},e._mergeThisWithFrozen=function(t){for(var e in this.nodes)this.nodes.hasOwnProperty(e)&&(this.sectors.frozen[t].nodes[e]=this.nodes[e]);for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.sectors.frozen[t].edges[i]=this.edges[i]);for(var s=0;s1?this[t](s[0],s[1]):this[t](e)}this._loadLatestSector()},e._doInSupportSector=function(t,e){if(void 0===e)this._switchToSupportSector(),this[t]();else{this._switchToSupportSector();var i=Array.prototype.splice.call(arguments,1);i.length>1?this[t](i[0],i[1]):this[t](e)}this._loadLatestSector()},e._doInAllFrozenSectors=function(t,e){if(void 0===e)for(var i in this.sectors.frozen)this.sectors.frozen.hasOwnProperty(i)&&(this._switchToFrozenSector(i),this[t]());else for(var i in this.sectors.frozen)if(this.sectors.frozen.hasOwnProperty(i)){this._switchToFrozenSector(i);var s=Array.prototype.splice.call(arguments,1);s.length>1?this[t](s[0],s[1]):this[t](e)}this._loadLatestSector()},e._doInAllSectors=function(t,e){var i=Array.prototype.splice.call(arguments,1);void 0===e?(this._doInAllActiveSectors(t),this._doInAllFrozenSectors(t)):i.length>1?(this._doInAllActiveSectors(t,i[0],i[1]),this._doInAllFrozenSectors(t,i[0],i[1])):(this._doInAllActiveSectors(t,e),this._doInAllFrozenSectors(t,e))},e._clearNodeIndexList=function(){var t=this._sector();this.sectors.active[t].nodeIndices=[],this.nodeIndices=this.sectors.active[t].nodeIndices},e._drawSectorNodes=function(t,e){var i,s=1e9,o=-1e9,n=1e9,r=-1e9;for(var a in this.sectors[e])if(this.sectors[e].hasOwnProperty(a)&&void 0!==this.sectors[e][a].drawingNode){this._switchToSector(a,e),s=1e9,o=-1e9,n=1e9,r=-1e9;for(var h in this.nodes)this.nodes.hasOwnProperty(h)&&(i=this.nodes[h],i.resize(t),n>i.x-.5*i.width&&(n=i.x-.5*i.width),ri.y-.5*i.height&&(s=i.y-.5*i.height),o0?this.nodes[i[i.length-1]]:null},e._getEdgesOverlappingWith=function(t,e){var i=this.edges;for(var s in i)i.hasOwnProperty(s)&&i[s].isOverlappingWith(t)&&e.push(s)},e._getAllEdgesOverlappingWith=function(t){var e=[];return this._doInAllActiveSectors("_getEdgesOverlappingWith",t,e),e},e._getEdgeAt=function(t){var e=this._pointerToPositionObject(t),i=this._getAllEdgesOverlappingWith(e);return i.length>0?this.edges[i[i.length-1]]:null},e._addToSelection=function(t){t instanceof s?this.selectionObj.nodes[t.id]=t:this.selectionObj.edges[t.id]=t},e._addToHover=function(t){t instanceof s?this.hoverObj.nodes[t.id]=t:this.hoverObj.edges[t.id]=t},e._removeFromSelection=function(t){t instanceof s?delete this.selectionObj.nodes[t.id]:delete this.selectionObj.edges[t.id]},e._unselectAll=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].unselect();for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&this.selectionObj.edges[i].unselect();this.selectionObj={nodes:{},edges:{}},0==t&&this.emit("select",this.getSelection())},e._unselectClusters=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].clusterSize>1&&(this.selectionObj.nodes[e].unselect(),this._removeFromSelection(this.selectionObj.nodes[e]));0==t&&this.emit("select",this.getSelection())},e._getSelectedNodeCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedNode=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return this.selectionObj.nodes[t];return null},e._getSelectedEdge=function(){for(var t in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(t))return this.selectionObj.edges[t];return null},e._getSelectedEdgeCount=function(){var t=0;for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedObjectCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&(t+=1);return t},e._selectionIsEmpty=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return!1;for(var e in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(e))return!1;return!0},e._clusterInSelection=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t)&&this.selectionObj.nodes[t].clusterSize>1)return!0;return!1},e._selectConnectedEdges=function(t){for(var e=0;ew.height?(y=w.x+.5*w.width,b=w.y-_,x={x:y,y:w.y,angle:.9*Math.PI}):(y=w.x+_,b=w.y-.5*w.height,x={x:w.x,y:b,angle:.6*Math.PI}),t.beginPath(),t.arc(y,b,_,0,2*Math.PI,!1),t.stroke();var i=(10+5*this.width)*this.arrowScaleFactor;t.arrow(x.x,x.y,x.angle,i),t.fill(),t.stroke(),this.label&&(g=this._pointOnCircle(y,b,_,.5),this._label(t,this.label,g.x,g.y))}},s.prototype._getDistanceToEdge=function(t,e,i,s,o,n){if(this.from!=this.to){if(1==this.smoothCurves.enabled){var r,a;if(1==this.smoothCurves.enabled&&1==this.smoothCurves.dynamic)r=this.via.x,a=this.via.y;else{var h=this._getViaCoordinates();r=h.x,a=h.y}var d,l,c,p,u,m,g,f=1e9;for(l=0;10>l;l++)c=.1*l,p=Math.pow(1-c,2)*t+2*c*(1-c)*r+Math.pow(c,2)*i,u=Math.pow(1-c,2)*e+2*c*(1-c)*a+Math.pow(c,2)*s,l>0&&(d=this._getDistanceToLine(m,g,p,u,o,n),f=f>d?d:f),m=p,g=u;return f}return this._getDistanceToLine(t,e,i,s,o,n)}var p,u,v,y,b=this.length/4,x=this.from;return x.width||x.resize(ctx),x.width>x.height?(p=x.x+x.width/2,u=x.y-b):(p=x.x+b,u=x.y-x.height/2),v=p-o,y=u-n,Math.abs(Math.sqrt(v*v+y*y)-b)},s.prototype._getDistanceToLine=function(t,e,i,s,o,n){var r=i-t,a=s-e,h=r*r+a*a,d=((o-t)*r+(n-e)*a)/h;d>1?d=1:0>d&&(d=0);var l=t+d*r,c=e+d*a,p=l-o,u=c-n;return Math.sqrt(p*p+u*u)},s.prototype.setScale=function(t){this.networkScaleInv=1/t},s.prototype.select=function(){this.selected=!0},s.prototype.unselect=function(){this.selected=!1},s.prototype.positionBezierNode=function(){null!==this.via&&(this.via.x=.5*(this.from.x+this.to.x),this.via.y=.5*(this.from.y+this.to.y))},s.prototype._drawControlNodes=function(t){if(1==this.controlNodesEnabled){if(null===this.controlNodes.from&&null===this.controlNodes.to){var e="edgeIdFrom:".concat(this.id),i="edgeIdTo:".concat(this.id),s={nodes:{group:"",radius:8},physics:{damping:0},clustering:{maxNodeSizeIncrements:0,nodeScaling:{width:0,height:0,radius:0}}};this.controlNodes.from=new n({id:e,shape:"dot",color:{background:"#ff4e00",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s),this.controlNodes.to=new n({id:i,shape:"dot",color:{background:"#ff4e00",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s)}0==this.controlNodes.from.selected&&0==this.controlNodes.to.selected&&(this.controlNodes.positions=this.getControlNodePositions(t),this.controlNodes.from.x=this.controlNodes.positions.from.x,this.controlNodes.from.y=this.controlNodes.positions.from.y,this.controlNodes.to.x=this.controlNodes.positions.to.x,this.controlNodes.to.y=this.controlNodes.positions.to.y),this.controlNodes.from.draw(t),this.controlNodes.to.draw(t)}else this.controlNodes={from:null,to:null,positions:{}}},s.prototype._enableControlNodes=function(){this.controlNodesEnabled=!0},s.prototype._disableControlNodes=function(){this.controlNodesEnabled=!1},s.prototype._getSelectedControlNode=function(t,e){var i=this.controlNodes.positions,s=Math.sqrt(Math.pow(t-i.from.x,2)+Math.pow(e-i.from.y,2)),o=Math.sqrt(Math.pow(t-i.to.x,2)+Math.pow(e-i.to.y,2));return 15>s?(this.connectedNode=this.from,this.from=this.controlNodes.from,this.controlNodes.from):15>o?(this.connectedNode=this.to,this.to=this.controlNodes.to,this.controlNodes.to):null},s.prototype._restoreControlNodes=function(){1==this.controlNodes.from.selected&&(this.from=this.connectedNode,this.connectedNode=null,this.controlNodes.from.unselect()),1==this.controlNodes.to.selected&&(this.to=this.connectedNode,this.connectedNode=null,this.controlNodes.to.unselect())},s.prototype.getControlNodePositions=function(t){var e,i=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),s=this.to.x-this.from.x,o=this.to.y-this.from.y,n=Math.sqrt(s*s+o*o),r=this.from.distanceToBorder(t,i+Math.PI),a=(n-r)/n,h=a*this.from.x+(1-a)*this.to.x,d=a*this.from.y+(1-a)*this.to.y;1==this.smoothCurves.dynamic&&1==this.smoothCurves.enabled?e=this.via:1==this.smoothCurves.enabled&&(e=this._getViaCoordinates()),1==this.smoothCurves.enabled&&null!=e.x&&(i=Math.atan2(this.to.y-e.y,this.to.x-e.x),s=this.to.x-e.x,o=this.to.y-e.y,n=Math.sqrt(s*s+o*o));var l,c,p=this.to.distanceToBorder(t,i),u=(n-p)/n;return 1==this.smoothCurves.enabled&&null!=e.x?(l=(1-u)*e.x+u*this.to.x,c=(1-u)*e.y+u*this.to.y):(l=(1-u)*this.from.x+u*this.to.x,c=(1-u)*this.from.y+u*this.to.y),{from:{x:h,y:d},to:{x:l,y:c}}},t.exports=s},function(t,e,i){function s(){this.clear(),this.defaultIndex=0}var o=i(1);s.DEFAULT=[{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},{border:"#FFA500",background:"#FFFF00",highlight:{border:"#FFA500",background:"#FFFFA3"},hover:{border:"#FFA500",background:"#FFFFA3"}},{border:"#FA0A10",background:"#FB7E81",highlight:{border:"#FA0A10",background:"#FFAFB1"},hover:{border:"#FA0A10",background:"#FFAFB1"}},{border:"#41A906",background:"#7BE141",highlight:{border:"#41A906",background:"#A1EC76"},hover:{border:"#41A906",background:"#A1EC76"}},{border:"#E129F0",background:"#EB7DF4",highlight:{border:"#E129F0",background:"#F0B3F5"},hover:{border:"#E129F0",background:"#F0B3F5"}},{border:"#7C29F0",background:"#AD85E4",highlight:{border:"#7C29F0",background:"#D3BDF0"},hover:{border:"#7C29F0",background:"#D3BDF0"}},{border:"#C37F00",background:"#FFA807",highlight:{border:"#C37F00",background:"#FFCA66"},hover:{border:"#C37F00",background:"#FFCA66"}},{border:"#4220FB",background:"#6E6EFD",highlight:{border:"#4220FB",background:"#9B9BFD"},hover:{border:"#4220FB",background:"#9B9BFD"}},{border:"#FD5A77",background:"#FFC0CB",highlight:{border:"#FD5A77",background:"#FFD1D9"},hover:{border:"#FD5A77",background:"#FFD1D9"}},{border:"#4AD63A",background:"#C2FABC",highlight:{border:"#4AD63A",background:"#E6FFE3"},hover:{border:"#4AD63A",background:"#E6FFE3"}}],s.prototype.clear=function(){this.groups={},this.groups.length=function(){var t=0;for(var e in this)this.hasOwnProperty(e)&&t++;return t}},s.prototype.get=function(t){var e=this.groups[t];if(void 0==e){var i=this.defaultIndex%s.DEFAULT.length;this.defaultIndex++,e={},e.color=s.DEFAULT[i],this.groups[t]=e}return e},s.prototype.add=function(t,e){return this.groups[t]=e,e.color&&(e.color=o.parseColor(e.color)),e},t.exports=s},function(t){function e(){this.images={},this.callback=void 0}e.prototype.setOnloadCallback=function(t){this.callback=t},e.prototype.load=function(t){var e=this.images[t];if(void 0==e){var i=this;e=new Image,this.images[t]=e,e.onload=function(){i.callback&&i.callback(this)},e.src=t}return e},t.exports=e},function(t,e,i){function s(t,e,i,s){this.selected=!1,this.hover=!1,this.edges=[],this.dynamicEdges=[],this.reroutedEdges={},this.group=s.nodes.group,this.fontSize=Number(s.nodes.fontSize),this.fontFace=s.nodes.fontFace,this.fontColor=s.nodes.fontColor,this.fontDrawThreshold=3,this.color=s.nodes.color,this.id=void 0,this.shape=s.nodes.shape,this.image=s.nodes.image,this.x=null,this.y=null,this.xFixed=!1,this.yFixed=!1,this.horizontalAlignLeft=!0,this.verticalAlignTop=!0,this.radius=s.nodes.radius,this.baseRadiusValue=s.nodes.radius,this.radiusFixed=!1,this.radiusMin=s.nodes.radiusMin,this.radiusMax=s.nodes.radiusMax,this.level=-1,this.preassignedLevel=!1,this.borderWidth=s.nodes.borderWidth,this.borderWidthSelected=s.nodes.borderWidthSelected,this.imagelist=e,this.grouplist=i,this.fx=0,this.fy=0,this.vx=0,this.vy=0,this.minForce=s.minForce,this.damping=s.physics.damping,this.mass=1,this.fixedData={x:null,y:null},this.setProperties(t,s),this.resetCluster(),this.dynamicEdgesLength=0,this.clusterSession=0,this.clusterSizeWidthFactor=s.clustering.nodeScaling.width,this.clusterSizeHeightFactor=s.clustering.nodeScaling.height,this.clusterSizeRadiusFactor=s.clustering.nodeScaling.radius,this.maxNodeSizeIncrements=s.clustering.maxNodeSizeIncrements,this.growthIndicator=0,this.networkScaleInv=1,this.networkScale=1,this.canvasTopLeft={x:-300,y:-300},this.canvasBottomRight={x:300,y:300},this.parentEdgeId=null}var o=i(1);s.prototype.resetCluster=function(){this.formationScale=void 0,this.clusterSize=1,this.containedNodes={},this.containedEdges={},this.clusterSessions=[]},s.prototype.attachEdge=function(t){-1==this.edges.indexOf(t)&&this.edges.push(t),-1==this.dynamicEdges.indexOf(t)&&this.dynamicEdges.push(t),this.dynamicEdgesLength=this.dynamicEdges.length},s.prototype.detachEdge=function(t){var e=this.edges.indexOf(t);-1!=e&&(this.edges.splice(e,1),this.dynamicEdges.splice(e,1)),this.dynamicEdgesLength=this.dynamicEdges.length},s.prototype.setProperties=function(t,e){if(t){if(this.originalLabel=void 0,void 0!==t.id&&(this.id=t.id),void 0!==t.label&&(this.label=t.label,this.originalLabel=t.label),void 0!==t.title&&(this.title=t.title),void 0!==t.group&&(this.group=t.group),void 0!==t.x&&(this.x=t.x),void 0!==t.y&&(this.y=t.y),void 0!==t.value&&(this.value=t.value),void 0!==t.level&&(this.level=t.level,this.preassignedLevel=!0),void 0!==t.borderWidth&&(this.borderWidth=t.borderWidth),void 0!==t.borderWidthSelected&&(this.borderWidthSelected=t.borderWidthSelected),void 0!==t.mass&&(this.mass=t.mass),void 0!==t.horizontalAlignLeft&&(this.horizontalAlignLeft=t.horizontalAlignLeft),void 0!==t.verticalAlignTop&&(this.verticalAlignTop=t.verticalAlignTop),void 0!==t.triggerFunction&&(this.triggerFunction=t.triggerFunction),void 0===this.id)throw"Node must have an id";if(void 0!==this.group){var i=this.grouplist.get(this.group);for(var s in i)i.hasOwnProperty(s)&&(this[s]=i[s])}if(void 0!==t.shape&&(this.shape=t.shape),void 0!==t.image&&(this.image=t.image),void 0!==t.radius&&(this.radius=t.radius,this.baseRadiusValue=this.radius),void 0!==t.color&&(this.color=o.parseColor(t.color)),void 0!==t.fontColor&&(this.fontColor=t.fontColor),void 0!==t.fontSize&&(this.fontSize=t.fontSize),void 0!==t.fontFace&&(this.fontFace=t.fontFace),void 0!==this.image&&""!=this.image){if(!this.imagelist)throw"No imagelist provided";this.imageObj=this.imagelist.load(this.image)}switch(this.xFixed=this.xFixed||void 0!==t.x&&!t.allowedToMoveX,this.yFixed=this.yFixed||void 0!==t.y&&!t.allowedToMoveY,this.radiusFixed=this.radiusFixed||void 0!==t.radius,"image"==this.shape&&(this.radiusMin=e.nodes.widthMin,this.radiusMax=e.nodes.widthMax),this.shape){case"database":this.draw=this._drawDatabase,this.resize=this._resizeDatabase;break;case"box":this.draw=this._drawBox,this.resize=this._resizeBox;break;case"circle":this.draw=this._drawCircle,this.resize=this._resizeCircle;break;case"ellipse":this.draw=this._drawEllipse,this.resize=this._resizeEllipse;break;case"image":this.draw=this._drawImage,this.resize=this._resizeImage;break;case"text":this.draw=this._drawText,this.resize=this._resizeText;break;case"dot":this.draw=this._drawDot,this.resize=this._resizeShape;break;case"square":this.draw=this._drawSquare,this.resize=this._resizeShape;break;case"triangle":this.draw=this._drawTriangle,this.resize=this._resizeShape;break;case"triangleDown":this.draw=this._drawTriangleDown,this.resize=this._resizeShape;break;case"star":this.draw=this._drawStar,this.resize=this._resizeShape;break;default:this.draw=this._drawEllipse,this.resize=this._resizeEllipse}this._reset()}},s.prototype.select=function(){this.selected=!0,this._reset()},s.prototype.unselect=function(){this.selected=!1,this._reset()},s.prototype.clearSizeCache=function(){this._reset()},s.prototype._reset=function(){this.width=void 0,this.height=void 0},s.prototype.getTitle=function(){return"function"==typeof this.title?this.title():this.title},s.prototype.distanceToBorder=function(t,e){var i=1;switch(this.width||this.resize(t),this.shape){case"circle":case"dot":return this.radius+i;case"ellipse":var s=this.width/2,o=this.height/2,n=Math.sin(e)*s,r=Math.cos(e)*o;return s*o/Math.sqrt(n*n+r*r);case"box":case"image":case"text":default:return this.width?Math.min(Math.abs(this.width/2/Math.cos(e)),Math.abs(this.height/2/Math.sin(e)))+i:0}},s.prototype._setForce=function(t,e){this.fx=t,this.fy=e},s.prototype._addForce=function(t,e){this.fx+=t,this.fy+=e},s.prototype.discreteStep=function(t){if(!this.xFixed){var e=this.damping*this.vx,i=(this.fx-e)/this.mass;this.vx+=i*t,this.x+=this.vx*t}if(!this.yFixed){var s=this.damping*this.vy,o=(this.fy-s)/this.mass;this.vy+=o*t,this.y+=this.vy*t}},s.prototype.discreteStepLimited=function(t,e){if(this.xFixed)this.fx=0;else{var i=this.damping*this.vx,s=(this.fx-i)/this.mass;this.vx+=s*t,this.vx=Math.abs(this.vx)>e?this.vx>0?e:-e:this.vx,this.x+=this.vx*t}if(this.yFixed)this.fy=0;else{var o=this.damping*this.vy,n=(this.fy-o)/this.mass;this.vy+=n*t,this.vy=Math.abs(this.vy)>e?this.vy>0?e:-e:this.vy,this.y+=this.vy*t}},s.prototype.isFixed=function(){return this.xFixed&&this.yFixed},s.prototype.isMoving=function(t){return Math.abs(this.vx)>t||Math.abs(this.vy)>t},s.prototype.isSelected=function(){return this.selected},s.prototype.getValue=function(){return this.value},s.prototype.getDistance=function(t,e){var i=this.x-t,s=this.y-e;return Math.sqrt(i*i+s*s)},s.prototype.setValueRange=function(t,e){if(!this.radiusFixed&&void 0!==this.value)if(e==t)this.radius=(this.radiusMin+this.radiusMax)/2;else{var i=(this.radiusMax-this.radiusMin)/(e-t);this.radius=(this.value-t)*i+this.radiusMin}this.baseRadiusValue=this.radius},s.prototype.draw=function(){throw"Draw method not initialized for node"},s.prototype.resize=function(){throw"Resize method not initialized for node"},s.prototype.isOverlappingWith=function(t){return this.leftt.left&&this.topt.top},s.prototype._resizeImage=function(){if(!this.width||!this.height){var t,e;if(this.value){this.radius=this.baseRadiusValue;var i=this.imageObj.height/this.imageObj.width;void 0!==i?(t=this.radius||this.imageObj.width,e=this.radius*i||this.imageObj.height):(t=0,e=0)}else t=this.imageObj.width,e=this.imageObj.height;this.width=t,this.height=e,this.growthIndicator=0,this.width>0&&this.height>0&&(this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-t)}},s.prototype._drawImage=function(t){this._resizeImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e;if(0!=this.imageObj.width){if(this.clusterSize>1){var i=this.clusterSize>1?10:0;i*=this.networkScaleInv,i=Math.min(.2*this.width,i),t.globalAlpha=.5,t.drawImage(this.imageObj,this.left-i,this.top-i,this.width+2*i,this.height+2*i)}t.globalAlpha=1,t.drawImage(this.imageObj,this.left,this.top,this.width,this.height),e=this.y+this.height/2}else e=this.y;this._label(t,this.label,this.x,e,void 0,"top")},s.prototype._resizeBox=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawBox=function(t){this._resizeBox(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.borderWidth,s=this.borderWidthSelected||2*this.borderWidth;t.strokeStyle=this.selected?this.color.highlight.border:this.hover?this.color.hover.border:this.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.roundRect(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth,this.radius),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.color.highlight.background:this.color.background,t.roundRect(this.left,this.top,this.width,this.height,this.radius),t.fill(),t.stroke(),this._label(t,this.label,this.x,this.y)},s.prototype._resizeDatabase=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=i.width+2*e;this.width=s,this.height=s,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-s}},s.prototype._drawDatabase=function(t){this._resizeDatabase(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.borderWidth,s=this.borderWidthSelected||2*this.borderWidth;t.strokeStyle=this.selected?this.color.highlight.border:this.hover?this.color.hover.border:this.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.database(this.x-this.width/2-2*t.lineWidth,this.y-.5*this.height-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.color.highlight.background:this.hover?this.color.hover.background:this.color.background,t.database(this.x-this.width/2,this.y-.5*this.height,this.width,this.height),t.fill(),t.stroke(),this._label(t,this.label,this.x,this.y)},s.prototype._resizeCircle=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=Math.max(i.width,i.height)+2*e;this.radius=s/2,this.width=s,this.height=s,this.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.radius-.5*s}},s.prototype._drawCircle=function(t){this._resizeCircle(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.borderWidth,s=this.borderWidthSelected||2*this.borderWidth;t.strokeStyle=this.selected?this.color.highlight.border:this.hover?this.color.hover.border:this.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.circle(this.x,this.y,this.radius+2*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.color.highlight.background:this.hover?this.color.hover.background:this.color.background,t.circle(this.x,this.y,this.radius),t.fill(),t.stroke(),this._label(t,this.label,this.x,this.y)},s.prototype._resizeEllipse=function(t){if(!this.width){var e=this.getTextSize(t);this.width=1.5*e.width,this.height=2*e.height,this.width1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.ellipse(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.color.highlight.background:this.hover?this.color.hover.background:this.color.background,t.ellipse(this.left,this.top,this.width,this.height),t.fill(),t.stroke(),this._label(t,this.label,this.x,this.y)},s.prototype._drawDot=function(t){this._drawShape(t,"circle")},s.prototype._drawTriangle=function(t){this._drawShape(t,"triangle")},s.prototype._drawTriangleDown=function(t){this._drawShape(t,"triangleDown")},s.prototype._drawSquare=function(t){this._drawShape(t,"square")},s.prototype._drawStar=function(t){this._drawShape(t,"star")},s.prototype._resizeShape=function(){if(!this.width){this.radius=this.baseRadiusValue;var t=2*this.radius;this.width=t,this.height=t,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-t}},s.prototype._drawShape=function(t,e){this._resizeShape(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var i=2.5,s=this.borderWidth,o=this.borderWidthSelected||2*this.borderWidth,n=2;switch(e){case"dot":n=2;break;case"square":n=2;break;case"triangle":n=3;break;case"triangleDown":n=3;break;case"star":n=4}t.strokeStyle=this.selected?this.color.highlight.border:this.hover?this.color.hover.border:this.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t[e](this.x,this.y,this.radius+n*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.color.highlight.background:this.hover?this.color.hover.background:this.color.background,t[e](this.x,this.y,this.radius),t.fill(),t.stroke(),this.label&&this._label(t,this.label,this.x,this.y+this.height/2,void 0,"top",!0)},s.prototype._resizeText=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawText=function(t){this._resizeText(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._label(t,this.label,this.x,this.y)},s.prototype._label=function(t,e,i,s,o,n,r){if(e&&this.fontSize*this.networkScale>this.fontDrawThreshold){t.font=(this.selected?"bold ":"")+this.fontSize+"px "+this.fontFace,t.fillStyle=this.fontColor||"black",t.textAlign=o||"center",t.textBaseline=n||"middle";var a=e.split("\n"),h=a.length,d=this.fontSize+4,l=s+(1-h)/2*d;1==r&&(l=s+(1-h)/(2*d));for(var c=0;h>c;c++)t.fillText(a[c],i,l),l+=d}},s.prototype.getTextSize=function(t){if(void 0!==this.label){t.font=(this.selected?"bold ":"")+this.fontSize+"px "+this.fontFace;for(var e=this.label.split("\n"),i=(this.fontSize+4)*e.length,s=0,o=0,n=e.length;n>o;o++)s=Math.max(s,t.measureText(e[o]).width);return{width:s,height:i}}return{width:0,height:0}},s.prototype.inArea=function(){return void 0!==this.width?this.x+this.width*this.networkScaleInv>=this.canvasTopLeft.x&&this.x-this.width*this.networkScaleInv=this.canvasTopLeft.y&&this.y-this.height*this.networkScaleInv=this.canvasTopLeft.x&&this.x=this.canvasTopLeft.y&&this.ys&&(n=s-e-this.padding),no&&(r=o-i-this.padding),ri;i++)if(e.id===r.nodes[i].id){o=r.nodes[i];break}for(o||(o={id:e.id},t.node&&(o.attr=a(o.attr,t.node))),i=n.length-1;i>=0;i--){var h=n[i];h.nodes||(h.nodes=[]),-1==h.nodes.indexOf(o)&&h.nodes.push(o)}e.attr&&(o.attr=a(o.attr,e.attr))}function l(t,e){if(t.edges||(t.edges=[]),t.edges.push(e),t.edge){var i=a({},t.edge);e.attr=a(i,e.attr)}}function c(t,e,i,s,o){var n={from:e,to:i,type:s};return t.edge&&(n.attr=a({},t.edge)),n.attr=a(n.attr||{},o),n}function p(){for(O=M.NULL,N="";" "==L||" "==L||"\n"==L||"\r"==L;)o();do{var t=!1;if("#"==L){for(var e=T-1;" "==D.charAt(e)||" "==D.charAt(e);)e--;if("\n"==D.charAt(e)||""==D.charAt(e)){for(;""!=L&&"\n"!=L;)o();t=!0}}if("/"==L&&"/"==n()){for(;""!=L&&"\n"!=L;)o();t=!0}if("/"==L&&"*"==n()){for(;""!=L;){if("*"==L&&"/"==n()){o(),o();break}o()}t=!0}for(;" "==L||" "==L||"\n"==L||"\r"==L;)o()}while(t);if(""==L)return void(O=M.DELIMITER);var i=L+n();if(E[i])return O=M.DELIMITER,N=i,o(),void o();if(E[L])return O=M.DELIMITER,N=L,void o();if(r(L)||"-"==L){for(N+=L,o();r(L);)N+=L,o();return"false"==N?N=!1:"true"==N?N=!0:isNaN(Number(N))||(N=Number(N)),void(O=M.IDENTIFIER)}if('"'==L){for(o();""!=L&&('"'!=L||'"'==L&&'"'==n());)N+=L,'"'==L&&o(),o();if('"'!=L)throw w('End of string " expected');return o(),void(O=M.IDENTIFIER)}for(O=M.UNKNOWN;""!=L;)N+=L,o();throw new SyntaxError('Syntax error in part "'+_(N,30)+'"')}function u(){var t={};if(s(),p(),"strict"==N&&(t.strict=!0,p()),("graph"==N||"digraph"==N)&&(t.type=N,p()),O==M.IDENTIFIER&&(t.id=N,p()),"{"!=N)throw w("Angle bracket { expected");if(p(),m(t),"}"!=N)throw w("Angle bracket } expected");if(p(),""!==N)throw w("End of file expected");return p(),delete t.node,delete t.edge,delete t.graph,t}function m(t){for(;""!==N&&"}"!=N;)g(t),";"==N&&p()}function g(t){var e=f(t);if(e)return void b(t,e);var i=v(t);if(!i){if(O!=M.IDENTIFIER)throw w("Identifier expected");var s=N;if(p(),"="==N){if(p(),O!=M.IDENTIFIER)throw w("Identifier expected");t[s]=N,p()}else y(t,s)}}function f(t){var e=null;if("subgraph"==N&&(e={},e.type="subgraph",p(),O==M.IDENTIFIER&&(e.id=N,p())),"{"==N){if(p(),e||(e={}),e.parent=t,e.node=t.node,e.edge=t.edge,e.graph=t.graph,m(e),"}"!=N)throw w("Angle bracket } expected");p(),delete e.node,delete e.edge,delete e.graph,delete e.parent,t.subgraphs||(t.subgraphs=[]),t.subgraphs.push(e)}return e}function v(t){return"node"==N?(p(),t.node=x(),"node"):"edge"==N?(p(),t.edge=x(),"edge"):"graph"==N?(p(),t.graph=x(),"graph"):null}function y(t,e){var i={id:e},s=x();s&&(i.attr=s),d(t,i),b(t,e)}function b(t,e){for(;"->"==N||"--"==N;){var i,s=N;p();var o=f(t);if(o)i=o;else{if(O!=M.IDENTIFIER)throw w("Identifier or subgraph expected");i=N,d(t,{id:i}),p()}var n=x(),r=c(t,e,i,s,n);l(t,r),e=i}}function x(){for(var t=null;"["==N;){for(p(),t={};""!==N&&"]"!=N;){if(O!=M.IDENTIFIER)throw w("Attribute name expected");var e=N;if(p(),"="!=N)throw w("Equal sign = expected");if(p(),O!=M.IDENTIFIER)throw w("Attribute value expected");var i=N;h(t,e,i),p(),","==N&&p()}if("]"!=N)throw w("Bracket ] expected");p()}return t}function w(t){return new SyntaxError(t+', got "'+_(N,30)+'" (char '+T+")")}function _(t,e){return t.length<=e?t:t.substr(0,27)+"..."}function S(t,e,i){t instanceof Array?t.forEach(function(t){e instanceof Array?e.forEach(function(e){i(t,e)}):i(t,e)}):e instanceof Array?e.forEach(function(e){i(t,e)}):i(t,e)}function C(t){function e(t){var e={from:t.from,to:t.to};return a(e,t.attr),e.style="->"==t.type?"arrow":"line",e}var s=i(t),o={nodes:[],edges:[],options:{}};return s.nodes&&s.nodes.forEach(function(t){var e={id:t.id,label:String(t.label||t.id)};a(e,t.attr),e.image&&(e.shape="image"),o.nodes.push(e)}),s.edges&&s.edges.forEach(function(t){var i,s;i=t.from instanceof Object?t.from.nodes:{id:t.from},s=t.to instanceof Object?t.to.nodes:{id:t.to},t.from instanceof Object&&t.from.edges&&t.from.edges.forEach(function(t){var i=e(t);o.edges.push(i)}),S(i,s,function(i,s){var n=c(o,i.id,s.id,t.type,t.attr),r=e(n);o.edges.push(r)}),t.to instanceof Object&&t.to.edges&&t.to.edges.forEach(function(t){var i=e(t);o.edges.push(i)})}),s.attr&&(o.options=s.attr),o}var M={NULL:0,DELIMITER:1,IDENTIFIER:2,UNKNOWN:3},E={"{":!0,"}":!0,"[":!0,"]":!0,";":!0,"=":!0,",":!0,"->":!0,"--":!0},D="",T=0,L="",N="",O=M.NULL,k=/[a-zA-Z_0-9.:#]/;e.parseDOT=i,e.DOTToGraph=C},function(t,e,i){t.exports="undefined"!=typeof window&&window.moment||i(41)},function(t,e,i){t.exports="undefined"!=typeof window?window.Hammer||i(42):function(){throw Error("hammer.js is only available in a browser, not in node.js.")}},function(t){t.exports=__WEBPACK_EXTERNAL_MODULE_41__},function(t){t.exports=__WEBPACK_EXTERNAL_MODULE_42__ +},function(t,e,i){var s=i(40);e.fakeGesture=function(t,e){var i=null,o=s.event.getTouchList(e,i),n=s.event.collectEventData(this,i,o,e);return isNaN(n.center.pageX)&&(n.center.pageX=e.pageX),isNaN(n.center.pageY)&&(n.center.pageY=e.pageY),n}},function(){"undefined"!=typeof CanvasRenderingContext2D&&(CanvasRenderingContext2D.prototype.circle=function(t,e,i){this.beginPath(),this.arc(t,e,i,0,2*Math.PI,!1)},CanvasRenderingContext2D.prototype.square=function(t,e,i){this.beginPath(),this.rect(t-i,e-i,2*i,2*i)},CanvasRenderingContext2D.prototype.triangle=function(t,e,i){this.beginPath();var s=2*i,o=s/2,n=Math.sqrt(3)/6*s,r=Math.sqrt(s*s-o*o);this.moveTo(t,e-(r-n)),this.lineTo(t+o,e+n),this.lineTo(t-o,e+n),this.lineTo(t,e-(r-n)),this.closePath()},CanvasRenderingContext2D.prototype.triangleDown=function(t,e,i){this.beginPath();var s=2*i,o=s/2,n=Math.sqrt(3)/6*s,r=Math.sqrt(s*s-o*o);this.moveTo(t,e+(r-n)),this.lineTo(t+o,e-n),this.lineTo(t-o,e-n),this.lineTo(t,e+(r-n)),this.closePath()},CanvasRenderingContext2D.prototype.star=function(t,e,i){this.beginPath();for(var s=0;10>s;s++){var o=s%2===0?1.3*i:.5*i;this.lineTo(t+o*Math.sin(2*s*Math.PI/10),e-o*Math.cos(2*s*Math.PI/10))}this.closePath()},CanvasRenderingContext2D.prototype.roundRect=function(t,e,i,s,o){var n=Math.PI/180;0>i-2*o&&(o=i/2),0>s-2*o&&(o=s/2),this.beginPath(),this.moveTo(t+o,e),this.lineTo(t+i-o,e),this.arc(t+i-o,e+o,o,270*n,360*n,!1),this.lineTo(t+i,e+s-o),this.arc(t+i-o,e+s-o,o,0,90*n,!1),this.lineTo(t+o,e+s),this.arc(t+o,e+s-o,o,90*n,180*n,!1),this.lineTo(t,e+o),this.arc(t+o,e+o,o,180*n,270*n,!1)},CanvasRenderingContext2D.prototype.ellipse=function(t,e,i,s){var o=.5522848,n=i/2*o,r=s/2*o,a=t+i,h=e+s,d=t+i/2,l=e+s/2;this.beginPath(),this.moveTo(t,l),this.bezierCurveTo(t,l-r,d-n,e,d,e),this.bezierCurveTo(d+n,e,a,l-r,a,l),this.bezierCurveTo(a,l+r,d+n,h,d,h),this.bezierCurveTo(d-n,h,t,l+r,t,l)},CanvasRenderingContext2D.prototype.database=function(t,e,i,s){var o=1/3,n=i,r=s*o,a=.5522848,h=n/2*a,d=r/2*a,l=t+n,c=e+r,p=t+n/2,u=e+r/2,m=e+(s-r/2),g=e+s;this.beginPath(),this.moveTo(l,u),this.bezierCurveTo(l,u+d,p+h,c,p,c),this.bezierCurveTo(p-h,c,t,u+d,t,u),this.bezierCurveTo(t,u-d,p-h,e,p,e),this.bezierCurveTo(p+h,e,l,u-d,l,u),this.lineTo(l,m),this.bezierCurveTo(l,m+d,p+h,g,p,g),this.bezierCurveTo(p-h,g,t,m+d,t,m),this.lineTo(t,u)},CanvasRenderingContext2D.prototype.arrow=function(t,e,i,s){var o=t-s*Math.cos(i),n=e-s*Math.sin(i),r=t-.9*s*Math.cos(i),a=e-.9*s*Math.sin(i),h=o+s/3*Math.cos(i+.5*Math.PI),d=n+s/3*Math.sin(i+.5*Math.PI),l=o+s/3*Math.cos(i-.5*Math.PI),c=n+s/3*Math.sin(i-.5*Math.PI);this.beginPath(),this.moveTo(t,e),this.lineTo(h,d),this.lineTo(r,a),this.lineTo(l,c),this.closePath()},CanvasRenderingContext2D.prototype.dashedLine=function(t,e,i,s,o){o||(o=[10,5]),0==p&&(p=.001);var n=o.length;this.moveTo(t,e);for(var r=i-t,a=s-e,h=a/r,d=Math.sqrt(r*r+a*a),l=0,c=!0;d>=.1;){var p=o[l++%n];p>d&&(p=d);var u=Math.sqrt(p*p/(1+h*h));0>r&&(u=-u),t+=u,e+=h*u,this[c?"lineTo":"moveTo"](t,e),d-=p,c=!c}})},function(t,e,i){var s=i(54),o=i(48),n=i(49),r=i(50),a=i(51),h=i(52),d=i(53);e._loadMixin=function(t){for(var e in t)t.hasOwnProperty(e)&&(this[e]=t[e])},e._clearMixin=function(t){for(var e in t)t.hasOwnProperty(e)&&(this[e]=void 0)},e._loadPhysicsSystem=function(){this._loadMixin(s),this._loadSelectedForceSolver(),1==this.constants.configurePhysics&&this._loadPhysicsConfiguration()},e._loadClusterSystem=function(){this.clusterSession=0,this.hubThreshold=5,this._loadMixin(o)},e._loadSectorSystem=function(){this.sectors={},this.activeSector=["default"],this.sectors.active={},this.sectors.active["default"]={nodes:{},edges:{},nodeIndices:[],formationScale:1,drawingNode:void 0},this.sectors.frozen={},this.sectors.support={nodes:{},edges:{},nodeIndices:[],formationScale:1,drawingNode:void 0},this.nodeIndices=this.sectors.active["default"].nodeIndices,this._loadMixin(n)},e._loadSelectionSystem=function(){this.selectionObj={nodes:{},edges:{}},this._loadMixin(r)},e._loadManipulationSystem=function(){this.blockConnectingEdgeSelection=!1,this.forceAppendSelection=!1,1==this.constants.dataManipulation.enabled?(void 0===this.manipulationDiv&&(this.manipulationDiv=document.createElement("div"),this.manipulationDiv.className="network-manipulationDiv",this.manipulationDiv.id="network-manipulationDiv",this.manipulationDiv.style.display=1==this.editMode?"block":"none",this.containerElement.insertBefore(this.manipulationDiv,this.frame)),void 0===this.editModeDiv&&(this.editModeDiv=document.createElement("div"),this.editModeDiv.className="network-manipulation-editMode",this.editModeDiv.id="network-manipulation-editMode",this.editModeDiv.style.display=1==this.editMode?"none":"block",this.containerElement.insertBefore(this.editModeDiv,this.frame)),void 0===this.closeDiv&&(this.closeDiv=document.createElement("div"),this.closeDiv.className="network-manipulation-closeDiv",this.closeDiv.id="network-manipulation-closeDiv",this.closeDiv.style.display=this.manipulationDiv.style.display,this.containerElement.insertBefore(this.closeDiv,this.frame)),this._loadMixin(a),this._createManipulatorBar()):void 0!==this.manipulationDiv&&(this._createManipulatorBar(),this.containerElement.removeChild(this.manipulationDiv),this.containerElement.removeChild(this.editModeDiv),this.containerElement.removeChild(this.closeDiv),this.manipulationDiv=void 0,this.editModeDiv=void 0,this.closeDiv=void 0,this._clearMixin(a))},e._loadNavigationControls=function(){this._loadMixin(h),this._cleanNavigation(),1==this.constants.navigation.enabled&&this._loadNavigationElements()},e._loadHierarchySystem=function(){this._loadMixin(d)}},function(t){function e(t){return t?i(t):void 0}function i(t){for(var i in e.prototype)t[i]=e.prototype[i];return t}t.exports=e,e.prototype.on=e.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks[t]=this._callbacks[t]||[]).push(e),this},e.prototype.once=function(t,e){function i(){s.off(t,i),e.apply(this,arguments)}var s=this;return this._callbacks=this._callbacks||{},i.fn=e,this.on(t,i),this},e.prototype.off=e.prototype.removeListener=e.prototype.removeAllListeners=e.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var i=this._callbacks[t];if(!i)return this;if(1==arguments.length)return delete this._callbacks[t],this;for(var s,o=0;os;++s)i[s].apply(this,e)}return this},e.prototype.listeners=function(t){return this._callbacks=this._callbacks||{},this._callbacks[t]||[]},e.prototype.hasListeners=function(t){return!!this.listeners(t).length}},function(t){function e(t,e,i){return t.addEventListener?t.addEventListener(e,i,!1):void t.attachEvent("on"+e,i)}function i(t){return"keypress"==t.type?String.fromCharCode(t.which):x[t.which]?x[t.which]:w[t.which]?w[t.which]:String.fromCharCode(t.which).toLowerCase()}function s(t){var e=t.target||t.srcElement,i=e.tagName;return(" "+e.className+" ").indexOf(" mousetrap ")>-1?!1:"INPUT"==i||"SELECT"==i||"TEXTAREA"==i||e.contentEditable&&"true"==e.contentEditable}function o(t,e){return t.sort().join(",")===e.sort().join(",")}function n(t){t=t||{};var e,i=!1;for(e in E)t[e]?i=!0:E[e]=0;i||(T=!1)}function r(t,e,i,s,n){var r,a,h=[];if(!C[t])return[];for("keyup"==i&&c(t)&&(e=[t]),r=0;r95&&112>t||x.hasOwnProperty(t)&&(y[x[t]]=t)}return y}function m(t,e,i){return i||(i=u()[t]?"keydown":"keypress"),"keypress"==i&&e.length&&(i="keydown"),i}function g(t,e,s,o){E[t]=0,o||(o=m(e[0],[]));var r,a=function(){T=o,++E[t],p()},d=function(t){h(s,t),"keyup"!==o&&(D=i(t)),setTimeout(n,10)};for(r=0;r1)return g(t,d,e,i);for(h="+"===t?["+"]:t.split("+"),n=0;n":".","?":"/","|":"\\"},S={option:"alt",command:"meta","return":"enter",escape:"esc"},C={},M={},E={},D=!1,T=!1,L=1;20>L;++L)x[111+L]="f"+L;for(L=0;9>=L;++L)x[L+96]=L;e(document,"keypress",l),e(document,"keydown",l),e(document,"keyup",l);var N={bind:function(t,e,i){return v(t instanceof Array?t:[t],e,i),M[t+":"+i]=e,this},unbind:function(t,e){return M[t+":"+e]&&(delete M[t+":"+e],this.bind(t,function(){},e)),this},trigger:function(t,e){return M[t+":"+e](),this},reset:function(){return C={},M={},this}};t.exports=N},function(t,e){e.startWithClustering=function(){this.clusterToFit(this.constants.clustering.initialMaxNodes,!0),this.updateLabels(),this.stabilize&&this._stabilize(),this.start()},e.clusterToFit=function(t,e){for(var i=this.nodeIndices.length,s=50,o=0;i>t&&s>o;)o%3==0?(this.forceAggregateHubs(!0),this.normalizeClusterLevels()):this.increaseClusterLevel(),i=this.nodeIndices.length,o+=1;o>0&&1==e&&this.repositionNodes(),this._updateCalculationNodes()},e.openCluster=function(t){var e=this.moving;if(t.clusterSize>this.constants.clustering.sectorThreshold&&this._nodeInActiveArea(t)&&("default"!=this._sector()||1!=this.nodeIndices.length)){this._addSector(t);for(var i=0;this.nodeIndices.lengthi;)this.decreaseClusterLevel(),i+=1}else this._expandClusterNode(t,!1,!0),this._updateNodeIndexList(),this._updateDynamicEdges(),this._updateCalculationNodes(),this.updateLabels();this.moving!=e&&this.start()},e.updateClustersDefault=function(){1==this.constants.clustering.enabled&&this.updateClusters(0,!1,!1)},e.increaseClusterLevel=function(){this.updateClusters(-1,!1,!0)},e.decreaseClusterLevel=function(){this.updateClusters(1,!1,!0)},e.updateClusters=function(t,e,i,s){var o=this.moving,n=this.nodeIndices.length;this.previousScale>this.scale&&0==t&&this._collapseSector(),this.previousScale>this.scale||-1==t?this._formClusters(i):(this.previousScalethis.scale||-1==t)&&(this._aggregateHubs(i),this._updateNodeIndexList()),(this.previousScale>this.scale||-1==t)&&(this.handleChains(),this._updateNodeIndexList()),this.previousScale=this.scale,this._updateDynamicEdges(),this.updateLabels(),this.nodeIndices.lengththis.constants.clustering.chainThreshold&&this._reduceAmountOfChains(1-this.constants.clustering.chainThreshold/t)},e._aggregateHubs=function(t){this._getHubSize(),this._formClustersByHub(t,!1)},e.forceAggregateHubs=function(t){var e=this.moving,i=this.nodeIndices.length;this._aggregateHubs(!0),this._updateNodeIndexList(),this._updateDynamicEdges(),this.updateLabels(),this.nodeIndices.length!=i&&(this.clusterSession+=1),(0==t||void 0===t)&&this.moving!=e&&this.start()},e._openClustersBySize=function(){for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];1==e.inView()&&(e.width*this.scale>this.constants.clustering.screenSizeThreshold*this.frame.canvas.clientWidth||e.height*this.scale>this.constants.clustering.screenSizeThreshold*this.frame.canvas.clientHeight)&&this.openCluster(e)}},e._openClusters=function(t,e){for(var i=0;i1&&(t.clusterSizei)){var r=n.from,a=n.to;n.to.mass>n.from.mass&&(r=n.to,a=n.from),1==a.dynamicEdgesLength?this._addToCluster(r,a,!1):1==r.dynamicEdgesLength&&this._addToCluster(a,r,!1)}}},e._forceClustersByZoom=function(){for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];if(1==e.dynamicEdgesLength&&0!=e.dynamicEdges.length){var i=e.dynamicEdges[0],s=i.toId==e.id?this.nodes[i.fromId]:this.nodes[i.toId];e.id!=s.id&&(s.mass>e.mass?this._addToCluster(s,e,!0):this._addToCluster(e,s,!0))}}},e._clusterToSmallestNeighbour=function(t){for(var e=-1,i=null,s=0;so.clusterSessions.length&&(e=o.clusterSessions.length,i=o)}null!=o&&void 0!==this.nodes[o.id]&&this._addToCluster(o,t,!0)},e._formClustersByHub=function(t,e){for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&this._formClusterFromHub(this.nodes[i],t,e)},e._formClusterFromHub=function(t,e,i,s){if(void 0===s&&(s=0),t.dynamicEdgesLength>=this.hubThreshold&&0==i||t.dynamicEdgesLength==this.hubThreshold&&1==i){for(var o,n,r,a=this.constants.clustering.clusterEdgeThreshold/this.scale,h=!1,d=[],l=t.dynamicEdges.length,c=0;l>c;c++)d.push(t.dynamicEdges[c].id);if(0==e)for(h=!1,c=0;l>c;c++){var p=this.edges[d[c]];if(void 0!==p&&p.connected&&p.toId!=p.fromId&&(o=p.to.x-p.from.x,n=p.to.y-p.from.y,r=Math.sqrt(o*o+n*n),a>r)){h=!0;break}}if(!e&&h||e)for(c=0;l>c;c++)if(p=this.edges[d[c]],void 0!==p){var u=this.nodes[p.fromId==t.id?p.toId:p.fromId];u.dynamicEdges.length<=this.hubThreshold+s&&u.id!=t.id&&this._addToCluster(t,u,e)}}},e._addToCluster=function(t,e,i){t.containedNodes[e.id]=e;for(var s=0;s1)for(var s=0;s1&&(e.label="[".concat(String(e.clusterSize),"]"))}for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(e=this.nodes[t],1==e.clusterSize&&(e.label=void 0!==e.originalLabel?e.originalLabel:String(e.id)))},e.normalizeClusterLevels=function(){var t,e=0,i=1e9,s=0;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(s=this.nodes[t].clusterSessions.length,s>e&&(e=s),i>s&&(i=s));if(e-i>this.constants.clustering.clusterLevelDifference){var o=this.nodeIndices.length,n=e-this.constants.clustering.clusterLevelDifference;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodes[t].clusterSessions.lengths&&(s=n.dynamicEdgesLength),t+=n.dynamicEdgesLength,e+=Math.pow(n.dynamicEdgesLength,2),i+=1}t/=i,e/=i;var r=e-Math.pow(t,2),a=Math.sqrt(r);this.hubThreshold=Math.floor(t+2*a),this.hubThreshold>s&&(this.hubThreshold=s)},e._reduceAmountOfChains=function(t){this.hubThreshold=2;var e=Math.floor(this.nodeIndices.length*t);for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&2==this.nodes[i].dynamicEdgesLength&&this.nodes[i].dynamicEdges.length>=2&&e>0&&(this._formClusterFromHub(this.nodes[i],!0,!0,1),e-=1)},e._getChainFraction=function(){var t=0,e=0;for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&(2==this.nodes[i].dynamicEdgesLength&&this.nodes[i].dynamicEdges.length>=2&&(t+=1),e+=1);return t/e}},function(t,e,i){var s=i(1);e._putDataInSector=function(){this.sectors.active[this._sector()].nodes=this.nodes,this.sectors.active[this._sector()].edges=this.edges,this.sectors.active[this._sector()].nodeIndices=this.nodeIndices},e._switchToSector=function(t,e){void 0===e||"active"==e?this._switchToActiveSector(t):this._switchToFrozenSector(t)},e._switchToActiveSector=function(t){this.nodeIndices=this.sectors.active[t].nodeIndices,this.nodes=this.sectors.active[t].nodes,this.edges=this.sectors.active[t].edges},e._switchToSupportSector=function(){this.nodeIndices=this.sectors.support.nodeIndices,this.nodes=this.sectors.support.nodes,this.edges=this.sectors.support.edges},e._switchToFrozenSector=function(t){this.nodeIndices=this.sectors.frozen[t].nodeIndices,this.nodes=this.sectors.frozen[t].nodes,this.edges=this.sectors.frozen[t].edges},e._loadLatestSector=function(){this._switchToSector(this._sector())},e._sector=function(){return this.activeSector[this.activeSector.length-1]},e._previousSector=function(){if(this.activeSector.length>1)return this.activeSector[this.activeSector.length-2];throw new TypeError("there are not enough sectors in the this.activeSector array.")},e._setActiveSector=function(t){this.activeSector.push(t)},e._forgetLastSector=function(){this.activeSector.pop()},e._createNewSector=function(t){this.sectors.active[t]={nodes:{},edges:{},nodeIndices:[],formationScale:this.scale,drawingNode:void 0},this.sectors.active[t].drawingNode=new Node({id:t,color:{background:"#eaefef",border:"495c5e"}},{},{},this.constants),this.sectors.active[t].drawingNode.clusterSize=2},e._deleteActiveSector=function(t){delete this.sectors.active[t]},e._deleteFrozenSector=function(t){delete this.sectors.frozen[t]},e._freezeSector=function(t){this.sectors.frozen[t]=this.sectors.active[t],this._deleteActiveSector(t)},e._activateSector=function(t){this.sectors.active[t]=this.sectors.frozen[t],this._deleteFrozenSector(t)},e._mergeThisWithFrozen=function(t){for(var e in this.nodes)this.nodes.hasOwnProperty(e)&&(this.sectors.frozen[t].nodes[e]=this.nodes[e]);for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.sectors.frozen[t].edges[i]=this.edges[i]);for(var s=0;s1?this[t](s[0],s[1]):this[t](e)}this._loadLatestSector()},e._doInSupportSector=function(t,e){if(void 0===e)this._switchToSupportSector(),this[t]();else{this._switchToSupportSector();var i=Array.prototype.splice.call(arguments,1);i.length>1?this[t](i[0],i[1]):this[t](e)}this._loadLatestSector()},e._doInAllFrozenSectors=function(t,e){if(void 0===e)for(var i in this.sectors.frozen)this.sectors.frozen.hasOwnProperty(i)&&(this._switchToFrozenSector(i),this[t]());else for(var i in this.sectors.frozen)if(this.sectors.frozen.hasOwnProperty(i)){this._switchToFrozenSector(i);var s=Array.prototype.splice.call(arguments,1);s.length>1?this[t](s[0],s[1]):this[t](e)}this._loadLatestSector()},e._doInAllSectors=function(t,e){var i=Array.prototype.splice.call(arguments,1);void 0===e?(this._doInAllActiveSectors(t),this._doInAllFrozenSectors(t)):i.length>1?(this._doInAllActiveSectors(t,i[0],i[1]),this._doInAllFrozenSectors(t,i[0],i[1])):(this._doInAllActiveSectors(t,e),this._doInAllFrozenSectors(t,e))},e._clearNodeIndexList=function(){var t=this._sector();this.sectors.active[t].nodeIndices=[],this.nodeIndices=this.sectors.active[t].nodeIndices},e._drawSectorNodes=function(t,e){var i,s=1e9,o=-1e9,n=1e9,r=-1e9;for(var a in this.sectors[e])if(this.sectors[e].hasOwnProperty(a)&&void 0!==this.sectors[e][a].drawingNode){this._switchToSector(a,e),s=1e9,o=-1e9,n=1e9,r=-1e9;for(var h in this.nodes)this.nodes.hasOwnProperty(h)&&(i=this.nodes[h],i.resize(t),n>i.x-.5*i.width&&(n=i.x-.5*i.width),ri.y-.5*i.height&&(s=i.y-.5*i.height),o0?this.nodes[i[i.length-1]]:null},e._getEdgesOverlappingWith=function(t,e){var i=this.edges;for(var s in i)i.hasOwnProperty(s)&&i[s].isOverlappingWith(t)&&e.push(s)},e._getAllEdgesOverlappingWith=function(t){var e=[];return this._doInAllActiveSectors("_getEdgesOverlappingWith",t,e),e},e._getEdgeAt=function(t){var e=this._pointerToPositionObject(t),i=this._getAllEdgesOverlappingWith(e);return i.length>0?this.edges[i[i.length-1]]:null},e._addToSelection=function(t){t instanceof s?this.selectionObj.nodes[t.id]=t:this.selectionObj.edges[t.id]=t},e._addToHover=function(t){t instanceof s?this.hoverObj.nodes[t.id]=t:this.hoverObj.edges[t.id]=t},e._removeFromSelection=function(t){t instanceof s?delete this.selectionObj.nodes[t.id]:delete this.selectionObj.edges[t.id]},e._unselectAll=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].unselect();for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&this.selectionObj.edges[i].unselect();this.selectionObj={nodes:{},edges:{}},0==t&&this.emit("select",this.getSelection())},e._unselectClusters=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].clusterSize>1&&(this.selectionObj.nodes[e].unselect(),this._removeFromSelection(this.selectionObj.nodes[e]));0==t&&this.emit("select",this.getSelection())},e._getSelectedNodeCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedNode=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return this.selectionObj.nodes[t];return null},e._getSelectedEdge=function(){for(var t in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(t))return this.selectionObj.edges[t];return null},e._getSelectedEdgeCount=function(){var t=0;for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedObjectCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&(t+=1);return t},e._selectionIsEmpty=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return!1;for(var e in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(e))return!1;return!0},e._clusterInSelection=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t)&&this.selectionObj.nodes[t].clusterSize>1)return!0;return!1},e._selectConnectedEdges=function(t){for(var e=0;ee;e++){s=t[e];var o=this.nodes[s];if(!o)throw new RangeError('Node with id "'+s+'" not found');this._selectObject(o,!0,!0)}console.log("setSelection is deprecated. Please use selectNodes instead."),this.redraw()},e.selectNodes=function(t,e){var i,s,o;if(!t||void 0==t.length)throw"Selection must be an array with ids";for(this._unselectAll(!0),i=0,s=t.length;s>i;i++){o=t[i];var n=this.nodes[o];if(!n)throw new RangeError('Node with id "'+o+'" not found');this._selectObject(n,!0,!0,e)}this.redraw()},e.selectEdges=function(t){var e,i,s;if(!t||void 0==t.length)throw"Selection must be an array with ids";for(this._unselectAll(!0),e=0,i=t.length;i>e;e++){s=t[e];var o=this.edges[s];if(!o)throw new RangeError('Edge with id "'+s+'" not found');this._selectObject(o,!0,!0,highlightEdges)}this.redraw()},e._updateSelection=function(){for(var t in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(t)&&(this.nodes.hasOwnProperty(t)||delete this.selectionObj.nodes[t]);for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(this.edges.hasOwnProperty(e)||delete this.selectionObj.edges[e])}},function(t,e,i){var s=i(1),o=i(36),n=i(33);e._clearManipulatorBar=function(){for(;this.manipulationDiv.hasChildNodes();)this.manipulationDiv.removeChild(this.manipulationDiv.firstChild)},e._restoreOverloadedFunctions=function(){for(var t in this.cachedFunctions)this.cachedFunctions.hasOwnProperty(t)&&(this[t]=this.cachedFunctions[t])},e._toggleEditMode=function(){this.editMode=!this.editMode;var t=document.getElementById("network-manipulationDiv"),e=document.getElementById("network-manipulation-closeDiv"),i=document.getElementById("network-manipulation-editMode");1==this.editMode?(t.style.display="block",e.style.display="block",i.style.display="none",e.onclick=this._toggleEditMode.bind(this)):(t.style.display="none",e.style.display="none",i.style.display="block",e.onclick=null),this._createManipulatorBar()},e._createManipulatorBar=function(){if(this.boundFunction&&this.off("select",this.boundFunction),void 0!==this.edgeBeingEdited&&(this.edgeBeingEdited._disableControlNodes(),this.edgeBeingEdited=void 0,this.selectedControlNode=null,this.controlNodesActive=!1),this._restoreOverloadedFunctions(),this.freezeSimulation=!1,this.blockConnectingEdgeSelection=!1,this.forceAppendSelection=!1,1==this.editMode){for(;this.manipulationDiv.hasChildNodes();)this.manipulationDiv.removeChild(this.manipulationDiv.firstChild);this.manipulationDiv.innerHTML=""+this.constants.labels.add+"
"+this.constants.labels.link+"",1==this._getSelectedNodeCount()&&this.triggerFunctions.edit?this.manipulationDiv.innerHTML+="
"+this.constants.labels.editNode+"":1==this._getSelectedEdgeCount()&&0==this._getSelectedNodeCount()&&(this.manipulationDiv.innerHTML+="
"+this.constants.labels.editEdge+""),0==this._selectionIsEmpty()&&(this.manipulationDiv.innerHTML+="
"+this.constants.labels.del+"");var t=document.getElementById("network-manipulate-addNode");t.onclick=this._createAddNodeToolbar.bind(this);var e=document.getElementById("network-manipulate-connectNode");if(e.onclick=this._createAddEdgeToolbar.bind(this),1==this._getSelectedNodeCount()&&this.triggerFunctions.edit){var i=document.getElementById("network-manipulate-editNode");i.onclick=this._editNode.bind(this)}else if(1==this._getSelectedEdgeCount()&&0==this._getSelectedNodeCount()){var i=document.getElementById("network-manipulate-editEdge");i.onclick=this._createEditEdgeToolbar.bind(this)}if(0==this._selectionIsEmpty()){var s=document.getElementById("network-manipulate-delete");s.onclick=this._deleteSelected.bind(this)}var o=document.getElementById("network-manipulation-closeDiv");o.onclick=this._toggleEditMode.bind(this),this.boundFunction=this._createManipulatorBar.bind(this),this.on("select",this.boundFunction)}else{this.editModeDiv.innerHTML=""+this.constants.labels.edit+"";var n=document.getElementById("network-manipulate-editModeButton");n.onclick=this._toggleEditMode.bind(this)}},e._createAddNodeToolbar=function(){this._clearManipulatorBar(),this.boundFunction&&this.off("select",this.boundFunction),this.manipulationDiv.innerHTML=""+this.constants.labels.back+"
"+this.constants.labels.addDescription+"";var t=document.getElementById("network-manipulate-back");t.onclick=this._createManipulatorBar.bind(this),this.boundFunction=this._addNode.bind(this),this.on("select",this.boundFunction)},e._createAddEdgeToolbar=function(){this._clearManipulatorBar(),this._unselectAll(!0),this.freezeSimulation=!0,this.boundFunction&&this.off("select",this.boundFunction),this._unselectAll(),this.forceAppendSelection=!1,this.blockConnectingEdgeSelection=!0,this.manipulationDiv.innerHTML=""+this.constants.labels.back+"
"+this.constants.labels.linkDescription+"";var t=document.getElementById("network-manipulate-back");t.onclick=this._createManipulatorBar.bind(this),this.boundFunction=this._handleConnect.bind(this),this.on("select",this.boundFunction),this.cachedFunctions._handleTouch=this._handleTouch,this.cachedFunctions._handleOnRelease=this._handleOnRelease,this._handleTouch=this._handleConnect,this._handleOnRelease=this._finishConnect,this._redraw()},e._createEditEdgeToolbar=function(){this._clearManipulatorBar(),this.controlNodesActive=!0,this.boundFunction&&this.off("select",this.boundFunction),this.edgeBeingEdited=this._getSelectedEdge(),this.edgeBeingEdited._enableControlNodes(),this.manipulationDiv.innerHTML=""+this.constants.labels.back+"
"+this.constants.labels.editEdgeDescription+"";var t=document.getElementById("network-manipulate-back");t.onclick=this._createManipulatorBar.bind(this),this.cachedFunctions._handleTouch=this._handleTouch,this.cachedFunctions._handleOnRelease=this._handleOnRelease,this.cachedFunctions._handleTap=this._handleTap,this.cachedFunctions._handleDragStart=this._handleDragStart,this.cachedFunctions._handleOnDrag=this._handleOnDrag,this._handleTouch=this._selectControlNode,this._handleTap=function(){},this._handleOnDrag=this._controlNodeDrag,this._handleDragStart=function(){},this._handleOnRelease=this._releaseControlNode,this._redraw()},e._selectControlNode=function(t){this.edgeBeingEdited.controlNodes.from.unselect(),this.edgeBeingEdited.controlNodes.to.unselect(),this.selectedControlNode=this.edgeBeingEdited._getSelectedControlNode(this._XconvertDOMtoCanvas(t.x),this._YconvertDOMtoCanvas(t.y)),null!==this.selectedControlNode&&(this.selectedControlNode.select(),this.freezeSimulation=!0),this._redraw()},e._controlNodeDrag=function(t){var e=this._getPointer(t.gesture.center);null!==this.selectedControlNode&&void 0!==this.selectedControlNode&&(this.selectedControlNode.x=this._XconvertDOMtoCanvas(e.x),this.selectedControlNode.y=this._YconvertDOMtoCanvas(e.y)),this._redraw()},e._releaseControlNode=function(t){var e=this._getNodeAt(t);null!=e?(1==this.edgeBeingEdited.controlNodes.from.selected&&(this._editEdge(e.id,this.edgeBeingEdited.to.id),this.edgeBeingEdited.controlNodes.from.unselect()),1==this.edgeBeingEdited.controlNodes.to.selected&&(this._editEdge(this.edgeBeingEdited.from.id,e.id),this.edgeBeingEdited.controlNodes.to.unselect())):this.edgeBeingEdited._restoreControlNodes(),this.freezeSimulation=!1,this._redraw()},e._handleConnect=function(t){if(0==this._getSelectedNodeCount()){var e=this._getNodeAt(t);null!=e&&(e.clusterSize>1?alert("Cannot create edges to a cluster."):(this._selectObject(e,!1),this.sectors.support.nodes.targetNode=new o({id:"targetNode"},{},{},this.constants),this.sectors.support.nodes.targetNode.x=e.x,this.sectors.support.nodes.targetNode.y=e.y,this.sectors.support.nodes.targetViaNode=new o({id:"targetViaNode"},{},{},this.constants),this.sectors.support.nodes.targetViaNode.x=e.x,this.sectors.support.nodes.targetViaNode.y=e.y,this.sectors.support.nodes.targetViaNode.parentEdgeId="connectionEdge",this.edges.connectionEdge=new n({id:"connectionEdge",from:e.id,to:this.sectors.support.nodes.targetNode.id},this,this.constants),this.edges.connectionEdge.from=e,this.edges.connectionEdge.connected=!0,this.edges.connectionEdge.smooth=!0,this.edges.connectionEdge.selected=!0,this.edges.connectionEdge.to=this.sectors.support.nodes.targetNode,this.edges.connectionEdge.via=this.sectors.support.nodes.targetViaNode,this.cachedFunctions._handleOnDrag=this._handleOnDrag,this._handleOnDrag=function(t){var e=this._getPointer(t.gesture.center);this.sectors.support.nodes.targetNode.x=this._XconvertDOMtoCanvas(e.x),this.sectors.support.nodes.targetNode.y=this._YconvertDOMtoCanvas(e.y),this.sectors.support.nodes.targetViaNode.x=.5*(this._XconvertDOMtoCanvas(e.x)+this.edges.connectionEdge.from.x),this.sectors.support.nodes.targetViaNode.y=this._YconvertDOMtoCanvas(e.y)},this.moving=!0,this.start()))}},e._finishConnect=function(t){if(1==this._getSelectedNodeCount()){this._handleOnDrag=this.cachedFunctions._handleOnDrag,delete this.cachedFunctions._handleOnDrag;var e=this.edges.connectionEdge.fromId;delete this.edges.connectionEdge,delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode;var i=this._getNodeAt(t);null!=i&&(i.clusterSize>1?alert("Cannot create edges to a cluster."):(this._createEdge(e,i.id),this._createManipulatorBar())),this._unselectAll()}},e._addNode=function(){if(this._selectionIsEmpty()&&1==this.editMode){var t=this._pointerToPositionObject(this.pointerPosition),e={id:s.randomUUID(),x:t.left,y:t.top,label:"new",allowedToMoveX:!0,allowedToMoveY:!0};if(this.triggerFunctions.add)if(2==this.triggerFunctions.add.length){var i=this;this.triggerFunctions.add(e,function(t){i.nodesData.add(t),i._createManipulatorBar(),i.moving=!0,i.start()})}else alert(this.constants.labels.addError),this._createManipulatorBar(),this.moving=!0,this.start();else this.nodesData.add(e),this._createManipulatorBar(),this.moving=!0,this.start()}},e._createEdge=function(t,e){if(1==this.editMode){var i={from:t,to:e};if(this.triggerFunctions.connect)if(2==this.triggerFunctions.connect.length){var s=this;this.triggerFunctions.connect(i,function(t){s.edgesData.add(t),s.moving=!0,s.start()})}else alert(this.constants.labels.linkError),this.moving=!0,this.start();else this.edgesData.add(i),this.moving=!0,this.start()}},e._editEdge=function(t,e){if(1==this.editMode){var i={id:this.edgeBeingEdited.id,from:t,to:e};if(this.triggerFunctions.editEdge)if(2==this.triggerFunctions.editEdge.length){var s=this;this.triggerFunctions.editEdge(i,function(t){s.edgesData.update(t),s.moving=!0,s.start()})}else alert(this.constants.labels.linkError),this.moving=!0,this.start();else this.edgesData.update(i),this.moving=!0,this.start()}},e._editNode=function(){if(this.triggerFunctions.edit&&1==this.editMode){var t=this._getSelectedNode(),e={id:t.id,label:t.label,group:t.group,shape:t.shape,color:{background:t.color.background,border:t.color.border,highlight:{background:t.color.highlight.background,border:t.color.highlight.border}}};if(2==this.triggerFunctions.edit.length){var i=this;this.triggerFunctions.edit(e,function(t){i.nodesData.update(t),i._createManipulatorBar(),i.moving=!0,i.start()})}else alert(this.constants.labels.editError)}else alert(this.constants.labels.editBoundError)},e._deleteSelected=function(){if(!this._selectionIsEmpty()&&1==this.editMode)if(this._clusterInSelection())alert(this.constants.labels.deleteClusterError);else{var t=this.getSelectedNodes(),e=this.getSelectedEdges();if(this.triggerFunctions.del){var i=this,s={nodes:t,edges:e};(this.triggerFunctions.del.length=2)?this.triggerFunctions.del(s,function(t){i.edgesData.remove(t.edges),i.nodesData.remove(t.nodes),i._unselectAll(),i.moving=!0,i.start()}):alert(this.constants.labels.deleteError)}else this.edgesData.remove(e),this.nodesData.remove(t),this._unselectAll(),this.moving=!0,this.start()}}},function(t,e,i){var s=i(1);e._cleanNavigation=function(){var t=document.getElementById("network-navigation_wrapper");null!=t&&this.containerElement.removeChild(t),document.onmouseup=null},e._loadNavigationElements=function(){this._cleanNavigation(),this.navigationDivs={};var t=["up","down","left","right","zoomIn","zoomOut","zoomExtends"],e=["_moveUp","_moveDown","_moveLeft","_moveRight","_zoomIn","_zoomOut","zoomExtent"];this.navigationDivs.wrapper=document.createElement("div"),this.navigationDivs.wrapper.id="network-navigation_wrapper",this.navigationDivs.wrapper.style.position="absolute",this.navigationDivs.wrapper.style.width=this.frame.canvas.clientWidth+"px",this.navigationDivs.wrapper.style.height=this.frame.canvas.clientHeight+"px",this.containerElement.insertBefore(this.navigationDivs.wrapper,this.frame);for(var i=0;i0){"RL"==this.constants.hierarchicalLayout.direction||"DU"==this.constants.hierarchicalLayout.direction?this.constants.hierarchicalLayout.levelSeparation*=-1:this.constants.hierarchicalLayout.levelSeparation=Math.abs(this.constants.hierarchicalLayout.levelSeparation),"RL"==this.constants.hierarchicalLayout.direction||"LR"==this.constants.hierarchicalLayout.direction?1==this.constants.smoothCurves.enabled&&(this.constants.smoothCurves.type="vertical"):1==this.constants.smoothCurves.enabled&&(this.constants.smoothCurves.type="horizontal");var t,e,i=0,s=!1,o=!1;for(e in this.nodes)this.nodes.hasOwnProperty(e)&&(t=this.nodes[e],-1!=t.level?s=!0:o=!0,is&&(n.xFixed=!1,n.x=i[n.level].minPos,r=!0):n.yFixed&&n.level>s&&(n.yFixed=!1,n.y=i[n.level].minPos,r=!0),1==r&&(i[n.level].minPos+=i[n.level].nodeSpacing,n.edges.length>1&&this._placeBranchNodes(n.edges,n.id,i,n.level))}},e._setLevel=function(t,e,i){for(var s=0;st)&&(o.level=t,e.length>1&&this._setLevel(t+1,o.edges,o.id))}},e._restoreNodes=function(){for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.nodes[t].xFixed=!1,this.nodes[t].yFixed=!1)}},function(t,e,i){function s(){this.constants.smoothCurves.enabled=!this.constants.smoothCurves.enabled;var t=document.getElementById("graph_toggleSmooth");t.style.background=1==this.constants.smoothCurves.enabled?"#A4FF56":"#FF8532",this._configureSmoothCurves(!1)}function o(){for(var t in this.calculationNodes)this.calculationNodes.hasOwnProperty(t)&&(this.calculationNodes[t].vx=0,this.calculationNodes[t].vy=0,this.calculationNodes[t].fx=0,this.calculationNodes[t].fy=0);1==this.constants.hierarchicalLayout.enabled?(this._setupHierarchicalLayout(),a.call(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),a.call(this,"graph_H_cg",1,"physics_centralGravity"),a.call(this,"graph_H_sc",1,"physics_springConstant"),a.call(this,"graph_H_sl",1,"physics_springLength"),a.call(this,"graph_H_damp",1,"physics_damping")):this.repositionNodes(),this.moving=!0,this.start()}function n(){var t="No options are required, default values used.",e=[],i=document.getElementById("graph_physicsMethod1"),s=document.getElementById("graph_physicsMethod2");if(1==i.checked){if(this.constants.physics.barnesHut.gravitationalConstant!=this.backupConstants.physics.barnesHut.gravitationalConstant&&e.push("gravitationalConstant: "+this.constants.physics.barnesHut.gravitationalConstant),this.constants.physics.centralGravity!=this.backupConstants.physics.barnesHut.centralGravity&&e.push("centralGravity: "+this.constants.physics.centralGravity),this.constants.physics.springLength!=this.backupConstants.physics.barnesHut.springLength&&e.push("springLength: "+this.constants.physics.springLength),this.constants.physics.springConstant!=this.backupConstants.physics.barnesHut.springConstant&&e.push("springConstant: "+this.constants.physics.springConstant),this.constants.physics.damping!=this.backupConstants.physics.barnesHut.damping&&e.push("damping: "+this.constants.physics.damping),0!=e.length){t="var options = {",t+="physics: {barnesHut: {";for(var o=0;othis.constants.clustering.clusterThreshold&&1==this.constants.clustering.enabled&&this.clusterToFit(this.constants.clustering.reduceToNodes,!1),this._calculateForces())},e._calculateForces=function(){this._calculateGravitationalForces(),this._calculateNodeForces(),this.constants.physics.springConstant>0&&(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic?this._calculateSpringForcesWithSupport():1==this.constants.physics.hierarchicalRepulsion.enabled?this._calculateHierarchicalSpringForces():this._calculateSpringForces())},e._updateCalculationNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this.calculationNodes={},this.calculationNodeIndices=[];for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.calculationNodes[t]=this.nodes[t]);var e=this.sectors.support.nodes;for(var i in e)e.hasOwnProperty(i)&&(this.edges.hasOwnProperty(e[i].parentEdgeId)?this.calculationNodes[i]=e[i]:e[i]._setForce(0,0));for(var s in this.calculationNodes)this.calculationNodes.hasOwnProperty(s)&&this.calculationNodeIndices.push(s)}else this.calculationNodes=this.nodes,this.calculationNodeIndices=this.nodeIndices},e._calculateGravitationalForces=function(){var t,e,i,s,o,n=this.calculationNodes,r=this.constants.physics.centralGravity,a=0;for(o=0;oSimulation Mode:Barnes HutRepulsionHierarchical
Options:
',this.containerElement.parentElement.insertBefore(this.physicsConfiguration,this.containerElement),this.optionsDiv=document.createElement("div"),this.optionsDiv.style.fontSize="14px",this.optionsDiv.style.fontFamily="verdana",this.containerElement.parentElement.insertBefore(this.optionsDiv,this.containerElement);var e;e=document.getElementById("graph_BH_gc"),e.onchange=a.bind(this,"graph_BH_gc",-1,"physics_barnesHut_gravitationalConstant"),e=document.getElementById("graph_BH_cg"),e.onchange=a.bind(this,"graph_BH_cg",1,"physics_centralGravity"),e=document.getElementById("graph_BH_sc"),e.onchange=a.bind(this,"graph_BH_sc",1,"physics_springConstant"),e=document.getElementById("graph_BH_sl"),e.onchange=a.bind(this,"graph_BH_sl",1,"physics_springLength"),e=document.getElementById("graph_BH_damp"),e.onchange=a.bind(this,"graph_BH_damp",1,"physics_damping"),e=document.getElementById("graph_R_nd"),e.onchange=a.bind(this,"graph_R_nd",1,"physics_repulsion_nodeDistance"),e=document.getElementById("graph_R_cg"),e.onchange=a.bind(this,"graph_R_cg",1,"physics_centralGravity"),e=document.getElementById("graph_R_sc"),e.onchange=a.bind(this,"graph_R_sc",1,"physics_springConstant"),e=document.getElementById("graph_R_sl"),e.onchange=a.bind(this,"graph_R_sl",1,"physics_springLength"),e=document.getElementById("graph_R_damp"),e.onchange=a.bind(this,"graph_R_damp",1,"physics_damping"),e=document.getElementById("graph_H_nd"),e.onchange=a.bind(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),e=document.getElementById("graph_H_cg"),e.onchange=a.bind(this,"graph_H_cg",1,"physics_centralGravity"),e=document.getElementById("graph_H_sc"),e.onchange=a.bind(this,"graph_H_sc",1,"physics_springConstant"),e=document.getElementById("graph_H_sl"),e.onchange=a.bind(this,"graph_H_sl",1,"physics_springLength"),e=document.getElementById("graph_H_damp"),e.onchange=a.bind(this,"graph_H_damp",1,"physics_damping"),e=document.getElementById("graph_H_direction"),e.onchange=a.bind(this,"graph_H_direction",t,"hierarchicalLayout_direction"),e=document.getElementById("graph_H_levsep"),e.onchange=a.bind(this,"graph_H_levsep",1,"hierarchicalLayout_levelSeparation"),e=document.getElementById("graph_H_nspac"),e.onchange=a.bind(this,"graph_H_nspac",1,"hierarchicalLayout_nodeSpacing");var i=document.getElementById("graph_physicsMethod1"),d=document.getElementById("graph_physicsMethod2"),l=document.getElementById("graph_physicsMethod3");d.checked=!0,this.constants.physics.barnesHut.enabled&&(i.checked=!0),this.constants.hierarchicalLayout.enabled&&(l.checked=!0);var c=document.getElementById("graph_toggleSmooth"),p=document.getElementById("graph_repositionNodes"),u=document.getElementById("graph_generateOptions");c.onclick=s.bind(this),p.onclick=o.bind(this),u.onclick=n.bind(this),c.style.background=1==this.constants.smoothCurves&&0==this.constants.dynamicSmoothCurves?"#A4FF56":"#FF8532",r.apply(this),i.onchange=r.bind(this),d.onchange=r.bind(this),l.onchange=r.bind(this)}},e._overWriteGraphConstants=function(t,e){var i=t.split("_");1==i.length?this.constants[i[0]]=e:2==i.length?this.constants[i[0]][i[1]]=e:3==i.length&&(this.constants[i[0]][i[1]][i[2]]=e)}},function(t,e){e._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l,c=this.calculationNodes,p=this.calculationNodeIndices,u=-2/3,m=4/3,g=this.constants.physics.repulsion.nodeDistance,f=g;for(d=0;di&&(r=.5*f>i?1:v*i+m,r*=0==n?1:1+n*this.constants.clustering.forceAmplification,r/=i,s=t*r,o=e*r,a.fx-=s,a.fy-=o,h.fx+=s,h.fy+=o)}}},function(t,e){e._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l=this.calculationNodes,c=this.calculationNodeIndices,p=this.constants.physics.hierarchicalRepulsion.nodeDistance;for(h=0;hi?-Math.pow(u*i,2)+Math.pow(u*p,2):0,0==i?i=.01:n/=i,s=t*n,o=e*n,r.fx-=s,r.fy-=o,a.fx+=s,a.fy+=o}},e._calculateHierarchicalSpringForces=function(){for(var t,e,i,s,o,n,r,a,h,d=this.edges,l=this.calculationNodes,c=this.calculationNodeIndices,p=0;pn;n++)t=e[i[n]],this._getForceContribution(o.root.children.NW,t),this._getForceContribution(o.root.children.NE,t),this._getForceContribution(o.root.children.SW,t),this._getForceContribution(o.root.children.SE,t)}},e._getForceContribution=function(t,e){if(t.childrenCount>0){var i,s,o;if(i=t.centerOfMass.x-e.x,s=t.centerOfMass.y-e.y,o=Math.sqrt(i*i+s*s),o*t.calcSize>this.constants.physics.barnesHut.theta){0==o&&(o=.1*Math.random(),i=o);var n=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.mass/(o*o*o),r=i*n,a=s*n;e.fx+=r,e.fy+=a}else if(4==t.childrenCount)this._getForceContribution(t.children.NW,e),this._getForceContribution(t.children.NE,e),this._getForceContribution(t.children.SW,e),this._getForceContribution(t.children.SE,e);else if(t.children.data.id!=e.id){0==o&&(o=.5*Math.random(),i=o);var n=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.mass/(o*o*o),r=i*n,a=s*n;e.fx+=r,e.fy+=a}}},e._formBarnesHutTree=function(t,e){for(var i,s=e.length,o=Number.MAX_VALUE,n=Number.MAX_VALUE,r=-Number.MAX_VALUE,a=-Number.MAX_VALUE,h=0;s>h;h++){var d=t[e[h]].x,l=t[e[h]].y;o>d&&(o=d),d>r&&(r=d),n>l&&(n=l),l>a&&(a=l)}var c=Math.abs(r-o)-Math.abs(a-n);c>0?(n-=.5*c,a+=.5*c):(o+=.5*c,r-=.5*c);var p=1e-5,u=Math.max(p,Math.abs(r-o)),m=.5*u,g=.5*(o+r),f=.5*(n+a),v={root:{centerOfMass:{x:0,y:0},mass:0,range:{minX:g-m,maxX:g+m,minY:f-m,maxY:f+m},size:u,calcSize:1/u,children:{data:null},maxWidth:0,level:0,childrenCount:4}};for(this._splitBranch(v.root),h=0;s>h;h++)i=t[e[h]],this._placeInTree(v.root,i);this.barnesHutTree=v},e._updateBranchMass=function(t,e){var i=t.mass+e.mass,s=1/i;t.centerOfMass.x=t.centerOfMass.x*t.mass+e.x*e.mass,t.centerOfMass.x*=s,t.centerOfMass.y=t.centerOfMass.y*t.mass+e.y*e.mass,t.centerOfMass.y*=s,t.mass=i;var o=Math.max(Math.max(e.height,e.radius),e.width);t.maxWidth=t.maxWidthe.x?t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NW"):this._placeInRegion(t,e,"SW"):t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NE"):this._placeInRegion(t,e,"SE")},e._placeInRegion=function(t,e,i){switch(t.children[i].childrenCount){case 0:t.children[i].children.data=e,t.children[i].childrenCount=1,this._updateBranchMass(t.children[i],e);break;case 1:t.children[i].children.data.x==e.x&&t.children[i].children.data.y==e.y?(e.x+=Math.random(),e.y+=Math.random()):(this._splitBranch(t.children[i]),this._placeInTree(t.children[i],e));break;case 4:this._placeInTree(t.children[i],e)}},e._splitBranch=function(t){var e=null;1==t.childrenCount&&(e=t.children.data,t.mass=0,t.centerOfMass.x=0,t.centerOfMass.y=0),t.childrenCount=4,t.children.data=null,this._insertRegion(t,"NW"),this._insertRegion(t,"NE"),this._insertRegion(t,"SW"),this._insertRegion(t,"SE"),null!=e&&this._placeInTree(t,e)},e._insertRegion=function(t,e){var i,s,o,n,r=.5*t.size;switch(e){case"NW":i=t.range.minX,s=t.range.minX+r,o=t.range.minY,n=t.range.minY+r;break;case"NE":i=t.range.minX+r,s=t.range.maxX,o=t.range.minY,n=t.range.minY+r;break;case"SW":i=t.range.minX,s=t.range.minX+r,o=t.range.minY+r,n=t.range.maxY;break;case"SE":i=t.range.minX+r,s=t.range.maxX,o=t.range.minY+r,n=t.range.maxY}t.children[e]={centerOfMass:{x:0,y:0},mass:0,range:{minX:i,maxX:s,minY:o,maxY:n},size:.5*t.size,calcSize:2*t.calcSize,children:{data:null},maxWidth:0,level:t.level+1,childrenCount:0}},e._drawTree=function(t,e){void 0!==this.barnesHutTree&&(t.lineWidth=1,this._drawBranch(this.barnesHutTree.root,t,e))},e._drawBranch=function(t,e,i){void 0===i&&(i="#FF0000"),4==t.childrenCount&&(this._drawBranch(t.children.NW,e),this._drawBranch(t.children.NE,e),this._drawBranch(t.children.SE,e),this._drawBranch(t.children.SW,e)),e.strokeStyle=i,e.beginPath(),e.moveTo(t.range.minX,t.range.minY),e.lineTo(t.range.maxX,t.range.minY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.minY),e.lineTo(t.range.maxX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.maxY),e.lineTo(t.range.minX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.minX,t.range.maxY),e.lineTo(t.range.minX,t.range.minY),e.stroke()}}])}); //# sourceMappingURL=vis.map \ No newline at end of file diff --git a/dist/vis.js b/dist/vis.js index c910d6ae..53f4b585 100644 --- a/dist/vis.js +++ b/dist/vis.js @@ -144,6 +144,10 @@ return /******/ (function(modules) { // webpackBootstrap throw new Error('Graph is renamed to Network. Please create a graph as new vis.Network(...)'); }; + // bundled external libraries + exports.moment = __webpack_require__(39); + exports.hammer = __webpack_require__(40); + /***/ }, /* 1 */ @@ -153,7 +157,7 @@ return /******/ (function(modules) { // webpackBootstrap // first check if moment.js is already loaded in the browser window, if so, // use this instance. Else, load via commonjs. - var moment = __webpack_require__(41); + var moment = __webpack_require__(39); /** * Test whether given object is a number @@ -6021,7 +6025,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ function(module, exports, __webpack_require__) { var Emitter = __webpack_require__(44); - var Hammer = __webpack_require__(42); + var Hammer = __webpack_require__(40); var util = __webpack_require__(1); var DataSet = __webpack_require__(3); var DataView = __webpack_require__(4); @@ -6936,7 +6940,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ function(module, exports, __webpack_require__) { var Emitter = __webpack_require__(44); - var Hammer = __webpack_require__(42); + var Hammer = __webpack_require__(40); var util = __webpack_require__(1); var DataSet = __webpack_require__(3); var DataView = __webpack_require__(4); @@ -8052,8 +8056,8 @@ return /******/ (function(modules) { // webpackBootstrap /***/ function(module, exports, __webpack_require__) { var util = __webpack_require__(1); - var hammerUtil = __webpack_require__(39); - var moment = __webpack_require__(41); + var hammerUtil = __webpack_require__(41); + var moment = __webpack_require__(39); var Component = __webpack_require__(18); /** @@ -8705,7 +8709,7 @@ return /******/ (function(modules) { // webpackBootstrap /* 17 */ /***/ function(module, exports, __webpack_require__) { - var moment = __webpack_require__(41); + var moment = __webpack_require__(39); /** * @constructor TimeStep @@ -9379,7 +9383,7 @@ return /******/ (function(modules) { // webpackBootstrap /* 20 */ /***/ function(module, exports, __webpack_require__) { - var Hammer = __webpack_require__(42); + var Hammer = __webpack_require__(40); var util = __webpack_require__(1); var Component = __webpack_require__(18); @@ -10611,7 +10615,7 @@ return /******/ (function(modules) { // webpackBootstrap /* 24 */ /***/ function(module, exports, __webpack_require__) { - var Hammer = __webpack_require__(42); + var Hammer = __webpack_require__(40); var util = __webpack_require__(1); var DataSet = __webpack_require__(3); var DataView = __webpack_require__(4); @@ -13666,7 +13670,7 @@ return /******/ (function(modules) { // webpackBootstrap /* 28 */ /***/ function(module, exports, __webpack_require__) { - var Hammer = __webpack_require__(42); + var Hammer = __webpack_require__(40); /** * @constructor Item @@ -14267,7 +14271,7 @@ return /******/ (function(modules) { // webpackBootstrap /* 31 */ /***/ function(module, exports, __webpack_require__) { - var Hammer = __webpack_require__(42); + var Hammer = __webpack_require__(40); var Item = __webpack_require__(28); /** @@ -14565,10 +14569,10 @@ return /******/ (function(modules) { // webpackBootstrap /***/ function(module, exports, __webpack_require__) { var Emitter = __webpack_require__(44); - var Hammer = __webpack_require__(42); + var Hammer = __webpack_require__(40); var mousetrap = __webpack_require__(45); var util = __webpack_require__(1); - var hammerUtil = __webpack_require__(39); + var hammerUtil = __webpack_require__(41); var DataSet = __webpack_require__(3); var DataView = __webpack_require__(4); var dotparser = __webpack_require__(38); @@ -14580,7 +14584,7 @@ return /******/ (function(modules) { // webpackBootstrap var MixinLoader = __webpack_require__(43); // Load custom shapes into CanvasRenderingContext2D - __webpack_require__(40); + __webpack_require__(42); /** * @constructor Network @@ -20249,7 +20253,32 @@ return /******/ (function(modules) { // webpackBootstrap /* 39 */ /***/ function(module, exports, __webpack_require__) { - var Hammer = __webpack_require__(42); + // first check if moment.js is already loaded in the browser window, if so, + // use this instance. Else, load via commonjs. + module.exports = (typeof window !== 'undefined') && window['moment'] || __webpack_require__(46); + + +/***/ }, +/* 40 */ +/***/ function(module, exports, __webpack_require__) { + + // Only load hammer.js when in a browser environment + // (loading hammer.js in a node.js environment gives errors) + if (typeof window !== 'undefined') { + module.exports = window['Hammer'] || __webpack_require__(47); + } + else { + module.exports = function () { + throw Error('hammer.js is only available in a browser, not in node.js.'); + } + } + + +/***/ }, +/* 41 */ +/***/ function(module, exports, __webpack_require__) { + + var Hammer = __webpack_require__(40); /** * Fake a hammer.js gesture. Event can be a ScrollEvent or MouseMoveEvent @@ -20280,7 +20309,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 40 */ +/* 42 */ /***/ function(module, exports, __webpack_require__) { /** @@ -20510,42 +20539,17 @@ return /******/ (function(modules) { // webpackBootstrap } -/***/ }, -/* 41 */ -/***/ function(module, exports, __webpack_require__) { - - // first check if moment.js is already loaded in the browser window, if so, - // use this instance. Else, load via commonjs. - module.exports = (typeof window !== 'undefined') && window['moment'] || __webpack_require__(53); - - -/***/ }, -/* 42 */ -/***/ function(module, exports, __webpack_require__) { - - // Only load hammer.js when in a browser environment - // (loading hammer.js in a node.js environment gives errors) - if (typeof window !== 'undefined') { - module.exports = window['Hammer'] || __webpack_require__(54); - } - else { - module.exports = function () { - throw Error('hammer.js is only available in a browser, not in node.js.'); - } - } - - /***/ }, /* 43 */ /***/ function(module, exports, __webpack_require__) { - var PhysicsMixin = __webpack_require__(52); - var ClusterMixin = __webpack_require__(46); - var SectorsMixin = __webpack_require__(47); - var SelectionMixin = __webpack_require__(48); - var ManipulationMixin = __webpack_require__(49); - var NavigationMixin = __webpack_require__(50); - var HierarchicalLayoutMixin = __webpack_require__(51); + var PhysicsMixin = __webpack_require__(54); + var ClusterMixin = __webpack_require__(48); + var SectorsMixin = __webpack_require__(49); + var SelectionMixin = __webpack_require__(50); + var ManipulationMixin = __webpack_require__(51); + var NavigationMixin = __webpack_require__(52); + var HierarchicalLayoutMixin = __webpack_require__(53); /** * Load a mixin into the network object @@ -21718,9125 +21722,6575 @@ return /******/ (function(modules) { // webpackBootstrap /* 46 */ /***/ function(module, exports, __webpack_require__) { - /** - * Creation of the ClusterMixin var. - * - * This contains all the functions the Network object can use to employ clustering - */ - - /** - * This is only called in the constructor of the network object - * - */ - exports.startWithClustering = function() { - // cluster if the data set is big - this.clusterToFit(this.constants.clustering.initialMaxNodes, true); - - // updates the lables after clustering - this.updateLabels(); + var __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(global, module) {//! moment.js + //! version : 2.7.0 + //! authors : Tim Wood, Iskren Chernev, Moment.js contributors + //! license : MIT + //! momentjs.com - // this is called here because if clusterin is disabled, the start and stabilize are called in - // the setData function. - if (this.stabilize) { - this._stabilize(); - } - this.start(); - }; + (function (undefined) { - /** - * This function clusters until the initialMaxNodes has been reached - * - * @param {Number} maxNumberOfNodes - * @param {Boolean} reposition - */ - exports.clusterToFit = function(maxNumberOfNodes, reposition) { - var numberOfNodes = this.nodeIndices.length; + /************************************ + Constants + ************************************/ - var maxLevels = 50; - var level = 0; + var moment, + VERSION = "2.7.0", + // the global-scope this is NOT the global object in Node.js + globalScope = typeof global !== 'undefined' ? global : this, + oldGlobalMoment, + round = Math.round, + i, - // we first cluster the hubs, then we pull in the outliers, repeat - while (numberOfNodes > maxNumberOfNodes && level < maxLevels) { - if (level % 3 == 0) { - this.forceAggregateHubs(true); - this.normalizeClusterLevels(); - } - else { - this.increaseClusterLevel(); // this also includes a cluster normalization - } + YEAR = 0, + MONTH = 1, + DATE = 2, + HOUR = 3, + MINUTE = 4, + SECOND = 5, + MILLISECOND = 6, - numberOfNodes = this.nodeIndices.length; - level += 1; - } + // internal storage for language config files + languages = {}, - // after the clustering we reposition the nodes to reduce the initial chaos - if (level > 0 && reposition == true) { - this.repositionNodes(); - } - this._updateCalculationNodes(); - }; + // moment internal properties + momentProperties = { + _isAMomentObject: null, + _i : null, + _f : null, + _l : null, + _strict : null, + _tzm : null, + _isUTC : null, + _offset : null, // optional. Combine with _isUTC + _pf : null, + _lang : null // optional + }, - /** - * This function can be called to open up a specific cluster. It is only called by - * It will unpack the cluster back one level. - * - * @param node | Node object: cluster to open. - */ - exports.openCluster = function(node) { - var isMovingBeforeClustering = this.moving; - if (node.clusterSize > this.constants.clustering.sectorThreshold && this._nodeInActiveArea(node) && - !(this._sector() == "default" && this.nodeIndices.length == 1)) { - // this loads a new sector, loads the nodes and edges and nodeIndices of it. - this._addSector(node); - var level = 0; + // check for nodeJS + hasModule = (typeof module !== 'undefined' && module.exports), - // we decluster until we reach a decent number of nodes - while ((this.nodeIndices.length < this.constants.clustering.initialMaxNodes) && (level < 10)) { - this.decreaseClusterLevel(); - level += 1; - } + // ASP.NET json date format regex + aspNetJsonRegex = /^\/?Date\((\-?\d+)/i, + aspNetTimeSpanJsonRegex = /(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/, - } - else { - this._expandClusterNode(node,false,true); + // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html + // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere + isoDurationRegex = /^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/, - // update the index list, dynamic edges and labels - this._updateNodeIndexList(); - this._updateDynamicEdges(); - this._updateCalculationNodes(); - this.updateLabels(); - } + // format tokens + formattingTokens = /(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|X|zz?|ZZ?|.)/g, + localFormattingTokens = /(\[[^\[]*\])|(\\)?(LT|LL?L?L?|l{1,4})/g, - // if the simulation was settled, we restart the simulation if a cluster has been formed or expanded - if (this.moving != isMovingBeforeClustering) { - this.start(); - } - }; + // parsing token regexes + parseTokenOneOrTwoDigits = /\d\d?/, // 0 - 99 + parseTokenOneToThreeDigits = /\d{1,3}/, // 0 - 999 + parseTokenOneToFourDigits = /\d{1,4}/, // 0 - 9999 + parseTokenOneToSixDigits = /[+\-]?\d{1,6}/, // -999,999 - 999,999 + parseTokenDigits = /\d+/, // nonzero number of digits + parseTokenWord = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i, // any word (or two) characters or numbers including two/three word month in arabic. + parseTokenTimezone = /Z|[\+\-]\d\d:?\d\d/gi, // +00:00 -00:00 +0000 -0000 or Z + parseTokenT = /T/i, // T (ISO separator) + parseTokenTimestampMs = /[\+\-]?\d+(\.\d{1,3})?/, // 123456789 123456789.123 + parseTokenOrdinal = /\d{1,2}/, + //strict parsing regexes + parseTokenOneDigit = /\d/, // 0 - 9 + parseTokenTwoDigits = /\d\d/, // 00 - 99 + parseTokenThreeDigits = /\d{3}/, // 000 - 999 + parseTokenFourDigits = /\d{4}/, // 0000 - 9999 + parseTokenSixDigits = /[+-]?\d{6}/, // -999,999 - 999,999 + parseTokenSignedNumber = /[+-]?\d+/, // -inf - inf - /** - * This calls the updateClustes with default arguments - */ - exports.updateClustersDefault = function() { - if (this.constants.clustering.enabled == true) { - this.updateClusters(0,false,false); - } - }; + // iso 8601 regex + // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00) + isoRegex = /^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/, + isoFormat = 'YYYY-MM-DDTHH:mm:ssZ', - /** - * This function can be called to increase the cluster level. This means that the nodes with only one edge connection will - * be clustered with their connected node. This can be repeated as many times as needed. - * This can be called externally (by a keybind for instance) to reduce the complexity of big datasets. - */ - exports.increaseClusterLevel = function() { - this.updateClusters(-1,false,true); - }; + isoDates = [ + ['YYYYYY-MM-DD', /[+-]\d{6}-\d{2}-\d{2}/], + ['YYYY-MM-DD', /\d{4}-\d{2}-\d{2}/], + ['GGGG-[W]WW-E', /\d{4}-W\d{2}-\d/], + ['GGGG-[W]WW', /\d{4}-W\d{2}/], + ['YYYY-DDD', /\d{4}-\d{3}/] + ], + // iso time formats and regexes + isoTimes = [ + ['HH:mm:ss.SSSS', /(T| )\d\d:\d\d:\d\d\.\d+/], + ['HH:mm:ss', /(T| )\d\d:\d\d:\d\d/], + ['HH:mm', /(T| )\d\d:\d\d/], + ['HH', /(T| )\d\d/] + ], - /** - * This function can be called to decrease the cluster level. This means that the nodes with only one edge connection will - * be unpacked if they are a cluster. This can be repeated as many times as needed. - * This can be called externally (by a key-bind for instance) to look into clusters without zooming. - */ - exports.decreaseClusterLevel = function() { - this.updateClusters(1,false,true); - }; + // timezone chunker "+10:00" > ["10", "00"] or "-1530" > ["-15", "30"] + parseTimezoneChunker = /([\+\-]|\d\d)/gi, + // getter and setter names + proxyGettersAndSetters = 'Date|Hours|Minutes|Seconds|Milliseconds'.split('|'), + unitMillisecondFactors = { + 'Milliseconds' : 1, + 'Seconds' : 1e3, + 'Minutes' : 6e4, + 'Hours' : 36e5, + 'Days' : 864e5, + 'Months' : 2592e6, + 'Years' : 31536e6 + }, - /** - * This is the main clustering function. It clusters and declusters on zoom or forced - * This function clusters on zoom, it can be called with a predefined zoom direction - * If out, check if we can form clusters, if in, check if we can open clusters. - * This function is only called from _zoom() - * - * @param {Number} zoomDirection | -1 / 0 / +1 for zoomOut / determineByZoom / zoomIn - * @param {Boolean} recursive | enabled or disable recursive calling of the opening of clusters - * @param {Boolean} force | enabled or disable forcing - * @param {Boolean} doNotStart | if true do not call start - * - */ - exports.updateClusters = function(zoomDirection,recursive,force,doNotStart) { - var isMovingBeforeClustering = this.moving; - var amountOfNodes = this.nodeIndices.length; + unitAliases = { + ms : 'millisecond', + s : 'second', + m : 'minute', + h : 'hour', + d : 'day', + D : 'date', + w : 'week', + W : 'isoWeek', + M : 'month', + Q : 'quarter', + y : 'year', + DDD : 'dayOfYear', + e : 'weekday', + E : 'isoWeekday', + gg: 'weekYear', + GG: 'isoWeekYear' + }, - // on zoom out collapse the sector if the scale is at the level the sector was made - if (this.previousScale > this.scale && zoomDirection == 0) { - this._collapseSector(); - } + camelFunctions = { + dayofyear : 'dayOfYear', + isoweekday : 'isoWeekday', + isoweek : 'isoWeek', + weekyear : 'weekYear', + isoweekyear : 'isoWeekYear' + }, - // check if we zoom in or out - if (this.previousScale > this.scale || zoomDirection == -1) { // zoom out - // forming clusters when forced pulls outliers in. When not forced, the edge length of the - // outer nodes determines if it is being clustered - this._formClusters(force); - } - else if (this.previousScale < this.scale || zoomDirection == 1) { // zoom in - if (force == true) { - // _openClusters checks for each node if the formationScale of the cluster is smaller than - // the current scale and if so, declusters. When forced, all clusters are reduced by one step - this._openClusters(recursive,force); - } - else { - // if a cluster takes up a set percentage of the active window - this._openClustersBySize(); - } - } - this._updateNodeIndexList(); + // format function strings + formatFunctions = {}, - // if a cluster was NOT formed and the user zoomed out, we try clustering by hubs - if (this.nodeIndices.length == amountOfNodes && (this.previousScale > this.scale || zoomDirection == -1)) { - this._aggregateHubs(force); - this._updateNodeIndexList(); - } + // default relative time thresholds + relativeTimeThresholds = { + s: 45, //seconds to minutes + m: 45, //minutes to hours + h: 22, //hours to days + dd: 25, //days to month (month == 1) + dm: 45, //days to months (months > 1) + dy: 345 //days to year + }, - // we now reduce chains. - if (this.previousScale > this.scale || zoomDirection == -1) { // zoom out - this.handleChains(); - this._updateNodeIndexList(); - } + // tokens to ordinalize and pad + ordinalizeTokens = 'DDD w W M D d'.split(' '), + paddedTokens = 'M D H h m s w W'.split(' '), - this.previousScale = this.scale; + formatTokenFunctions = { + M : function () { + return this.month() + 1; + }, + MMM : function (format) { + return this.lang().monthsShort(this, format); + }, + MMMM : function (format) { + return this.lang().months(this, format); + }, + D : function () { + return this.date(); + }, + DDD : function () { + return this.dayOfYear(); + }, + d : function () { + return this.day(); + }, + dd : function (format) { + return this.lang().weekdaysMin(this, format); + }, + ddd : function (format) { + return this.lang().weekdaysShort(this, format); + }, + dddd : function (format) { + return this.lang().weekdays(this, format); + }, + w : function () { + return this.week(); + }, + W : function () { + return this.isoWeek(); + }, + YY : function () { + return leftZeroFill(this.year() % 100, 2); + }, + YYYY : function () { + return leftZeroFill(this.year(), 4); + }, + YYYYY : function () { + return leftZeroFill(this.year(), 5); + }, + YYYYYY : function () { + var y = this.year(), sign = y >= 0 ? '+' : '-'; + return sign + leftZeroFill(Math.abs(y), 6); + }, + gg : function () { + return leftZeroFill(this.weekYear() % 100, 2); + }, + gggg : function () { + return leftZeroFill(this.weekYear(), 4); + }, + ggggg : function () { + return leftZeroFill(this.weekYear(), 5); + }, + GG : function () { + return leftZeroFill(this.isoWeekYear() % 100, 2); + }, + GGGG : function () { + return leftZeroFill(this.isoWeekYear(), 4); + }, + GGGGG : function () { + return leftZeroFill(this.isoWeekYear(), 5); + }, + e : function () { + return this.weekday(); + }, + E : function () { + return this.isoWeekday(); + }, + a : function () { + return this.lang().meridiem(this.hours(), this.minutes(), true); + }, + A : function () { + return this.lang().meridiem(this.hours(), this.minutes(), false); + }, + H : function () { + return this.hours(); + }, + h : function () { + return this.hours() % 12 || 12; + }, + m : function () { + return this.minutes(); + }, + s : function () { + return this.seconds(); + }, + S : function () { + return toInt(this.milliseconds() / 100); + }, + SS : function () { + return leftZeroFill(toInt(this.milliseconds() / 10), 2); + }, + SSS : function () { + return leftZeroFill(this.milliseconds(), 3); + }, + SSSS : function () { + return leftZeroFill(this.milliseconds(), 3); + }, + Z : function () { + var a = -this.zone(), + b = "+"; + if (a < 0) { + a = -a; + b = "-"; + } + return b + leftZeroFill(toInt(a / 60), 2) + ":" + leftZeroFill(toInt(a) % 60, 2); + }, + ZZ : function () { + var a = -this.zone(), + b = "+"; + if (a < 0) { + a = -a; + b = "-"; + } + return b + leftZeroFill(toInt(a / 60), 2) + leftZeroFill(toInt(a) % 60, 2); + }, + z : function () { + return this.zoneAbbr(); + }, + zz : function () { + return this.zoneName(); + }, + X : function () { + return this.unix(); + }, + Q : function () { + return this.quarter(); + } + }, - // rest of the update the index list, dynamic edges and labels - this._updateDynamicEdges(); - this.updateLabels(); + lists = ['months', 'monthsShort', 'weekdays', 'weekdaysShort', 'weekdaysMin']; - // if a cluster was formed, we increase the clusterSession - if (this.nodeIndices.length < amountOfNodes) { // this means a clustering operation has taken place - this.clusterSession += 1; - // if clusters have been made, we normalize the cluster level - this.normalizeClusterLevels(); - } + // Pick the first defined of two or three arguments. dfl comes from + // default. + function dfl(a, b, c) { + switch (arguments.length) { + case 2: return a != null ? a : b; + case 3: return a != null ? a : b != null ? b : c; + default: throw new Error("Implement me"); + } + } - if (doNotStart == false || doNotStart === undefined) { - // if the simulation was settled, we restart the simulation if a cluster has been formed or expanded - if (this.moving != isMovingBeforeClustering) { - this.start(); + function defaultParsingFlags() { + // We need to deep clone this object, and es5 standard is not very + // helpful. + return { + empty : false, + unusedTokens : [], + unusedInput : [], + overflow : -2, + charsLeftOver : 0, + nullInput : false, + invalidMonth : null, + invalidFormat : false, + userInvalidated : false, + iso: false + }; } - } - this._updateCalculationNodes(); - }; - - /** - * This function handles the chains. It is called on every updateClusters(). - */ - exports.handleChains = function() { - // after clustering we check how many chains there are - var chainPercentage = this._getChainFraction(); - if (chainPercentage > this.constants.clustering.chainThreshold) { - this._reduceAmountOfChains(1 - this.constants.clustering.chainThreshold / chainPercentage) - - } - }; - - /** - * this functions starts clustering by hubs - * The minimum hub threshold is set globally - * - * @private - */ - exports._aggregateHubs = function(force) { - this._getHubSize(); - this._formClustersByHub(force,false); - }; + function deprecate(msg, fn) { + var firstTime = true; + function printMsg() { + if (moment.suppressDeprecationWarnings === false && + typeof console !== 'undefined' && console.warn) { + console.warn("Deprecation warning: " + msg); + } + } + return extend(function () { + if (firstTime) { + printMsg(); + firstTime = false; + } + return fn.apply(this, arguments); + }, fn); + } + function padToken(func, count) { + return function (a) { + return leftZeroFill(func.call(this, a), count); + }; + } + function ordinalizeToken(func, period) { + return function (a) { + return this.lang().ordinal(func.call(this, a), period); + }; + } - /** - * This function is fired by keypress. It forces hubs to form. - * - */ - exports.forceAggregateHubs = function(doNotStart) { - var isMovingBeforeClustering = this.moving; - var amountOfNodes = this.nodeIndices.length; + while (ordinalizeTokens.length) { + i = ordinalizeTokens.pop(); + formatTokenFunctions[i + 'o'] = ordinalizeToken(formatTokenFunctions[i], i); + } + while (paddedTokens.length) { + i = paddedTokens.pop(); + formatTokenFunctions[i + i] = padToken(formatTokenFunctions[i], 2); + } + formatTokenFunctions.DDDD = padToken(formatTokenFunctions.DDD, 3); - this._aggregateHubs(true); - // update the index list, dynamic edges and labels - this._updateNodeIndexList(); - this._updateDynamicEdges(); - this.updateLabels(); + /************************************ + Constructors + ************************************/ - // if a cluster was formed, we increase the clusterSession - if (this.nodeIndices.length != amountOfNodes) { - this.clusterSession += 1; - } + function Language() { - if (doNotStart == false || doNotStart === undefined) { - // if the simulation was settled, we restart the simulation if a cluster has been formed or expanded - if (this.moving != isMovingBeforeClustering) { - this.start(); } - } - }; - /** - * If a cluster takes up more than a set percentage of the screen, open the cluster - * - * @private - */ - exports._openClustersBySize = function() { - for (var nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - var node = this.nodes[nodeId]; - if (node.inView() == true) { - if ((node.width*this.scale > this.constants.clustering.screenSizeThreshold * this.frame.canvas.clientWidth) || - (node.height*this.scale > this.constants.clustering.screenSizeThreshold * this.frame.canvas.clientHeight)) { - this.openCluster(node); - } - } + // Moment prototype object + function Moment(config) { + checkOverflow(config); + extend(this, config); } - } - }; + // Duration Constructor + function Duration(duration) { + var normalizedInput = normalizeObjectUnits(duration), + years = normalizedInput.year || 0, + quarters = normalizedInput.quarter || 0, + months = normalizedInput.month || 0, + weeks = normalizedInput.week || 0, + days = normalizedInput.day || 0, + hours = normalizedInput.hour || 0, + minutes = normalizedInput.minute || 0, + seconds = normalizedInput.second || 0, + milliseconds = normalizedInput.millisecond || 0; - /** - * This function loops over all nodes in the nodeIndices list. For each node it checks if it is a cluster and if it - * has to be opened based on the current zoom level. - * - * @private - */ - exports._openClusters = function(recursive,force) { - for (var i = 0; i < this.nodeIndices.length; i++) { - var node = this.nodes[this.nodeIndices[i]]; - this._expandClusterNode(node,recursive,force); - this._updateCalculationNodes(); - } - }; + // representation for dateAddRemove + this._milliseconds = +milliseconds + + seconds * 1e3 + // 1000 + minutes * 6e4 + // 1000 * 60 + hours * 36e5; // 1000 * 60 * 60 + // Because of dateAddRemove treats 24 hours as different from a + // day when working around DST, we need to store them separately + this._days = +days + + weeks * 7; + // It is impossible translate months into days without knowing + // which months you are are talking about, so we have to store + // it separately. + this._months = +months + + quarters * 3 + + years * 12; - /** - * This function checks if a node has to be opened. This is done by checking the zoom level. - * If the node contains child nodes, this function is recursively called on the child nodes as well. - * This recursive behaviour is optional and can be set by the recursive argument. - * - * @param {Node} parentNode | to check for cluster and expand - * @param {Boolean} recursive | enabled or disable recursive calling - * @param {Boolean} force | enabled or disable forcing - * @param {Boolean} [openAll] | This will recursively force all nodes in the parent to be released - * @private - */ - exports._expandClusterNode = function(parentNode, recursive, force, openAll) { - // first check if node is a cluster - if (parentNode.clusterSize > 1) { - // this means that on a double tap event or a zoom event, the cluster fully unpacks if it is smaller than 20 - if (parentNode.clusterSize < this.constants.clustering.sectorThreshold) { - openAll = true; + this._data = {}; + + this._bubble(); } - recursive = openAll ? true : recursive; - // if the last child has been added on a smaller scale than current scale decluster - if (parentNode.formationScale < this.scale || force == true) { - // we will check if any of the contained child nodes should be removed from the cluster - for (var containedNodeId in parentNode.containedNodes) { - if (parentNode.containedNodes.hasOwnProperty(containedNodeId)) { - var childNode = parentNode.containedNodes[containedNodeId]; + /************************************ + Helpers + ************************************/ - // force expand will expand the largest cluster size clusters. Since we cluster from outside in, we assume that - // the largest cluster is the one that comes from outside - if (force == true) { - if (childNode.clusterSession == parentNode.clusterSessions[parentNode.clusterSessions.length-1] - || openAll) { - this._expelChildFromParent(parentNode,containedNodeId,recursive,force,openAll); - } - } - else { - if (this._nodeInActiveArea(parentNode)) { - this._expelChildFromParent(parentNode,containedNodeId,recursive,force,openAll); + + function extend(a, b) { + for (var i in b) { + if (b.hasOwnProperty(i)) { + a[i] = b[i]; } - } } - } - } - } - }; - /** - * ONLY CALLED FROM _expandClusterNode - * - * This function will expel a child_node from a parent_node. This is to de-cluster the node. This function will remove - * the child node from the parent contained_node object and put it back into the global nodes object. - * The same holds for the edge that was connected to the child node. It is moved back into the global edges object. - * - * @param {Node} parentNode | the parent node - * @param {String} containedNodeId | child_node id as it is contained in the containedNodes object of the parent node - * @param {Boolean} recursive | This will also check if the child needs to be expanded. - * With force and recursive both true, the entire cluster is unpacked - * @param {Boolean} force | This will disregard the zoom level and will expel this child from the parent - * @param {Boolean} openAll | This will recursively force all nodes in the parent to be released - * @private - */ - exports._expelChildFromParent = function(parentNode, containedNodeId, recursive, force, openAll) { - var childNode = parentNode.containedNodes[containedNodeId]; + if (b.hasOwnProperty("toString")) { + a.toString = b.toString; + } - // if child node has been added on smaller scale than current, kick out - if (childNode.formationScale < this.scale || force == true) { - // unselect all selected items - this._unselectAll(); + if (b.hasOwnProperty("valueOf")) { + a.valueOf = b.valueOf; + } - // put the child node back in the global nodes object - this.nodes[containedNodeId] = childNode; + return a; + } - // release the contained edges from this childNode back into the global edges - this._releaseContainedEdges(parentNode,childNode); + function cloneMoment(m) { + var result = {}, i; + for (i in m) { + if (m.hasOwnProperty(i) && momentProperties.hasOwnProperty(i)) { + result[i] = m[i]; + } + } - // reconnect rerouted edges to the childNode - this._connectEdgeBackToChild(parentNode,childNode); + return result; + } - // validate all edges in dynamicEdges - this._validateEdges(parentNode); + function absRound(number) { + if (number < 0) { + return Math.ceil(number); + } else { + return Math.floor(number); + } + } - // undo the changes from the clustering operation on the parent node - parentNode.mass -= childNode.mass; - parentNode.clusterSize -= childNode.clusterSize; - parentNode.fontSize = Math.min(this.constants.clustering.maxFontSize, this.constants.nodes.fontSize + this.constants.clustering.fontSizeMultiplier*parentNode.clusterSize); - parentNode.dynamicEdgesLength = parentNode.dynamicEdges.length; + // left zero fill a number + // see http://jsperf.com/left-zero-filling for performance comparison + function leftZeroFill(number, targetLength, forceSign) { + var output = '' + Math.abs(number), + sign = number >= 0; - // place the child node near the parent, not at the exact same location to avoid chaos in the system - childNode.x = parentNode.x + parentNode.growthIndicator * (0.5 - Math.random()); - childNode.y = parentNode.y + parentNode.growthIndicator * (0.5 - Math.random()); + while (output.length < targetLength) { + output = '0' + output; + } + return (sign ? (forceSign ? '+' : '') : '-') + output; + } - // remove node from the list - delete parentNode.containedNodes[containedNodeId]; + // helper function for _.addTime and _.subtractTime + function addOrSubtractDurationFromMoment(mom, duration, isAdding, updateOffset) { + var milliseconds = duration._milliseconds, + days = duration._days, + months = duration._months; + updateOffset = updateOffset == null ? true : updateOffset; - // check if there are other childs with this clusterSession in the parent. - var othersPresent = false; - for (var childNodeId in parentNode.containedNodes) { - if (parentNode.containedNodes.hasOwnProperty(childNodeId)) { - if (parentNode.containedNodes[childNodeId].clusterSession == childNode.clusterSession) { - othersPresent = true; - break; + if (milliseconds) { + mom._d.setTime(+mom._d + milliseconds * isAdding); + } + if (days) { + rawSetter(mom, 'Date', rawGetter(mom, 'Date') + days * isAdding); + } + if (months) { + rawMonthSetter(mom, rawGetter(mom, 'Month') + months * isAdding); + } + if (updateOffset) { + moment.updateOffset(mom, days || months); } - } - } - // if there are no others, remove the cluster session from the list - if (othersPresent == false) { - parentNode.clusterSessions.pop(); } - this._repositionBezierNodes(childNode); - // this._repositionBezierNodes(parentNode); - - // remove the clusterSession from the child node - childNode.clusterSession = 0; + // check if is an array + function isArray(input) { + return Object.prototype.toString.call(input) === '[object Array]'; + } - // recalculate the size of the node on the next time the node is rendered - parentNode.clearSizeCache(); + function isDate(input) { + return Object.prototype.toString.call(input) === '[object Date]' || + input instanceof Date; + } - // restart the simulation to reorganise all nodes - this.moving = true; - } + // compare two arrays, return the number of differences + function compareArrays(array1, array2, dontConvert) { + var len = Math.min(array1.length, array2.length), + lengthDiff = Math.abs(array1.length - array2.length), + diffs = 0, + i; + for (i = 0; i < len; i++) { + if ((dontConvert && array1[i] !== array2[i]) || + (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) { + diffs++; + } + } + return diffs + lengthDiff; + } - // check if a further expansion step is possible if recursivity is enabled - if (recursive == true) { - this._expandClusterNode(childNode,recursive,force,openAll); - } - }; + function normalizeUnits(units) { + if (units) { + var lowered = units.toLowerCase().replace(/(.)s$/, '$1'); + units = unitAliases[units] || camelFunctions[lowered] || lowered; + } + return units; + } + function normalizeObjectUnits(inputObject) { + var normalizedInput = {}, + normalizedProp, + prop; - /** - * position the bezier nodes at the center of the edges - * - * @param node - * @private - */ - exports._repositionBezierNodes = function(node) { - for (var i = 0; i < node.dynamicEdges.length; i++) { - node.dynamicEdges[i].positionBezierNode(); - } - }; + for (prop in inputObject) { + if (inputObject.hasOwnProperty(prop)) { + normalizedProp = normalizeUnits(prop); + if (normalizedProp) { + normalizedInput[normalizedProp] = inputObject[prop]; + } + } + } + return normalizedInput; + } - /** - * This function checks if any nodes at the end of their trees have edges below a threshold length - * This function is called only from updateClusters() - * forceLevelCollapse ignores the length of the edge and collapses one level - * This means that a node with only one edge will be clustered with its connected node - * - * @private - * @param {Boolean} force - */ - exports._formClusters = function(force) { - if (force == false) { - this._formClustersByZoom(); - } - else { - this._forceClustersByZoom(); - } - }; + function makeList(field) { + var count, setter; + if (field.indexOf('week') === 0) { + count = 7; + setter = 'day'; + } + else if (field.indexOf('month') === 0) { + count = 12; + setter = 'month'; + } + else { + return; + } - /** - * This function handles the clustering by zooming out, this is based on a minimum edge distance - * - * @private - */ - exports._formClustersByZoom = function() { - var dx,dy,length, - minLength = this.constants.clustering.clusterEdgeThreshold/this.scale; + moment[field] = function (format, index) { + var i, getter, + method = moment.fn._lang[field], + results = []; - // check if any edges are shorter than minLength and start the clustering - // the clustering favours the node with the larger mass - for (var edgeId in this.edges) { - if (this.edges.hasOwnProperty(edgeId)) { - var edge = this.edges[edgeId]; - if (edge.connected) { - if (edge.toId != edge.fromId) { - dx = (edge.to.x - edge.from.x); - dy = (edge.to.y - edge.from.y); - length = Math.sqrt(dx * dx + dy * dy); + if (typeof format === 'number') { + index = format; + format = undefined; + } + getter = function (i) { + var m = moment().utc().set(setter, i); + return method.call(moment.fn._lang, m, format || ''); + }; - if (length < minLength) { - // first check which node is larger - var parentNode = edge.from; - var childNode = edge.to; - if (edge.to.mass > edge.from.mass) { - parentNode = edge.to; - childNode = edge.from; + if (index != null) { + return getter(index); } - - if (childNode.dynamicEdgesLength == 1) { - this._addToCluster(parentNode,childNode,false); + else { + for (i = 0; i < count; i++) { + results.push(getter(i)); + } + return results; } - else if (parentNode.dynamicEdgesLength == 1) { - this._addToCluster(childNode,parentNode,false); + }; + } + + function toInt(argumentForCoercion) { + var coercedNumber = +argumentForCoercion, + value = 0; + + if (coercedNumber !== 0 && isFinite(coercedNumber)) { + if (coercedNumber >= 0) { + value = Math.floor(coercedNumber); + } else { + value = Math.ceil(coercedNumber); } - } } - } + + return value; } - } - }; - /** - * This function forces the network to cluster all nodes with only one connecting edge to their - * connected node. - * - * @private - */ - exports._forceClustersByZoom = function() { - for (var nodeId in this.nodes) { - // another node could have absorbed this child. - if (this.nodes.hasOwnProperty(nodeId)) { - var childNode = this.nodes[nodeId]; + function daysInMonth(year, month) { + return new Date(Date.UTC(year, month + 1, 0)).getUTCDate(); + } - // the edges can be swallowed by another decrease - if (childNode.dynamicEdgesLength == 1 && childNode.dynamicEdges.length != 0) { - var edge = childNode.dynamicEdges[0]; - var parentNode = (edge.toId == childNode.id) ? this.nodes[edge.fromId] : this.nodes[edge.toId]; + function weeksInYear(year, dow, doy) { + return weekOfYear(moment([year, 11, 31 + dow - doy]), dow, doy).week; + } - // group to the largest node - if (childNode.id != parentNode.id) { - if (parentNode.mass > childNode.mass) { - this._addToCluster(parentNode,childNode,true); - } - else { - this._addToCluster(childNode,parentNode,true); - } - } - } + function daysInYear(year) { + return isLeapYear(year) ? 366 : 365; } - } - }; + function isLeapYear(year) { + return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; + } - /** - * To keep the nodes of roughly equal size we normalize the cluster levels. - * This function clusters a node to its smallest connected neighbour. - * - * @param node - * @private - */ - exports._clusterToSmallestNeighbour = function(node) { - var smallestNeighbour = -1; - var smallestNeighbourNode = null; - for (var i = 0; i < node.dynamicEdges.length; i++) { - if (node.dynamicEdges[i] !== undefined) { - var neighbour = null; - if (node.dynamicEdges[i].fromId != node.id) { - neighbour = node.dynamicEdges[i].from; - } - else if (node.dynamicEdges[i].toId != node.id) { - neighbour = node.dynamicEdges[i].to; - } - - - if (neighbour != null && smallestNeighbour > neighbour.clusterSessions.length) { - smallestNeighbour = neighbour.clusterSessions.length; - smallestNeighbourNode = neighbour; - } - } - } - - if (neighbour != null && this.nodes[neighbour.id] !== undefined) { - this._addToCluster(neighbour, node, true); - } - }; - - - /** - * This function forms clusters from hubs, it loops over all nodes - * - * @param {Boolean} force | Disregard zoom level - * @param {Boolean} onlyEqual | This only clusters a hub with a specific number of edges - * @private - */ - exports._formClustersByHub = function(force, onlyEqual) { - // we loop over all nodes in the list - for (var nodeId in this.nodes) { - // we check if it is still available since it can be used by the clustering in this loop - if (this.nodes.hasOwnProperty(nodeId)) { - this._formClusterFromHub(this.nodes[nodeId],force,onlyEqual); - } - } - }; + function checkOverflow(m) { + var overflow; + if (m._a && m._pf.overflow === -2) { + overflow = + m._a[MONTH] < 0 || m._a[MONTH] > 11 ? MONTH : + m._a[DATE] < 1 || m._a[DATE] > daysInMonth(m._a[YEAR], m._a[MONTH]) ? DATE : + m._a[HOUR] < 0 || m._a[HOUR] > 23 ? HOUR : + m._a[MINUTE] < 0 || m._a[MINUTE] > 59 ? MINUTE : + m._a[SECOND] < 0 || m._a[SECOND] > 59 ? SECOND : + m._a[MILLISECOND] < 0 || m._a[MILLISECOND] > 999 ? MILLISECOND : + -1; - /** - * This function forms a cluster from a specific preselected hub node - * - * @param {Node} hubNode | the node we will cluster as a hub - * @param {Boolean} force | Disregard zoom level - * @param {Boolean} onlyEqual | This only clusters a hub with a specific number of edges - * @param {Number} [absorptionSizeOffset] | - * @private - */ - exports._formClusterFromHub = function(hubNode, force, onlyEqual, absorptionSizeOffset) { - if (absorptionSizeOffset === undefined) { - absorptionSizeOffset = 0; - } - // we decide if the node is a hub - if ((hubNode.dynamicEdgesLength >= this.hubThreshold && onlyEqual == false) || - (hubNode.dynamicEdgesLength == this.hubThreshold && onlyEqual == true)) { - // initialize variables - var dx,dy,length; - var minLength = this.constants.clustering.clusterEdgeThreshold/this.scale; - var allowCluster = false; + if (m._pf._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) { + overflow = DATE; + } - // we create a list of edges because the dynamicEdges change over the course of this loop - var edgesIdarray = []; - var amountOfInitialEdges = hubNode.dynamicEdges.length; - for (var j = 0; j < amountOfInitialEdges; j++) { - edgesIdarray.push(hubNode.dynamicEdges[j].id); + m._pf.overflow = overflow; + } } - // if the hub clustering is not forces, we check if one of the edges connected - // to a cluster is small enough based on the constants.clustering.clusterEdgeThreshold - if (force == false) { - allowCluster = false; - for (j = 0; j < amountOfInitialEdges; j++) { - var edge = this.edges[edgesIdarray[j]]; - if (edge !== undefined) { - if (edge.connected) { - if (edge.toId != edge.fromId) { - dx = (edge.to.x - edge.from.x); - dy = (edge.to.y - edge.from.y); - length = Math.sqrt(dx * dx + dy * dy); + function isValid(m) { + if (m._isValid == null) { + m._isValid = !isNaN(m._d.getTime()) && + m._pf.overflow < 0 && + !m._pf.empty && + !m._pf.invalidMonth && + !m._pf.nullInput && + !m._pf.invalidFormat && + !m._pf.userInvalidated; - if (length < minLength) { - allowCluster = true; - break; - } + if (m._strict) { + m._isValid = m._isValid && + m._pf.charsLeftOver === 0 && + m._pf.unusedTokens.length === 0; } - } } - } + return m._isValid; } - // start the clustering if allowed - if ((!force && allowCluster) || force) { - // we loop over all edges INITIALLY connected to this hub - for (j = 0; j < amountOfInitialEdges; j++) { - edge = this.edges[edgesIdarray[j]]; - // the edge can be clustered by this function in a previous loop - if (edge !== undefined) { - var childNode = this.nodes[(edge.fromId == hubNode.id) ? edge.toId : edge.fromId]; - // we do not want hubs to merge with other hubs nor do we want to cluster itself. - if ((childNode.dynamicEdges.length <= (this.hubThreshold + absorptionSizeOffset)) && - (childNode.id != hubNode.id)) { - this._addToCluster(hubNode,childNode,force); - } - } - } + function normalizeLanguage(key) { + return key ? key.toLowerCase().replace('_', '-') : key; } - } - }; - + // Return a moment from input, that is local/utc/zone equivalent to model. + function makeAs(input, model) { + return model._isUTC ? moment(input).zone(model._offset || 0) : + moment(input).local(); + } - /** - * This function adds the child node to the parent node, creating a cluster if it is not already. - * - * @param {Node} parentNode | this is the node that will house the child node - * @param {Node} childNode | this node will be deleted from the global this.nodes and stored in the parent node - * @param {Boolean} force | true will only update the remainingEdges at the very end of the clustering, ensuring single level collapse - * @private - */ - exports._addToCluster = function(parentNode, childNode, force) { - // join child node in the parent node - parentNode.containedNodes[childNode.id] = childNode; + /************************************ + Languages + ************************************/ - // manage all the edges connected to the child and parent nodes - for (var i = 0; i < childNode.dynamicEdges.length; i++) { - var edge = childNode.dynamicEdges[i]; - if (edge.toId == parentNode.id || edge.fromId == parentNode.id) { // edge connected to parentNode - this._addToContainedEdges(parentNode,childNode,edge); - } - else { - this._connectEdgeToCluster(parentNode,childNode,edge); - } - } - // a contained node has no dynamic edges. - childNode.dynamicEdges = []; - // remove circular edges from clusters - this._containCircularEdgesFromNode(parentNode,childNode); + extend(Language.prototype, { + set : function (config) { + var prop, i; + for (i in config) { + prop = config[i]; + if (typeof prop === 'function') { + this[i] = prop; + } else { + this['_' + i] = prop; + } + } + }, - // remove the childNode from the global nodes object - delete this.nodes[childNode.id]; + _months : "January_February_March_April_May_June_July_August_September_October_November_December".split("_"), + months : function (m) { + return this._months[m.month()]; + }, - // update the properties of the child and parent - var massBefore = parentNode.mass; - childNode.clusterSession = this.clusterSession; - parentNode.mass += childNode.mass; - parentNode.clusterSize += childNode.clusterSize; - parentNode.fontSize = Math.min(this.constants.clustering.maxFontSize, this.constants.nodes.fontSize + this.constants.clustering.fontSizeMultiplier*parentNode.clusterSize); + _monthsShort : "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"), + monthsShort : function (m) { + return this._monthsShort[m.month()]; + }, - // keep track of the clustersessions so we can open the cluster up as it has been formed. - if (parentNode.clusterSessions[parentNode.clusterSessions.length - 1] != this.clusterSession) { - parentNode.clusterSessions.push(this.clusterSession); - } + monthsParse : function (monthName) { + var i, mom, regex; - // forced clusters only open from screen size and double tap - if (force == true) { - // parentNode.formationScale = Math.pow(1 - (1.0/11.0),this.clusterSession+3); - parentNode.formationScale = 0; - } - else { - parentNode.formationScale = this.scale; // The latest child has been added on this scale - } + if (!this._monthsParse) { + this._monthsParse = []; + } - // recalculate the size of the node on the next time the node is rendered - parentNode.clearSizeCache(); + for (i = 0; i < 12; i++) { + // make the regex if we don't have it already + if (!this._monthsParse[i]) { + mom = moment.utc([2000, i]); + regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, ''); + this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i'); + } + // test the regex + if (this._monthsParse[i].test(monthName)) { + return i; + } + } + }, - // set the pop-out scale for the childnode - parentNode.containedNodes[childNode.id].formationScale = parentNode.formationScale; + _weekdays : "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"), + weekdays : function (m) { + return this._weekdays[m.day()]; + }, - // nullify the movement velocity of the child, this is to avoid hectic behaviour - childNode.clearVelocity(); + _weekdaysShort : "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"), + weekdaysShort : function (m) { + return this._weekdaysShort[m.day()]; + }, - // the mass has altered, preservation of energy dictates the velocity to be updated - parentNode.updateVelocity(massBefore); + _weekdaysMin : "Su_Mo_Tu_We_Th_Fr_Sa".split("_"), + weekdaysMin : function (m) { + return this._weekdaysMin[m.day()]; + }, - // restart the simulation to reorganise all nodes - this.moving = true; - }; + weekdaysParse : function (weekdayName) { + var i, mom, regex; + if (!this._weekdaysParse) { + this._weekdaysParse = []; + } - /** - * This function will apply the changes made to the remainingEdges during the formation of the clusters. - * This is a seperate function to allow for level-wise collapsing of the node barnesHutTree. - * It has to be called if a level is collapsed. It is called by _formClusters(). - * @private - */ - exports._updateDynamicEdges = function() { - for (var i = 0; i < this.nodeIndices.length; i++) { - var node = this.nodes[this.nodeIndices[i]]; - node.dynamicEdgesLength = node.dynamicEdges.length; + for (i = 0; i < 7; i++) { + // make the regex if we don't have it already + if (!this._weekdaysParse[i]) { + mom = moment([2000, 1]).day(i); + regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, ''); + this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i'); + } + // test the regex + if (this._weekdaysParse[i].test(weekdayName)) { + return i; + } + } + }, - // this corrects for multiple edges pointing at the same other node - var correction = 0; - if (node.dynamicEdgesLength > 1) { - for (var j = 0; j < node.dynamicEdgesLength - 1; j++) { - var edgeToId = node.dynamicEdges[j].toId; - var edgeFromId = node.dynamicEdges[j].fromId; - for (var k = j+1; k < node.dynamicEdgesLength; k++) { - if ((node.dynamicEdges[k].toId == edgeToId && node.dynamicEdges[k].fromId == edgeFromId) || - (node.dynamicEdges[k].fromId == edgeToId && node.dynamicEdges[k].toId == edgeFromId)) { - correction += 1; - } - } - } - } - node.dynamicEdgesLength -= correction; - } - }; + _longDateFormat : { + LT : "h:mm A", + L : "MM/DD/YYYY", + LL : "MMMM D YYYY", + LLL : "MMMM D YYYY LT", + LLLL : "dddd, MMMM D YYYY LT" + }, + longDateFormat : function (key) { + var output = this._longDateFormat[key]; + if (!output && this._longDateFormat[key.toUpperCase()]) { + output = this._longDateFormat[key.toUpperCase()].replace(/MMMM|MM|DD|dddd/g, function (val) { + return val.slice(1); + }); + this._longDateFormat[key] = output; + } + return output; + }, + isPM : function (input) { + // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays + // Using charAt should be more compatible. + return ((input + '').toLowerCase().charAt(0) === 'p'); + }, - /** - * This adds an edge from the childNode to the contained edges of the parent node - * - * @param parentNode | Node object - * @param childNode | Node object - * @param edge | Edge object - * @private - */ - exports._addToContainedEdges = function(parentNode, childNode, edge) { - // create an array object if it does not yet exist for this childNode - if (!(parentNode.containedEdges.hasOwnProperty(childNode.id))) { - parentNode.containedEdges[childNode.id] = [] - } - // add this edge to the list - parentNode.containedEdges[childNode.id].push(edge); + _meridiemParse : /[ap]\.?m?\.?/i, + meridiem : function (hours, minutes, isLower) { + if (hours > 11) { + return isLower ? 'pm' : 'PM'; + } else { + return isLower ? 'am' : 'AM'; + } + }, - // remove the edge from the global edges object - delete this.edges[edge.id]; + _calendar : { + sameDay : '[Today at] LT', + nextDay : '[Tomorrow at] LT', + nextWeek : 'dddd [at] LT', + lastDay : '[Yesterday at] LT', + lastWeek : '[Last] dddd [at] LT', + sameElse : 'L' + }, + calendar : function (key, mom) { + var output = this._calendar[key]; + return typeof output === 'function' ? output.apply(mom) : output; + }, - // remove the edge from the parent object - for (var i = 0; i < parentNode.dynamicEdges.length; i++) { - if (parentNode.dynamicEdges[i].id == edge.id) { - parentNode.dynamicEdges.splice(i,1); - break; - } - } - }; + _relativeTime : { + future : "in %s", + past : "%s ago", + s : "a few seconds", + m : "a minute", + mm : "%d minutes", + h : "an hour", + hh : "%d hours", + d : "a day", + dd : "%d days", + M : "a month", + MM : "%d months", + y : "a year", + yy : "%d years" + }, + relativeTime : function (number, withoutSuffix, string, isFuture) { + var output = this._relativeTime[string]; + return (typeof output === 'function') ? + output(number, withoutSuffix, string, isFuture) : + output.replace(/%d/i, number); + }, + pastFuture : function (diff, output) { + var format = this._relativeTime[diff > 0 ? 'future' : 'past']; + return typeof format === 'function' ? format(output) : format.replace(/%s/i, output); + }, - /** - * This function connects an edge that was connected to a child node to the parent node. - * It keeps track of which nodes it has been connected to with the originalId array. - * - * @param {Node} parentNode | Node object - * @param {Node} childNode | Node object - * @param {Edge} edge | Edge object - * @private - */ - exports._connectEdgeToCluster = function(parentNode, childNode, edge) { - // handle circular edges - if (edge.toId == edge.fromId) { - this._addToContainedEdges(parentNode, childNode, edge); - } - else { - if (edge.toId == childNode.id) { // edge connected to other node on the "to" side - edge.originalToId.push(childNode.id); - edge.to = parentNode; - edge.toId = parentNode.id; - } - else { // edge connected to other node with the "from" side + ordinal : function (number) { + return this._ordinal.replace("%d", number); + }, + _ordinal : "%d", - edge.originalFromId.push(childNode.id); - edge.from = parentNode; - edge.fromId = parentNode.id; - } + preparse : function (string) { + return string; + }, - this._addToReroutedEdges(parentNode,childNode,edge); - } - }; + postformat : function (string) { + return string; + }, + week : function (mom) { + return weekOfYear(mom, this._week.dow, this._week.doy).week; + }, - /** - * If a node is connected to itself, a circular edge is drawn. When clustering we want to contain - * these edges inside of the cluster. - * - * @param parentNode - * @param childNode - * @private - */ - exports._containCircularEdgesFromNode = function(parentNode, childNode) { - // manage all the edges connected to the child and parent nodes - for (var i = 0; i < parentNode.dynamicEdges.length; i++) { - var edge = parentNode.dynamicEdges[i]; - // handle circular edges - if (edge.toId == edge.fromId) { - this._addToContainedEdges(parentNode, childNode, edge); - } - } - }; + _week : { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + }, + _invalidDate: 'Invalid date', + invalidDate: function () { + return this._invalidDate; + } + }); - /** - * This adds an edge from the childNode to the rerouted edges of the parent node - * - * @param parentNode | Node object - * @param childNode | Node object - * @param edge | Edge object - * @private - */ - exports._addToReroutedEdges = function(parentNode, childNode, edge) { - // create an array object if it does not yet exist for this childNode - // we store the edge in the rerouted edges so we can restore it when the cluster pops open - if (!(parentNode.reroutedEdges.hasOwnProperty(childNode.id))) { - parentNode.reroutedEdges[childNode.id] = []; - } - parentNode.reroutedEdges[childNode.id].push(edge); + // Loads a language definition into the `languages` cache. The function + // takes a key and optionally values. If not in the browser and no values + // are provided, it will load the language file module. As a convenience, + // this function also returns the language values. + function loadLang(key, values) { + values.abbr = key; + if (!languages[key]) { + languages[key] = new Language(); + } + languages[key].set(values); + return languages[key]; + } - // this edge becomes part of the dynamicEdges of the cluster node - parentNode.dynamicEdges.push(edge); - }; + // Remove a language from the `languages` cache. Mostly useful in tests. + function unloadLang(key) { + delete languages[key]; + } + // Determines which language definition to use and returns it. + // + // With no parameters, it will return the global language. If you + // pass in a language key, such as 'en', it will return the + // definition for 'en', so long as 'en' has already been loaded using + // moment.lang. + function getLangDefinition(key) { + var i = 0, j, lang, next, split, + get = function (k) { + if (!languages[k] && hasModule) { + try { + __webpack_require__(55)("./" + k); + } catch (e) { } + } + return languages[k]; + }; + if (!key) { + return moment.fn._lang; + } - /** - * This function connects an edge that was connected to a cluster node back to the child node. - * - * @param parentNode | Node object - * @param childNode | Node object - * @private - */ - exports._connectEdgeBackToChild = function(parentNode, childNode) { - if (parentNode.reroutedEdges.hasOwnProperty(childNode.id)) { - for (var i = 0; i < parentNode.reroutedEdges[childNode.id].length; i++) { - var edge = parentNode.reroutedEdges[childNode.id][i]; - if (edge.originalFromId[edge.originalFromId.length-1] == childNode.id) { - edge.originalFromId.pop(); - edge.fromId = childNode.id; - edge.from = childNode; - } - else { - edge.originalToId.pop(); - edge.toId = childNode.id; - edge.to = childNode; - } - - // append this edge to the list of edges connecting to the childnode - childNode.dynamicEdges.push(edge); - - // remove the edge from the parent object - for (var j = 0; j < parentNode.dynamicEdges.length; j++) { - if (parentNode.dynamicEdges[j].id == edge.id) { - parentNode.dynamicEdges.splice(j,1); - break; + if (!isArray(key)) { + //short-circuit everything else + lang = get(key); + if (lang) { + return lang; + } + key = [key]; } - } - } - // remove the entry from the rerouted edges - delete parentNode.reroutedEdges[childNode.id]; - } - }; - - /** - * When loops are clustered, an edge can be both in the rerouted array and the contained array. - * This function is called last to verify that all edges in dynamicEdges are in fact connected to the - * parentNode - * - * @param parentNode | Node object - * @private - */ - exports._validateEdges = function(parentNode) { - for (var i = 0; i < parentNode.dynamicEdges.length; i++) { - var edge = parentNode.dynamicEdges[i]; - if (parentNode.id != edge.toId && parentNode.id != edge.fromId) { - parentNode.dynamicEdges.splice(i,1); + //pick the language from the array + //try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each + //substring from most specific to least, but move to the next array item if it's a more specific variant than the current root + while (i < key.length) { + split = normalizeLanguage(key[i]).split('-'); + j = split.length; + next = normalizeLanguage(key[i + 1]); + next = next ? next.split('-') : null; + while (j > 0) { + lang = get(split.slice(0, j).join('-')); + if (lang) { + return lang; + } + if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) { + //the next array item is better than a shallower substring of this one + break; + } + j--; + } + i++; + } + return moment.fn._lang; } - } - }; - - - /** - * This function released the contained edges back into the global domain and puts them back into the - * dynamic edges of both parent and child. - * - * @param {Node} parentNode | - * @param {Node} childNode | - * @private - */ - exports._releaseContainedEdges = function(parentNode, childNode) { - for (var i = 0; i < parentNode.containedEdges[childNode.id].length; i++) { - var edge = parentNode.containedEdges[childNode.id][i]; - - // put the edge back in the global edges object - this.edges[edge.id] = edge; - - // put the edge back in the dynamic edges of the child and parent - childNode.dynamicEdges.push(edge); - parentNode.dynamicEdges.push(edge); - } - // remove the entry from the contained edges - delete parentNode.containedEdges[childNode.id]; - - }; + /************************************ + Formatting + ************************************/ - - // ------------------- UTILITY FUNCTIONS ---------------------------- // - - - /** - * This updates the node labels for all nodes (for debugging purposes) - */ - exports.updateLabels = function() { - var nodeId; - // update node labels - for (nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - var node = this.nodes[nodeId]; - if (node.clusterSize > 1) { - node.label = "[".concat(String(node.clusterSize),"]"); - } + function removeFormattingTokens(input) { + if (input.match(/\[[\s\S]/)) { + return input.replace(/^\[|\]$/g, ""); + } + return input.replace(/\\/g, ""); } - } - // update node labels - for (nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - node = this.nodes[nodeId]; - if (node.clusterSize == 1) { - if (node.originalLabel !== undefined) { - node.label = node.originalLabel; - } - else { - node.label = String(node.id); + function makeFormatFunction(format) { + var array = format.match(formattingTokens), i, length; + + for (i = 0, length = array.length; i < length; i++) { + if (formatTokenFunctions[array[i]]) { + array[i] = formatTokenFunctions[array[i]]; + } else { + array[i] = removeFormattingTokens(array[i]); + } } - } + + return function (mom) { + var output = ""; + for (i = 0; i < length; i++) { + output += array[i] instanceof Function ? array[i].call(mom, format) : array[i]; + } + return output; + }; } - } - // /* Debug Override */ - // for (nodeId in this.nodes) { - // if (this.nodes.hasOwnProperty(nodeId)) { - // node = this.nodes[nodeId]; - // node.label = String(node.level); - // } - // } + // format date using native date object + function formatMoment(m, format) { - }; + if (!m.isValid()) { + return m.lang().invalidDate(); + } + format = expandFormat(format, m.lang()); - /** - * We want to keep the cluster level distribution rather small. This means we do not want unclustered nodes - * if the rest of the nodes are already a few cluster levels in. - * To fix this we use this function. It determines the min and max cluster level and sends nodes that have not - * clustered enough to the clusterToSmallestNeighbours function. - */ - exports.normalizeClusterLevels = function() { - var maxLevel = 0; - var minLevel = 1e9; - var clusterLevel = 0; - var nodeId; + if (!formatFunctions[format]) { + formatFunctions[format] = makeFormatFunction(format); + } - // we loop over all nodes in the list - for (nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - clusterLevel = this.nodes[nodeId].clusterSessions.length; - if (maxLevel < clusterLevel) {maxLevel = clusterLevel;} - if (minLevel > clusterLevel) {minLevel = clusterLevel;} + return formatFunctions[format](m); } - } - if (maxLevel - minLevel > this.constants.clustering.clusterLevelDifference) { - var amountOfNodes = this.nodeIndices.length; - var targetLevel = maxLevel - this.constants.clustering.clusterLevelDifference; - // we loop over all nodes in the list - for (nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - if (this.nodes[nodeId].clusterSessions.length < targetLevel) { - this._clusterToSmallestNeighbour(this.nodes[nodeId]); + function expandFormat(format, lang) { + var i = 5; + + function replaceLongDateFormatTokens(input) { + return lang.longDateFormat(input) || input; } - } - } - this._updateNodeIndexList(); - this._updateDynamicEdges(); - // if a cluster was formed, we increase the clusterSession - if (this.nodeIndices.length != amountOfNodes) { - this.clusterSession += 1; - } - } - }; + localFormattingTokens.lastIndex = 0; + while (i >= 0 && localFormattingTokens.test(format)) { + format = format.replace(localFormattingTokens, replaceLongDateFormatTokens); + localFormattingTokens.lastIndex = 0; + i -= 1; + } + return format; + } - /** - * This function determines if the cluster we want to decluster is in the active area - * this means around the zoom center - * - * @param {Node} node - * @returns {boolean} - * @private - */ - exports._nodeInActiveArea = function(node) { - return ( - Math.abs(node.x - this.areaCenter.x) <= this.constants.clustering.activeAreaBoxSize/this.scale - && - Math.abs(node.y - this.areaCenter.y) <= this.constants.clustering.activeAreaBoxSize/this.scale - ) - }; + /************************************ + Parsing + ************************************/ - /** - * This is an adaptation of the original repositioning function. This is called if the system is clustered initially - * It puts large clusters away from the center and randomizes the order. - * - */ - exports.repositionNodes = function() { - for (var i = 0; i < this.nodeIndices.length; i++) { - var node = this.nodes[this.nodeIndices[i]]; - if ((node.xFixed == false || node.yFixed == false)) { - var radius = 10 * 0.1*this.nodeIndices.length * Math.min(100,node.mass); - var angle = 2 * Math.PI * Math.random(); - if (node.xFixed == false) {node.x = radius * Math.cos(angle);} - if (node.yFixed == false) {node.y = radius * Math.sin(angle);} - this._repositionBezierNodes(node); - } - } - }; - - /** - * We determine how many connections denote an important hub. - * We take the mean + 2*std as the important hub size. (Assuming a normal distribution of data, ~2.2%) - * - * @private - */ - exports._getHubSize = function() { - var average = 0; - var averageSquared = 0; - var hubCounter = 0; - var largestHub = 0; - - for (var i = 0; i < this.nodeIndices.length; i++) { - - var node = this.nodes[this.nodeIndices[i]]; - if (node.dynamicEdgesLength > largestHub) { - largestHub = node.dynamicEdgesLength; - } - average += node.dynamicEdgesLength; - averageSquared += Math.pow(node.dynamicEdgesLength,2); - hubCounter += 1; - } - average = average / hubCounter; - averageSquared = averageSquared / hubCounter; - - var variance = averageSquared - Math.pow(average,2); - - var standardDeviation = Math.sqrt(variance); - - this.hubThreshold = Math.floor(average + 2*standardDeviation); - - // always have at least one to cluster - if (this.hubThreshold > largestHub) { - this.hubThreshold = largestHub; - } - - // console.log("average",average,"averageSQ",averageSquared,"var",variance,"std",standardDeviation); - // console.log("hubThreshold:",this.hubThreshold); - }; - - - /** - * We reduce the amount of "extension nodes" or chains. These are not quickly clustered with the outliers and hubs methods - * with this amount we can cluster specifically on these chains. - * - * @param {Number} fraction | between 0 and 1, the percentage of chains to reduce - * @private - */ - exports._reduceAmountOfChains = function(fraction) { - this.hubThreshold = 2; - var reduceAmount = Math.floor(this.nodeIndices.length * fraction); - for (var nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - if (this.nodes[nodeId].dynamicEdgesLength == 2 && this.nodes[nodeId].dynamicEdges.length >= 2) { - if (reduceAmount > 0) { - this._formClusterFromHub(this.nodes[nodeId],true,true,1); - reduceAmount -= 1; - } - } - } - } - }; - - /** - * We get the amount of "extension nodes" or chains. These are not quickly clustered with the outliers and hubs methods - * with this amount we can cluster specifically on these chains. - * - * @private - */ - exports._getChainFraction = function() { - var chains = 0; - var total = 0; - for (var nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - if (this.nodes[nodeId].dynamicEdgesLength == 2 && this.nodes[nodeId].dynamicEdges.length >= 2) { - chains += 1; - } - total += 1; - } - } - return chains/total; - }; - - -/***/ }, -/* 47 */ -/***/ function(module, exports, __webpack_require__) { - - var util = __webpack_require__(1); - - /** - * Creation of the SectorMixin var. - * - * This contains all the functions the Network object can use to employ the sector system. - * The sector system is always used by Network, though the benefits only apply to the use of clustering. - * If clustering is not used, there is no overhead except for a duplicate object with references to nodes and edges. - */ - - /** - * This function is only called by the setData function of the Network object. - * This loads the global references into the active sector. This initializes the sector. - * - * @private - */ - exports._putDataInSector = function() { - this.sectors["active"][this._sector()].nodes = this.nodes; - this.sectors["active"][this._sector()].edges = this.edges; - this.sectors["active"][this._sector()].nodeIndices = this.nodeIndices; - }; - - - /** - * /** - * This function sets the global references to nodes, edges and nodeIndices back to - * those of the supplied (active) sector. If a type is defined, do the specific type - * - * @param {String} sectorId - * @param {String} [sectorType] | "active" or "frozen" - * @private - */ - exports._switchToSector = function(sectorId, sectorType) { - if (sectorType === undefined || sectorType == "active") { - this._switchToActiveSector(sectorId); - } - else { - this._switchToFrozenSector(sectorId); - } - }; - - - /** - * This function sets the global references to nodes, edges and nodeIndices back to - * those of the supplied active sector. - * - * @param sectorId - * @private - */ - exports._switchToActiveSector = function(sectorId) { - this.nodeIndices = this.sectors["active"][sectorId]["nodeIndices"]; - this.nodes = this.sectors["active"][sectorId]["nodes"]; - this.edges = this.sectors["active"][sectorId]["edges"]; - }; - - - /** - * This function sets the global references to nodes, edges and nodeIndices back to - * those of the supplied active sector. - * - * @private - */ - exports._switchToSupportSector = function() { - this.nodeIndices = this.sectors["support"]["nodeIndices"]; - this.nodes = this.sectors["support"]["nodes"]; - this.edges = this.sectors["support"]["edges"]; - }; - - - /** - * This function sets the global references to nodes, edges and nodeIndices back to - * those of the supplied frozen sector. - * - * @param sectorId - * @private - */ - exports._switchToFrozenSector = function(sectorId) { - this.nodeIndices = this.sectors["frozen"][sectorId]["nodeIndices"]; - this.nodes = this.sectors["frozen"][sectorId]["nodes"]; - this.edges = this.sectors["frozen"][sectorId]["edges"]; - }; - - - /** - * This function sets the global references to nodes, edges and nodeIndices back to - * those of the currently active sector. - * - * @private - */ - exports._loadLatestSector = function() { - this._switchToSector(this._sector()); - }; - - - /** - * This function returns the currently active sector Id - * - * @returns {String} - * @private - */ - exports._sector = function() { - return this.activeSector[this.activeSector.length-1]; - }; - - - /** - * This function returns the previously active sector Id - * - * @returns {String} - * @private - */ - exports._previousSector = function() { - if (this.activeSector.length > 1) { - return this.activeSector[this.activeSector.length-2]; - } - else { - throw new TypeError('there are not enough sectors in the this.activeSector array.'); - } - }; - - - /** - * We add the active sector at the end of the this.activeSector array - * This ensures it is the currently active sector returned by _sector() and it reaches the top - * of the activeSector stack. When we reverse our steps we move from the end to the beginning of this stack. - * - * @param newId - * @private - */ - exports._setActiveSector = function(newId) { - this.activeSector.push(newId); - }; - - - /** - * We remove the currently active sector id from the active sector stack. This happens when - * we reactivate the previously active sector - * - * @private - */ - exports._forgetLastSector = function() { - this.activeSector.pop(); - }; - - - /** - * This function creates a new active sector with the supplied newId. This newId - * is the expanding node id. - * - * @param {String} newId | Id of the new active sector - * @private - */ - exports._createNewSector = function(newId) { - // create the new sector - this.sectors["active"][newId] = {"nodes":{}, - "edges":{}, - "nodeIndices":[], - "formationScale": this.scale, - "drawingNode": undefined}; - - // create the new sector render node. This gives visual feedback that you are in a new sector. - this.sectors["active"][newId]['drawingNode'] = new Node( - {id:newId, - color: { - background: "#eaefef", - border: "495c5e" - } - },{},{},this.constants); - this.sectors["active"][newId]['drawingNode'].clusterSize = 2; - }; - - - /** - * This function removes the currently active sector. This is called when we create a new - * active sector. - * - * @param {String} sectorId | Id of the active sector that will be removed - * @private - */ - exports._deleteActiveSector = function(sectorId) { - delete this.sectors["active"][sectorId]; - }; - - - /** - * This function removes the currently active sector. This is called when we reactivate - * the previously active sector. - * - * @param {String} sectorId | Id of the active sector that will be removed - * @private - */ - exports._deleteFrozenSector = function(sectorId) { - delete this.sectors["frozen"][sectorId]; - }; - - - /** - * Freezing an active sector means moving it from the "active" object to the "frozen" object. - * We copy the references, then delete the active entree. - * - * @param sectorId - * @private - */ - exports._freezeSector = function(sectorId) { - // we move the set references from the active to the frozen stack. - this.sectors["frozen"][sectorId] = this.sectors["active"][sectorId]; - - // we have moved the sector data into the frozen set, we now remove it from the active set - this._deleteActiveSector(sectorId); - }; - - - /** - * This is the reverse operation of _freezeSector. Activating means moving the sector from the "frozen" - * object to the "active" object. - * - * @param sectorId - * @private - */ - exports._activateSector = function(sectorId) { - // we move the set references from the frozen to the active stack. - this.sectors["active"][sectorId] = this.sectors["frozen"][sectorId]; - - // we have moved the sector data into the active set, we now remove it from the frozen stack - this._deleteFrozenSector(sectorId); - }; - - - /** - * This function merges the data from the currently active sector with a frozen sector. This is used - * in the process of reverting back to the previously active sector. - * The data that is placed in the frozen (the previously active) sector is the node that has been removed from it - * upon the creation of a new active sector. - * - * @param sectorId - * @private - */ - exports._mergeThisWithFrozen = function(sectorId) { - // copy all nodes - for (var nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - this.sectors["frozen"][sectorId]["nodes"][nodeId] = this.nodes[nodeId]; - } - } - - // copy all edges (if not fully clustered, else there are no edges) - for (var edgeId in this.edges) { - if (this.edges.hasOwnProperty(edgeId)) { - this.sectors["frozen"][sectorId]["edges"][edgeId] = this.edges[edgeId]; - } - } - - // merge the nodeIndices - for (var i = 0; i < this.nodeIndices.length; i++) { - this.sectors["frozen"][sectorId]["nodeIndices"].push(this.nodeIndices[i]); - } - }; - - - /** - * This clusters the sector to one cluster. It was a single cluster before this process started so - * we revert to that state. The clusterToFit function with a maximum size of 1 node does this. - * - * @private - */ - exports._collapseThisToSingleCluster = function() { - this.clusterToFit(1,false); - }; - - - /** - * We create a new active sector from the node that we want to open. - * - * @param node - * @private - */ - exports._addSector = function(node) { - // this is the currently active sector - var sector = this._sector(); - - // // this should allow me to select nodes from a frozen set. - // if (this.sectors['active'][sector]["nodes"].hasOwnProperty(node.id)) { - // console.log("the node is part of the active sector"); - // } - // else { - // console.log("I dont know what the fuck happened!!"); - // } - - // when we switch to a new sector, we remove the node that will be expanded from the current nodes list. - delete this.nodes[node.id]; - - var unqiueIdentifier = util.randomUUID(); - - // we fully freeze the currently active sector - this._freezeSector(sector); - - // we create a new active sector. This sector has the Id of the node to ensure uniqueness - this._createNewSector(unqiueIdentifier); - - // we add the active sector to the sectors array to be able to revert these steps later on - this._setActiveSector(unqiueIdentifier); - - // we redirect the global references to the new sector's references. this._sector() now returns unqiueIdentifier - this._switchToSector(this._sector()); - - // finally we add the node we removed from our previous active sector to the new active sector - this.nodes[node.id] = node; - }; - - - /** - * We close the sector that is currently open and revert back to the one before. - * If the active sector is the "default" sector, nothing happens. - * - * @private - */ - exports._collapseSector = function() { - // the currently active sector - var sector = this._sector(); - - // we cannot collapse the default sector - if (sector != "default") { - if ((this.nodeIndices.length == 1) || - (this.sectors["active"][sector]["drawingNode"].width*this.scale < this.constants.clustering.screenSizeThreshold * this.frame.canvas.clientWidth) || - (this.sectors["active"][sector]["drawingNode"].height*this.scale < this.constants.clustering.screenSizeThreshold * this.frame.canvas.clientHeight)) { - var previousSector = this._previousSector(); - - // we collapse the sector back to a single cluster - this._collapseThisToSingleCluster(); - - // we move the remaining nodes, edges and nodeIndices to the previous sector. - // This previous sector is the one we will reactivate - this._mergeThisWithFrozen(previousSector); - - // the previously active (frozen) sector now has all the data from the currently active sector. - // we can now delete the active sector. - this._deleteActiveSector(sector); - - // we activate the previously active (and currently frozen) sector. - this._activateSector(previousSector); - - // we load the references from the newly active sector into the global references - this._switchToSector(previousSector); - - // we forget the previously active sector because we reverted to the one before - this._forgetLastSector(); - - // finally, we update the node index list. - this._updateNodeIndexList(); - - // we refresh the list with calulation nodes and calculation node indices. - this._updateCalculationNodes(); - } - } - }; - - - /** - * This runs a function in all active sectors. This is used in _redraw() and the _initializeForceCalculation(). - * - * @param {String} runFunction | This is the NAME of a function we want to call in all active sectors - * | we dont pass the function itself because then the "this" is the window object - * | instead of the Network object - * @param {*} [argument] | Optional: arguments to pass to the runFunction - * @private - */ - exports._doInAllActiveSectors = function(runFunction,argument) { - if (argument === undefined) { - for (var sector in this.sectors["active"]) { - if (this.sectors["active"].hasOwnProperty(sector)) { - // switch the global references to those of this sector - this._switchToActiveSector(sector); - this[runFunction](); - } - } - } - else { - for (var sector in this.sectors["active"]) { - if (this.sectors["active"].hasOwnProperty(sector)) { - // switch the global references to those of this sector - this._switchToActiveSector(sector); - var args = Array.prototype.splice.call(arguments, 1); - if (args.length > 1) { - this[runFunction](args[0],args[1]); - } - else { - this[runFunction](argument); - } - } - } - } - // we revert the global references back to our active sector - this._loadLatestSector(); - }; - - - /** - * This runs a function in all active sectors. This is used in _redraw() and the _initializeForceCalculation(). - * - * @param {String} runFunction | This is the NAME of a function we want to call in all active sectors - * | we dont pass the function itself because then the "this" is the window object - * | instead of the Network object - * @param {*} [argument] | Optional: arguments to pass to the runFunction - * @private - */ - exports._doInSupportSector = function(runFunction,argument) { - if (argument === undefined) { - this._switchToSupportSector(); - this[runFunction](); - } - else { - this._switchToSupportSector(); - var args = Array.prototype.splice.call(arguments, 1); - if (args.length > 1) { - this[runFunction](args[0],args[1]); - } - else { - this[runFunction](argument); - } - } - // we revert the global references back to our active sector - this._loadLatestSector(); - }; - - - /** - * This runs a function in all frozen sectors. This is used in the _redraw(). - * - * @param {String} runFunction | This is the NAME of a function we want to call in all active sectors - * | we don't pass the function itself because then the "this" is the window object - * | instead of the Network object - * @param {*} [argument] | Optional: arguments to pass to the runFunction - * @private - */ - exports._doInAllFrozenSectors = function(runFunction,argument) { - if (argument === undefined) { - for (var sector in this.sectors["frozen"]) { - if (this.sectors["frozen"].hasOwnProperty(sector)) { - // switch the global references to those of this sector - this._switchToFrozenSector(sector); - this[runFunction](); - } - } - } - else { - for (var sector in this.sectors["frozen"]) { - if (this.sectors["frozen"].hasOwnProperty(sector)) { - // switch the global references to those of this sector - this._switchToFrozenSector(sector); - var args = Array.prototype.splice.call(arguments, 1); - if (args.length > 1) { - this[runFunction](args[0],args[1]); - } - else { - this[runFunction](argument); - } - } - } - } - this._loadLatestSector(); - }; - - - /** - * This runs a function in all sectors. This is used in the _redraw(). - * - * @param {String} runFunction | This is the NAME of a function we want to call in all active sectors - * | we don't pass the function itself because then the "this" is the window object - * | instead of the Network object - * @param {*} [argument] | Optional: arguments to pass to the runFunction - * @private - */ - exports._doInAllSectors = function(runFunction,argument) { - var args = Array.prototype.splice.call(arguments, 1); - if (argument === undefined) { - this._doInAllActiveSectors(runFunction); - this._doInAllFrozenSectors(runFunction); - } - else { - if (args.length > 1) { - this._doInAllActiveSectors(runFunction,args[0],args[1]); - this._doInAllFrozenSectors(runFunction,args[0],args[1]); - } - else { - this._doInAllActiveSectors(runFunction,argument); - this._doInAllFrozenSectors(runFunction,argument); - } - } - }; - - - /** - * This clears the nodeIndices list. We cannot use this.nodeIndices = [] because we would break the link with the - * active sector. Thus we clear the nodeIndices in the active sector, then reconnect the this.nodeIndices to it. - * - * @private - */ - exports._clearNodeIndexList = function() { - var sector = this._sector(); - this.sectors["active"][sector]["nodeIndices"] = []; - this.nodeIndices = this.sectors["active"][sector]["nodeIndices"]; - }; - - - /** - * Draw the encompassing sector node - * - * @param ctx - * @param sectorType - * @private - */ - exports._drawSectorNodes = function(ctx,sectorType) { - var minY = 1e9, maxY = -1e9, minX = 1e9, maxX = -1e9, node; - for (var sector in this.sectors[sectorType]) { - if (this.sectors[sectorType].hasOwnProperty(sector)) { - if (this.sectors[sectorType][sector]["drawingNode"] !== undefined) { - - this._switchToSector(sector,sectorType); - - minY = 1e9; maxY = -1e9; minX = 1e9; maxX = -1e9; - for (var nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - node = this.nodes[nodeId]; - node.resize(ctx); - if (minX > node.x - 0.5 * node.width) {minX = node.x - 0.5 * node.width;} - if (maxX < node.x + 0.5 * node.width) {maxX = node.x + 0.5 * node.width;} - if (minY > node.y - 0.5 * node.height) {minY = node.y - 0.5 * node.height;} - if (maxY < node.y + 0.5 * node.height) {maxY = node.y + 0.5 * node.height;} - } - } - node = this.sectors[sectorType][sector]["drawingNode"]; - node.x = 0.5 * (maxX + minX); - node.y = 0.5 * (maxY + minY); - node.width = 2 * (node.x - minX); - node.height = 2 * (node.y - minY); - node.radius = Math.sqrt(Math.pow(0.5*node.width,2) + Math.pow(0.5*node.height,2)); - node.setScale(this.scale); - node._drawCircle(ctx); - } - } - } - }; - - exports._drawAllSectorNodes = function(ctx) { - this._drawSectorNodes(ctx,"frozen"); - this._drawSectorNodes(ctx,"active"); - this._loadLatestSector(); - }; - - -/***/ }, -/* 48 */ -/***/ function(module, exports, __webpack_require__) { - - var Node = __webpack_require__(36); - - /** - * This function can be called from the _doInAllSectors function - * - * @param object - * @param overlappingNodes - * @private - */ - exports._getNodesOverlappingWith = function(object, overlappingNodes) { - var nodes = this.nodes; - for (var nodeId in nodes) { - if (nodes.hasOwnProperty(nodeId)) { - if (nodes[nodeId].isOverlappingWith(object)) { - overlappingNodes.push(nodeId); - } - } - } - }; - - /** - * retrieve all nodes overlapping with given object - * @param {Object} object An object with parameters left, top, right, bottom - * @return {Number[]} An array with id's of the overlapping nodes - * @private - */ - exports._getAllNodesOverlappingWith = function (object) { - var overlappingNodes = []; - this._doInAllActiveSectors("_getNodesOverlappingWith",object,overlappingNodes); - return overlappingNodes; - }; - - - /** - * Return a position object in canvasspace from a single point in screenspace - * - * @param pointer - * @returns {{left: number, top: number, right: number, bottom: number}} - * @private - */ - exports._pointerToPositionObject = function(pointer) { - var x = this._XconvertDOMtoCanvas(pointer.x); - var y = this._YconvertDOMtoCanvas(pointer.y); - - return { - left: x, - top: y, - right: x, - bottom: y - }; - }; - - - /** - * Get the top node at the a specific point (like a click) - * - * @param {{x: Number, y: Number}} pointer - * @return {Node | null} node - * @private - */ - exports._getNodeAt = function (pointer) { - // we first check if this is an navigation controls element - var positionObject = this._pointerToPositionObject(pointer); - var overlappingNodes = this._getAllNodesOverlappingWith(positionObject); - - // if there are overlapping nodes, select the last one, this is the - // one which is drawn on top of the others - if (overlappingNodes.length > 0) { - return this.nodes[overlappingNodes[overlappingNodes.length - 1]]; - } - else { - return null; - } - }; - - - /** - * retrieve all edges overlapping with given object, selector is around center - * @param {Object} object An object with parameters left, top, right, bottom - * @return {Number[]} An array with id's of the overlapping nodes - * @private - */ - exports._getEdgesOverlappingWith = function (object, overlappingEdges) { - var edges = this.edges; - for (var edgeId in edges) { - if (edges.hasOwnProperty(edgeId)) { - if (edges[edgeId].isOverlappingWith(object)) { - overlappingEdges.push(edgeId); - } - } - } - }; - - - /** - * retrieve all nodes overlapping with given object - * @param {Object} object An object with parameters left, top, right, bottom - * @return {Number[]} An array with id's of the overlapping nodes - * @private - */ - exports._getAllEdgesOverlappingWith = function (object) { - var overlappingEdges = []; - this._doInAllActiveSectors("_getEdgesOverlappingWith",object,overlappingEdges); - return overlappingEdges; - }; - - /** - * Place holder. To implement change the _getNodeAt to a _getObjectAt. Have the _getObjectAt call - * _getNodeAt and _getEdgesAt, then priortize the selection to user preferences. - * - * @param pointer - * @returns {null} - * @private - */ - exports._getEdgeAt = function(pointer) { - var positionObject = this._pointerToPositionObject(pointer); - var overlappingEdges = this._getAllEdgesOverlappingWith(positionObject); - - if (overlappingEdges.length > 0) { - return this.edges[overlappingEdges[overlappingEdges.length - 1]]; - } - else { - return null; - } - }; - - - /** - * Add object to the selection array. - * - * @param obj - * @private - */ - exports._addToSelection = function(obj) { - if (obj instanceof Node) { - this.selectionObj.nodes[obj.id] = obj; - } - else { - this.selectionObj.edges[obj.id] = obj; - } - }; - - /** - * Add object to the selection array. - * - * @param obj - * @private - */ - exports._addToHover = function(obj) { - if (obj instanceof Node) { - this.hoverObj.nodes[obj.id] = obj; - } - else { - this.hoverObj.edges[obj.id] = obj; - } - }; - - - /** - * Remove a single option from selection. - * - * @param {Object} obj - * @private - */ - exports._removeFromSelection = function(obj) { - if (obj instanceof Node) { - delete this.selectionObj.nodes[obj.id]; - } - else { - delete this.selectionObj.edges[obj.id]; - } - }; - - /** - * Unselect all. The selectionObj is useful for this. - * - * @param {Boolean} [doNotTrigger] | ignore trigger - * @private - */ - exports._unselectAll = function(doNotTrigger) { - if (doNotTrigger === undefined) { - doNotTrigger = false; - } - for(var nodeId in this.selectionObj.nodes) { - if(this.selectionObj.nodes.hasOwnProperty(nodeId)) { - this.selectionObj.nodes[nodeId].unselect(); - } - } - for(var edgeId in this.selectionObj.edges) { - if(this.selectionObj.edges.hasOwnProperty(edgeId)) { - this.selectionObj.edges[edgeId].unselect(); - } - } - - this.selectionObj = {nodes:{},edges:{}}; - - if (doNotTrigger == false) { - this.emit('select', this.getSelection()); - } - }; - - /** - * Unselect all clusters. The selectionObj is useful for this. - * - * @param {Boolean} [doNotTrigger] | ignore trigger - * @private - */ - exports._unselectClusters = function(doNotTrigger) { - if (doNotTrigger === undefined) { - doNotTrigger = false; - } - - for (var nodeId in this.selectionObj.nodes) { - if (this.selectionObj.nodes.hasOwnProperty(nodeId)) { - if (this.selectionObj.nodes[nodeId].clusterSize > 1) { - this.selectionObj.nodes[nodeId].unselect(); - this._removeFromSelection(this.selectionObj.nodes[nodeId]); - } - } - } - - if (doNotTrigger == false) { - this.emit('select', this.getSelection()); - } - }; - - - /** - * return the number of selected nodes - * - * @returns {number} - * @private - */ - exports._getSelectedNodeCount = function() { - var count = 0; - for (var nodeId in this.selectionObj.nodes) { - if (this.selectionObj.nodes.hasOwnProperty(nodeId)) { - count += 1; - } - } - return count; - }; - - /** - * return the selected node - * - * @returns {number} - * @private - */ - exports._getSelectedNode = function() { - for (var nodeId in this.selectionObj.nodes) { - if (this.selectionObj.nodes.hasOwnProperty(nodeId)) { - return this.selectionObj.nodes[nodeId]; - } - } - return null; - }; - - /** - * return the selected edge - * - * @returns {number} - * @private - */ - exports._getSelectedEdge = function() { - for (var edgeId in this.selectionObj.edges) { - if (this.selectionObj.edges.hasOwnProperty(edgeId)) { - return this.selectionObj.edges[edgeId]; - } - } - return null; - }; - - - /** - * return the number of selected edges - * - * @returns {number} - * @private - */ - exports._getSelectedEdgeCount = function() { - var count = 0; - for (var edgeId in this.selectionObj.edges) { - if (this.selectionObj.edges.hasOwnProperty(edgeId)) { - count += 1; - } - } - return count; - }; - - - /** - * return the number of selected objects. - * - * @returns {number} - * @private - */ - exports._getSelectedObjectCount = function() { - var count = 0; - for(var nodeId in this.selectionObj.nodes) { - if(this.selectionObj.nodes.hasOwnProperty(nodeId)) { - count += 1; - } - } - for(var edgeId in this.selectionObj.edges) { - if(this.selectionObj.edges.hasOwnProperty(edgeId)) { - count += 1; - } - } - return count; - }; - - /** - * Check if anything is selected - * - * @returns {boolean} - * @private - */ - exports._selectionIsEmpty = function() { - for(var nodeId in this.selectionObj.nodes) { - if(this.selectionObj.nodes.hasOwnProperty(nodeId)) { - return false; - } - } - for(var edgeId in this.selectionObj.edges) { - if(this.selectionObj.edges.hasOwnProperty(edgeId)) { - return false; - } - } - return true; - }; - - - /** - * check if one of the selected nodes is a cluster. - * - * @returns {boolean} - * @private - */ - exports._clusterInSelection = function() { - for(var nodeId in this.selectionObj.nodes) { - if(this.selectionObj.nodes.hasOwnProperty(nodeId)) { - if (this.selectionObj.nodes[nodeId].clusterSize > 1) { - return true; - } - } - } - return false; - }; - - /** - * select the edges connected to the node that is being selected - * - * @param {Node} node - * @private - */ - exports._selectConnectedEdges = function(node) { - for (var i = 0; i < node.dynamicEdges.length; i++) { - var edge = node.dynamicEdges[i]; - edge.select(); - this._addToSelection(edge); - } - }; - - /** - * select the edges connected to the node that is being selected - * - * @param {Node} node - * @private - */ - exports._hoverConnectedEdges = function(node) { - for (var i = 0; i < node.dynamicEdges.length; i++) { - var edge = node.dynamicEdges[i]; - edge.hover = true; - this._addToHover(edge); - } - }; - - - /** - * unselect the edges connected to the node that is being selected - * - * @param {Node} node - * @private - */ - exports._unselectConnectedEdges = function(node) { - for (var i = 0; i < node.dynamicEdges.length; i++) { - var edge = node.dynamicEdges[i]; - edge.unselect(); - this._removeFromSelection(edge); - } - }; - - - - - /** - * This is called when someone clicks on a node. either select or deselect it. - * If there is an existing selection and we don't want to append to it, clear the existing selection - * - * @param {Node || Edge} object - * @param {Boolean} append - * @param {Boolean} [doNotTrigger] | ignore trigger - * @private - */ - exports._selectObject = function(object, append, doNotTrigger, highlightEdges) { - if (doNotTrigger === undefined) { - doNotTrigger = false; - } - if (highlightEdges === undefined) { - highlightEdges = true; - } - - if (this._selectionIsEmpty() == false && append == false && this.forceAppendSelection == false) { - this._unselectAll(true); - } - - if (object.selected == false) { - object.select(); - this._addToSelection(object); - if (object instanceof Node && this.blockConnectingEdgeSelection == false && highlightEdges == true) { - this._selectConnectedEdges(object); - } - } - else { - object.unselect(); - this._removeFromSelection(object); - } - - if (doNotTrigger == false) { - this.emit('select', this.getSelection()); - } - }; - - - /** - * This is called when someone clicks on a node. either select or deselect it. - * If there is an existing selection and we don't want to append to it, clear the existing selection - * - * @param {Node || Edge} object - * @private - */ - exports._blurObject = function(object) { - if (object.hover == true) { - object.hover = false; - this.emit("blurNode",{node:object.id}); - } - }; - - /** - * This is called when someone clicks on a node. either select or deselect it. - * If there is an existing selection and we don't want to append to it, clear the existing selection - * - * @param {Node || Edge} object - * @private - */ - exports._hoverObject = function(object) { - if (object.hover == false) { - object.hover = true; - this._addToHover(object); - if (object instanceof Node) { - this.emit("hoverNode",{node:object.id}); - } - } - if (object instanceof Node) { - this._hoverConnectedEdges(object); - } - }; - - - /** - * handles the selection part of the touch, only for navigation controls elements; - * Touch is triggered before tap, also before hold. Hold triggers after a while. - * This is the most responsive solution - * - * @param {Object} pointer - * @private - */ - exports._handleTouch = function(pointer) { - }; - - - /** - * handles the selection part of the tap; - * - * @param {Object} pointer - * @private - */ - exports._handleTap = function(pointer) { - var node = this._getNodeAt(pointer); - if (node != null) { - this._selectObject(node,false); - } - else { - var edge = this._getEdgeAt(pointer); - if (edge != null) { - this._selectObject(edge,false); - } - else { - this._unselectAll(); - } - } - this.emit("click", this.getSelection()); - this._redraw(); - }; - - - /** - * handles the selection part of the double tap and opens a cluster if needed - * - * @param {Object} pointer - * @private - */ - exports._handleDoubleTap = function(pointer) { - var node = this._getNodeAt(pointer); - if (node != null && node !== undefined) { - // we reset the areaCenter here so the opening of the node will occur - this.areaCenter = {"x" : this._XconvertDOMtoCanvas(pointer.x), - "y" : this._YconvertDOMtoCanvas(pointer.y)}; - this.openCluster(node); - } - this.emit("doubleClick", this.getSelection()); - }; - - - /** - * Handle the onHold selection part - * - * @param pointer - * @private - */ - exports._handleOnHold = function(pointer) { - var node = this._getNodeAt(pointer); - if (node != null) { - this._selectObject(node,true); - } - else { - var edge = this._getEdgeAt(pointer); - if (edge != null) { - this._selectObject(edge,true); - } - } - this._redraw(); - }; - - - /** - * handle the onRelease event. These functions are here for the navigation controls module. - * - * @private - */ - exports._handleOnRelease = function(pointer) { - - }; - - - - /** - * - * retrieve the currently selected objects - * @return {{nodes: Array., edges: Array.}} selection - */ - exports.getSelection = function() { - var nodeIds = this.getSelectedNodes(); - var edgeIds = this.getSelectedEdges(); - return {nodes:nodeIds, edges:edgeIds}; - }; - - /** - * - * retrieve the currently selected nodes - * @return {String[]} selection An array with the ids of the - * selected nodes. - */ - exports.getSelectedNodes = function() { - var idArray = []; - for(var nodeId in this.selectionObj.nodes) { - if(this.selectionObj.nodes.hasOwnProperty(nodeId)) { - idArray.push(nodeId); - } - } - return idArray - }; - - /** - * - * retrieve the currently selected edges - * @return {Array} selection An array with the ids of the - * selected nodes. - */ - exports.getSelectedEdges = function() { - var idArray = []; - for(var edgeId in this.selectionObj.edges) { - if(this.selectionObj.edges.hasOwnProperty(edgeId)) { - idArray.push(edgeId); - } - } - return idArray; - }; - - - /** - * select zero or more nodes - * @param {Number[] | String[]} selection An array with the ids of the - * selected nodes. - */ - exports.setSelection = function(selection) { - var i, iMax, id; - - if (!selection || (selection.length == undefined)) - throw 'Selection must be an array with ids'; - - // first unselect any selected node - this._unselectAll(true); - - for (i = 0, iMax = selection.length; i < iMax; i++) { - id = selection[i]; - - var node = this.nodes[id]; - if (!node) { - throw new RangeError('Node with id "' + id + '" not found'); - } - this._selectObject(node,true,true); - } - - console.log("setSelection is deprecated. Please use selectNodes instead.") - - this.redraw(); - }; - - - /** - * select zero or more nodes with the option to highlight edges - * @param {Number[] | String[]} selection An array with the ids of the - * selected nodes. - * @param {boolean} [highlightEdges] - */ - exports.selectNodes = function(selection, highlightEdges) { - var i, iMax, id; - - if (!selection || (selection.length == undefined)) - throw 'Selection must be an array with ids'; - - // first unselect any selected node - this._unselectAll(true); - - for (i = 0, iMax = selection.length; i < iMax; i++) { - id = selection[i]; - - var node = this.nodes[id]; - if (!node) { - throw new RangeError('Node with id "' + id + '" not found'); - } - this._selectObject(node,true,true,highlightEdges); - } - this.redraw(); - }; - - - /** - * select zero or more edges - * @param {Number[] | String[]} selection An array with the ids of the - * selected nodes. - */ - exports.selectEdges = function(selection) { - var i, iMax, id; - - if (!selection || (selection.length == undefined)) - throw 'Selection must be an array with ids'; - - // first unselect any selected node - this._unselectAll(true); - - for (i = 0, iMax = selection.length; i < iMax; i++) { - id = selection[i]; - - var edge = this.edges[id]; - if (!edge) { - throw new RangeError('Edge with id "' + id + '" not found'); - } - this._selectObject(edge,true,true,highlightEdges); - } - this.redraw(); - }; - - /** - * Validate the selection: remove ids of nodes which no longer exist - * @private - */ - exports._updateSelection = function () { - for(var nodeId in this.selectionObj.nodes) { - if(this.selectionObj.nodes.hasOwnProperty(nodeId)) { - if (!this.nodes.hasOwnProperty(nodeId)) { - delete this.selectionObj.nodes[nodeId]; - } - } - } - for(var edgeId in this.selectionObj.edges) { - if(this.selectionObj.edges.hasOwnProperty(edgeId)) { - if (!this.edges.hasOwnProperty(edgeId)) { - delete this.selectionObj.edges[edgeId]; - } - } - } - }; - - -/***/ }, -/* 49 */ -/***/ function(module, exports, __webpack_require__) { - - var util = __webpack_require__(1); - var Node = __webpack_require__(36); - var Edge = __webpack_require__(33); - - /** - * clears the toolbar div element of children - * - * @private - */ - exports._clearManipulatorBar = function() { - while (this.manipulationDiv.hasChildNodes()) { - this.manipulationDiv.removeChild(this.manipulationDiv.firstChild); - } - }; - - /** - * Manipulation UI temporarily overloads certain functions to extend or replace them. To be able to restore - * these functions to their original functionality, we saved them in this.cachedFunctions. - * This function restores these functions to their original function. - * - * @private - */ - exports._restoreOverloadedFunctions = function() { - for (var functionName in this.cachedFunctions) { - if (this.cachedFunctions.hasOwnProperty(functionName)) { - this[functionName] = this.cachedFunctions[functionName]; - } - } - }; - - /** - * Enable or disable edit-mode. - * - * @private - */ - exports._toggleEditMode = function() { - this.editMode = !this.editMode; - var toolbar = document.getElementById("network-manipulationDiv"); - var closeDiv = document.getElementById("network-manipulation-closeDiv"); - var editModeDiv = document.getElementById("network-manipulation-editMode"); - if (this.editMode == true) { - toolbar.style.display="block"; - closeDiv.style.display="block"; - editModeDiv.style.display="none"; - closeDiv.onclick = this._toggleEditMode.bind(this); - } - else { - toolbar.style.display="none"; - closeDiv.style.display="none"; - editModeDiv.style.display="block"; - closeDiv.onclick = null; - } - this._createManipulatorBar() - }; - - /** - * main function, creates the main toolbar. Removes functions bound to the select event. Binds all the buttons of the toolbar. - * - * @private - */ - exports._createManipulatorBar = function() { - // remove bound functions - if (this.boundFunction) { - this.off('select', this.boundFunction); - } - - if (this.edgeBeingEdited !== undefined) { - this.edgeBeingEdited._disableControlNodes(); - this.edgeBeingEdited = undefined; - this.selectedControlNode = null; - this.controlNodesActive = false; - } - - // restore overloaded functions - this._restoreOverloadedFunctions(); - - // resume calculation - this.freezeSimulation = false; - - // reset global variables - this.blockConnectingEdgeSelection = false; - this.forceAppendSelection = false; - - if (this.editMode == true) { - while (this.manipulationDiv.hasChildNodes()) { - this.manipulationDiv.removeChild(this.manipulationDiv.firstChild); - } - // add the icons to the manipulator div - this.manipulationDiv.innerHTML = "" + - "" + - ""+this.constants.labels['add'] +"" + - "
" + - "" + - ""+this.constants.labels['link'] +""; - if (this._getSelectedNodeCount() == 1 && this.triggerFunctions.edit) { - this.manipulationDiv.innerHTML += "" + - "
" + - "" + - ""+this.constants.labels['editNode'] +""; - } - else if (this._getSelectedEdgeCount() == 1 && this._getSelectedNodeCount() == 0) { - this.manipulationDiv.innerHTML += "" + - "
" + - "" + - ""+this.constants.labels['editEdge'] +""; - } - if (this._selectionIsEmpty() == false) { - this.manipulationDiv.innerHTML += "" + - "
" + - "" + - ""+this.constants.labels['del'] +""; - } - - - // bind the icons - var addNodeButton = document.getElementById("network-manipulate-addNode"); - addNodeButton.onclick = this._createAddNodeToolbar.bind(this); - var addEdgeButton = document.getElementById("network-manipulate-connectNode"); - addEdgeButton.onclick = this._createAddEdgeToolbar.bind(this); - if (this._getSelectedNodeCount() == 1 && this.triggerFunctions.edit) { - var editButton = document.getElementById("network-manipulate-editNode"); - editButton.onclick = this._editNode.bind(this); - } - else if (this._getSelectedEdgeCount() == 1 && this._getSelectedNodeCount() == 0) { - var editButton = document.getElementById("network-manipulate-editEdge"); - editButton.onclick = this._createEditEdgeToolbar.bind(this); - } - if (this._selectionIsEmpty() == false) { - var deleteButton = document.getElementById("network-manipulate-delete"); - deleteButton.onclick = this._deleteSelected.bind(this); - } - var closeDiv = document.getElementById("network-manipulation-closeDiv"); - closeDiv.onclick = this._toggleEditMode.bind(this); - - this.boundFunction = this._createManipulatorBar.bind(this); - this.on('select', this.boundFunction); - } - else { - this.editModeDiv.innerHTML = "" + - "" + - "" + this.constants.labels['edit'] + ""; - var editModeButton = document.getElementById("network-manipulate-editModeButton"); - editModeButton.onclick = this._toggleEditMode.bind(this); - } - }; - - - - /** - * Create the toolbar for adding Nodes - * - * @private - */ - exports._createAddNodeToolbar = function() { - // clear the toolbar - this._clearManipulatorBar(); - if (this.boundFunction) { - this.off('select', this.boundFunction); - } - - // create the toolbar contents - this.manipulationDiv.innerHTML = "" + - "" + - "" + this.constants.labels['back'] + " " + - "
" + - "" + - "" + this.constants.labels['addDescription'] + ""; - - // bind the icon - var backButton = document.getElementById("network-manipulate-back"); - backButton.onclick = this._createManipulatorBar.bind(this); - - // we use the boundFunction so we can reference it when we unbind it from the "select" event. - this.boundFunction = this._addNode.bind(this); - this.on('select', this.boundFunction); - }; - - - /** - * create the toolbar to connect nodes - * - * @private - */ - exports._createAddEdgeToolbar = function() { - // clear the toolbar - this._clearManipulatorBar(); - this._unselectAll(true); - this.freezeSimulation = true; - - if (this.boundFunction) { - this.off('select', this.boundFunction); - } - - this._unselectAll(); - this.forceAppendSelection = false; - this.blockConnectingEdgeSelection = true; - - this.manipulationDiv.innerHTML = "" + - "" + - "" + this.constants.labels['back'] + " " + - "
" + - "" + - "" + this.constants.labels['linkDescription'] + ""; - - // bind the icon - var backButton = document.getElementById("network-manipulate-back"); - backButton.onclick = this._createManipulatorBar.bind(this); - - // we use the boundFunction so we can reference it when we unbind it from the "select" event. - this.boundFunction = this._handleConnect.bind(this); - this.on('select', this.boundFunction); - - // temporarily overload functions - this.cachedFunctions["_handleTouch"] = this._handleTouch; - this.cachedFunctions["_handleOnRelease"] = this._handleOnRelease; - this._handleTouch = this._handleConnect; - this._handleOnRelease = this._finishConnect; - - // redraw to show the unselect - this._redraw(); - }; - - /** - * create the toolbar to edit edges - * - * @private - */ - exports._createEditEdgeToolbar = function() { - // clear the toolbar - this._clearManipulatorBar(); - this.controlNodesActive = true; - - if (this.boundFunction) { - this.off('select', this.boundFunction); - } - - this.edgeBeingEdited = this._getSelectedEdge(); - this.edgeBeingEdited._enableControlNodes(); - - this.manipulationDiv.innerHTML = "" + - "" + - "" + this.constants.labels['back'] + " " + - "
" + - "" + - "" + this.constants.labels['editEdgeDescription'] + ""; - - // bind the icon - var backButton = document.getElementById("network-manipulate-back"); - backButton.onclick = this._createManipulatorBar.bind(this); - - // temporarily overload functions - this.cachedFunctions["_handleTouch"] = this._handleTouch; - this.cachedFunctions["_handleOnRelease"] = this._handleOnRelease; - this.cachedFunctions["_handleTap"] = this._handleTap; - this.cachedFunctions["_handleDragStart"] = this._handleDragStart; - this.cachedFunctions["_handleOnDrag"] = this._handleOnDrag; - this._handleTouch = this._selectControlNode; - this._handleTap = function () {}; - this._handleOnDrag = this._controlNodeDrag; - this._handleDragStart = function () {} - this._handleOnRelease = this._releaseControlNode; - - // redraw to show the unselect - this._redraw(); - }; - - - - - - /** - * the function bound to the selection event. It checks if you want to connect a cluster and changes the description - * to walk the user through the process. - * - * @private - */ - exports._selectControlNode = function(pointer) { - this.edgeBeingEdited.controlNodes.from.unselect(); - this.edgeBeingEdited.controlNodes.to.unselect(); - this.selectedControlNode = this.edgeBeingEdited._getSelectedControlNode(this._XconvertDOMtoCanvas(pointer.x),this._YconvertDOMtoCanvas(pointer.y)); - if (this.selectedControlNode !== null) { - this.selectedControlNode.select(); - this.freezeSimulation = true; - } - this._redraw(); - }; - - /** - * the function bound to the selection event. It checks if you want to connect a cluster and changes the description - * to walk the user through the process. - * - * @private - */ - exports._controlNodeDrag = function(event) { - var pointer = this._getPointer(event.gesture.center); - if (this.selectedControlNode !== null && this.selectedControlNode !== undefined) { - this.selectedControlNode.x = this._XconvertDOMtoCanvas(pointer.x); - this.selectedControlNode.y = this._YconvertDOMtoCanvas(pointer.y); - } - this._redraw(); - }; - - exports._releaseControlNode = function(pointer) { - var newNode = this._getNodeAt(pointer); - if (newNode != null) { - if (this.edgeBeingEdited.controlNodes.from.selected == true) { - this._editEdge(newNode.id, this.edgeBeingEdited.to.id); - this.edgeBeingEdited.controlNodes.from.unselect(); - } - if (this.edgeBeingEdited.controlNodes.to.selected == true) { - this._editEdge(this.edgeBeingEdited.from.id, newNode.id); - this.edgeBeingEdited.controlNodes.to.unselect(); - } - } - else { - this.edgeBeingEdited._restoreControlNodes(); - } - this.freezeSimulation = false; - this._redraw(); - }; - - /** - * the function bound to the selection event. It checks if you want to connect a cluster and changes the description - * to walk the user through the process. - * - * @private - */ - exports._handleConnect = function(pointer) { - if (this._getSelectedNodeCount() == 0) { - var node = this._getNodeAt(pointer); - if (node != null) { - if (node.clusterSize > 1) { - alert("Cannot create edges to a cluster.") - } - else { - this._selectObject(node,false); - // create a node the temporary line can look at - this.sectors['support']['nodes']['targetNode'] = new Node({id:'targetNode'},{},{},this.constants); - this.sectors['support']['nodes']['targetNode'].x = node.x; - this.sectors['support']['nodes']['targetNode'].y = node.y; - this.sectors['support']['nodes']['targetViaNode'] = new Node({id:'targetViaNode'},{},{},this.constants); - this.sectors['support']['nodes']['targetViaNode'].x = node.x; - this.sectors['support']['nodes']['targetViaNode'].y = node.y; - this.sectors['support']['nodes']['targetViaNode'].parentEdgeId = "connectionEdge"; - - // create a temporary edge - this.edges['connectionEdge'] = new Edge({id:"connectionEdge",from:node.id,to:this.sectors['support']['nodes']['targetNode'].id}, this, this.constants); - this.edges['connectionEdge'].from = node; - this.edges['connectionEdge'].connected = true; - this.edges['connectionEdge'].smooth = true; - this.edges['connectionEdge'].selected = true; - this.edges['connectionEdge'].to = this.sectors['support']['nodes']['targetNode']; - this.edges['connectionEdge'].via = this.sectors['support']['nodes']['targetViaNode']; - - this.cachedFunctions["_handleOnDrag"] = this._handleOnDrag; - this._handleOnDrag = function(event) { - var pointer = this._getPointer(event.gesture.center); - this.sectors['support']['nodes']['targetNode'].x = this._XconvertDOMtoCanvas(pointer.x); - this.sectors['support']['nodes']['targetNode'].y = this._YconvertDOMtoCanvas(pointer.y); - this.sectors['support']['nodes']['targetViaNode'].x = 0.5 * (this._XconvertDOMtoCanvas(pointer.x) + this.edges['connectionEdge'].from.x); - this.sectors['support']['nodes']['targetViaNode'].y = this._YconvertDOMtoCanvas(pointer.y); - }; - - this.moving = true; - this.start(); - } - } - } - }; - - exports._finishConnect = function(pointer) { - if (this._getSelectedNodeCount() == 1) { - - // restore the drag function - this._handleOnDrag = this.cachedFunctions["_handleOnDrag"]; - delete this.cachedFunctions["_handleOnDrag"]; - - // remember the edge id - var connectFromId = this.edges['connectionEdge'].fromId; - - // remove the temporary nodes and edge - delete this.edges['connectionEdge']; - delete this.sectors['support']['nodes']['targetNode']; - delete this.sectors['support']['nodes']['targetViaNode']; - - var node = this._getNodeAt(pointer); - if (node != null) { - if (node.clusterSize > 1) { - alert("Cannot create edges to a cluster.") - } - else { - this._createEdge(connectFromId,node.id); - this._createManipulatorBar(); - } - } - this._unselectAll(); - } - }; - - - /** - * Adds a node on the specified location - */ - exports._addNode = function() { - if (this._selectionIsEmpty() && this.editMode == true) { - var positionObject = this._pointerToPositionObject(this.pointerPosition); - var defaultData = {id:util.randomUUID(),x:positionObject.left,y:positionObject.top,label:"new",allowedToMoveX:true,allowedToMoveY:true}; - if (this.triggerFunctions.add) { - if (this.triggerFunctions.add.length == 2) { - var me = this; - this.triggerFunctions.add(defaultData, function(finalizedData) { - me.nodesData.add(finalizedData); - me._createManipulatorBar(); - me.moving = true; - me.start(); - }); - } - else { - alert(this.constants.labels['addError']); - this._createManipulatorBar(); - this.moving = true; - this.start(); - } - } - else { - this.nodesData.add(defaultData); - this._createManipulatorBar(); - this.moving = true; - this.start(); - } - } - }; - - - /** - * connect two nodes with a new edge. - * - * @private - */ - exports._createEdge = function(sourceNodeId,targetNodeId) { - if (this.editMode == true) { - var defaultData = {from:sourceNodeId, to:targetNodeId}; - if (this.triggerFunctions.connect) { - if (this.triggerFunctions.connect.length == 2) { - var me = this; - this.triggerFunctions.connect(defaultData, function(finalizedData) { - me.edgesData.add(finalizedData); - me.moving = true; - me.start(); - }); - } - else { - alert(this.constants.labels["linkError"]); - this.moving = true; - this.start(); - } - } - else { - this.edgesData.add(defaultData); - this.moving = true; - this.start(); - } - } - }; - - /** - * connect two nodes with a new edge. - * - * @private - */ - exports._editEdge = function(sourceNodeId,targetNodeId) { - if (this.editMode == true) { - var defaultData = {id: this.edgeBeingEdited.id, from:sourceNodeId, to:targetNodeId}; - if (this.triggerFunctions.editEdge) { - if (this.triggerFunctions.editEdge.length == 2) { - var me = this; - this.triggerFunctions.editEdge(defaultData, function(finalizedData) { - me.edgesData.update(finalizedData); - me.moving = true; - me.start(); - }); - } - else { - alert(this.constants.labels["linkError"]); - this.moving = true; - this.start(); - } - } - else { - this.edgesData.update(defaultData); - this.moving = true; - this.start(); - } - } - }; - - /** - * Create the toolbar to edit the selected node. The label and the color can be changed. Other colors are derived from the chosen color. - * - * @private - */ - exports._editNode = function() { - if (this.triggerFunctions.edit && this.editMode == true) { - var node = this._getSelectedNode(); - var data = {id:node.id, - label: node.label, - group: node.group, - shape: node.shape, - color: { - background:node.color.background, - border:node.color.border, - highlight: { - background:node.color.highlight.background, - border:node.color.highlight.border - } - }}; - if (this.triggerFunctions.edit.length == 2) { - var me = this; - this.triggerFunctions.edit(data, function (finalizedData) { - me.nodesData.update(finalizedData); - me._createManipulatorBar(); - me.moving = true; - me.start(); - }); - } - else { - alert(this.constants.labels["editError"]); - } - } - else { - alert(this.constants.labels["editBoundError"]); - } - }; - - - - - /** - * delete everything in the selection - * - * @private - */ - exports._deleteSelected = function() { - if (!this._selectionIsEmpty() && this.editMode == true) { - if (!this._clusterInSelection()) { - var selectedNodes = this.getSelectedNodes(); - var selectedEdges = this.getSelectedEdges(); - if (this.triggerFunctions.del) { - var me = this; - var data = {nodes: selectedNodes, edges: selectedEdges}; - if (this.triggerFunctions.del.length = 2) { - this.triggerFunctions.del(data, function (finalizedData) { - me.edgesData.remove(finalizedData.edges); - me.nodesData.remove(finalizedData.nodes); - me._unselectAll(); - me.moving = true; - me.start(); - }); - } - else { - alert(this.constants.labels["deleteError"]) - } - } - else { - this.edgesData.remove(selectedEdges); - this.nodesData.remove(selectedNodes); - this._unselectAll(); - this.moving = true; - this.start(); - } - } - else { - alert(this.constants.labels["deleteClusterError"]); - } - } - }; - - -/***/ }, -/* 50 */ -/***/ function(module, exports, __webpack_require__) { - - var util = __webpack_require__(1); - - exports._cleanNavigation = function() { - // clean up previous navigation items - var wrapper = document.getElementById('network-navigation_wrapper'); - if (wrapper != null) { - this.containerElement.removeChild(wrapper); - } - document.onmouseup = null; - }; - - /** - * Creation of the navigation controls nodes. They are drawn over the rest of the nodes and are not affected by scale and translation - * they have a triggerFunction which is called on click. If the position of the navigation controls is dependent - * on this.frame.canvas.clientWidth or this.frame.canvas.clientHeight, we flag horizontalAlignLeft and verticalAlignTop false. - * This means that the location will be corrected by the _relocateNavigation function on a size change of the canvas. - * - * @private - */ - exports._loadNavigationElements = function() { - this._cleanNavigation(); - - this.navigationDivs = {}; - var navigationDivs = ['up','down','left','right','zoomIn','zoomOut','zoomExtends']; - var navigationDivActions = ['_moveUp','_moveDown','_moveLeft','_moveRight','_zoomIn','_zoomOut','zoomExtent']; - - this.navigationDivs['wrapper'] = document.createElement('div'); - this.navigationDivs['wrapper'].id = "network-navigation_wrapper"; - this.navigationDivs['wrapper'].style.position = "absolute"; - this.navigationDivs['wrapper'].style.width = this.frame.canvas.clientWidth + "px"; - this.navigationDivs['wrapper'].style.height = this.frame.canvas.clientHeight + "px"; - this.containerElement.insertBefore(this.navigationDivs['wrapper'],this.frame); - - for (var i = 0; i < navigationDivs.length; i++) { - this.navigationDivs[navigationDivs[i]] = document.createElement('div'); - this.navigationDivs[navigationDivs[i]].id = "network-navigation_" + navigationDivs[i]; - this.navigationDivs[navigationDivs[i]].className = "network-navigation " + navigationDivs[i]; - this.navigationDivs['wrapper'].appendChild(this.navigationDivs[navigationDivs[i]]); - this.navigationDivs[navigationDivs[i]].onmousedown = this[navigationDivActions[i]].bind(this); - } - - document.onmouseup = this._stopMovement.bind(this); - }; - - /** - * this stops all movement induced by the navigation buttons - * - * @private - */ - exports._stopMovement = function() { - this._xStopMoving(); - this._yStopMoving(); - this._stopZoom(); - }; - - - /** - * move the screen up - * By using the increments, instead of adding a fixed number to the translation, we keep fluent and - * instant movement. The onKeypress event triggers immediately, then pauses, then triggers frequently - * To avoid this behaviour, we do the translation in the start loop. - * - * @private - */ - exports._moveUp = function(event) { - this.yIncrement = this.constants.keyboard.speed.y; - this.start(); // if there is no node movement, the calculation wont be done - util.preventDefault(event); - if (this.navigationDivs) { - this.navigationDivs['up'].className += " active"; - } - }; - - - /** - * move the screen down - * @private - */ - exports._moveDown = function(event) { - this.yIncrement = -this.constants.keyboard.speed.y; - this.start(); // if there is no node movement, the calculation wont be done - util.preventDefault(event); - if (this.navigationDivs) { - this.navigationDivs['down'].className += " active"; - } - }; - - - /** - * move the screen left - * @private - */ - exports._moveLeft = function(event) { - this.xIncrement = this.constants.keyboard.speed.x; - this.start(); // if there is no node movement, the calculation wont be done - util.preventDefault(event); - if (this.navigationDivs) { - this.navigationDivs['left'].className += " active"; - } - }; - - - /** - * move the screen right - * @private - */ - exports._moveRight = function(event) { - this.xIncrement = -this.constants.keyboard.speed.y; - this.start(); // if there is no node movement, the calculation wont be done - util.preventDefault(event); - if (this.navigationDivs) { - this.navigationDivs['right'].className += " active"; - } - }; - - - /** - * Zoom in, using the same method as the movement. - * @private - */ - exports._zoomIn = function(event) { - this.zoomIncrement = this.constants.keyboard.speed.zoom; - this.start(); // if there is no node movement, the calculation wont be done - util.preventDefault(event); - if (this.navigationDivs) { - this.navigationDivs['zoomIn'].className += " active"; - } - }; - - - /** - * Zoom out - * @private - */ - exports._zoomOut = function() { - this.zoomIncrement = -this.constants.keyboard.speed.zoom; - this.start(); // if there is no node movement, the calculation wont be done - util.preventDefault(event); - if (this.navigationDivs) { - this.navigationDivs['zoomOut'].className += " active"; - } - }; - - - /** - * Stop zooming and unhighlight the zoom controls - * @private - */ - exports._stopZoom = function() { - this.zoomIncrement = 0; - if (this.navigationDivs) { - this.navigationDivs['zoomIn'].className = this.navigationDivs['zoomIn'].className.replace(" active",""); - this.navigationDivs['zoomOut'].className = this.navigationDivs['zoomOut'].className.replace(" active",""); - } - }; - - - /** - * Stop moving in the Y direction and unHighlight the up and down - * @private - */ - exports._yStopMoving = function() { - this.yIncrement = 0; - if (this.navigationDivs) { - this.navigationDivs['up'].className = this.navigationDivs['up'].className.replace(" active",""); - this.navigationDivs['down'].className = this.navigationDivs['down'].className.replace(" active",""); - } - }; - - - /** - * Stop moving in the X direction and unHighlight left and right. - * @private - */ - exports._xStopMoving = function() { - this.xIncrement = 0; - if (this.navigationDivs) { - this.navigationDivs['left'].className = this.navigationDivs['left'].className.replace(" active",""); - this.navigationDivs['right'].className = this.navigationDivs['right'].className.replace(" active",""); - } - }; - - -/***/ }, -/* 51 */ -/***/ function(module, exports, __webpack_require__) { - - exports._resetLevels = function() { - for (var nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - var node = this.nodes[nodeId]; - if (node.preassignedLevel == false) { - node.level = -1; - } - } - } - }; - - /** - * This is the main function to layout the nodes in a hierarchical way. - * It checks if the node details are supplied correctly - * - * @private - */ - exports._setupHierarchicalLayout = function() { - if (this.constants.hierarchicalLayout.enabled == true && this.nodeIndices.length > 0) { - if (this.constants.hierarchicalLayout.direction == "RL" || this.constants.hierarchicalLayout.direction == "DU") { - this.constants.hierarchicalLayout.levelSeparation *= -1; - } - else { - this.constants.hierarchicalLayout.levelSeparation = Math.abs(this.constants.hierarchicalLayout.levelSeparation); - } - - if (this.constants.hierarchicalLayout.direction == "RL" || this.constants.hierarchicalLayout.direction == "LR") { - if (this.constants.smoothCurves.enabled == true) { - this.constants.smoothCurves.type = "vertical"; - } - } - else { - if (this.constants.smoothCurves.enabled == true) { - this.constants.smoothCurves.type = "horizontal"; - } - } - // get the size of the largest hubs and check if the user has defined a level for a node. - var hubsize = 0; - var node, nodeId; - var definedLevel = false; - var undefinedLevel = false; - - for (nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - node = this.nodes[nodeId]; - if (node.level != -1) { - definedLevel = true; - } - else { - undefinedLevel = true; - } - if (hubsize < node.edges.length) { - hubsize = node.edges.length; - } - } - } - - // if the user defined some levels but not all, alert and run without hierarchical layout - if (undefinedLevel == true && definedLevel == true) { - alert("To use the hierarchical layout, nodes require either no predefined levels or levels have to be defined for all nodes."); - this.zoomExtent(true,this.constants.clustering.enabled); - if (!this.constants.clustering.enabled) { - this.start(); - } - } - else { - // setup the system to use hierarchical method. - this._changeConstants(); - - // define levels if undefined by the users. Based on hubsize - if (undefinedLevel == true) { - this._determineLevels(hubsize); - } - // check the distribution of the nodes per level. - var distribution = this._getDistribution(); - - // place the nodes on the canvas. This also stablilizes the system. - this._placeNodesByHierarchy(distribution); - - // start the simulation. - this.start(); - } - } - }; - - - /** - * This function places the nodes on the canvas based on the hierarchial distribution. - * - * @param {Object} distribution | obtained by the function this._getDistribution() - * @private - */ - exports._placeNodesByHierarchy = function(distribution) { - var nodeId, node; - - // start placing all the level 0 nodes first. Then recursively position their branches. - for (var level in distribution) { - if (distribution.hasOwnProperty(level)) { - - for (nodeId in distribution[level].nodes) { - if (distribution[level].nodes.hasOwnProperty(nodeId)) { - node = distribution[level].nodes[nodeId]; - if (this.constants.hierarchicalLayout.direction == "UD" || this.constants.hierarchicalLayout.direction == "DU") { - if (node.xFixed) { - node.x = distribution[level].minPos; - node.xFixed = false; - - distribution[level].minPos += distribution[level].nodeSpacing; - } - } - else { - if (node.yFixed) { - node.y = distribution[level].minPos; - node.yFixed = false; - - distribution[level].minPos += distribution[level].nodeSpacing; - } - } - this._placeBranchNodes(node.edges,node.id,distribution,node.level); - } - } - } - } - - // stabilize the system after positioning. This function calls zoomExtent. - this._stabilize(); - }; - - - /** - * This function get the distribution of levels based on hubsize - * - * @returns {Object} - * @private - */ - exports._getDistribution = function() { - var distribution = {}; - var nodeId, node, level; - - // we fix Y because the hierarchy is vertical, we fix X so we do not give a node an x position for a second time. - // the fix of X is removed after the x value has been set. - for (nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - node = this.nodes[nodeId]; - node.xFixed = true; - node.yFixed = true; - if (this.constants.hierarchicalLayout.direction == "UD" || this.constants.hierarchicalLayout.direction == "DU") { - node.y = this.constants.hierarchicalLayout.levelSeparation*node.level; - } - else { - node.x = this.constants.hierarchicalLayout.levelSeparation*node.level; - } - if (distribution[node.level] === undefined) { - distribution[node.level] = {amount: 0, nodes: {}, minPos:0, nodeSpacing:0}; - } - distribution[node.level].amount += 1; - distribution[node.level].nodes[nodeId] = node; - } - } - - // determine the largest amount of nodes of all levels - var maxCount = 0; - for (level in distribution) { - if (distribution.hasOwnProperty(level)) { - if (maxCount < distribution[level].amount) { - maxCount = distribution[level].amount; - } - } - } - - // set the initial position and spacing of each nodes accordingly - for (level in distribution) { - if (distribution.hasOwnProperty(level)) { - distribution[level].nodeSpacing = (maxCount + 1) * this.constants.hierarchicalLayout.nodeSpacing; - distribution[level].nodeSpacing /= (distribution[level].amount + 1); - distribution[level].minPos = distribution[level].nodeSpacing - (0.5 * (distribution[level].amount + 1) * distribution[level].nodeSpacing); - } - } - - return distribution; - }; - - - /** - * this function allocates nodes in levels based on the recursive branching from the largest hubs. - * - * @param hubsize - * @private - */ - exports._determineLevels = function(hubsize) { - var nodeId, node; - - // determine hubs - for (nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - node = this.nodes[nodeId]; - if (node.edges.length == hubsize) { - node.level = 0; - } - } - } - - // branch from hubs - for (nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - node = this.nodes[nodeId]; - if (node.level == 0) { - this._setLevel(1,node.edges,node.id); - } - } - } - }; - - - /** - * Since hierarchical layout does not support: - * - smooth curves (based on the physics), - * - clustering (based on dynamic node counts) - * - * We disable both features so there will be no problems. - * - * @private - */ - exports._changeConstants = function() { - this.constants.clustering.enabled = false; - this.constants.physics.barnesHut.enabled = false; - this.constants.physics.hierarchicalRepulsion.enabled = true; - this._loadSelectedForceSolver(); - if (this.constants.smoothCurves.enabled == true) { - this.constants.smoothCurves.dynamic = false; - } - this._configureSmoothCurves(); - }; - - - /** - * This is a recursively called function to enumerate the branches from the largest hubs and place the nodes - * on a X position that ensures there will be no overlap. - * - * @param edges - * @param parentId - * @param distribution - * @param parentLevel - * @private - */ - exports._placeBranchNodes = function(edges, parentId, distribution, parentLevel) { - for (var i = 0; i < edges.length; i++) { - var childNode = null; - if (edges[i].toId == parentId) { - childNode = edges[i].from; - } - else { - childNode = edges[i].to; - } - - // if a node is conneceted to another node on the same level (or higher (means lower level))!, this is not handled here. - var nodeMoved = false; - if (this.constants.hierarchicalLayout.direction == "UD" || this.constants.hierarchicalLayout.direction == "DU") { - if (childNode.xFixed && childNode.level > parentLevel) { - childNode.xFixed = false; - childNode.x = distribution[childNode.level].minPos; - nodeMoved = true; - } - } - else { - if (childNode.yFixed && childNode.level > parentLevel) { - childNode.yFixed = false; - childNode.y = distribution[childNode.level].minPos; - nodeMoved = true; - } - } - - if (nodeMoved == true) { - distribution[childNode.level].minPos += distribution[childNode.level].nodeSpacing; - if (childNode.edges.length > 1) { - this._placeBranchNodes(childNode.edges,childNode.id,distribution,childNode.level); - } - } - } - }; - - - /** - * this function is called recursively to enumerate the barnches of the largest hubs and give each node a level. - * - * @param level - * @param edges - * @param parentId - * @private - */ - exports._setLevel = function(level, edges, parentId) { - for (var i = 0; i < edges.length; i++) { - var childNode = null; - if (edges[i].toId == parentId) { - childNode = edges[i].from; - } - else { - childNode = edges[i].to; - } - if (childNode.level == -1 || childNode.level > level) { - childNode.level = level; - if (edges.length > 1) { - this._setLevel(level+1, childNode.edges, childNode.id); - } - } - } - }; - - - /** - * Unfix nodes - * - * @private - */ - exports._restoreNodes = function() { - for (var nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - this.nodes[nodeId].xFixed = false; - this.nodes[nodeId].yFixed = false; - } - } - }; - - -/***/ }, -/* 52 */ -/***/ function(module, exports, __webpack_require__) { - - var util = __webpack_require__(1); - var RepulsionMixin = __webpack_require__(55); - var HierarchialRepulsionMixin = __webpack_require__(56); - var BarnesHutMixin = __webpack_require__(57); - - /** - * Toggling barnes Hut calculation on and off. - * - * @private - */ - exports._toggleBarnesHut = function () { - this.constants.physics.barnesHut.enabled = !this.constants.physics.barnesHut.enabled; - this._loadSelectedForceSolver(); - this.moving = true; - this.start(); - }; - - - /** - * This loads the node force solver based on the barnes hut or repulsion algorithm - * - * @private - */ - exports._loadSelectedForceSolver = function () { - // this overloads the this._calculateNodeForces - if (this.constants.physics.barnesHut.enabled == true) { - this._clearMixin(RepulsionMixin); - this._clearMixin(HierarchialRepulsionMixin); - - this.constants.physics.centralGravity = this.constants.physics.barnesHut.centralGravity; - this.constants.physics.springLength = this.constants.physics.barnesHut.springLength; - this.constants.physics.springConstant = this.constants.physics.barnesHut.springConstant; - this.constants.physics.damping = this.constants.physics.barnesHut.damping; - - this._loadMixin(BarnesHutMixin); - } - else if (this.constants.physics.hierarchicalRepulsion.enabled == true) { - this._clearMixin(BarnesHutMixin); - this._clearMixin(RepulsionMixin); - - this.constants.physics.centralGravity = this.constants.physics.hierarchicalRepulsion.centralGravity; - this.constants.physics.springLength = this.constants.physics.hierarchicalRepulsion.springLength; - this.constants.physics.springConstant = this.constants.physics.hierarchicalRepulsion.springConstant; - this.constants.physics.damping = this.constants.physics.hierarchicalRepulsion.damping; - - this._loadMixin(HierarchialRepulsionMixin); - } - else { - this._clearMixin(BarnesHutMixin); - this._clearMixin(HierarchialRepulsionMixin); - this.barnesHutTree = undefined; - - this.constants.physics.centralGravity = this.constants.physics.repulsion.centralGravity; - this.constants.physics.springLength = this.constants.physics.repulsion.springLength; - this.constants.physics.springConstant = this.constants.physics.repulsion.springConstant; - this.constants.physics.damping = this.constants.physics.repulsion.damping; - - this._loadMixin(RepulsionMixin); - } - }; - - /** - * Before calculating the forces, we check if we need to cluster to keep up performance and we check - * if there is more than one node. If it is just one node, we dont calculate anything. - * - * @private - */ - exports._initializeForceCalculation = function () { - // stop calculation if there is only one node - if (this.nodeIndices.length == 1) { - this.nodes[this.nodeIndices[0]]._setForce(0, 0); - } - else { - // if there are too many nodes on screen, we cluster without repositioning - if (this.nodeIndices.length > this.constants.clustering.clusterThreshold && this.constants.clustering.enabled == true) { - this.clusterToFit(this.constants.clustering.reduceToNodes, false); - } - - // we now start the force calculation - this._calculateForces(); - } - }; - - - /** - * Calculate the external forces acting on the nodes - * Forces are caused by: edges, repulsing forces between nodes, gravity - * @private - */ - exports._calculateForces = function () { - // Gravity is required to keep separated groups from floating off - // the forces are reset to zero in this loop by using _setForce instead - // of _addForce - - this._calculateGravitationalForces(); - this._calculateNodeForces(); - - if (this.constants.physics.springConstant > 0) { - if (this.constants.smoothCurves.enabled == true && this.constants.smoothCurves.dynamic == true) { - this._calculateSpringForcesWithSupport(); - } - else { - if (this.constants.physics.hierarchicalRepulsion.enabled == true) { - this._calculateHierarchicalSpringForces(); - } - else { - this._calculateSpringForces(); - } - } - } - }; - - - /** - * Smooth curves are created by adding invisible nodes in the center of the edges. These nodes are also - * handled in the calculateForces function. We then use a quadratic curve with the center node as control. - * This function joins the datanodes and invisible (called support) nodes into one object. - * We do this so we do not contaminate this.nodes with the support nodes. - * - * @private - */ - exports._updateCalculationNodes = function () { - if (this.constants.smoothCurves.enabled == true && this.constants.smoothCurves.dynamic == true) { - this.calculationNodes = {}; - this.calculationNodeIndices = []; - - for (var nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - this.calculationNodes[nodeId] = this.nodes[nodeId]; - } - } - var supportNodes = this.sectors['support']['nodes']; - for (var supportNodeId in supportNodes) { - if (supportNodes.hasOwnProperty(supportNodeId)) { - if (this.edges.hasOwnProperty(supportNodes[supportNodeId].parentEdgeId)) { - this.calculationNodes[supportNodeId] = supportNodes[supportNodeId]; - } - else { - supportNodes[supportNodeId]._setForce(0, 0); - } - } - } - - for (var idx in this.calculationNodes) { - if (this.calculationNodes.hasOwnProperty(idx)) { - this.calculationNodeIndices.push(idx); - } - } - } - else { - this.calculationNodes = this.nodes; - this.calculationNodeIndices = this.nodeIndices; - } - }; - - - /** - * this function applies the central gravity effect to keep groups from floating off - * - * @private - */ - exports._calculateGravitationalForces = function () { - var dx, dy, distance, node, i; - var nodes = this.calculationNodes; - var gravity = this.constants.physics.centralGravity; - var gravityForce = 0; - - for (i = 0; i < this.calculationNodeIndices.length; i++) { - node = nodes[this.calculationNodeIndices[i]]; - node.damping = this.constants.physics.damping; // possibly add function to alter damping properties of clusters. - // gravity does not apply when we are in a pocket sector - if (this._sector() == "default" && gravity != 0) { - dx = -node.x; - dy = -node.y; - distance = Math.sqrt(dx * dx + dy * dy); - - gravityForce = (distance == 0) ? 0 : (gravity / distance); - node.fx = dx * gravityForce; - node.fy = dy * gravityForce; - } - else { - node.fx = 0; - node.fy = 0; - } - } - }; - - - - - /** - * this function calculates the effects of the springs in the case of unsmooth curves. - * - * @private - */ - exports._calculateSpringForces = function () { - var edgeLength, edge, edgeId; - var dx, dy, fx, fy, springForce, distance; - var edges = this.edges; - - // forces caused by the edges, modelled as springs - for (edgeId in edges) { - if (edges.hasOwnProperty(edgeId)) { - edge = edges[edgeId]; - if (edge.connected) { - // only calculate forces if nodes are in the same sector - if (this.nodes.hasOwnProperty(edge.toId) && this.nodes.hasOwnProperty(edge.fromId)) { - edgeLength = edge.customLength ? edge.length : this.constants.physics.springLength; - // this implies that the edges between big clusters are longer - edgeLength += (edge.to.clusterSize + edge.from.clusterSize - 2) * this.constants.clustering.edgeGrowth; - - dx = (edge.from.x - edge.to.x); - dy = (edge.from.y - edge.to.y); - distance = Math.sqrt(dx * dx + dy * dy); - - if (distance == 0) { - distance = 0.01; - } - - // the 1/distance is so the fx and fy can be calculated without sine or cosine. - springForce = this.constants.physics.springConstant * (edgeLength - distance) / distance; - - fx = dx * springForce; - fy = dy * springForce; - - edge.from.fx += fx; - edge.from.fy += fy; - edge.to.fx -= fx; - edge.to.fy -= fy; - } - } - } - } - }; - - - - - /** - * This function calculates the springforces on the nodes, accounting for the support nodes. - * - * @private - */ - exports._calculateSpringForcesWithSupport = function () { - var edgeLength, edge, edgeId, combinedClusterSize; - var edges = this.edges; - - // forces caused by the edges, modelled as springs - for (edgeId in edges) { - if (edges.hasOwnProperty(edgeId)) { - edge = edges[edgeId]; - if (edge.connected) { - // only calculate forces if nodes are in the same sector - if (this.nodes.hasOwnProperty(edge.toId) && this.nodes.hasOwnProperty(edge.fromId)) { - if (edge.via != null) { - var node1 = edge.to; - var node2 = edge.via; - var node3 = edge.from; - - edgeLength = edge.customLength ? edge.length : this.constants.physics.springLength; - - combinedClusterSize = node1.clusterSize + node3.clusterSize - 2; - - // this implies that the edges between big clusters are longer - edgeLength += combinedClusterSize * this.constants.clustering.edgeGrowth; - this._calculateSpringForce(node1, node2, 0.5 * edgeLength); - this._calculateSpringForce(node2, node3, 0.5 * edgeLength); - } - } - } - } - } - }; - - - /** - * This is the code actually performing the calculation for the function above. It is split out to avoid repetition. - * - * @param node1 - * @param node2 - * @param edgeLength - * @private - */ - exports._calculateSpringForce = function (node1, node2, edgeLength) { - var dx, dy, fx, fy, springForce, distance; - - dx = (node1.x - node2.x); - dy = (node1.y - node2.y); - distance = Math.sqrt(dx * dx + dy * dy); - - if (distance == 0) { - distance = 0.01; - } - - // the 1/distance is so the fx and fy can be calculated without sine or cosine. - springForce = this.constants.physics.springConstant * (edgeLength - distance) / distance; - - fx = dx * springForce; - fy = dy * springForce; - - node1.fx += fx; - node1.fy += fy; - node2.fx -= fx; - node2.fy -= fy; - }; - - - /** - * Load the HTML for the physics config and bind it - * @private - */ - exports._loadPhysicsConfiguration = function () { - if (this.physicsConfiguration === undefined) { - this.backupConstants = {}; - util.deepExtend(this.backupConstants,this.constants); - - var hierarchicalLayoutDirections = ["LR", "RL", "UD", "DU"]; - this.physicsConfiguration = document.createElement('div'); - this.physicsConfiguration.className = "PhysicsConfiguration"; - this.physicsConfiguration.innerHTML = '' + - '' + - '' + - '' + - '' + - '' + - '' + - '
Simulation Mode:
Barnes HutRepulsionHierarchical
' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '
Options:
' - this.containerElement.parentElement.insertBefore(this.physicsConfiguration, this.containerElement); - this.optionsDiv = document.createElement("div"); - this.optionsDiv.style.fontSize = "14px"; - this.optionsDiv.style.fontFamily = "verdana"; - this.containerElement.parentElement.insertBefore(this.optionsDiv, this.containerElement); - - var rangeElement; - rangeElement = document.getElementById('graph_BH_gc'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_BH_gc', -1, "physics_barnesHut_gravitationalConstant"); - rangeElement = document.getElementById('graph_BH_cg'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_BH_cg', 1, "physics_centralGravity"); - rangeElement = document.getElementById('graph_BH_sc'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_BH_sc', 1, "physics_springConstant"); - rangeElement = document.getElementById('graph_BH_sl'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_BH_sl', 1, "physics_springLength"); - rangeElement = document.getElementById('graph_BH_damp'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_BH_damp', 1, "physics_damping"); - - rangeElement = document.getElementById('graph_R_nd'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_R_nd', 1, "physics_repulsion_nodeDistance"); - rangeElement = document.getElementById('graph_R_cg'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_R_cg', 1, "physics_centralGravity"); - rangeElement = document.getElementById('graph_R_sc'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_R_sc', 1, "physics_springConstant"); - rangeElement = document.getElementById('graph_R_sl'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_R_sl', 1, "physics_springLength"); - rangeElement = document.getElementById('graph_R_damp'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_R_damp', 1, "physics_damping"); - - rangeElement = document.getElementById('graph_H_nd'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_nd', 1, "physics_hierarchicalRepulsion_nodeDistance"); - rangeElement = document.getElementById('graph_H_cg'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_cg', 1, "physics_centralGravity"); - rangeElement = document.getElementById('graph_H_sc'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_sc', 1, "physics_springConstant"); - rangeElement = document.getElementById('graph_H_sl'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_sl', 1, "physics_springLength"); - rangeElement = document.getElementById('graph_H_damp'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_damp', 1, "physics_damping"); - rangeElement = document.getElementById('graph_H_direction'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_direction', hierarchicalLayoutDirections, "hierarchicalLayout_direction"); - rangeElement = document.getElementById('graph_H_levsep'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_levsep', 1, "hierarchicalLayout_levelSeparation"); - rangeElement = document.getElementById('graph_H_nspac'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_nspac', 1, "hierarchicalLayout_nodeSpacing"); - - var radioButton1 = document.getElementById("graph_physicsMethod1"); - var radioButton2 = document.getElementById("graph_physicsMethod2"); - var radioButton3 = document.getElementById("graph_physicsMethod3"); - radioButton2.checked = true; - if (this.constants.physics.barnesHut.enabled) { - radioButton1.checked = true; - } - if (this.constants.hierarchicalLayout.enabled) { - radioButton3.checked = true; + // get the regex to find the next token + function getParseRegexForToken(token, config) { + var a, strict = config._strict; + switch (token) { + case 'Q': + return parseTokenOneDigit; + case 'DDDD': + return parseTokenThreeDigits; + case 'YYYY': + case 'GGGG': + case 'gggg': + return strict ? parseTokenFourDigits : parseTokenOneToFourDigits; + case 'Y': + case 'G': + case 'g': + return parseTokenSignedNumber; + case 'YYYYYY': + case 'YYYYY': + case 'GGGGG': + case 'ggggg': + return strict ? parseTokenSixDigits : parseTokenOneToSixDigits; + case 'S': + if (strict) { return parseTokenOneDigit; } + /* falls through */ + case 'SS': + if (strict) { return parseTokenTwoDigits; } + /* falls through */ + case 'SSS': + if (strict) { return parseTokenThreeDigits; } + /* falls through */ + case 'DDD': + return parseTokenOneToThreeDigits; + case 'MMM': + case 'MMMM': + case 'dd': + case 'ddd': + case 'dddd': + return parseTokenWord; + case 'a': + case 'A': + return getLangDefinition(config._l)._meridiemParse; + case 'X': + return parseTokenTimestampMs; + case 'Z': + case 'ZZ': + return parseTokenTimezone; + case 'T': + return parseTokenT; + case 'SSSS': + return parseTokenDigits; + case 'MM': + case 'DD': + case 'YY': + case 'GG': + case 'gg': + case 'HH': + case 'hh': + case 'mm': + case 'ss': + case 'ww': + case 'WW': + return strict ? parseTokenTwoDigits : parseTokenOneOrTwoDigits; + case 'M': + case 'D': + case 'd': + case 'H': + case 'h': + case 'm': + case 's': + case 'w': + case 'W': + case 'e': + case 'E': + return parseTokenOneOrTwoDigits; + case 'Do': + return parseTokenOrdinal; + default : + a = new RegExp(regexpEscape(unescapeFormat(token.replace('\\', '')), "i")); + return a; + } } - var graph_toggleSmooth = document.getElementById("graph_toggleSmooth"); - var graph_repositionNodes = document.getElementById("graph_repositionNodes"); - var graph_generateOptions = document.getElementById("graph_generateOptions"); + function timezoneMinutesFromString(string) { + string = string || ""; + var possibleTzMatches = (string.match(parseTokenTimezone) || []), + tzChunk = possibleTzMatches[possibleTzMatches.length - 1] || [], + parts = (tzChunk + '').match(parseTimezoneChunker) || ['-', 0, 0], + minutes = +(parts[1] * 60) + toInt(parts[2]); - graph_toggleSmooth.onclick = graphToggleSmoothCurves.bind(this); - graph_repositionNodes.onclick = graphRepositionNodes.bind(this); - graph_generateOptions.onclick = graphGenerateOptions.bind(this); - if (this.constants.smoothCurves == true && this.constants.dynamicSmoothCurves == false) { - graph_toggleSmooth.style.background = "#A4FF56"; - } - else { - graph_toggleSmooth.style.background = "#FF8532"; + return parts[0] === '+' ? -minutes : minutes; } + // function to convert string input to date + function addTimeToArrayFromToken(token, input, config) { + var a, datePartArray = config._a; - switchConfigurations.apply(this); - - radioButton1.onchange = switchConfigurations.bind(this); - radioButton2.onchange = switchConfigurations.bind(this); - radioButton3.onchange = switchConfigurations.bind(this); - } - }; + switch (token) { + // QUARTER + case 'Q': + if (input != null) { + datePartArray[MONTH] = (toInt(input) - 1) * 3; + } + break; + // MONTH + case 'M' : // fall through to MM + case 'MM' : + if (input != null) { + datePartArray[MONTH] = toInt(input) - 1; + } + break; + case 'MMM' : // fall through to MMMM + case 'MMMM' : + a = getLangDefinition(config._l).monthsParse(input); + // if we didn't find a month name, mark the date as invalid. + if (a != null) { + datePartArray[MONTH] = a; + } else { + config._pf.invalidMonth = input; + } + break; + // DAY OF MONTH + case 'D' : // fall through to DD + case 'DD' : + if (input != null) { + datePartArray[DATE] = toInt(input); + } + break; + case 'Do' : + if (input != null) { + datePartArray[DATE] = toInt(parseInt(input, 10)); + } + break; + // DAY OF YEAR + case 'DDD' : // fall through to DDDD + case 'DDDD' : + if (input != null) { + config._dayOfYear = toInt(input); + } - /** - * This overwrites the this.constants. - * - * @param constantsVariableName - * @param value - * @private - */ - exports._overWriteGraphConstants = function (constantsVariableName, value) { - var nameArray = constantsVariableName.split("_"); - if (nameArray.length == 1) { - this.constants[nameArray[0]] = value; - } - else if (nameArray.length == 2) { - this.constants[nameArray[0]][nameArray[1]] = value; - } - else if (nameArray.length == 3) { - this.constants[nameArray[0]][nameArray[1]][nameArray[2]] = value; - } - }; + break; + // YEAR + case 'YY' : + datePartArray[YEAR] = moment.parseTwoDigitYear(input); + break; + case 'YYYY' : + case 'YYYYY' : + case 'YYYYYY' : + datePartArray[YEAR] = toInt(input); + break; + // AM / PM + case 'a' : // fall through to A + case 'A' : + config._isPm = getLangDefinition(config._l).isPM(input); + break; + // 24 HOUR + case 'H' : // fall through to hh + case 'HH' : // fall through to hh + case 'h' : // fall through to hh + case 'hh' : + datePartArray[HOUR] = toInt(input); + break; + // MINUTE + case 'm' : // fall through to mm + case 'mm' : + datePartArray[MINUTE] = toInt(input); + break; + // SECOND + case 's' : // fall through to ss + case 'ss' : + datePartArray[SECOND] = toInt(input); + break; + // MILLISECOND + case 'S' : + case 'SS' : + case 'SSS' : + case 'SSSS' : + datePartArray[MILLISECOND] = toInt(('0.' + input) * 1000); + break; + // UNIX TIMESTAMP WITH MS + case 'X': + config._d = new Date(parseFloat(input) * 1000); + break; + // TIMEZONE + case 'Z' : // fall through to ZZ + case 'ZZ' : + config._useUTC = true; + config._tzm = timezoneMinutesFromString(input); + break; + // WEEKDAY - human + case 'dd': + case 'ddd': + case 'dddd': + a = getLangDefinition(config._l).weekdaysParse(input); + // if we didn't get a weekday name, mark the date as invalid + if (a != null) { + config._w = config._w || {}; + config._w['d'] = a; + } else { + config._pf.invalidWeekday = input; + } + break; + // WEEK, WEEK DAY - numeric + case 'w': + case 'ww': + case 'W': + case 'WW': + case 'd': + case 'e': + case 'E': + token = token.substr(0, 1); + /* falls through */ + case 'gggg': + case 'GGGG': + case 'GGGGG': + token = token.substr(0, 2); + if (input) { + config._w = config._w || {}; + config._w[token] = toInt(input); + } + break; + case 'gg': + case 'GG': + config._w = config._w || {}; + config._w[token] = moment.parseTwoDigitYear(input); + } + } + function dayOfYearFromWeekInfo(config) { + var w, weekYear, week, weekday, dow, doy, temp, lang; - /** - * this function is bound to the toggle smooth curves button. That is also why it is not in the prototype. - */ - function graphToggleSmoothCurves () { - this.constants.smoothCurves.enabled = !this.constants.smoothCurves.enabled; - var graph_toggleSmooth = document.getElementById("graph_toggleSmooth"); - if (this.constants.smoothCurves.enabled == true) {graph_toggleSmooth.style.background = "#A4FF56";} - else {graph_toggleSmooth.style.background = "#FF8532";} + w = config._w; + if (w.GG != null || w.W != null || w.E != null) { + dow = 1; + doy = 4; - this._configureSmoothCurves(false); - } + // TODO: We need to take the current isoWeekYear, but that depends on + // how we interpret now (local, utc, fixed offset). So create + // a now version of current config (take local/utc/offset flags, and + // create now). + weekYear = dfl(w.GG, config._a[YEAR], weekOfYear(moment(), 1, 4).year); + week = dfl(w.W, 1); + weekday = dfl(w.E, 1); + } else { + lang = getLangDefinition(config._l); + dow = lang._week.dow; + doy = lang._week.doy; - /** - * this function is used to scramble the nodes - * - */ - function graphRepositionNodes () { - for (var nodeId in this.calculationNodes) { - if (this.calculationNodes.hasOwnProperty(nodeId)) { - this.calculationNodes[nodeId].vx = 0; this.calculationNodes[nodeId].vy = 0; - this.calculationNodes[nodeId].fx = 0; this.calculationNodes[nodeId].fy = 0; - } - } - if (this.constants.hierarchicalLayout.enabled == true) { - this._setupHierarchicalLayout(); - showValueOfRange.call(this, 'graph_H_nd', 1, "physics_hierarchicalRepulsion_nodeDistance"); - showValueOfRange.call(this, 'graph_H_cg', 1, "physics_centralGravity"); - showValueOfRange.call(this, 'graph_H_sc', 1, "physics_springConstant"); - showValueOfRange.call(this, 'graph_H_sl', 1, "physics_springLength"); - showValueOfRange.call(this, 'graph_H_damp', 1, "physics_damping"); - } - else { - this.repositionNodes(); - } - this.moving = true; - this.start(); - } + weekYear = dfl(w.gg, config._a[YEAR], weekOfYear(moment(), dow, doy).year); + week = dfl(w.w, 1); - /** - * this is used to generate an options file from the playing with physics system. - */ - function graphGenerateOptions () { - var options = "No options are required, default values used."; - var optionsSpecific = []; - var radioButton1 = document.getElementById("graph_physicsMethod1"); - var radioButton2 = document.getElementById("graph_physicsMethod2"); - if (radioButton1.checked == true) { - if (this.constants.physics.barnesHut.gravitationalConstant != this.backupConstants.physics.barnesHut.gravitationalConstant) {optionsSpecific.push("gravitationalConstant: " + this.constants.physics.barnesHut.gravitationalConstant);} - if (this.constants.physics.centralGravity != this.backupConstants.physics.barnesHut.centralGravity) {optionsSpecific.push("centralGravity: " + this.constants.physics.centralGravity);} - if (this.constants.physics.springLength != this.backupConstants.physics.barnesHut.springLength) {optionsSpecific.push("springLength: " + this.constants.physics.springLength);} - if (this.constants.physics.springConstant != this.backupConstants.physics.barnesHut.springConstant) {optionsSpecific.push("springConstant: " + this.constants.physics.springConstant);} - if (this.constants.physics.damping != this.backupConstants.physics.barnesHut.damping) {optionsSpecific.push("damping: " + this.constants.physics.damping);} - if (optionsSpecific.length != 0) { - options = "var options = {"; - options += "physics: {barnesHut: {"; - for (var i = 0; i < optionsSpecific.length; i++) { - options += optionsSpecific[i]; - if (i < optionsSpecific.length - 1) { - options += ", " - } - } - options += '}}' - } - if (this.constants.smoothCurves.enabled != this.backupConstants.smoothCurves.enabled) { - if (optionsSpecific.length == 0) {options = "var options = {";} - else {options += ", "} - options += "smoothCurves: " + this.constants.smoothCurves.enabled; - } - if (options != "No options are required, default values used.") { - options += '};' - } - } - else if (radioButton2.checked == true) { - options = "var options = {"; - options += "physics: {barnesHut: {enabled: false}"; - if (this.constants.physics.repulsion.nodeDistance != this.backupConstants.physics.repulsion.nodeDistance) {optionsSpecific.push("nodeDistance: " + this.constants.physics.repulsion.nodeDistance);} - if (this.constants.physics.centralGravity != this.backupConstants.physics.repulsion.centralGravity) {optionsSpecific.push("centralGravity: " + this.constants.physics.centralGravity);} - if (this.constants.physics.springLength != this.backupConstants.physics.repulsion.springLength) {optionsSpecific.push("springLength: " + this.constants.physics.springLength);} - if (this.constants.physics.springConstant != this.backupConstants.physics.repulsion.springConstant) {optionsSpecific.push("springConstant: " + this.constants.physics.springConstant);} - if (this.constants.physics.damping != this.backupConstants.physics.repulsion.damping) {optionsSpecific.push("damping: " + this.constants.physics.damping);} - if (optionsSpecific.length != 0) { - options += ", repulsion: {"; - for (var i = 0; i < optionsSpecific.length; i++) { - options += optionsSpecific[i]; - if (i < optionsSpecific.length - 1) { - options += ", " - } - } - options += '}}' - } - if (optionsSpecific.length == 0) {options += "}"} - if (this.constants.smoothCurves != this.backupConstants.smoothCurves) { - options += ", smoothCurves: " + this.constants.smoothCurves; - } - options += '};' - } - else { - options = "var options = {"; - if (this.constants.physics.hierarchicalRepulsion.nodeDistance != this.backupConstants.physics.hierarchicalRepulsion.nodeDistance) {optionsSpecific.push("nodeDistance: " + this.constants.physics.hierarchicalRepulsion.nodeDistance);} - if (this.constants.physics.centralGravity != this.backupConstants.physics.hierarchicalRepulsion.centralGravity) {optionsSpecific.push("centralGravity: " + this.constants.physics.centralGravity);} - if (this.constants.physics.springLength != this.backupConstants.physics.hierarchicalRepulsion.springLength) {optionsSpecific.push("springLength: " + this.constants.physics.springLength);} - if (this.constants.physics.springConstant != this.backupConstants.physics.hierarchicalRepulsion.springConstant) {optionsSpecific.push("springConstant: " + this.constants.physics.springConstant);} - if (this.constants.physics.damping != this.backupConstants.physics.hierarchicalRepulsion.damping) {optionsSpecific.push("damping: " + this.constants.physics.damping);} - if (optionsSpecific.length != 0) { - options += "physics: {hierarchicalRepulsion: {"; - for (var i = 0; i < optionsSpecific.length; i++) { - options += optionsSpecific[i]; - if (i < optionsSpecific.length - 1) { - options += ", "; - } - } - options += '}},'; - } - options += 'hierarchicalLayout: {'; - optionsSpecific = []; - if (this.constants.hierarchicalLayout.direction != this.backupConstants.hierarchicalLayout.direction) {optionsSpecific.push("direction: " + this.constants.hierarchicalLayout.direction);} - if (Math.abs(this.constants.hierarchicalLayout.levelSeparation) != this.backupConstants.hierarchicalLayout.levelSeparation) {optionsSpecific.push("levelSeparation: " + this.constants.hierarchicalLayout.levelSeparation);} - if (this.constants.hierarchicalLayout.nodeSpacing != this.backupConstants.hierarchicalLayout.nodeSpacing) {optionsSpecific.push("nodeSpacing: " + this.constants.hierarchicalLayout.nodeSpacing);} - if (optionsSpecific.length != 0) { - for (var i = 0; i < optionsSpecific.length; i++) { - options += optionsSpecific[i]; - if (i < optionsSpecific.length - 1) { - options += ", " + if (w.d != null) { + // weekday -- low day numbers are considered next week + weekday = w.d; + if (weekday < dow) { + ++week; + } + } else if (w.e != null) { + // local weekday -- counting starts from begining of week + weekday = w.e + dow; + } else { + // default to begining of week + weekday = dow; + } } - } - options += '}' - } - else { - options += "enabled:true}"; + temp = dayOfYearFromWeeks(weekYear, week, weekday, doy, dow); + + config._a[YEAR] = temp.year; + config._dayOfYear = temp.dayOfYear; } - options += '};' - } + // convert an array to a date. + // the array should mirror the parameters below + // note: all values past the year are optional and will default to the lowest possible value. + // [year, month, day , hour, minute, second, millisecond] + function dateFromConfig(config) { + var i, date, input = [], currentDate, yearToUse; - this.optionsDiv.innerHTML = options; - } + if (config._d) { + return; + } - /** - * this is used to switch between barnesHut, repulsion and hierarchical. - * - */ - function switchConfigurations () { - var ids = ["graph_BH_table", "graph_R_table", "graph_H_table"]; - var radioButton = document.querySelector('input[name="graph_physicsMethod"]:checked').value; - var tableId = "graph_" + radioButton + "_table"; - var table = document.getElementById(tableId); - table.style.display = "block"; - for (var i = 0; i < ids.length; i++) { - if (ids[i] != tableId) { - table = document.getElementById(ids[i]); - table.style.display = "none"; - } - } - this._restoreNodes(); - if (radioButton == "R") { - this.constants.hierarchicalLayout.enabled = false; - this.constants.physics.hierarchicalRepulsion.enabled = false; - this.constants.physics.barnesHut.enabled = false; - } - else if (radioButton == "H") { - if (this.constants.hierarchicalLayout.enabled == false) { - this.constants.hierarchicalLayout.enabled = true; - this.constants.physics.hierarchicalRepulsion.enabled = true; - this.constants.physics.barnesHut.enabled = false; - this.constants.smoothCurves.enabled = false; - this._setupHierarchicalLayout(); - } - } - else { - this.constants.hierarchicalLayout.enabled = false; - this.constants.physics.hierarchicalRepulsion.enabled = false; - this.constants.physics.barnesHut.enabled = true; - } - this._loadSelectedForceSolver(); - var graph_toggleSmooth = document.getElementById("graph_toggleSmooth"); - if (this.constants.smoothCurves.enabled == true) {graph_toggleSmooth.style.background = "#A4FF56";} - else {graph_toggleSmooth.style.background = "#FF8532";} - this.moving = true; - this.start(); - } + currentDate = currentDateArray(config); + + //compute day of the year from weeks and weekdays + if (config._w && config._a[DATE] == null && config._a[MONTH] == null) { + dayOfYearFromWeekInfo(config); + } + //if the day of the year is set, figure out what it is + if (config._dayOfYear) { + yearToUse = dfl(config._a[YEAR], currentDate[YEAR]); - /** - * this generates the ranges depending on the iniital values. - * - * @param id - * @param map - * @param constantsVariableName - */ - function showValueOfRange (id,map,constantsVariableName) { - var valueId = id + "_value"; - var rangeValue = document.getElementById(id).value; + if (config._dayOfYear > daysInYear(yearToUse)) { + config._pf._overflowDayOfYear = true; + } - if (map instanceof Array) { - document.getElementById(valueId).value = map[parseInt(rangeValue)]; - this._overWriteGraphConstants(constantsVariableName,map[parseInt(rangeValue)]); - } - else { - document.getElementById(valueId).value = parseInt(map) * parseFloat(rangeValue); - this._overWriteGraphConstants(constantsVariableName, parseInt(map) * parseFloat(rangeValue)); - } + date = makeUTCDate(yearToUse, 0, config._dayOfYear); + config._a[MONTH] = date.getUTCMonth(); + config._a[DATE] = date.getUTCDate(); + } - if (constantsVariableName == "hierarchicalLayout_direction" || - constantsVariableName == "hierarchicalLayout_levelSeparation" || - constantsVariableName == "hierarchicalLayout_nodeSpacing") { - this._setupHierarchicalLayout(); - } - this.moving = true; - this.start(); - } + // Default to current date. + // * if no year, month, day of month are given, default to today + // * if day of month is given, default month and year + // * if month is given, default only year + // * if year is given, don't default anything + for (i = 0; i < 3 && config._a[i] == null; ++i) { + config._a[i] = input[i] = currentDate[i]; + } + // Zero out whatever was not defaulted, including time + for (; i < 7; i++) { + config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i]; + } -/***/ }, -/* 53 */ -/***/ function(module, exports, __webpack_require__) { + config._d = (config._useUTC ? makeUTCDate : makeDate).apply(null, input); + // Apply timezone offset from input. The actual zone can be changed + // with parseZone. + if (config._tzm != null) { + config._d.setUTCMinutes(config._d.getUTCMinutes() + config._tzm); + } + } - var __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(global, module) {//! moment.js - //! version : 2.7.0 - //! authors : Tim Wood, Iskren Chernev, Moment.js contributors - //! license : MIT - //! momentjs.com + function dateFromObject(config) { + var normalizedInput; - (function (undefined) { + if (config._d) { + return; + } - /************************************ - Constants - ************************************/ + normalizedInput = normalizeObjectUnits(config._i); + config._a = [ + normalizedInput.year, + normalizedInput.month, + normalizedInput.day, + normalizedInput.hour, + normalizedInput.minute, + normalizedInput.second, + normalizedInput.millisecond + ]; - var moment, - VERSION = "2.7.0", - // the global-scope this is NOT the global object in Node.js - globalScope = typeof global !== 'undefined' ? global : this, - oldGlobalMoment, - round = Math.round, - i, + dateFromConfig(config); + } - YEAR = 0, - MONTH = 1, - DATE = 2, - HOUR = 3, - MINUTE = 4, - SECOND = 5, - MILLISECOND = 6, + function currentDateArray(config) { + var now = new Date(); + if (config._useUTC) { + return [ + now.getUTCFullYear(), + now.getUTCMonth(), + now.getUTCDate() + ]; + } else { + return [now.getFullYear(), now.getMonth(), now.getDate()]; + } + } - // internal storage for language config files - languages = {}, + // date from string and format string + function makeDateFromStringAndFormat(config) { - // moment internal properties - momentProperties = { - _isAMomentObject: null, - _i : null, - _f : null, - _l : null, - _strict : null, - _tzm : null, - _isUTC : null, - _offset : null, // optional. Combine with _isUTC - _pf : null, - _lang : null // optional - }, + if (config._f === moment.ISO_8601) { + parseISO(config); + return; + } - // check for nodeJS - hasModule = (typeof module !== 'undefined' && module.exports), + config._a = []; + config._pf.empty = true; - // ASP.NET json date format regex - aspNetJsonRegex = /^\/?Date\((\-?\d+)/i, - aspNetTimeSpanJsonRegex = /(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/, + // This array is used to make a Date, either with `new Date` or `Date.UTC` + var lang = getLangDefinition(config._l), + string = '' + config._i, + i, parsedInput, tokens, token, skipped, + stringLength = string.length, + totalParsedInputLength = 0; - // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html - // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere - isoDurationRegex = /^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/, + tokens = expandFormat(config._f, lang).match(formattingTokens) || []; - // format tokens - formattingTokens = /(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|X|zz?|ZZ?|.)/g, - localFormattingTokens = /(\[[^\[]*\])|(\\)?(LT|LL?L?L?|l{1,4})/g, + for (i = 0; i < tokens.length; i++) { + token = tokens[i]; + parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0]; + if (parsedInput) { + skipped = string.substr(0, string.indexOf(parsedInput)); + if (skipped.length > 0) { + config._pf.unusedInput.push(skipped); + } + string = string.slice(string.indexOf(parsedInput) + parsedInput.length); + totalParsedInputLength += parsedInput.length; + } + // don't parse if it's not a known token + if (formatTokenFunctions[token]) { + if (parsedInput) { + config._pf.empty = false; + } + else { + config._pf.unusedTokens.push(token); + } + addTimeToArrayFromToken(token, parsedInput, config); + } + else if (config._strict && !parsedInput) { + config._pf.unusedTokens.push(token); + } + } - // parsing token regexes - parseTokenOneOrTwoDigits = /\d\d?/, // 0 - 99 - parseTokenOneToThreeDigits = /\d{1,3}/, // 0 - 999 - parseTokenOneToFourDigits = /\d{1,4}/, // 0 - 9999 - parseTokenOneToSixDigits = /[+\-]?\d{1,6}/, // -999,999 - 999,999 - parseTokenDigits = /\d+/, // nonzero number of digits - parseTokenWord = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i, // any word (or two) characters or numbers including two/three word month in arabic. - parseTokenTimezone = /Z|[\+\-]\d\d:?\d\d/gi, // +00:00 -00:00 +0000 -0000 or Z - parseTokenT = /T/i, // T (ISO separator) - parseTokenTimestampMs = /[\+\-]?\d+(\.\d{1,3})?/, // 123456789 123456789.123 - parseTokenOrdinal = /\d{1,2}/, + // add remaining unparsed input length to the string + config._pf.charsLeftOver = stringLength - totalParsedInputLength; + if (string.length > 0) { + config._pf.unusedInput.push(string); + } - //strict parsing regexes - parseTokenOneDigit = /\d/, // 0 - 9 - parseTokenTwoDigits = /\d\d/, // 00 - 99 - parseTokenThreeDigits = /\d{3}/, // 000 - 999 - parseTokenFourDigits = /\d{4}/, // 0000 - 9999 - parseTokenSixDigits = /[+-]?\d{6}/, // -999,999 - 999,999 - parseTokenSignedNumber = /[+-]?\d+/, // -inf - inf + // handle am pm + if (config._isPm && config._a[HOUR] < 12) { + config._a[HOUR] += 12; + } + // if is 12 am, change hours to 0 + if (config._isPm === false && config._a[HOUR] === 12) { + config._a[HOUR] = 0; + } - // iso 8601 regex - // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00) - isoRegex = /^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/, + dateFromConfig(config); + checkOverflow(config); + } - isoFormat = 'YYYY-MM-DDTHH:mm:ssZ', + function unescapeFormat(s) { + return s.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) { + return p1 || p2 || p3 || p4; + }); + } - isoDates = [ - ['YYYYYY-MM-DD', /[+-]\d{6}-\d{2}-\d{2}/], - ['YYYY-MM-DD', /\d{4}-\d{2}-\d{2}/], - ['GGGG-[W]WW-E', /\d{4}-W\d{2}-\d/], - ['GGGG-[W]WW', /\d{4}-W\d{2}/], - ['YYYY-DDD', /\d{4}-\d{3}/] - ], + // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript + function regexpEscape(s) { + return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); + } - // iso time formats and regexes - isoTimes = [ - ['HH:mm:ss.SSSS', /(T| )\d\d:\d\d:\d\d\.\d+/], - ['HH:mm:ss', /(T| )\d\d:\d\d:\d\d/], - ['HH:mm', /(T| )\d\d:\d\d/], - ['HH', /(T| )\d\d/] - ], + // date from string and array of format strings + function makeDateFromStringAndArray(config) { + var tempConfig, + bestMoment, - // timezone chunker "+10:00" > ["10", "00"] or "-1530" > ["-15", "30"] - parseTimezoneChunker = /([\+\-]|\d\d)/gi, + scoreToBeat, + i, + currentScore; - // getter and setter names - proxyGettersAndSetters = 'Date|Hours|Minutes|Seconds|Milliseconds'.split('|'), - unitMillisecondFactors = { - 'Milliseconds' : 1, - 'Seconds' : 1e3, - 'Minutes' : 6e4, - 'Hours' : 36e5, - 'Days' : 864e5, - 'Months' : 2592e6, - 'Years' : 31536e6 - }, + if (config._f.length === 0) { + config._pf.invalidFormat = true; + config._d = new Date(NaN); + return; + } + + for (i = 0; i < config._f.length; i++) { + currentScore = 0; + tempConfig = extend({}, config); + tempConfig._pf = defaultParsingFlags(); + tempConfig._f = config._f[i]; + makeDateFromStringAndFormat(tempConfig); + + if (!isValid(tempConfig)) { + continue; + } - unitAliases = { - ms : 'millisecond', - s : 'second', - m : 'minute', - h : 'hour', - d : 'day', - D : 'date', - w : 'week', - W : 'isoWeek', - M : 'month', - Q : 'quarter', - y : 'year', - DDD : 'dayOfYear', - e : 'weekday', - E : 'isoWeekday', - gg: 'weekYear', - GG: 'isoWeekYear' - }, + // if there is any input that was not parsed add a penalty for that format + currentScore += tempConfig._pf.charsLeftOver; - camelFunctions = { - dayofyear : 'dayOfYear', - isoweekday : 'isoWeekday', - isoweek : 'isoWeek', - weekyear : 'weekYear', - isoweekyear : 'isoWeekYear' - }, + //or tokens + currentScore += tempConfig._pf.unusedTokens.length * 10; - // format function strings - formatFunctions = {}, + tempConfig._pf.score = currentScore; - // default relative time thresholds - relativeTimeThresholds = { - s: 45, //seconds to minutes - m: 45, //minutes to hours - h: 22, //hours to days - dd: 25, //days to month (month == 1) - dm: 45, //days to months (months > 1) - dy: 345 //days to year - }, + if (scoreToBeat == null || currentScore < scoreToBeat) { + scoreToBeat = currentScore; + bestMoment = tempConfig; + } + } - // tokens to ordinalize and pad - ordinalizeTokens = 'DDD w W M D d'.split(' '), - paddedTokens = 'M D H h m s w W'.split(' '), + extend(config, bestMoment || tempConfig); + } - formatTokenFunctions = { - M : function () { - return this.month() + 1; - }, - MMM : function (format) { - return this.lang().monthsShort(this, format); - }, - MMMM : function (format) { - return this.lang().months(this, format); - }, - D : function () { - return this.date(); - }, - DDD : function () { - return this.dayOfYear(); - }, - d : function () { - return this.day(); - }, - dd : function (format) { - return this.lang().weekdaysMin(this, format); - }, - ddd : function (format) { - return this.lang().weekdaysShort(this, format); - }, - dddd : function (format) { - return this.lang().weekdays(this, format); - }, - w : function () { - return this.week(); - }, - W : function () { - return this.isoWeek(); - }, - YY : function () { - return leftZeroFill(this.year() % 100, 2); - }, - YYYY : function () { - return leftZeroFill(this.year(), 4); - }, - YYYYY : function () { - return leftZeroFill(this.year(), 5); - }, - YYYYYY : function () { - var y = this.year(), sign = y >= 0 ? '+' : '-'; - return sign + leftZeroFill(Math.abs(y), 6); - }, - gg : function () { - return leftZeroFill(this.weekYear() % 100, 2); - }, - gggg : function () { - return leftZeroFill(this.weekYear(), 4); - }, - ggggg : function () { - return leftZeroFill(this.weekYear(), 5); - }, - GG : function () { - return leftZeroFill(this.isoWeekYear() % 100, 2); - }, - GGGG : function () { - return leftZeroFill(this.isoWeekYear(), 4); - }, - GGGGG : function () { - return leftZeroFill(this.isoWeekYear(), 5); - }, - e : function () { - return this.weekday(); - }, - E : function () { - return this.isoWeekday(); - }, - a : function () { - return this.lang().meridiem(this.hours(), this.minutes(), true); - }, - A : function () { - return this.lang().meridiem(this.hours(), this.minutes(), false); - }, - H : function () { - return this.hours(); - }, - h : function () { - return this.hours() % 12 || 12; - }, - m : function () { - return this.minutes(); - }, - s : function () { - return this.seconds(); - }, - S : function () { - return toInt(this.milliseconds() / 100); - }, - SS : function () { - return leftZeroFill(toInt(this.milliseconds() / 10), 2); - }, - SSS : function () { - return leftZeroFill(this.milliseconds(), 3); - }, - SSSS : function () { - return leftZeroFill(this.milliseconds(), 3); - }, - Z : function () { - var a = -this.zone(), - b = "+"; - if (a < 0) { - a = -a; - b = "-"; + // date from iso format + function parseISO(config) { + var i, l, + string = config._i, + match = isoRegex.exec(string); + + if (match) { + config._pf.iso = true; + for (i = 0, l = isoDates.length; i < l; i++) { + if (isoDates[i][1].exec(string)) { + // match[5] should be "T" or undefined + config._f = isoDates[i][0] + (match[6] || " "); + break; } - return b + leftZeroFill(toInt(a / 60), 2) + ":" + leftZeroFill(toInt(a) % 60, 2); - }, - ZZ : function () { - var a = -this.zone(), - b = "+"; - if (a < 0) { - a = -a; - b = "-"; + } + for (i = 0, l = isoTimes.length; i < l; i++) { + if (isoTimes[i][1].exec(string)) { + config._f += isoTimes[i][0]; + break; } - return b + leftZeroFill(toInt(a / 60), 2) + leftZeroFill(toInt(a) % 60, 2); - }, - z : function () { - return this.zoneAbbr(); - }, - zz : function () { - return this.zoneName(); - }, - X : function () { - return this.unix(); - }, - Q : function () { - return this.quarter(); } - }, + if (string.match(parseTokenTimezone)) { + config._f += "Z"; + } + makeDateFromStringAndFormat(config); + } else { + config._isValid = false; + } + } - lists = ['months', 'monthsShort', 'weekdays', 'weekdaysShort', 'weekdaysMin']; + // date from iso format or fallback + function makeDateFromString(config) { + parseISO(config); + if (config._isValid === false) { + delete config._isValid; + moment.createFromInputFallback(config); + } + } - // Pick the first defined of two or three arguments. dfl comes from - // default. - function dfl(a, b, c) { - switch (arguments.length) { - case 2: return a != null ? a : b; - case 3: return a != null ? a : b != null ? b : c; - default: throw new Error("Implement me"); + function makeDateFromInput(config) { + var input = config._i, + matched = aspNetJsonRegex.exec(input); + + if (input === undefined) { + config._d = new Date(); + } else if (matched) { + config._d = new Date(+matched[1]); + } else if (typeof input === 'string') { + makeDateFromString(config); + } else if (isArray(input)) { + config._a = input.slice(0); + dateFromConfig(config); + } else if (isDate(input)) { + config._d = new Date(+input); + } else if (typeof(input) === 'object') { + dateFromObject(config); + } else if (typeof(input) === 'number') { + // from milliseconds + config._d = new Date(input); + } else { + moment.createFromInputFallback(config); + } + } + + function makeDate(y, m, d, h, M, s, ms) { + //can't just apply() to create a date: + //http://stackoverflow.com/questions/181348/instantiating-a-javascript-object-by-calling-prototype-constructor-apply + var date = new Date(y, m, d, h, M, s, ms); + + //the date constructor doesn't accept years < 1970 + if (y < 1970) { + date.setFullYear(y); } + return date; } - function defaultParsingFlags() { - // We need to deep clone this object, and es5 standard is not very - // helpful. - return { - empty : false, - unusedTokens : [], - unusedInput : [], - overflow : -2, - charsLeftOver : 0, - nullInput : false, - invalidMonth : null, - invalidFormat : false, - userInvalidated : false, - iso: false - }; + function makeUTCDate(y) { + var date = new Date(Date.UTC.apply(null, arguments)); + if (y < 1970) { + date.setUTCFullYear(y); + } + return date; } - function deprecate(msg, fn) { - var firstTime = true; - function printMsg() { - if (moment.suppressDeprecationWarnings === false && - typeof console !== 'undefined' && console.warn) { - console.warn("Deprecation warning: " + msg); + function parseWeekday(input, language) { + if (typeof input === 'string') { + if (!isNaN(input)) { + input = parseInt(input, 10); } - } - return extend(function () { - if (firstTime) { - printMsg(); - firstTime = false; + else { + input = language.weekdaysParse(input); + if (typeof input !== 'number') { + return null; + } } - return fn.apply(this, arguments); - }, fn); + } + return input; } - function padToken(func, count) { - return function (a) { - return leftZeroFill(func.call(this, a), count); - }; - } - function ordinalizeToken(func, period) { - return function (a) { - return this.lang().ordinal(func.call(this, a), period); - }; - } + /************************************ + Relative Time + ************************************/ - while (ordinalizeTokens.length) { - i = ordinalizeTokens.pop(); - formatTokenFunctions[i + 'o'] = ordinalizeToken(formatTokenFunctions[i], i); + + // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize + function substituteTimeAgo(string, number, withoutSuffix, isFuture, lang) { + return lang.relativeTime(number || 1, !!withoutSuffix, string, isFuture); } - while (paddedTokens.length) { - i = paddedTokens.pop(); - formatTokenFunctions[i + i] = padToken(formatTokenFunctions[i], 2); + + function relativeTime(milliseconds, withoutSuffix, lang) { + var seconds = round(Math.abs(milliseconds) / 1000), + minutes = round(seconds / 60), + hours = round(minutes / 60), + days = round(hours / 24), + years = round(days / 365), + args = seconds < relativeTimeThresholds.s && ['s', seconds] || + minutes === 1 && ['m'] || + minutes < relativeTimeThresholds.m && ['mm', minutes] || + hours === 1 && ['h'] || + hours < relativeTimeThresholds.h && ['hh', hours] || + days === 1 && ['d'] || + days <= relativeTimeThresholds.dd && ['dd', days] || + days <= relativeTimeThresholds.dm && ['M'] || + days < relativeTimeThresholds.dy && ['MM', round(days / 30)] || + years === 1 && ['y'] || ['yy', years]; + args[2] = withoutSuffix; + args[3] = milliseconds > 0; + args[4] = lang; + return substituteTimeAgo.apply({}, args); } - formatTokenFunctions.DDDD = padToken(formatTokenFunctions.DDD, 3); /************************************ - Constructors + Week of Year ************************************/ - function Language() { - } + // firstDayOfWeek 0 = sun, 6 = sat + // the day of the week that starts the week + // (usually sunday or monday) + // firstDayOfWeekOfYear 0 = sun, 6 = sat + // the first week is the week that contains the first + // of this day of the week + // (eg. ISO weeks use thursday (4)) + function weekOfYear(mom, firstDayOfWeek, firstDayOfWeekOfYear) { + var end = firstDayOfWeekOfYear - firstDayOfWeek, + daysToDayOfWeek = firstDayOfWeekOfYear - mom.day(), + adjustedMoment; - // Moment prototype object - function Moment(config) { - checkOverflow(config); - extend(this, config); - } - // Duration Constructor - function Duration(duration) { - var normalizedInput = normalizeObjectUnits(duration), - years = normalizedInput.year || 0, - quarters = normalizedInput.quarter || 0, - months = normalizedInput.month || 0, - weeks = normalizedInput.week || 0, - days = normalizedInput.day || 0, - hours = normalizedInput.hour || 0, - minutes = normalizedInput.minute || 0, - seconds = normalizedInput.second || 0, - milliseconds = normalizedInput.millisecond || 0; + if (daysToDayOfWeek > end) { + daysToDayOfWeek -= 7; + } - // representation for dateAddRemove - this._milliseconds = +milliseconds + - seconds * 1e3 + // 1000 - minutes * 6e4 + // 1000 * 60 - hours * 36e5; // 1000 * 60 * 60 - // Because of dateAddRemove treats 24 hours as different from a - // day when working around DST, we need to store them separately - this._days = +days + - weeks * 7; - // It is impossible translate months into days without knowing - // which months you are are talking about, so we have to store - // it separately. - this._months = +months + - quarters * 3 + - years * 12; + if (daysToDayOfWeek < end - 7) { + daysToDayOfWeek += 7; + } - this._data = {}; + adjustedMoment = moment(mom).add('d', daysToDayOfWeek); + return { + week: Math.ceil(adjustedMoment.dayOfYear() / 7), + year: adjustedMoment.year() + }; + } - this._bubble(); + //http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday + function dayOfYearFromWeeks(year, week, weekday, firstDayOfWeekOfYear, firstDayOfWeek) { + var d = makeUTCDate(year, 0, 1).getUTCDay(), daysToAdd, dayOfYear; + + d = d === 0 ? 7 : d; + weekday = weekday != null ? weekday : firstDayOfWeek; + daysToAdd = firstDayOfWeek - d + (d > firstDayOfWeekOfYear ? 7 : 0) - (d < firstDayOfWeek ? 7 : 0); + dayOfYear = 7 * (week - 1) + (weekday - firstDayOfWeek) + daysToAdd + 1; + + return { + year: dayOfYear > 0 ? year : year - 1, + dayOfYear: dayOfYear > 0 ? dayOfYear : daysInYear(year - 1) + dayOfYear + }; } /************************************ - Helpers + Top Level Functions ************************************/ + function makeMoment(config) { + var input = config._i, + format = config._f; - function extend(a, b) { - for (var i in b) { - if (b.hasOwnProperty(i)) { - a[i] = b[i]; - } + if (input === null || (format === undefined && input === '')) { + return moment.invalid({nullInput: true}); } - if (b.hasOwnProperty("toString")) { - a.toString = b.toString; + if (typeof input === 'string') { + config._i = input = getLangDefinition().preparse(input); } - if (b.hasOwnProperty("valueOf")) { - a.valueOf = b.valueOf; + if (moment.isMoment(input)) { + config = cloneMoment(input); + + config._d = new Date(+input._d); + } else if (format) { + if (isArray(format)) { + makeDateFromStringAndArray(config); + } else { + makeDateFromStringAndFormat(config); + } + } else { + makeDateFromInput(config); } - return a; + return new Moment(config); } - function cloneMoment(m) { - var result = {}, i; - for (i in m) { - if (m.hasOwnProperty(i) && momentProperties.hasOwnProperty(i)) { - result[i] = m[i]; - } + moment = function (input, format, lang, strict) { + var c; + + if (typeof(lang) === "boolean") { + strict = lang; + lang = undefined; } + // object construction must be done this way. + // https://github.com/moment/moment/issues/1423 + c = {}; + c._isAMomentObject = true; + c._i = input; + c._f = format; + c._l = lang; + c._strict = strict; + c._isUTC = false; + c._pf = defaultParsingFlags(); - return result; - } + return makeMoment(c); + }; - function absRound(number) { - if (number < 0) { - return Math.ceil(number); - } else { - return Math.floor(number); + moment.suppressDeprecationWarnings = false; + + moment.createFromInputFallback = deprecate( + "moment construction falls back to js Date. This is " + + "discouraged and will be removed in upcoming major " + + "release. Please refer to " + + "https://github.com/moment/moment/issues/1407 for more info.", + function (config) { + config._d = new Date(config._i); + }); + + // Pick a moment m from moments so that m[fn](other) is true for all + // other. This relies on the function fn to be transitive. + // + // moments should either be an array of moment objects or an array, whose + // first element is an array of moment objects. + function pickBy(fn, moments) { + var res, i; + if (moments.length === 1 && isArray(moments[0])) { + moments = moments[0]; + } + if (!moments.length) { + return moment(); + } + res = moments[0]; + for (i = 1; i < moments.length; ++i) { + if (moments[i][fn](res)) { + res = moments[i]; + } } + return res; } - // left zero fill a number - // see http://jsperf.com/left-zero-filling for performance comparison - function leftZeroFill(number, targetLength, forceSign) { - var output = '' + Math.abs(number), - sign = number >= 0; + moment.min = function () { + var args = [].slice.call(arguments, 0); - while (output.length < targetLength) { - output = '0' + output; - } - return (sign ? (forceSign ? '+' : '') : '-') + output; - } + return pickBy('isBefore', args); + }; - // helper function for _.addTime and _.subtractTime - function addOrSubtractDurationFromMoment(mom, duration, isAdding, updateOffset) { - var milliseconds = duration._milliseconds, - days = duration._days, - months = duration._months; - updateOffset = updateOffset == null ? true : updateOffset; + moment.max = function () { + var args = [].slice.call(arguments, 0); - if (milliseconds) { - mom._d.setTime(+mom._d + milliseconds * isAdding); - } - if (days) { - rawSetter(mom, 'Date', rawGetter(mom, 'Date') + days * isAdding); - } - if (months) { - rawMonthSetter(mom, rawGetter(mom, 'Month') + months * isAdding); - } - if (updateOffset) { - moment.updateOffset(mom, days || months); + return pickBy('isAfter', args); + }; + + // creating with utc + moment.utc = function (input, format, lang, strict) { + var c; + + if (typeof(lang) === "boolean") { + strict = lang; + lang = undefined; } - } + // object construction must be done this way. + // https://github.com/moment/moment/issues/1423 + c = {}; + c._isAMomentObject = true; + c._useUTC = true; + c._isUTC = true; + c._l = lang; + c._i = input; + c._f = format; + c._strict = strict; + c._pf = defaultParsingFlags(); - // check if is an array - function isArray(input) { - return Object.prototype.toString.call(input) === '[object Array]'; - } + return makeMoment(c).utc(); + }; - function isDate(input) { - return Object.prototype.toString.call(input) === '[object Date]' || - input instanceof Date; - } + // creating with unix timestamp (in seconds) + moment.unix = function (input) { + return moment(input * 1000); + }; - // compare two arrays, return the number of differences - function compareArrays(array1, array2, dontConvert) { - var len = Math.min(array1.length, array2.length), - lengthDiff = Math.abs(array1.length - array2.length), - diffs = 0, - i; - for (i = 0; i < len; i++) { - if ((dontConvert && array1[i] !== array2[i]) || - (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) { - diffs++; - } - } - return diffs + lengthDiff; - } + // duration + moment.duration = function (input, key) { + var duration = input, + // matching against regexp is expensive, do it on demand + match = null, + sign, + ret, + parseIso; - function normalizeUnits(units) { - if (units) { - var lowered = units.toLowerCase().replace(/(.)s$/, '$1'); - units = unitAliases[units] || camelFunctions[lowered] || lowered; + if (moment.isDuration(input)) { + duration = { + ms: input._milliseconds, + d: input._days, + M: input._months + }; + } else if (typeof input === 'number') { + duration = {}; + if (key) { + duration[key] = input; + } else { + duration.milliseconds = input; + } + } else if (!!(match = aspNetTimeSpanJsonRegex.exec(input))) { + sign = (match[1] === "-") ? -1 : 1; + duration = { + y: 0, + d: toInt(match[DATE]) * sign, + h: toInt(match[HOUR]) * sign, + m: toInt(match[MINUTE]) * sign, + s: toInt(match[SECOND]) * sign, + ms: toInt(match[MILLISECOND]) * sign + }; + } else if (!!(match = isoDurationRegex.exec(input))) { + sign = (match[1] === "-") ? -1 : 1; + parseIso = function (inp) { + // We'd normally use ~~inp for this, but unfortunately it also + // converts floats to ints. + // inp may be undefined, so careful calling replace on it. + var res = inp && parseFloat(inp.replace(',', '.')); + // apply sign while we're at it + return (isNaN(res) ? 0 : res) * sign; + }; + duration = { + y: parseIso(match[2]), + M: parseIso(match[3]), + d: parseIso(match[4]), + h: parseIso(match[5]), + m: parseIso(match[6]), + s: parseIso(match[7]), + w: parseIso(match[8]) + }; } - return units; - } - function normalizeObjectUnits(inputObject) { - var normalizedInput = {}, - normalizedProp, - prop; + ret = new Duration(duration); - for (prop in inputObject) { - if (inputObject.hasOwnProperty(prop)) { - normalizedProp = normalizeUnits(prop); - if (normalizedProp) { - normalizedInput[normalizedProp] = inputObject[prop]; - } - } + if (moment.isDuration(input) && input.hasOwnProperty('_lang')) { + ret._lang = input._lang; } - return normalizedInput; - } + return ret; + }; - function makeList(field) { - var count, setter; + // version number + moment.version = VERSION; - if (field.indexOf('week') === 0) { - count = 7; - setter = 'day'; - } - else if (field.indexOf('month') === 0) { - count = 12; - setter = 'month'; - } - else { - return; - } + // default format + moment.defaultFormat = isoFormat; - moment[field] = function (format, index) { - var i, getter, - method = moment.fn._lang[field], - results = []; + // constant that refers to the ISO standard + moment.ISO_8601 = function () {}; - if (typeof format === 'number') { - index = format; - format = undefined; - } + // Plugins that add properties should also add the key here (null value), + // so we can properly clone ourselves. + moment.momentProperties = momentProperties; - getter = function (i) { - var m = moment().utc().set(setter, i); - return method.call(moment.fn._lang, m, format || ''); - }; + // This function will be called whenever a moment is mutated. + // It is intended to keep the offset in sync with the timezone. + moment.updateOffset = function () {}; - if (index != null) { - return getter(index); - } - else { - for (i = 0; i < count; i++) { - results.push(getter(i)); - } - return results; - } - }; - } + // This function allows you to set a threshold for relative time strings + moment.relativeTimeThreshold = function(threshold, limit) { + if (relativeTimeThresholds[threshold] === undefined) { + return false; + } + relativeTimeThresholds[threshold] = limit; + return true; + }; - function toInt(argumentForCoercion) { - var coercedNumber = +argumentForCoercion, - value = 0; + // This function will load languages and then set the global language. If + // no arguments are passed in, it will simply return the current global + // language key. + moment.lang = function (key, values) { + var r; + if (!key) { + return moment.fn._lang._abbr; + } + if (values) { + loadLang(normalizeLanguage(key), values); + } else if (values === null) { + unloadLang(key); + key = 'en'; + } else if (!languages[key]) { + getLangDefinition(key); + } + r = moment.duration.fn._lang = moment.fn._lang = getLangDefinition(key); + return r._abbr; + }; - if (coercedNumber !== 0 && isFinite(coercedNumber)) { - if (coercedNumber >= 0) { - value = Math.floor(coercedNumber); - } else { - value = Math.ceil(coercedNumber); - } + // returns language data + moment.langData = function (key) { + if (key && key._lang && key._lang._abbr) { + key = key._lang._abbr; } + return getLangDefinition(key); + }; + + // compare moment object + moment.isMoment = function (obj) { + return obj instanceof Moment || + (obj != null && obj.hasOwnProperty('_isAMomentObject')); + }; - return value; - } + // for typechecking Duration objects + moment.isDuration = function (obj) { + return obj instanceof Duration; + }; - function daysInMonth(year, month) { - return new Date(Date.UTC(year, month + 1, 0)).getUTCDate(); + for (i = lists.length - 1; i >= 0; --i) { + makeList(lists[i]); } - function weeksInYear(year, dow, doy) { - return weekOfYear(moment([year, 11, 31 + dow - doy]), dow, doy).week; - } + moment.normalizeUnits = function (units) { + return normalizeUnits(units); + }; - function daysInYear(year) { - return isLeapYear(year) ? 366 : 365; - } + moment.invalid = function (flags) { + var m = moment.utc(NaN); + if (flags != null) { + extend(m._pf, flags); + } + else { + m._pf.userInvalidated = true; + } - function isLeapYear(year) { - return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; - } + return m; + }; - function checkOverflow(m) { - var overflow; - if (m._a && m._pf.overflow === -2) { - overflow = - m._a[MONTH] < 0 || m._a[MONTH] > 11 ? MONTH : - m._a[DATE] < 1 || m._a[DATE] > daysInMonth(m._a[YEAR], m._a[MONTH]) ? DATE : - m._a[HOUR] < 0 || m._a[HOUR] > 23 ? HOUR : - m._a[MINUTE] < 0 || m._a[MINUTE] > 59 ? MINUTE : - m._a[SECOND] < 0 || m._a[SECOND] > 59 ? SECOND : - m._a[MILLISECOND] < 0 || m._a[MILLISECOND] > 999 ? MILLISECOND : - -1; + moment.parseZone = function () { + return moment.apply(null, arguments).parseZone(); + }; - if (m._pf._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) { - overflow = DATE; - } + moment.parseTwoDigitYear = function (input) { + return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); + }; - m._pf.overflow = overflow; - } - } + /************************************ + Moment Prototype + ************************************/ - function isValid(m) { - if (m._isValid == null) { - m._isValid = !isNaN(m._d.getTime()) && - m._pf.overflow < 0 && - !m._pf.empty && - !m._pf.invalidMonth && - !m._pf.nullInput && - !m._pf.invalidFormat && - !m._pf.userInvalidated; - if (m._strict) { - m._isValid = m._isValid && - m._pf.charsLeftOver === 0 && - m._pf.unusedTokens.length === 0; - } - } - return m._isValid; - } + extend(moment.fn = Moment.prototype, { - function normalizeLanguage(key) { - return key ? key.toLowerCase().replace('_', '-') : key; - } + clone : function () { + return moment(this); + }, - // Return a moment from input, that is local/utc/zone equivalent to model. - function makeAs(input, model) { - return model._isUTC ? moment(input).zone(model._offset || 0) : - moment(input).local(); - } + valueOf : function () { + return +this._d + ((this._offset || 0) * 60000); + }, - /************************************ - Languages - ************************************/ + unix : function () { + return Math.floor(+this / 1000); + }, + toString : function () { + return this.clone().lang('en').format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ"); + }, - extend(Language.prototype, { + toDate : function () { + return this._offset ? new Date(+this) : this._d; + }, - set : function (config) { - var prop, i; - for (i in config) { - prop = config[i]; - if (typeof prop === 'function') { - this[i] = prop; - } else { - this['_' + i] = prop; - } + toISOString : function () { + var m = moment(this).utc(); + if (0 < m.year() && m.year() <= 9999) { + return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); + } else { + return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); } }, - _months : "January_February_March_April_May_June_July_August_September_October_November_December".split("_"), - months : function (m) { - return this._months[m.month()]; + toArray : function () { + var m = this; + return [ + m.year(), + m.month(), + m.date(), + m.hours(), + m.minutes(), + m.seconds(), + m.milliseconds() + ]; }, - _monthsShort : "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"), - monthsShort : function (m) { - return this._monthsShort[m.month()]; + isValid : function () { + return isValid(this); }, - monthsParse : function (monthName) { - var i, mom, regex; + isDSTShifted : function () { - if (!this._monthsParse) { - this._monthsParse = []; + if (this._a) { + return this.isValid() && compareArrays(this._a, (this._isUTC ? moment.utc(this._a) : moment(this._a)).toArray()) > 0; } - for (i = 0; i < 12; i++) { - // make the regex if we don't have it already - if (!this._monthsParse[i]) { - mom = moment.utc([2000, i]); - regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, ''); - this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i'); - } - // test the regex - if (this._monthsParse[i].test(monthName)) { - return i; - } - } + return false; }, - _weekdays : "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"), - weekdays : function (m) { - return this._weekdays[m.day()]; + parsingFlags : function () { + return extend({}, this._pf); }, - _weekdaysShort : "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"), - weekdaysShort : function (m) { - return this._weekdaysShort[m.day()]; + invalidAt: function () { + return this._pf.overflow; }, - _weekdaysMin : "Su_Mo_Tu_We_Th_Fr_Sa".split("_"), - weekdaysMin : function (m) { - return this._weekdaysMin[m.day()]; + utc : function () { + return this.zone(0); }, - weekdaysParse : function (weekdayName) { - var i, mom, regex; + local : function () { + this.zone(0); + this._isUTC = false; + return this; + }, - if (!this._weekdaysParse) { - this._weekdaysParse = []; - } + format : function (inputString) { + var output = formatMoment(this, inputString || moment.defaultFormat); + return this.lang().postformat(output); + }, - for (i = 0; i < 7; i++) { - // make the regex if we don't have it already - if (!this._weekdaysParse[i]) { - mom = moment([2000, 1]).day(i); - regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, ''); - this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i'); - } - // test the regex - if (this._weekdaysParse[i].test(weekdayName)) { - return i; - } + add : function (input, val) { + var dur; + // switch args to support add('s', 1) and add(1, 's') + if (typeof input === 'string' && typeof val === 'string') { + dur = moment.duration(isNaN(+val) ? +input : +val, isNaN(+val) ? val : input); + } else if (typeof input === 'string') { + dur = moment.duration(+val, input); + } else { + dur = moment.duration(input, val); } + addOrSubtractDurationFromMoment(this, dur, 1); + return this; }, - _longDateFormat : { - LT : "h:mm A", - L : "MM/DD/YYYY", - LL : "MMMM D YYYY", - LLL : "MMMM D YYYY LT", - LLLL : "dddd, MMMM D YYYY LT" + subtract : function (input, val) { + var dur; + // switch args to support subtract('s', 1) and subtract(1, 's') + if (typeof input === 'string' && typeof val === 'string') { + dur = moment.duration(isNaN(+val) ? +input : +val, isNaN(+val) ? val : input); + } else if (typeof input === 'string') { + dur = moment.duration(+val, input); + } else { + dur = moment.duration(input, val); + } + addOrSubtractDurationFromMoment(this, dur, -1); + return this; }, - longDateFormat : function (key) { - var output = this._longDateFormat[key]; - if (!output && this._longDateFormat[key.toUpperCase()]) { - output = this._longDateFormat[key.toUpperCase()].replace(/MMMM|MM|DD|dddd/g, function (val) { - return val.slice(1); - }); - this._longDateFormat[key] = output; + + diff : function (input, units, asFloat) { + var that = makeAs(input, this), + zoneDiff = (this.zone() - that.zone()) * 6e4, + diff, output; + + units = normalizeUnits(units); + + if (units === 'year' || units === 'month') { + // average number of days in the months in the given dates + diff = (this.daysInMonth() + that.daysInMonth()) * 432e5; // 24 * 60 * 60 * 1000 / 2 + // difference in months + output = ((this.year() - that.year()) * 12) + (this.month() - that.month()); + // adjust by taking difference in days, average number of days + // and dst in the given months. + output += ((this - moment(this).startOf('month')) - + (that - moment(that).startOf('month'))) / diff; + // same as above but with zones, to negate all dst + output -= ((this.zone() - moment(this).startOf('month').zone()) - + (that.zone() - moment(that).startOf('month').zone())) * 6e4 / diff; + if (units === 'year') { + output = output / 12; + } + } else { + diff = (this - that); + output = units === 'second' ? diff / 1e3 : // 1000 + units === 'minute' ? diff / 6e4 : // 1000 * 60 + units === 'hour' ? diff / 36e5 : // 1000 * 60 * 60 + units === 'day' ? (diff - zoneDiff) / 864e5 : // 1000 * 60 * 60 * 24, negate dst + units === 'week' ? (diff - zoneDiff) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst + diff; } - return output; + return asFloat ? output : absRound(output); }, - isPM : function (input) { - // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays - // Using charAt should be more compatible. - return ((input + '').toLowerCase().charAt(0) === 'p'); + from : function (time, withoutSuffix) { + return moment.duration(this.diff(time)).lang(this.lang()._abbr).humanize(!withoutSuffix); }, - _meridiemParse : /[ap]\.?m?\.?/i, - meridiem : function (hours, minutes, isLower) { - if (hours > 11) { - return isLower ? 'pm' : 'PM'; - } else { - return isLower ? 'am' : 'AM'; - } + fromNow : function (withoutSuffix) { + return this.from(moment(), withoutSuffix); }, - _calendar : { - sameDay : '[Today at] LT', - nextDay : '[Tomorrow at] LT', - nextWeek : 'dddd [at] LT', - lastDay : '[Yesterday at] LT', - lastWeek : '[Last] dddd [at] LT', - sameElse : 'L' - }, - calendar : function (key, mom) { - var output = this._calendar[key]; - return typeof output === 'function' ? output.apply(mom) : output; + calendar : function (time) { + // We want to compare the start of today, vs this. + // Getting start-of-today depends on whether we're zone'd or not. + var now = time || moment(), + sod = makeAs(now, this).startOf('day'), + diff = this.diff(sod, 'days', true), + format = diff < -6 ? 'sameElse' : + diff < -1 ? 'lastWeek' : + diff < 0 ? 'lastDay' : + diff < 1 ? 'sameDay' : + diff < 2 ? 'nextDay' : + diff < 7 ? 'nextWeek' : 'sameElse'; + return this.format(this.lang().calendar(format, this)); }, - _relativeTime : { - future : "in %s", - past : "%s ago", - s : "a few seconds", - m : "a minute", - mm : "%d minutes", - h : "an hour", - hh : "%d hours", - d : "a day", - dd : "%d days", - M : "a month", - MM : "%d months", - y : "a year", - yy : "%d years" - }, - relativeTime : function (number, withoutSuffix, string, isFuture) { - var output = this._relativeTime[string]; - return (typeof output === 'function') ? - output(number, withoutSuffix, string, isFuture) : - output.replace(/%d/i, number); - }, - pastFuture : function (diff, output) { - var format = this._relativeTime[diff > 0 ? 'future' : 'past']; - return typeof format === 'function' ? format(output) : format.replace(/%s/i, output); + isLeapYear : function () { + return isLeapYear(this.year()); }, - ordinal : function (number) { - return this._ordinal.replace("%d", number); + isDST : function () { + return (this.zone() < this.clone().month(0).zone() || + this.zone() < this.clone().month(5).zone()); }, - _ordinal : "%d", - preparse : function (string) { - return string; + day : function (input) { + var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); + if (input != null) { + input = parseWeekday(input, this.lang()); + return this.add({ d : input - day }); + } else { + return day; + } }, - postformat : function (string) { - return string; + month : makeAccessor('Month', true), + + startOf: function (units) { + units = normalizeUnits(units); + // the following switch intentionally omits break keywords + // to utilize falling through the cases. + switch (units) { + case 'year': + this.month(0); + /* falls through */ + case 'quarter': + case 'month': + this.date(1); + /* falls through */ + case 'week': + case 'isoWeek': + case 'day': + this.hours(0); + /* falls through */ + case 'hour': + this.minutes(0); + /* falls through */ + case 'minute': + this.seconds(0); + /* falls through */ + case 'second': + this.milliseconds(0); + /* falls through */ + } + + // weeks are a special case + if (units === 'week') { + this.weekday(0); + } else if (units === 'isoWeek') { + this.isoWeekday(1); + } + + // quarters are also special + if (units === 'quarter') { + this.month(Math.floor(this.month() / 3) * 3); + } + + return this; }, - week : function (mom) { - return weekOfYear(mom, this._week.dow, this._week.doy).week; + endOf: function (units) { + units = normalizeUnits(units); + return this.startOf(units).add((units === 'isoWeek' ? 'week' : units), 1).subtract('ms', 1); }, - _week : { - dow : 0, // Sunday is the first day of the week. - doy : 6 // The week that contains Jan 1st is the first week of the year. + isAfter: function (input, units) { + units = typeof units !== 'undefined' ? units : 'millisecond'; + return +this.clone().startOf(units) > +moment(input).startOf(units); }, - _invalidDate: 'Invalid date', - invalidDate: function () { - return this._invalidDate; - } - }); + isBefore: function (input, units) { + units = typeof units !== 'undefined' ? units : 'millisecond'; + return +this.clone().startOf(units) < +moment(input).startOf(units); + }, - // Loads a language definition into the `languages` cache. The function - // takes a key and optionally values. If not in the browser and no values - // are provided, it will load the language file module. As a convenience, - // this function also returns the language values. - function loadLang(key, values) { - values.abbr = key; - if (!languages[key]) { - languages[key] = new Language(); - } - languages[key].set(values); - return languages[key]; - } + isSame: function (input, units) { + units = units || 'ms'; + return +this.clone().startOf(units) === +makeAs(input, this).startOf(units); + }, - // Remove a language from the `languages` cache. Mostly useful in tests. - function unloadLang(key) { - delete languages[key]; - } + min: deprecate( + "moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548", + function (other) { + other = moment.apply(null, arguments); + return other < this ? this : other; + } + ), - // Determines which language definition to use and returns it. - // - // With no parameters, it will return the global language. If you - // pass in a language key, such as 'en', it will return the - // definition for 'en', so long as 'en' has already been loaded using - // moment.lang. - function getLangDefinition(key) { - var i = 0, j, lang, next, split, - get = function (k) { - if (!languages[k] && hasModule) { - try { - __webpack_require__(58)("./" + k); - } catch (e) { } + max: deprecate( + "moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548", + function (other) { + other = moment.apply(null, arguments); + return other > this ? this : other; } - return languages[k]; - }; - - if (!key) { - return moment.fn._lang; - } - - if (!isArray(key)) { - //short-circuit everything else - lang = get(key); - if (lang) { - return lang; - } - key = [key]; - } + ), - //pick the language from the array - //try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each - //substring from most specific to least, but move to the next array item if it's a more specific variant than the current root - while (i < key.length) { - split = normalizeLanguage(key[i]).split('-'); - j = split.length; - next = normalizeLanguage(key[i + 1]); - next = next ? next.split('-') : null; - while (j > 0) { - lang = get(split.slice(0, j).join('-')); - if (lang) { - return lang; + // keepTime = true means only change the timezone, without affecting + // the local hour. So 5:31:26 +0300 --[zone(2, true)]--> 5:31:26 +0200 + // It is possible that 5:31:26 doesn't exist int zone +0200, so we + // adjust the time as needed, to be valid. + // + // Keeping the time actually adds/subtracts (one hour) + // from the actual represented time. That is why we call updateOffset + // a second time. In case it wants us to change the offset again + // _changeInProgress == true case, then we have to adjust, because + // there is no such time in the given timezone. + zone : function (input, keepTime) { + var offset = this._offset || 0; + if (input != null) { + if (typeof input === "string") { + input = timezoneMinutesFromString(input); } - if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) { - //the next array item is better than a shallower substring of this one - break; + if (Math.abs(input) < 16) { + input = input * 60; + } + this._offset = input; + this._isUTC = true; + if (offset !== input) { + if (!keepTime || this._changeInProgress) { + addOrSubtractDurationFromMoment(this, + moment.duration(offset - input, 'm'), 1, false); + } else if (!this._changeInProgress) { + this._changeInProgress = true; + moment.updateOffset(this, true); + this._changeInProgress = null; + } } - j--; + } else { + return this._isUTC ? offset : this._d.getTimezoneOffset(); } - i++; - } - return moment.fn._lang; - } - - /************************************ - Formatting - ************************************/ - + return this; + }, - function removeFormattingTokens(input) { - if (input.match(/\[[\s\S]/)) { - return input.replace(/^\[|\]$/g, ""); - } - return input.replace(/\\/g, ""); - } + zoneAbbr : function () { + return this._isUTC ? "UTC" : ""; + }, - function makeFormatFunction(format) { - var array = format.match(formattingTokens), i, length; + zoneName : function () { + return this._isUTC ? "Coordinated Universal Time" : ""; + }, - for (i = 0, length = array.length; i < length; i++) { - if (formatTokenFunctions[array[i]]) { - array[i] = formatTokenFunctions[array[i]]; - } else { - array[i] = removeFormattingTokens(array[i]); + parseZone : function () { + if (this._tzm) { + this.zone(this._tzm); + } else if (typeof this._i === 'string') { + this.zone(this._i); } - } + return this; + }, - return function (mom) { - var output = ""; - for (i = 0; i < length; i++) { - output += array[i] instanceof Function ? array[i].call(mom, format) : array[i]; + hasAlignedHourOffset : function (input) { + if (!input) { + input = 0; + } + else { + input = moment(input).zone(); } - return output; - }; - } - - // format date using native date object - function formatMoment(m, format) { - - if (!m.isValid()) { - return m.lang().invalidDate(); - } - - format = expandFormat(format, m.lang()); - - if (!formatFunctions[format]) { - formatFunctions[format] = makeFormatFunction(format); - } - - return formatFunctions[format](m); - } - - function expandFormat(format, lang) { - var i = 5; - - function replaceLongDateFormatTokens(input) { - return lang.longDateFormat(input) || input; - } - - localFormattingTokens.lastIndex = 0; - while (i >= 0 && localFormattingTokens.test(format)) { - format = format.replace(localFormattingTokens, replaceLongDateFormatTokens); - localFormattingTokens.lastIndex = 0; - i -= 1; - } - return format; - } + return (this.zone() - input) % 60 === 0; + }, + daysInMonth : function () { + return daysInMonth(this.year(), this.month()); + }, - /************************************ - Parsing - ************************************/ + dayOfYear : function (input) { + var dayOfYear = round((moment(this).startOf('day') - moment(this).startOf('year')) / 864e5) + 1; + return input == null ? dayOfYear : this.add("d", (input - dayOfYear)); + }, + quarter : function (input) { + return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3); + }, - // get the regex to find the next token - function getParseRegexForToken(token, config) { - var a, strict = config._strict; - switch (token) { - case 'Q': - return parseTokenOneDigit; - case 'DDDD': - return parseTokenThreeDigits; - case 'YYYY': - case 'GGGG': - case 'gggg': - return strict ? parseTokenFourDigits : parseTokenOneToFourDigits; - case 'Y': - case 'G': - case 'g': - return parseTokenSignedNumber; - case 'YYYYYY': - case 'YYYYY': - case 'GGGGG': - case 'ggggg': - return strict ? parseTokenSixDigits : parseTokenOneToSixDigits; - case 'S': - if (strict) { return parseTokenOneDigit; } - /* falls through */ - case 'SS': - if (strict) { return parseTokenTwoDigits; } - /* falls through */ - case 'SSS': - if (strict) { return parseTokenThreeDigits; } - /* falls through */ - case 'DDD': - return parseTokenOneToThreeDigits; - case 'MMM': - case 'MMMM': - case 'dd': - case 'ddd': - case 'dddd': - return parseTokenWord; - case 'a': - case 'A': - return getLangDefinition(config._l)._meridiemParse; - case 'X': - return parseTokenTimestampMs; - case 'Z': - case 'ZZ': - return parseTokenTimezone; - case 'T': - return parseTokenT; - case 'SSSS': - return parseTokenDigits; - case 'MM': - case 'DD': - case 'YY': - case 'GG': - case 'gg': - case 'HH': - case 'hh': - case 'mm': - case 'ss': - case 'ww': - case 'WW': - return strict ? parseTokenTwoDigits : parseTokenOneOrTwoDigits; - case 'M': - case 'D': - case 'd': - case 'H': - case 'h': - case 'm': - case 's': - case 'w': - case 'W': - case 'e': - case 'E': - return parseTokenOneOrTwoDigits; - case 'Do': - return parseTokenOrdinal; - default : - a = new RegExp(regexpEscape(unescapeFormat(token.replace('\\', '')), "i")); - return a; - } - } + weekYear : function (input) { + var year = weekOfYear(this, this.lang()._week.dow, this.lang()._week.doy).year; + return input == null ? year : this.add("y", (input - year)); + }, - function timezoneMinutesFromString(string) { - string = string || ""; - var possibleTzMatches = (string.match(parseTokenTimezone) || []), - tzChunk = possibleTzMatches[possibleTzMatches.length - 1] || [], - parts = (tzChunk + '').match(parseTimezoneChunker) || ['-', 0, 0], - minutes = +(parts[1] * 60) + toInt(parts[2]); + isoWeekYear : function (input) { + var year = weekOfYear(this, 1, 4).year; + return input == null ? year : this.add("y", (input - year)); + }, - return parts[0] === '+' ? -minutes : minutes; - } + week : function (input) { + var week = this.lang().week(this); + return input == null ? week : this.add("d", (input - week) * 7); + }, - // function to convert string input to date - function addTimeToArrayFromToken(token, input, config) { - var a, datePartArray = config._a; + isoWeek : function (input) { + var week = weekOfYear(this, 1, 4).week; + return input == null ? week : this.add("d", (input - week) * 7); + }, - switch (token) { - // QUARTER - case 'Q': - if (input != null) { - datePartArray[MONTH] = (toInt(input) - 1) * 3; - } - break; - // MONTH - case 'M' : // fall through to MM - case 'MM' : - if (input != null) { - datePartArray[MONTH] = toInt(input) - 1; - } - break; - case 'MMM' : // fall through to MMMM - case 'MMMM' : - a = getLangDefinition(config._l).monthsParse(input); - // if we didn't find a month name, mark the date as invalid. - if (a != null) { - datePartArray[MONTH] = a; - } else { - config._pf.invalidMonth = input; - } - break; - // DAY OF MONTH - case 'D' : // fall through to DD - case 'DD' : - if (input != null) { - datePartArray[DATE] = toInt(input); - } - break; - case 'Do' : - if (input != null) { - datePartArray[DATE] = toInt(parseInt(input, 10)); - } - break; - // DAY OF YEAR - case 'DDD' : // fall through to DDDD - case 'DDDD' : - if (input != null) { - config._dayOfYear = toInt(input); + weekday : function (input) { + var weekday = (this.day() + 7 - this.lang()._week.dow) % 7; + return input == null ? weekday : this.add("d", input - weekday); + }, + + isoWeekday : function (input) { + // behaves the same as moment#day except + // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6) + // as a setter, sunday should belong to the previous week. + return input == null ? this.day() || 7 : this.day(this.day() % 7 ? input : input - 7); + }, + + isoWeeksInYear : function () { + return weeksInYear(this.year(), 1, 4); + }, + + weeksInYear : function () { + var weekInfo = this._lang._week; + return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy); + }, + + get : function (units) { + units = normalizeUnits(units); + return this[units](); + }, + + set : function (units, value) { + units = normalizeUnits(units); + if (typeof this[units] === 'function') { + this[units](value); } + return this; + }, - break; - // YEAR - case 'YY' : - datePartArray[YEAR] = moment.parseTwoDigitYear(input); - break; - case 'YYYY' : - case 'YYYYY' : - case 'YYYYYY' : - datePartArray[YEAR] = toInt(input); - break; - // AM / PM - case 'a' : // fall through to A - case 'A' : - config._isPm = getLangDefinition(config._l).isPM(input); - break; - // 24 HOUR - case 'H' : // fall through to hh - case 'HH' : // fall through to hh - case 'h' : // fall through to hh - case 'hh' : - datePartArray[HOUR] = toInt(input); - break; - // MINUTE - case 'm' : // fall through to mm - case 'mm' : - datePartArray[MINUTE] = toInt(input); - break; - // SECOND - case 's' : // fall through to ss - case 'ss' : - datePartArray[SECOND] = toInt(input); - break; - // MILLISECOND - case 'S' : - case 'SS' : - case 'SSS' : - case 'SSSS' : - datePartArray[MILLISECOND] = toInt(('0.' + input) * 1000); - break; - // UNIX TIMESTAMP WITH MS - case 'X': - config._d = new Date(parseFloat(input) * 1000); - break; - // TIMEZONE - case 'Z' : // fall through to ZZ - case 'ZZ' : - config._useUTC = true; - config._tzm = timezoneMinutesFromString(input); - break; - // WEEKDAY - human - case 'dd': - case 'ddd': - case 'dddd': - a = getLangDefinition(config._l).weekdaysParse(input); - // if we didn't get a weekday name, mark the date as invalid - if (a != null) { - config._w = config._w || {}; - config._w['d'] = a; + // If passed a language key, it will set the language for this + // instance. Otherwise, it will return the language configuration + // variables for this instance. + lang : function (key) { + if (key === undefined) { + return this._lang; } else { - config._pf.invalidWeekday = input; + this._lang = getLangDefinition(key); + return this; } - break; - // WEEK, WEEK DAY - numeric - case 'w': - case 'ww': - case 'W': - case 'WW': - case 'd': - case 'e': - case 'E': - token = token.substr(0, 1); - /* falls through */ - case 'gggg': - case 'GGGG': - case 'GGGGG': - token = token.substr(0, 2); - if (input) { - config._w = config._w || {}; - config._w[token] = toInt(input); + } + }); + + function rawMonthSetter(mom, value) { + var dayOfMonth; + + // TODO: Move this out of here! + if (typeof value === 'string') { + value = mom.lang().monthsParse(value); + // TODO: Another silent failure? + if (typeof value !== 'number') { + return mom; } - break; - case 'gg': - case 'GG': - config._w = config._w || {}; - config._w[token] = moment.parseTwoDigitYear(input); } - } - function dayOfYearFromWeekInfo(config) { - var w, weekYear, week, weekday, dow, doy, temp, lang; + dayOfMonth = Math.min(mom.date(), + daysInMonth(mom.year(), value)); + mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth); + return mom; + } - w = config._w; - if (w.GG != null || w.W != null || w.E != null) { - dow = 1; - doy = 4; + function rawGetter(mom, unit) { + return mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit](); + } - // TODO: We need to take the current isoWeekYear, but that depends on - // how we interpret now (local, utc, fixed offset). So create - // a now version of current config (take local/utc/offset flags, and - // create now). - weekYear = dfl(w.GG, config._a[YEAR], weekOfYear(moment(), 1, 4).year); - week = dfl(w.W, 1); - weekday = dfl(w.E, 1); + function rawSetter(mom, unit, value) { + if (unit === 'Month') { + return rawMonthSetter(mom, value); } else { - lang = getLangDefinition(config._l); - dow = lang._week.dow; - doy = lang._week.doy; - - weekYear = dfl(w.gg, config._a[YEAR], weekOfYear(moment(), dow, doy).year); - week = dfl(w.w, 1); + return mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value); + } + } - if (w.d != null) { - // weekday -- low day numbers are considered next week - weekday = w.d; - if (weekday < dow) { - ++week; - } - } else if (w.e != null) { - // local weekday -- counting starts from begining of week - weekday = w.e + dow; + function makeAccessor(unit, keepTime) { + return function (value) { + if (value != null) { + rawSetter(this, unit, value); + moment.updateOffset(this, keepTime); + return this; } else { - // default to begining of week - weekday = dow; + return rawGetter(this, unit); } - } - temp = dayOfYearFromWeeks(weekYear, week, weekday, doy, dow); - - config._a[YEAR] = temp.year; - config._dayOfYear = temp.dayOfYear; + }; } - // convert an array to a date. - // the array should mirror the parameters below - // note: all values past the year are optional and will default to the lowest possible value. - // [year, month, day , hour, minute, second, millisecond] - function dateFromConfig(config) { - var i, date, input = [], currentDate, yearToUse; + moment.fn.millisecond = moment.fn.milliseconds = makeAccessor('Milliseconds', false); + moment.fn.second = moment.fn.seconds = makeAccessor('Seconds', false); + moment.fn.minute = moment.fn.minutes = makeAccessor('Minutes', false); + // Setting the hour should keep the time, because the user explicitly + // specified which hour he wants. So trying to maintain the same hour (in + // a new timezone) makes sense. Adding/subtracting hours does not follow + // this rule. + moment.fn.hour = moment.fn.hours = makeAccessor('Hours', true); + // moment.fn.month is defined separately + moment.fn.date = makeAccessor('Date', true); + moment.fn.dates = deprecate("dates accessor is deprecated. Use date instead.", makeAccessor('Date', true)); + moment.fn.year = makeAccessor('FullYear', true); + moment.fn.years = deprecate("years accessor is deprecated. Use year instead.", makeAccessor('FullYear', true)); - if (config._d) { - return; - } + // add plural methods + moment.fn.days = moment.fn.day; + moment.fn.months = moment.fn.month; + moment.fn.weeks = moment.fn.week; + moment.fn.isoWeeks = moment.fn.isoWeek; + moment.fn.quarters = moment.fn.quarter; + + // add aliased format methods + moment.fn.toJSON = moment.fn.toISOString; + + /************************************ + Duration Prototype + ************************************/ + + + extend(moment.duration.fn = Duration.prototype, { + + _bubble : function () { + var milliseconds = this._milliseconds, + days = this._days, + months = this._months, + data = this._data, + seconds, minutes, hours, years; + + // The following code bubbles up values, see the tests for + // examples of what that means. + data.milliseconds = milliseconds % 1000; + + seconds = absRound(milliseconds / 1000); + data.seconds = seconds % 60; + + minutes = absRound(seconds / 60); + data.minutes = minutes % 60; + + hours = absRound(minutes / 60); + data.hours = hours % 24; + + days += absRound(hours / 24); + data.days = days % 30; + + months += absRound(days / 30); + data.months = months % 12; + + years = absRound(months / 12); + data.years = years; + }, - currentDate = currentDateArray(config); + weeks : function () { + return absRound(this.days() / 7); + }, - //compute day of the year from weeks and weekdays - if (config._w && config._a[DATE] == null && config._a[MONTH] == null) { - dayOfYearFromWeekInfo(config); - } + valueOf : function () { + return this._milliseconds + + this._days * 864e5 + + (this._months % 12) * 2592e6 + + toInt(this._months / 12) * 31536e6; + }, - //if the day of the year is set, figure out what it is - if (config._dayOfYear) { - yearToUse = dfl(config._a[YEAR], currentDate[YEAR]); + humanize : function (withSuffix) { + var difference = +this, + output = relativeTime(difference, !withSuffix, this.lang()); - if (config._dayOfYear > daysInYear(yearToUse)) { - config._pf._overflowDayOfYear = true; + if (withSuffix) { + output = this.lang().pastFuture(difference, output); } - date = makeUTCDate(yearToUse, 0, config._dayOfYear); - config._a[MONTH] = date.getUTCMonth(); - config._a[DATE] = date.getUTCDate(); - } - - // Default to current date. - // * if no year, month, day of month are given, default to today - // * if day of month is given, default month and year - // * if month is given, default only year - // * if year is given, don't default anything - for (i = 0; i < 3 && config._a[i] == null; ++i) { - config._a[i] = input[i] = currentDate[i]; - } + return this.lang().postformat(output); + }, - // Zero out whatever was not defaulted, including time - for (; i < 7; i++) { - config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i]; - } + add : function (input, val) { + // supports only 2.0-style add(1, 's') or add(moment) + var dur = moment.duration(input, val); - config._d = (config._useUTC ? makeUTCDate : makeDate).apply(null, input); - // Apply timezone offset from input. The actual zone can be changed - // with parseZone. - if (config._tzm != null) { - config._d.setUTCMinutes(config._d.getUTCMinutes() + config._tzm); - } - } + this._milliseconds += dur._milliseconds; + this._days += dur._days; + this._months += dur._months; - function dateFromObject(config) { - var normalizedInput; + this._bubble(); - if (config._d) { - return; - } + return this; + }, - normalizedInput = normalizeObjectUnits(config._i); - config._a = [ - normalizedInput.year, - normalizedInput.month, - normalizedInput.day, - normalizedInput.hour, - normalizedInput.minute, - normalizedInput.second, - normalizedInput.millisecond - ]; + subtract : function (input, val) { + var dur = moment.duration(input, val); - dateFromConfig(config); - } + this._milliseconds -= dur._milliseconds; + this._days -= dur._days; + this._months -= dur._months; - function currentDateArray(config) { - var now = new Date(); - if (config._useUTC) { - return [ - now.getUTCFullYear(), - now.getUTCMonth(), - now.getUTCDate() - ]; - } else { - return [now.getFullYear(), now.getMonth(), now.getDate()]; - } - } + this._bubble(); - // date from string and format string - function makeDateFromStringAndFormat(config) { + return this; + }, - if (config._f === moment.ISO_8601) { - parseISO(config); - return; - } + get : function (units) { + units = normalizeUnits(units); + return this[units.toLowerCase() + 's'](); + }, - config._a = []; - config._pf.empty = true; + as : function (units) { + units = normalizeUnits(units); + return this['as' + units.charAt(0).toUpperCase() + units.slice(1) + 's'](); + }, - // This array is used to make a Date, either with `new Date` or `Date.UTC` - var lang = getLangDefinition(config._l), - string = '' + config._i, - i, parsedInput, tokens, token, skipped, - stringLength = string.length, - totalParsedInputLength = 0; + lang : moment.fn.lang, - tokens = expandFormat(config._f, lang).match(formattingTokens) || []; + toIsoString : function () { + // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js + var years = Math.abs(this.years()), + months = Math.abs(this.months()), + days = Math.abs(this.days()), + hours = Math.abs(this.hours()), + minutes = Math.abs(this.minutes()), + seconds = Math.abs(this.seconds() + this.milliseconds() / 1000); - for (i = 0; i < tokens.length; i++) { - token = tokens[i]; - parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0]; - if (parsedInput) { - skipped = string.substr(0, string.indexOf(parsedInput)); - if (skipped.length > 0) { - config._pf.unusedInput.push(skipped); - } - string = string.slice(string.indexOf(parsedInput) + parsedInput.length); - totalParsedInputLength += parsedInput.length; - } - // don't parse if it's not a known token - if (formatTokenFunctions[token]) { - if (parsedInput) { - config._pf.empty = false; - } - else { - config._pf.unusedTokens.push(token); - } - addTimeToArrayFromToken(token, parsedInput, config); - } - else if (config._strict && !parsedInput) { - config._pf.unusedTokens.push(token); + if (!this.asSeconds()) { + // this is the same as C#'s (Noda) and python (isodate)... + // but not other JS (goog.date) + return 'P0D'; } - } - - // add remaining unparsed input length to the string - config._pf.charsLeftOver = stringLength - totalParsedInputLength; - if (string.length > 0) { - config._pf.unusedInput.push(string); - } - // handle am pm - if (config._isPm && config._a[HOUR] < 12) { - config._a[HOUR] += 12; - } - // if is 12 am, change hours to 0 - if (config._isPm === false && config._a[HOUR] === 12) { - config._a[HOUR] = 0; + return (this.asSeconds() < 0 ? '-' : '') + + 'P' + + (years ? years + 'Y' : '') + + (months ? months + 'M' : '') + + (days ? days + 'D' : '') + + ((hours || minutes || seconds) ? 'T' : '') + + (hours ? hours + 'H' : '') + + (minutes ? minutes + 'M' : '') + + (seconds ? seconds + 'S' : ''); } + }); - dateFromConfig(config); - checkOverflow(config); + function makeDurationGetter(name) { + moment.duration.fn[name] = function () { + return this._data[name]; + }; } - function unescapeFormat(s) { - return s.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) { - return p1 || p2 || p3 || p4; - }); + function makeDurationAsGetter(name, factor) { + moment.duration.fn['as' + name] = function () { + return +this / factor; + }; } - // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript - function regexpEscape(s) { - return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); + for (i in unitMillisecondFactors) { + if (unitMillisecondFactors.hasOwnProperty(i)) { + makeDurationAsGetter(i, unitMillisecondFactors[i]); + makeDurationGetter(i.toLowerCase()); + } } - // date from string and array of format strings - function makeDateFromStringAndArray(config) { - var tempConfig, - bestMoment, + makeDurationAsGetter('Weeks', 6048e5); + moment.duration.fn.asMonths = function () { + return (+this - this.years() * 31536e6) / 2592e6 + this.years() * 12; + }; - scoreToBeat, - i, - currentScore; - if (config._f.length === 0) { - config._pf.invalidFormat = true; - config._d = new Date(NaN); - return; + /************************************ + Default Lang + ************************************/ + + + // Set default language, other languages will inherit from English. + moment.lang('en', { + ordinal : function (number) { + var b = number % 10, + output = (toInt(number % 100 / 10) === 1) ? 'th' : + (b === 1) ? 'st' : + (b === 2) ? 'nd' : + (b === 3) ? 'rd' : 'th'; + return number + output; } + }); - for (i = 0; i < config._f.length; i++) { - currentScore = 0; - tempConfig = extend({}, config); - tempConfig._pf = defaultParsingFlags(); - tempConfig._f = config._f[i]; - makeDateFromStringAndFormat(tempConfig); + /* EMBED_LANGUAGES */ + + /************************************ + Exposing Moment + ************************************/ + + function makeGlobal(shouldDeprecate) { + /*global ender:false */ + if (typeof ender !== 'undefined') { + return; + } + oldGlobalMoment = globalScope.moment; + if (shouldDeprecate) { + globalScope.moment = deprecate( + "Accessing Moment through the global scope is " + + "deprecated, and will be removed in an upcoming " + + "release.", + moment); + } else { + globalScope.moment = moment; + } + } - if (!isValid(tempConfig)) { - continue; + // CommonJS module is defined + if (hasModule) { + module.exports = moment; + } else if (true) { + !(__WEBPACK_AMD_DEFINE_RESULT__ = (function (require, exports, module) { + if (module.config && module.config() && module.config().noGlobal === true) { + // release the global variable + globalScope.moment = oldGlobalMoment; } - // if there is any input that was not parsed add a penalty for that format - currentScore += tempConfig._pf.charsLeftOver; + return moment; + }.call(exports, __webpack_require__, exports, module)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); + makeGlobal(true); + } else { + makeGlobal(); + } + }).call(this); + + /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()), __webpack_require__(59)(module))) - //or tokens - currentScore += tempConfig._pf.unusedTokens.length * 10; +/***/ }, +/* 47 */ +/***/ function(module, exports, __webpack_require__) { - tempConfig._pf.score = currentScore; + var __WEBPACK_AMD_DEFINE_RESULT__;/*! Hammer.JS - v1.1.3 - 2014-05-20 + * http://eightmedia.github.io/hammer.js + * + * Copyright (c) 2014 Jorik Tangelder ; + * Licensed under the MIT license */ - if (scoreToBeat == null || currentScore < scoreToBeat) { - scoreToBeat = currentScore; - bestMoment = tempConfig; - } - } + (function(window, undefined) { + 'use strict'; - extend(config, bestMoment || tempConfig); - } + /** + * @main + * @module hammer + * + * @class Hammer + * @static + */ - // date from iso format - function parseISO(config) { - var i, l, - string = config._i, - match = isoRegex.exec(string); + /** + * Hammer, use this to create instances + * ```` + * var hammertime = new Hammer(myElement); + * ```` + * + * @method Hammer + * @param {HTMLElement} element + * @param {Object} [options={}] + * @return {Hammer.Instance} + */ + var Hammer = function Hammer(element, options) { + return new Hammer.Instance(element, options || {}); + }; - if (match) { - config._pf.iso = true; - for (i = 0, l = isoDates.length; i < l; i++) { - if (isoDates[i][1].exec(string)) { - // match[5] should be "T" or undefined - config._f = isoDates[i][0] + (match[6] || " "); - break; - } - } - for (i = 0, l = isoTimes.length; i < l; i++) { - if (isoTimes[i][1].exec(string)) { - config._f += isoTimes[i][0]; - break; - } - } - if (string.match(parseTokenTimezone)) { - config._f += "Z"; - } - makeDateFromStringAndFormat(config); - } else { - config._isValid = false; - } - } + /** + * version, as defined in package.json + * the value will be set at each build + * @property VERSION + * @final + * @type {String} + */ + Hammer.VERSION = '1.1.3'; - // date from iso format or fallback - function makeDateFromString(config) { - parseISO(config); - if (config._isValid === false) { - delete config._isValid; - moment.createFromInputFallback(config); - } - } + /** + * default settings. + * more settings are defined per gesture at `/gestures`. Each gesture can be disabled/enabled + * by setting it's name (like `swipe`) to false. + * You can set the defaults for all instances by changing this object before creating an instance. + * @example + * ```` + * Hammer.defaults.drag = false; + * Hammer.defaults.behavior.touchAction = 'pan-y'; + * delete Hammer.defaults.behavior.userSelect; + * ```` + * @property defaults + * @type {Object} + */ + Hammer.defaults = { + /** + * this setting object adds styles and attributes to the element to prevent the browser from doing + * its native behavior. The css properties are auto prefixed for the browsers when needed. + * @property defaults.behavior + * @type {Object} + */ + behavior: { + /** + * Disables text selection to improve the dragging gesture. When the value is `none` it also sets + * `onselectstart=false` for IE on the element. Mainly for desktop browsers. + * @property defaults.behavior.userSelect + * @type {String} + * @default 'none' + */ + userSelect: 'none', - function makeDateFromInput(config) { - var input = config._i, - matched = aspNetJsonRegex.exec(input); + /** + * Specifies whether and how a given region can be manipulated by the user (for instance, by panning or zooming). + * Used by Chrome 35> and IE10>. By default this makes the element blocking any touch event. + * @property defaults.behavior.touchAction + * @type {String} + * @default: 'pan-y' + */ + touchAction: 'pan-y', - if (input === undefined) { - config._d = new Date(); - } else if (matched) { - config._d = new Date(+matched[1]); - } else if (typeof input === 'string') { - makeDateFromString(config); - } else if (isArray(input)) { - config._a = input.slice(0); - dateFromConfig(config); - } else if (isDate(input)) { - config._d = new Date(+input); - } else if (typeof(input) === 'object') { - dateFromObject(config); - } else if (typeof(input) === 'number') { - // from milliseconds - config._d = new Date(input); - } else { - moment.createFromInputFallback(config); - } - } + /** + * Disables the default callout shown when you touch and hold a touch target. + * On iOS, when you touch and hold a touch target such as a link, Safari displays + * a callout containing information about the link. This property allows you to disable that callout. + * @property defaults.behavior.touchCallout + * @type {String} + * @default 'none' + */ + touchCallout: 'none', - function makeDate(y, m, d, h, M, s, ms) { - //can't just apply() to create a date: - //http://stackoverflow.com/questions/181348/instantiating-a-javascript-object-by-calling-prototype-constructor-apply - var date = new Date(y, m, d, h, M, s, ms); + /** + * Specifies whether zooming is enabled. Used by IE10> + * @property defaults.behavior.contentZooming + * @type {String} + * @default 'none' + */ + contentZooming: 'none', - //the date constructor doesn't accept years < 1970 - if (y < 1970) { - date.setFullYear(y); - } - return date; - } + /** + * Specifies that an entire element should be draggable instead of its contents. + * Mainly for desktop browsers. + * @property defaults.behavior.userDrag + * @type {String} + * @default 'none' + */ + userDrag: 'none', - function makeUTCDate(y) { - var date = new Date(Date.UTC.apply(null, arguments)); - if (y < 1970) { - date.setUTCFullYear(y); - } - return date; + /** + * Overrides the highlight color shown when the user taps a link or a JavaScript + * clickable element in Safari on iPhone. This property obeys the alpha value, if specified. + * + * If you don't specify an alpha value, Safari on iPhone applies a default alpha value + * to the color. To disable tap highlighting, set the alpha value to 0 (invisible). + * If you set the alpha value to 1.0 (opaque), the element is not visible when tapped. + * @property defaults.behavior.tapHighlightColor + * @type {String} + * @default 'rgba(0,0,0,0)' + */ + tapHighlightColor: 'rgba(0,0,0,0)' } + }; - function parseWeekday(input, language) { - if (typeof input === 'string') { - if (!isNaN(input)) { - input = parseInt(input, 10); - } - else { - input = language.weekdaysParse(input); - if (typeof input !== 'number') { - return null; - } - } - } - return input; - } + /** + * hammer document where the base events are added at + * @property DOCUMENT + * @type {HTMLElement} + * @default window.document + */ + Hammer.DOCUMENT = document; - /************************************ - Relative Time - ************************************/ + /** + * detect support for pointer events + * @property HAS_POINTEREVENTS + * @type {Boolean} + */ + Hammer.HAS_POINTEREVENTS = navigator.pointerEnabled || navigator.msPointerEnabled; + + /** + * detect support for touch events + * @property HAS_TOUCHEVENTS + * @type {Boolean} + */ + Hammer.HAS_TOUCHEVENTS = ('ontouchstart' in window); + /** + * detect mobile browsers + * @property IS_MOBILE + * @type {Boolean} + */ + Hammer.IS_MOBILE = /mobile|tablet|ip(ad|hone|od)|android|silk/i.test(navigator.userAgent); - // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize - function substituteTimeAgo(string, number, withoutSuffix, isFuture, lang) { - return lang.relativeTime(number || 1, !!withoutSuffix, string, isFuture); - } + /** + * detect if we want to support mouseevents at all + * @property NO_MOUSEEVENTS + * @type {Boolean} + */ + Hammer.NO_MOUSEEVENTS = (Hammer.HAS_TOUCHEVENTS && Hammer.IS_MOBILE) || Hammer.HAS_POINTEREVENTS; - function relativeTime(milliseconds, withoutSuffix, lang) { - var seconds = round(Math.abs(milliseconds) / 1000), - minutes = round(seconds / 60), - hours = round(minutes / 60), - days = round(hours / 24), - years = round(days / 365), - args = seconds < relativeTimeThresholds.s && ['s', seconds] || - minutes === 1 && ['m'] || - minutes < relativeTimeThresholds.m && ['mm', minutes] || - hours === 1 && ['h'] || - hours < relativeTimeThresholds.h && ['hh', hours] || - days === 1 && ['d'] || - days <= relativeTimeThresholds.dd && ['dd', days] || - days <= relativeTimeThresholds.dm && ['M'] || - days < relativeTimeThresholds.dy && ['MM', round(days / 30)] || - years === 1 && ['y'] || ['yy', years]; - args[2] = withoutSuffix; - args[3] = milliseconds > 0; - args[4] = lang; - return substituteTimeAgo.apply({}, args); - } + /** + * interval in which Hammer recalculates current velocity/direction/angle in ms + * @property CALCULATE_INTERVAL + * @type {Number} + * @default 25 + */ + Hammer.CALCULATE_INTERVAL = 25; + /** + * eventtypes per touchevent (start, move, end) are filled by `Event.determineEventTypes` on `setup` + * the object contains the DOM event names per type (`EVENT_START`, `EVENT_MOVE`, `EVENT_END`) + * @property EVENT_TYPES + * @private + * @writeOnce + * @type {Object} + */ + var EVENT_TYPES = {}; - /************************************ - Week of Year - ************************************/ + /** + * direction strings, for safe comparisons + * @property DIRECTION_DOWN|LEFT|UP|RIGHT + * @final + * @type {String} + * @default 'down' 'left' 'up' 'right' + */ + var DIRECTION_DOWN = Hammer.DIRECTION_DOWN = 'down'; + var DIRECTION_LEFT = Hammer.DIRECTION_LEFT = 'left'; + var DIRECTION_UP = Hammer.DIRECTION_UP = 'up'; + var DIRECTION_RIGHT = Hammer.DIRECTION_RIGHT = 'right'; + /** + * pointertype strings, for safe comparisons + * @property POINTER_MOUSE|TOUCH|PEN + * @final + * @type {String} + * @default 'mouse' 'touch' 'pen' + */ + var POINTER_MOUSE = Hammer.POINTER_MOUSE = 'mouse'; + var POINTER_TOUCH = Hammer.POINTER_TOUCH = 'touch'; + var POINTER_PEN = Hammer.POINTER_PEN = 'pen'; - // firstDayOfWeek 0 = sun, 6 = sat - // the day of the week that starts the week - // (usually sunday or monday) - // firstDayOfWeekOfYear 0 = sun, 6 = sat - // the first week is the week that contains the first - // of this day of the week - // (eg. ISO weeks use thursday (4)) - function weekOfYear(mom, firstDayOfWeek, firstDayOfWeekOfYear) { - var end = firstDayOfWeekOfYear - firstDayOfWeek, - daysToDayOfWeek = firstDayOfWeekOfYear - mom.day(), - adjustedMoment; + /** + * eventtypes + * @property EVENT_START|MOVE|END|RELEASE|TOUCH + * @final + * @type {String} + * @default 'start' 'change' 'move' 'end' 'release' 'touch' + */ + var EVENT_START = Hammer.EVENT_START = 'start'; + var EVENT_MOVE = Hammer.EVENT_MOVE = 'move'; + var EVENT_END = Hammer.EVENT_END = 'end'; + var EVENT_RELEASE = Hammer.EVENT_RELEASE = 'release'; + var EVENT_TOUCH = Hammer.EVENT_TOUCH = 'touch'; + /** + * if the window events are set... + * @property READY + * @writeOnce + * @type {Boolean} + * @default false + */ + Hammer.READY = false; - if (daysToDayOfWeek > end) { - daysToDayOfWeek -= 7; - } + /** + * plugins namespace + * @property plugins + * @type {Object} + */ + Hammer.plugins = Hammer.plugins || {}; - if (daysToDayOfWeek < end - 7) { - daysToDayOfWeek += 7; - } + /** + * gestures namespace + * see `/gestures` for the definitions + * @property gestures + * @type {Object} + */ + Hammer.gestures = Hammer.gestures || {}; - adjustedMoment = moment(mom).add('d', daysToDayOfWeek); - return { - week: Math.ceil(adjustedMoment.dayOfYear() / 7), - year: adjustedMoment.year() - }; + /** + * setup events to detect gestures on the document + * this function is called when creating an new instance + * @private + */ + function setup() { + if(Hammer.READY) { + return; } - //http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday - function dayOfYearFromWeeks(year, week, weekday, firstDayOfWeekOfYear, firstDayOfWeek) { - var d = makeUTCDate(year, 0, 1).getUTCDay(), daysToAdd, dayOfYear; - - d = d === 0 ? 7 : d; - weekday = weekday != null ? weekday : firstDayOfWeek; - daysToAdd = firstDayOfWeek - d + (d > firstDayOfWeekOfYear ? 7 : 0) - (d < firstDayOfWeek ? 7 : 0); - dayOfYear = 7 * (week - 1) + (weekday - firstDayOfWeek) + daysToAdd + 1; + // find what eventtypes we add listeners to + Event.determineEventTypes(); - return { - year: dayOfYear > 0 ? year : year - 1, - dayOfYear: dayOfYear > 0 ? dayOfYear : daysInYear(year - 1) + dayOfYear - }; - } + // Register all gestures inside Hammer.gestures + Utils.each(Hammer.gestures, function(gesture) { + Detection.register(gesture); + }); - /************************************ - Top Level Functions - ************************************/ + // Add touch events on the document + Event.onTouch(Hammer.DOCUMENT, EVENT_MOVE, Detection.detect); + Event.onTouch(Hammer.DOCUMENT, EVENT_END, Detection.detect); - function makeMoment(config) { - var input = config._i, - format = config._f; + // Hammer is ready...! + Hammer.READY = true; + } - if (input === null || (format === undefined && input === '')) { - return moment.invalid({nullInput: true}); + /** + * @module hammer + * + * @class Utils + * @static + */ + var Utils = Hammer.utils = { + /** + * extend method, could also be used for cloning when `dest` is an empty object. + * changes the dest object + * @method extend + * @param {Object} dest + * @param {Object} src + * @param {Boolean} [merge=false] do a merge + * @return {Object} dest + */ + extend: function extend(dest, src, merge) { + for(var key in src) { + if(!src.hasOwnProperty(key) || (dest[key] !== undefined && merge)) { + continue; + } + dest[key] = src[key]; } + return dest; + }, - if (typeof input === 'string') { - config._i = input = getLangDefinition().preparse(input); - } + /** + * simple addEventListener wrapper + * @method on + * @param {HTMLElement} element + * @param {String} type + * @param {Function} handler + */ + on: function on(element, type, handler) { + element.addEventListener(type, handler, false); + }, - if (moment.isMoment(input)) { - config = cloneMoment(input); + /** + * simple removeEventListener wrapper + * @method off + * @param {HTMLElement} element + * @param {String} type + * @param {Function} handler + */ + off: function off(element, type, handler) { + element.removeEventListener(type, handler, false); + }, - config._d = new Date(+input._d); - } else if (format) { - if (isArray(format)) { - makeDateFromStringAndArray(config); - } else { - makeDateFromStringAndFormat(config); + /** + * forEach over arrays and objects + * @method each + * @param {Object|Array} obj + * @param {Function} iterator + * @param {any} iterator.item + * @param {Number} iterator.index + * @param {Object|Array} iterator.obj the source object + * @param {Object} context value to use as `this` in the iterator + */ + each: function each(obj, iterator, context) { + var i, len; + + // native forEach on arrays + if('forEach' in obj) { + obj.forEach(iterator, context); + // arrays + } else if(obj.length !== undefined) { + for(i = 0, len = obj.length; i < len; i++) { + if(iterator.call(context, obj[i], i, obj) === false) { + return; + } } + // objects } else { - makeDateFromInput(config); + for(i in obj) { + if(obj.hasOwnProperty(i) && + iterator.call(context, obj[i], i, obj) === false) { + return; + } + } } + }, - return new Moment(config); - } - - moment = function (input, format, lang, strict) { - var c; + /** + * find if a string contains the string using indexOf + * @method inStr + * @param {String} src + * @param {String} find + * @return {Boolean} found + */ + inStr: function inStr(src, find) { + return src.indexOf(find) > -1; + }, - if (typeof(lang) === "boolean") { - strict = lang; - lang = undefined; + /** + * find if a array contains the object using indexOf or a simple polyfill + * @method inArray + * @param {String} src + * @param {String} find + * @return {Boolean|Number} false when not found, or the index + */ + inArray: function inArray(src, find) { + if(src.indexOf) { + var index = src.indexOf(find); + return (index === -1) ? false : index; + } else { + for(var i = 0, len = src.length; i < len; i++) { + if(src[i] === find) { + return i; + } + } + return false; } - // object construction must be done this way. - // https://github.com/moment/moment/issues/1423 - c = {}; - c._isAMomentObject = true; - c._i = input; - c._f = format; - c._l = lang; - c._strict = strict; - c._isUTC = false; - c._pf = defaultParsingFlags(); - - return makeMoment(c); - }; - - moment.suppressDeprecationWarnings = false; + }, - moment.createFromInputFallback = deprecate( - "moment construction falls back to js Date. This is " + - "discouraged and will be removed in upcoming major " + - "release. Please refer to " + - "https://github.com/moment/moment/issues/1407 for more info.", - function (config) { - config._d = new Date(config._i); - }); + /** + * convert an array-like object (`arguments`, `touchlist`) to an array + * @method toArray + * @param {Object} obj + * @return {Array} + */ + toArray: function toArray(obj) { + return Array.prototype.slice.call(obj, 0); + }, - // Pick a moment m from moments so that m[fn](other) is true for all - // other. This relies on the function fn to be transitive. - // - // moments should either be an array of moment objects or an array, whose - // first element is an array of moment objects. - function pickBy(fn, moments) { - var res, i; - if (moments.length === 1 && isArray(moments[0])) { - moments = moments[0]; - } - if (!moments.length) { - return moment(); - } - res = moments[0]; - for (i = 1; i < moments.length; ++i) { - if (moments[i][fn](res)) { - res = moments[i]; + /** + * find if a node is in the given parent + * @method hasParent + * @param {HTMLElement} node + * @param {HTMLElement} parent + * @return {Boolean} found + */ + hasParent: function hasParent(node, parent) { + while(node) { + if(node == parent) { + return true; } + node = node.parentNode; } - return res; - } - - moment.min = function () { - var args = [].slice.call(arguments, 0); - - return pickBy('isBefore', args); - }; + return false; + }, - moment.max = function () { - var args = [].slice.call(arguments, 0); + /** + * get the center of all the touches + * @method getCenter + * @param {Array} touches + * @return {Object} center contains `pageX`, `pageY`, `clientX` and `clientY` properties + */ + getCenter: function getCenter(touches) { + var pageX = [], + pageY = [], + clientX = [], + clientY = [], + min = Math.min, + max = Math.max; - return pickBy('isAfter', args); - }; + // no need to loop when only one touch + if(touches.length === 1) { + return { + pageX: touches[0].pageX, + pageY: touches[0].pageY, + clientX: touches[0].clientX, + clientY: touches[0].clientY + }; + } - // creating with utc - moment.utc = function (input, format, lang, strict) { - var c; + Utils.each(touches, function(touch) { + pageX.push(touch.pageX); + pageY.push(touch.pageY); + clientX.push(touch.clientX); + clientY.push(touch.clientY); + }); - if (typeof(lang) === "boolean") { - strict = lang; - lang = undefined; - } - // object construction must be done this way. - // https://github.com/moment/moment/issues/1423 - c = {}; - c._isAMomentObject = true; - c._useUTC = true; - c._isUTC = true; - c._l = lang; - c._i = input; - c._f = format; - c._strict = strict; - c._pf = defaultParsingFlags(); + return { + pageX: (min.apply(Math, pageX) + max.apply(Math, pageX)) / 2, + pageY: (min.apply(Math, pageY) + max.apply(Math, pageY)) / 2, + clientX: (min.apply(Math, clientX) + max.apply(Math, clientX)) / 2, + clientY: (min.apply(Math, clientY) + max.apply(Math, clientY)) / 2 + }; + }, - return makeMoment(c).utc(); - }; + /** + * calculate the velocity between two points. unit is in px per ms. + * @method getVelocity + * @param {Number} deltaTime + * @param {Number} deltaX + * @param {Number} deltaY + * @return {Object} velocity `x` and `y` + */ + getVelocity: function getVelocity(deltaTime, deltaX, deltaY) { + return { + x: Math.abs(deltaX / deltaTime) || 0, + y: Math.abs(deltaY / deltaTime) || 0 + }; + }, - // creating with unix timestamp (in seconds) - moment.unix = function (input) { - return moment(input * 1000); - }; + /** + * calculate the angle between two coordinates + * @method getAngle + * @param {Touch} touch1 + * @param {Touch} touch2 + * @return {Number} angle + */ + getAngle: function getAngle(touch1, touch2) { + var x = touch2.clientX - touch1.clientX, + y = touch2.clientY - touch1.clientY; - // duration - moment.duration = function (input, key) { - var duration = input, - // matching against regexp is expensive, do it on demand - match = null, - sign, - ret, - parseIso; + return Math.atan2(y, x) * 180 / Math.PI; + }, - if (moment.isDuration(input)) { - duration = { - ms: input._milliseconds, - d: input._days, - M: input._months - }; - } else if (typeof input === 'number') { - duration = {}; - if (key) { - duration[key] = input; - } else { - duration.milliseconds = input; - } - } else if (!!(match = aspNetTimeSpanJsonRegex.exec(input))) { - sign = (match[1] === "-") ? -1 : 1; - duration = { - y: 0, - d: toInt(match[DATE]) * sign, - h: toInt(match[HOUR]) * sign, - m: toInt(match[MINUTE]) * sign, - s: toInt(match[SECOND]) * sign, - ms: toInt(match[MILLISECOND]) * sign - }; - } else if (!!(match = isoDurationRegex.exec(input))) { - sign = (match[1] === "-") ? -1 : 1; - parseIso = function (inp) { - // We'd normally use ~~inp for this, but unfortunately it also - // converts floats to ints. - // inp may be undefined, so careful calling replace on it. - var res = inp && parseFloat(inp.replace(',', '.')); - // apply sign while we're at it - return (isNaN(res) ? 0 : res) * sign; - }; - duration = { - y: parseIso(match[2]), - M: parseIso(match[3]), - d: parseIso(match[4]), - h: parseIso(match[5]), - m: parseIso(match[6]), - s: parseIso(match[7]), - w: parseIso(match[8]) - }; + /** + * do a small comparision to get the direction between two touches. + * @method getDirection + * @param {Touch} touch1 + * @param {Touch} touch2 + * @return {String} direction matches `DIRECTION_LEFT|RIGHT|UP|DOWN` + */ + getDirection: function getDirection(touch1, touch2) { + var x = Math.abs(touch1.clientX - touch2.clientX), + y = Math.abs(touch1.clientY - touch2.clientY); + + if(x >= y) { + return touch1.clientX - touch2.clientX > 0 ? DIRECTION_LEFT : DIRECTION_RIGHT; } + return touch1.clientY - touch2.clientY > 0 ? DIRECTION_UP : DIRECTION_DOWN; + }, - ret = new Duration(duration); + /** + * calculate the distance between two touches + * @method getDistance + * @param {Touch}touch1 + * @param {Touch} touch2 + * @return {Number} distance + */ + getDistance: function getDistance(touch1, touch2) { + var x = touch2.clientX - touch1.clientX, + y = touch2.clientY - touch1.clientY; - if (moment.isDuration(input) && input.hasOwnProperty('_lang')) { - ret._lang = input._lang; + return Math.sqrt((x * x) + (y * y)); + }, + + /** + * calculate the scale factor between two touchLists + * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out + * @method getScale + * @param {Array} start array of touches + * @param {Array} end array of touches + * @return {Number} scale + */ + getScale: function getScale(start, end) { + // need two fingers... + if(start.length >= 2 && end.length >= 2) { + return this.getDistance(end[0], end[1]) / this.getDistance(start[0], start[1]); } + return 1; + }, - return ret; - }; + /** + * calculate the rotation degrees between two touchLists + * @method getRotation + * @param {Array} start array of touches + * @param {Array} end array of touches + * @return {Number} rotation + */ + getRotation: function getRotation(start, end) { + // need two fingers + if(start.length >= 2 && end.length >= 2) { + return this.getAngle(end[1], end[0]) - this.getAngle(start[1], start[0]); + } + return 0; + }, - // version number - moment.version = VERSION; + /** + * find out if the direction is vertical * + * @method isVertical + * @param {String} direction matches `DIRECTION_UP|DOWN` + * @return {Boolean} is_vertical + */ + isVertical: function isVertical(direction) { + return direction == DIRECTION_UP || direction == DIRECTION_DOWN; + }, - // default format - moment.defaultFormat = isoFormat; + /** + * set css properties with their prefixes + * @param {HTMLElement} element + * @param {String} prop + * @param {String} value + * @param {Boolean} [toggle=true] + * @return {Boolean} + */ + setPrefixedCss: function setPrefixedCss(element, prop, value, toggle) { + var prefixes = ['', 'Webkit', 'Moz', 'O', 'ms']; + prop = Utils.toCamelCase(prop); - // constant that refers to the ISO standard - moment.ISO_8601 = function () {}; + for(var i = 0; i < prefixes.length; i++) { + var p = prop; + // prefixes + if(prefixes[i]) { + p = prefixes[i] + p.slice(0, 1).toUpperCase() + p.slice(1); + } - // Plugins that add properties should also add the key here (null value), - // so we can properly clone ourselves. - moment.momentProperties = momentProperties; + // test the style + if(p in element.style) { + element.style[p] = (toggle == null || toggle) && value || ''; + break; + } + } + }, - // This function will be called whenever a moment is mutated. - // It is intended to keep the offset in sync with the timezone. - moment.updateOffset = function () {}; + /** + * toggle browser default behavior by setting css properties. + * `userSelect='none'` also sets `element.onselectstart` to false + * `userDrag='none'` also sets `element.ondragstart` to false + * + * @method toggleBehavior + * @param {HtmlElement} element + * @param {Object} props + * @param {Boolean} [toggle=true] + */ + toggleBehavior: function toggleBehavior(element, props, toggle) { + if(!props || !element || !element.style) { + return; + } - // This function allows you to set a threshold for relative time strings - moment.relativeTimeThreshold = function(threshold, limit) { - if (relativeTimeThresholds[threshold] === undefined) { - return false; - } - relativeTimeThresholds[threshold] = limit; - return true; - }; + // set the css properties + Utils.each(props, function(value, prop) { + Utils.setPrefixedCss(element, prop, value, toggle); + }); - // This function will load languages and then set the global language. If - // no arguments are passed in, it will simply return the current global - // language key. - moment.lang = function (key, values) { - var r; - if (!key) { - return moment.fn._lang._abbr; + var falseFn = toggle && function() { + return false; + }; + + // also the disable onselectstart + if(props.userSelect == 'none') { + element.onselectstart = falseFn; } - if (values) { - loadLang(normalizeLanguage(key), values); - } else if (values === null) { - unloadLang(key); - key = 'en'; - } else if (!languages[key]) { - getLangDefinition(key); + // and disable ondragstart + if(props.userDrag == 'none') { + element.ondragstart = falseFn; } - r = moment.duration.fn._lang = moment.fn._lang = getLangDefinition(key); - return r._abbr; - }; + }, - // returns language data - moment.langData = function (key) { - if (key && key._lang && key._lang._abbr) { - key = key._lang._abbr; - } - return getLangDefinition(key); - }; + /** + * convert a string with underscores to camelCase + * so prevent_default becomes preventDefault + * @param {String} str + * @return {String} camelCaseStr + */ + toCamelCase: function toCamelCase(str) { + return str.replace(/[_-]([a-z])/g, function(s) { + return s[1].toUpperCase(); + }); + } + }; - // compare moment object - moment.isMoment = function (obj) { - return obj instanceof Moment || - (obj != null && obj.hasOwnProperty('_isAMomentObject')); - }; - // for typechecking Duration objects - moment.isDuration = function (obj) { - return obj instanceof Duration; - }; + /** + * @module hammer + */ + /** + * @class Event + * @static + */ + var Event = Hammer.event = { + /** + * when touch events have been fired, this is true + * this is used to stop mouse events + * @property prevent_mouseevents + * @private + * @type {Boolean} + */ + preventMouseEvents: false, - for (i = lists.length - 1; i >= 0; --i) { - makeList(lists[i]); - } + /** + * if EVENT_START has been fired + * @property started + * @private + * @type {Boolean} + */ + started: false, - moment.normalizeUnits = function (units) { - return normalizeUnits(units); - }; + /** + * when the mouse is hold down, this is true + * @property should_detect + * @private + * @type {Boolean} + */ + shouldDetect: false, - moment.invalid = function (flags) { - var m = moment.utc(NaN); - if (flags != null) { - extend(m._pf, flags); - } - else { - m._pf.userInvalidated = true; - } + /** + * simple event binder with a hook and support for multiple types + * @method on + * @param {HTMLElement} element + * @param {String} type + * @param {Function} handler + * @param {Function} [hook] + * @param {Object} hook.type + */ + on: function on(element, type, handler, hook) { + var types = type.split(' '); + Utils.each(types, function(type) { + Utils.on(element, type, handler); + hook && hook(type); + }); + }, - return m; - }; + /** + * simple event unbinder with a hook and support for multiple types + * @method off + * @param {HTMLElement} element + * @param {String} type + * @param {Function} handler + * @param {Function} [hook] + * @param {Object} hook.type + */ + off: function off(element, type, handler, hook) { + var types = type.split(' '); + Utils.each(types, function(type) { + Utils.off(element, type, handler); + hook && hook(type); + }); + }, - moment.parseZone = function () { - return moment.apply(null, arguments).parseZone(); - }; + /** + * the core touch event handler. + * this finds out if we should to detect gestures + * @method onTouch + * @param {HTMLElement} element + * @param {String} eventType matches `EVENT_START|MOVE|END` + * @param {Function} handler + * @return onTouchHandler {Function} the core event handler + */ + onTouch: function onTouch(element, eventType, handler) { + var self = this; - moment.parseTwoDigitYear = function (input) { - return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); - }; + var onTouchHandler = function onTouchHandler(ev) { + var srcType = ev.type.toLowerCase(), + isPointer = Hammer.HAS_POINTEREVENTS, + isMouse = Utils.inStr(srcType, 'mouse'), + triggerType; - /************************************ - Moment Prototype - ************************************/ + // if we are in a mouseevent, but there has been a touchevent triggered in this session + // we want to do nothing. simply break out of the event. + if(isMouse && self.preventMouseEvents) { + return; + // mousebutton must be down + } else if(isMouse && eventType == EVENT_START && ev.button === 0) { + self.preventMouseEvents = false; + self.shouldDetect = true; + } else if(isPointer && eventType == EVENT_START) { + self.shouldDetect = (ev.buttons === 1 || PointerEvent.matchType(POINTER_TOUCH, ev)); + // just a valid start event, but no mouse + } else if(!isMouse && eventType == EVENT_START) { + self.preventMouseEvents = true; + self.shouldDetect = true; + } - extend(moment.fn = Moment.prototype, { + // update the pointer event before entering the detection + if(isPointer && eventType != EVENT_END) { + PointerEvent.updatePointer(eventType, ev); + } - clone : function () { - return moment(this); - }, + // we are in a touch/down state, so allowed detection of gestures + if(self.shouldDetect) { + triggerType = self.doDetect.call(self, ev, eventType, element, handler); + } - valueOf : function () { - return +this._d + ((this._offset || 0) * 60000); - }, + // ...and we are done with the detection + // so reset everything to start each detection totally fresh + if(triggerType == EVENT_END) { + self.preventMouseEvents = false; + self.shouldDetect = false; + PointerEvent.reset(); + // update the pointerevent object after the detection + } - unix : function () { - return Math.floor(+this / 1000); - }, + if(isPointer && eventType == EVENT_END) { + PointerEvent.updatePointer(eventType, ev); + } + }; - toString : function () { - return this.clone().lang('en').format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ"); - }, + this.on(element, EVENT_TYPES[eventType], onTouchHandler); + return onTouchHandler; + }, - toDate : function () { - return this._offset ? new Date(+this) : this._d; - }, + /** + * the core detection method + * this finds out what hammer-touch-events to trigger + * @method doDetect + * @param {Object} ev + * @param {String} eventType matches `EVENT_START|MOVE|END` + * @param {HTMLElement} element + * @param {Function} handler + * @return {String} triggerType matches `EVENT_START|MOVE|END` + */ + doDetect: function doDetect(ev, eventType, element, handler) { + var touchList = this.getTouchList(ev, eventType); + var touchListLength = touchList.length; + var triggerType = eventType; + var triggerChange = touchList.trigger; // used by fakeMultitouch plugin + var changedLength = touchListLength; - toISOString : function () { - var m = moment(this).utc(); - if (0 < m.year() && m.year() <= 9999) { - return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); - } else { - return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); - } - }, + // at each touchstart-like event we want also want to trigger a TOUCH event... + if(eventType == EVENT_START) { + triggerChange = EVENT_TOUCH; + // ...the same for a touchend-like event + } else if(eventType == EVENT_END) { + triggerChange = EVENT_RELEASE; - toArray : function () { - var m = this; - return [ - m.year(), - m.month(), - m.date(), - m.hours(), - m.minutes(), - m.seconds(), - m.milliseconds() - ]; - }, + // keep track of how many touches have been removed + changedLength = touchList.length - ((ev.changedTouches) ? ev.changedTouches.length : 1); + } - isValid : function () { - return isValid(this); - }, + // after there are still touches on the screen, + // we just want to trigger a MOVE event. so change the START or END to a MOVE + // but only after detection has been started, the first time we actualy want a START + if(changedLength > 0 && this.started) { + triggerType = EVENT_MOVE; + } - isDSTShifted : function () { + // detection has been started, we keep track of this, see above + this.started = true; - if (this._a) { - return this.isValid() && compareArrays(this._a, (this._isUTC ? moment.utc(this._a) : moment(this._a)).toArray()) > 0; - } + // generate some event data, some basic information + var evData = this.collectEventData(element, triggerType, touchList, ev); - return false; - }, + // trigger the triggerType event before the change (TOUCH, RELEASE) events + // but the END event should be at last + if(eventType != EVENT_END) { + handler.call(Detection, evData); + } - parsingFlags : function () { - return extend({}, this._pf); - }, + // trigger a change (TOUCH, RELEASE) event, this means the length of the touches changed + if(triggerChange) { + evData.changedLength = changedLength; + evData.eventType = triggerChange; - invalidAt: function () { - return this._pf.overflow; - }, + handler.call(Detection, evData); - utc : function () { - return this.zone(0); - }, + evData.eventType = triggerType; + delete evData.changedLength; + } - local : function () { - this.zone(0); - this._isUTC = false; - return this; - }, + // trigger the END event + if(triggerType == EVENT_END) { + handler.call(Detection, evData); - format : function (inputString) { - var output = formatMoment(this, inputString || moment.defaultFormat); - return this.lang().postformat(output); - }, + // ...and we are done with the detection + // so reset everything to start each detection totally fresh + this.started = false; + } - add : function (input, val) { - var dur; - // switch args to support add('s', 1) and add(1, 's') - if (typeof input === 'string' && typeof val === 'string') { - dur = moment.duration(isNaN(+val) ? +input : +val, isNaN(+val) ? val : input); - } else if (typeof input === 'string') { - dur = moment.duration(+val, input); - } else { - dur = moment.duration(input, val); - } - addOrSubtractDurationFromMoment(this, dur, 1); - return this; - }, + return triggerType; + }, - subtract : function (input, val) { - var dur; - // switch args to support subtract('s', 1) and subtract(1, 's') - if (typeof input === 'string' && typeof val === 'string') { - dur = moment.duration(isNaN(+val) ? +input : +val, isNaN(+val) ? val : input); - } else if (typeof input === 'string') { - dur = moment.duration(+val, input); + /** + * we have different events for each device/browser + * determine what we need and set them in the EVENT_TYPES constant + * the `onTouch` method is bind to these properties. + * @method determineEventTypes + * @return {Object} events + */ + determineEventTypes: function determineEventTypes() { + var types; + if(Hammer.HAS_POINTEREVENTS) { + if(window.PointerEvent) { + types = [ + 'pointerdown', + 'pointermove', + 'pointerup pointercancel lostpointercapture' + ]; } else { - dur = moment.duration(input, val); + types = [ + 'MSPointerDown', + 'MSPointerMove', + 'MSPointerUp MSPointerCancel MSLostPointerCapture' + ]; } - addOrSubtractDurationFromMoment(this, dur, -1); - return this; - }, + } else if(Hammer.NO_MOUSEEVENTS) { + types = [ + 'touchstart', + 'touchmove', + 'touchend touchcancel' + ]; + } else { + types = [ + 'touchstart mousedown', + 'touchmove mousemove', + 'touchend touchcancel mouseup' + ]; + } - diff : function (input, units, asFloat) { - var that = makeAs(input, this), - zoneDiff = (this.zone() - that.zone()) * 6e4, - diff, output; + EVENT_TYPES[EVENT_START] = types[0]; + EVENT_TYPES[EVENT_MOVE] = types[1]; + EVENT_TYPES[EVENT_END] = types[2]; + return EVENT_TYPES; + }, - units = normalizeUnits(units); + /** + * create touchList depending on the event + * @method getTouchList + * @param {Object} ev + * @param {String} eventType + * @return {Array} touches + */ + getTouchList: function getTouchList(ev, eventType) { + // get the fake pointerEvent touchlist + if(Hammer.HAS_POINTEREVENTS) { + return PointerEvent.getTouchList(); + } - if (units === 'year' || units === 'month') { - // average number of days in the months in the given dates - diff = (this.daysInMonth() + that.daysInMonth()) * 432e5; // 24 * 60 * 60 * 1000 / 2 - // difference in months - output = ((this.year() - that.year()) * 12) + (this.month() - that.month()); - // adjust by taking difference in days, average number of days - // and dst in the given months. - output += ((this - moment(this).startOf('month')) - - (that - moment(that).startOf('month'))) / diff; - // same as above but with zones, to negate all dst - output -= ((this.zone() - moment(this).startOf('month').zone()) - - (that.zone() - moment(that).startOf('month').zone())) * 6e4 / diff; - if (units === 'year') { - output = output / 12; - } - } else { - diff = (this - that); - output = units === 'second' ? diff / 1e3 : // 1000 - units === 'minute' ? diff / 6e4 : // 1000 * 60 - units === 'hour' ? diff / 36e5 : // 1000 * 60 * 60 - units === 'day' ? (diff - zoneDiff) / 864e5 : // 1000 * 60 * 60 * 24, negate dst - units === 'week' ? (diff - zoneDiff) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst - diff; + // get the touchlist + if(ev.touches) { + if(eventType == EVENT_MOVE) { + return ev.touches; } - return asFloat ? output : absRound(output); - }, - from : function (time, withoutSuffix) { - return moment.duration(this.diff(time)).lang(this.lang()._abbr).humanize(!withoutSuffix); - }, + var identifiers = []; + var concat = [].concat(Utils.toArray(ev.touches), Utils.toArray(ev.changedTouches)); + var touchList = []; - fromNow : function (withoutSuffix) { - return this.from(moment(), withoutSuffix); - }, + Utils.each(concat, function(touch) { + if(Utils.inArray(identifiers, touch.identifier) === false) { + touchList.push(touch); + } + identifiers.push(touch.identifier); + }); - calendar : function (time) { - // We want to compare the start of today, vs this. - // Getting start-of-today depends on whether we're zone'd or not. - var now = time || moment(), - sod = makeAs(now, this).startOf('day'), - diff = this.diff(sod, 'days', true), - format = diff < -6 ? 'sameElse' : - diff < -1 ? 'lastWeek' : - diff < 0 ? 'lastDay' : - diff < 1 ? 'sameDay' : - diff < 2 ? 'nextDay' : - diff < 7 ? 'nextWeek' : 'sameElse'; - return this.format(this.lang().calendar(format, this)); - }, + return touchList; + } - isLeapYear : function () { - return isLeapYear(this.year()); - }, + // make fake touchList from mouse position + ev.identifier = 1; + return [ev]; + }, - isDST : function () { - return (this.zone() < this.clone().month(0).zone() || - this.zone() < this.clone().month(5).zone()); - }, + /** + * collect basic event data + * @method collectEventData + * @param {HTMLElement} element + * @param {String} eventType matches `EVENT_START|MOVE|END` + * @param {Array} touches + * @param {Object} ev + * @return {Object} ev + */ + collectEventData: function collectEventData(element, eventType, touches, ev) { + // find out pointerType + var pointerType = POINTER_TOUCH; + if(Utils.inStr(ev.type, 'mouse') || PointerEvent.matchType(POINTER_MOUSE, ev)) { + pointerType = POINTER_MOUSE; + } else if(PointerEvent.matchType(POINTER_PEN, ev)) { + pointerType = POINTER_PEN; + } - day : function (input) { - var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); - if (input != null) { - input = parseWeekday(input, this.lang()); - return this.add({ d : input - day }); - } else { - return day; - } - }, + return { + center: Utils.getCenter(touches), + timeStamp: Date.now(), + target: ev.target, + touches: touches, + eventType: eventType, + pointerType: pointerType, + srcEvent: ev, - month : makeAccessor('Month', true), + /** + * prevent the browser default actions + * mostly used to disable scrolling of the browser + */ + preventDefault: function() { + var srcEvent = this.srcEvent; + srcEvent.preventManipulation && srcEvent.preventManipulation(); + srcEvent.preventDefault && srcEvent.preventDefault(); + }, - startOf: function (units) { - units = normalizeUnits(units); - // the following switch intentionally omits break keywords - // to utilize falling through the cases. - switch (units) { - case 'year': - this.month(0); - /* falls through */ - case 'quarter': - case 'month': - this.date(1); - /* falls through */ - case 'week': - case 'isoWeek': - case 'day': - this.hours(0); - /* falls through */ - case 'hour': - this.minutes(0); - /* falls through */ - case 'minute': - this.seconds(0); - /* falls through */ - case 'second': - this.milliseconds(0); - /* falls through */ - } + /** + * stop bubbling the event up to its parents + */ + stopPropagation: function() { + this.srcEvent.stopPropagation(); + }, - // weeks are a special case - if (units === 'week') { - this.weekday(0); - } else if (units === 'isoWeek') { - this.isoWeekday(1); + /** + * immediately stop gesture detection + * might be useful after a swipe was detected + * @return {*} + */ + stopDetect: function() { + return Detection.stopDetect(); } + }; + } + }; - // quarters are also special - if (units === 'quarter') { - this.month(Math.floor(this.month() / 3) * 3); - } - return this; - }, + /** + * @module hammer + * + * @class PointerEvent + * @static + */ + var PointerEvent = Hammer.PointerEvent = { + /** + * holds all pointers, by `identifier` + * @property pointers + * @type {Object} + */ + pointers: {}, - endOf: function (units) { - units = normalizeUnits(units); - return this.startOf(units).add((units === 'isoWeek' ? 'week' : units), 1).subtract('ms', 1); - }, + /** + * get the pointers as an array + * @method getTouchList + * @return {Array} touchlist + */ + getTouchList: function getTouchList() { + var touchlist = []; + // we can use forEach since pointerEvents only is in IE10 + Utils.each(this.pointers, function(pointer) { + touchlist.push(pointer); + }); + return touchlist; + }, - isAfter: function (input, units) { - units = typeof units !== 'undefined' ? units : 'millisecond'; - return +this.clone().startOf(units) > +moment(input).startOf(units); - }, + /** + * update the position of a pointer + * @method updatePointer + * @param {String} eventType matches `EVENT_START|MOVE|END` + * @param {Object} pointerEvent + */ + updatePointer: function updatePointer(eventType, pointerEvent) { + if(eventType == EVENT_END || (eventType != EVENT_END && pointerEvent.buttons !== 1)) { + delete this.pointers[pointerEvent.pointerId]; + } else { + pointerEvent.identifier = pointerEvent.pointerId; + this.pointers[pointerEvent.pointerId] = pointerEvent; + } + }, - isBefore: function (input, units) { - units = typeof units !== 'undefined' ? units : 'millisecond'; - return +this.clone().startOf(units) < +moment(input).startOf(units); - }, + /** + * check if ev matches pointertype + * @method matchType + * @param {String} pointerType matches `POINTER_MOUSE|TOUCH|PEN` + * @param {PointerEvent} ev + */ + matchType: function matchType(pointerType, ev) { + if(!ev.pointerType) { + return false; + } - isSame: function (input, units) { - units = units || 'ms'; - return +this.clone().startOf(units) === +makeAs(input, this).startOf(units); - }, + var pt = ev.pointerType, + types = {}; + + types[POINTER_MOUSE] = (pt === (ev.MSPOINTER_TYPE_MOUSE || POINTER_MOUSE)); + types[POINTER_TOUCH] = (pt === (ev.MSPOINTER_TYPE_TOUCH || POINTER_TOUCH)); + types[POINTER_PEN] = (pt === (ev.MSPOINTER_TYPE_PEN || POINTER_PEN)); + return types[pointerType]; + }, - min: deprecate( - "moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548", - function (other) { - other = moment.apply(null, arguments); - return other < this ? this : other; - } - ), + /** + * reset the stored pointers + * @method reset + */ + reset: function resetList() { + this.pointers = {}; + } + }; - max: deprecate( - "moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548", - function (other) { - other = moment.apply(null, arguments); - return other > this ? this : other; - } - ), - // keepTime = true means only change the timezone, without affecting - // the local hour. So 5:31:26 +0300 --[zone(2, true)]--> 5:31:26 +0200 - // It is possible that 5:31:26 doesn't exist int zone +0200, so we - // adjust the time as needed, to be valid. - // - // Keeping the time actually adds/subtracts (one hour) - // from the actual represented time. That is why we call updateOffset - // a second time. In case it wants us to change the offset again - // _changeInProgress == true case, then we have to adjust, because - // there is no such time in the given timezone. - zone : function (input, keepTime) { - var offset = this._offset || 0; - if (input != null) { - if (typeof input === "string") { - input = timezoneMinutesFromString(input); - } - if (Math.abs(input) < 16) { - input = input * 60; - } - this._offset = input; - this._isUTC = true; - if (offset !== input) { - if (!keepTime || this._changeInProgress) { - addOrSubtractDurationFromMoment(this, - moment.duration(offset - input, 'm'), 1, false); - } else if (!this._changeInProgress) { - this._changeInProgress = true; - moment.updateOffset(this, true); - this._changeInProgress = null; - } - } - } else { - return this._isUTC ? offset : this._d.getTimezoneOffset(); - } - return this; - }, + /** + * @module hammer + * + * @class Detection + * @static + */ + var Detection = Hammer.detection = { + // contains all registred Hammer.gestures in the correct order + gestures: [], - zoneAbbr : function () { - return this._isUTC ? "UTC" : ""; - }, + // data of the current Hammer.gesture detection session + current: null, - zoneName : function () { - return this._isUTC ? "Coordinated Universal Time" : ""; - }, + // the previous Hammer.gesture session data + // is a full clone of the previous gesture.current object + previous: null, - parseZone : function () { - if (this._tzm) { - this.zone(this._tzm); - } else if (typeof this._i === 'string') { - this.zone(this._i); - } - return this; - }, + // when this becomes true, no gestures are fired + stopped: false, - hasAlignedHourOffset : function (input) { - if (!input) { - input = 0; - } - else { - input = moment(input).zone(); - } + /** + * start Hammer.gesture detection + * @method startDetect + * @param {Hammer.Instance} inst + * @param {Object} eventData + */ + startDetect: function startDetect(inst, eventData) { + // already busy with a Hammer.gesture detection on an element + if(this.current) { + return; + } - return (this.zone() - input) % 60 === 0; - }, + this.stopped = false; - daysInMonth : function () { - return daysInMonth(this.year(), this.month()); - }, + // holds current session + this.current = { + inst: inst, // reference to HammerInstance we're working for + startEvent: Utils.extend({}, eventData), // start eventData for distances, timing etc + lastEvent: false, // last eventData + lastCalcEvent: false, // last eventData for calculations. + futureCalcEvent: false, // last eventData for calculations. + lastCalcData: {}, // last lastCalcData + name: '' // current gesture we're in/detected, can be 'tap', 'hold' etc + }; - dayOfYear : function (input) { - var dayOfYear = round((moment(this).startOf('day') - moment(this).startOf('year')) / 864e5) + 1; - return input == null ? dayOfYear : this.add("d", (input - dayOfYear)); - }, + this.detect(eventData); + }, - quarter : function (input) { - return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3); - }, + /** + * Hammer.gesture detection + * @method detect + * @param {Object} eventData + * @return {any} + */ + detect: function detect(eventData) { + if(!this.current || this.stopped) { + return; + } - weekYear : function (input) { - var year = weekOfYear(this, this.lang()._week.dow, this.lang()._week.doy).year; - return input == null ? year : this.add("y", (input - year)); - }, + // extend event data with calculations about scale, distance etc + eventData = this.extendEventData(eventData); - isoWeekYear : function (input) { - var year = weekOfYear(this, 1, 4).year; - return input == null ? year : this.add("y", (input - year)); - }, + // hammer instance and instance options + var inst = this.current.inst, + instOptions = inst.options; - week : function (input) { - var week = this.lang().week(this); - return input == null ? week : this.add("d", (input - week) * 7); - }, + // call Hammer.gesture handlers + Utils.each(this.gestures, function triggerGesture(gesture) { + // only when the instance options have enabled this gesture + if(!this.stopped && inst.enabled && instOptions[gesture.name]) { + gesture.handler.call(gesture, eventData, inst); + } + }, this); - isoWeek : function (input) { - var week = weekOfYear(this, 1, 4).week; - return input == null ? week : this.add("d", (input - week) * 7); - }, + // store as previous event event + if(this.current) { + this.current.lastEvent = eventData; + } - weekday : function (input) { - var weekday = (this.day() + 7 - this.lang()._week.dow) % 7; - return input == null ? weekday : this.add("d", input - weekday); - }, + if(eventData.eventType == EVENT_END) { + this.stopDetect(); + } - isoWeekday : function (input) { - // behaves the same as moment#day except - // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6) - // as a setter, sunday should belong to the previous week. - return input == null ? this.day() || 7 : this.day(this.day() % 7 ? input : input - 7); - }, + return eventData; + }, - isoWeeksInYear : function () { - return weeksInYear(this.year(), 1, 4); - }, + /** + * clear the Hammer.gesture vars + * this is called on endDetect, but can also be used when a final Hammer.gesture has been detected + * to stop other Hammer.gestures from being fired + * @method stopDetect + */ + stopDetect: function stopDetect() { + // clone current data to the store as the previous gesture + // used for the double tap gesture, since this is an other gesture detect session + this.previous = Utils.extend({}, this.current); - weeksInYear : function () { - var weekInfo = this._lang._week; - return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy); - }, + // reset the current + this.current = null; + this.stopped = true; + }, - get : function (units) { - units = normalizeUnits(units); - return this[units](); - }, + /** + * calculate velocity, angle and direction + * @method getVelocityData + * @param {Object} ev + * @param {Object} center + * @param {Number} deltaTime + * @param {Number} deltaX + * @param {Number} deltaY + */ + getCalculatedData: function getCalculatedData(ev, center, deltaTime, deltaX, deltaY) { + var cur = this.current, + recalc = false, + calcEv = cur.lastCalcEvent, + calcData = cur.lastCalcData; - set : function (units, value) { - units = normalizeUnits(units); - if (typeof this[units] === 'function') { - this[units](value); - } - return this; - }, + if(calcEv && ev.timeStamp - calcEv.timeStamp > Hammer.CALCULATE_INTERVAL) { + center = calcEv.center; + deltaTime = ev.timeStamp - calcEv.timeStamp; + deltaX = ev.center.clientX - calcEv.center.clientX; + deltaY = ev.center.clientY - calcEv.center.clientY; + recalc = true; + } - // If passed a language key, it will set the language for this - // instance. Otherwise, it will return the language configuration - // variables for this instance. - lang : function (key) { - if (key === undefined) { - return this._lang; - } else { - this._lang = getLangDefinition(key); - return this; - } + if(ev.eventType == EVENT_TOUCH || ev.eventType == EVENT_RELEASE) { + cur.futureCalcEvent = ev; } - }); - function rawMonthSetter(mom, value) { - var dayOfMonth; + if(!cur.lastCalcEvent || recalc) { + calcData.velocity = Utils.getVelocity(deltaTime, deltaX, deltaY); + calcData.angle = Utils.getAngle(center, ev.center); + calcData.direction = Utils.getDirection(center, ev.center); - // TODO: Move this out of here! - if (typeof value === 'string') { - value = mom.lang().monthsParse(value); - // TODO: Another silent failure? - if (typeof value !== 'number') { - return mom; - } + cur.lastCalcEvent = cur.futureCalcEvent || ev; + cur.futureCalcEvent = ev; } - dayOfMonth = Math.min(mom.date(), - daysInMonth(mom.year(), value)); - mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth); - return mom; - } + ev.velocityX = calcData.velocity.x; + ev.velocityY = calcData.velocity.y; + ev.interimAngle = calcData.angle; + ev.interimDirection = calcData.direction; + }, - function rawGetter(mom, unit) { - return mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit](); - } + /** + * extend eventData for Hammer.gestures + * @method extendEventData + * @param {Object} ev + * @return {Object} ev + */ + extendEventData: function extendEventData(ev) { + var cur = this.current, + startEv = cur.startEvent, + lastEv = cur.lastEvent || startEv; - function rawSetter(mom, unit, value) { - if (unit === 'Month') { - return rawMonthSetter(mom, value); - } else { - return mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value); + // update the start touchlist to calculate the scale/rotation + if(ev.eventType == EVENT_TOUCH || ev.eventType == EVENT_RELEASE) { + startEv.touches = []; + Utils.each(ev.touches, function(touch) { + startEv.touches.push({ + clientX: touch.clientX, + clientY: touch.clientY + }); + }); } - } - function makeAccessor(unit, keepTime) { - return function (value) { - if (value != null) { - rawSetter(this, unit, value); - moment.updateOffset(this, keepTime); - return this; - } else { - return rawGetter(this, unit); - } - }; - } + var deltaTime = ev.timeStamp - startEv.timeStamp, + deltaX = ev.center.clientX - startEv.center.clientX, + deltaY = ev.center.clientY - startEv.center.clientY; - moment.fn.millisecond = moment.fn.milliseconds = makeAccessor('Milliseconds', false); - moment.fn.second = moment.fn.seconds = makeAccessor('Seconds', false); - moment.fn.minute = moment.fn.minutes = makeAccessor('Minutes', false); - // Setting the hour should keep the time, because the user explicitly - // specified which hour he wants. So trying to maintain the same hour (in - // a new timezone) makes sense. Adding/subtracting hours does not follow - // this rule. - moment.fn.hour = moment.fn.hours = makeAccessor('Hours', true); - // moment.fn.month is defined separately - moment.fn.date = makeAccessor('Date', true); - moment.fn.dates = deprecate("dates accessor is deprecated. Use date instead.", makeAccessor('Date', true)); - moment.fn.year = makeAccessor('FullYear', true); - moment.fn.years = deprecate("years accessor is deprecated. Use year instead.", makeAccessor('FullYear', true)); + this.getCalculatedData(ev, lastEv.center, deltaTime, deltaX, deltaY); - // add plural methods - moment.fn.days = moment.fn.day; - moment.fn.months = moment.fn.month; - moment.fn.weeks = moment.fn.week; - moment.fn.isoWeeks = moment.fn.isoWeek; - moment.fn.quarters = moment.fn.quarter; + Utils.extend(ev, { + startEvent: startEv, - // add aliased format methods - moment.fn.toJSON = moment.fn.toISOString; + deltaTime: deltaTime, + deltaX: deltaX, + deltaY: deltaY, - /************************************ - Duration Prototype - ************************************/ + distance: Utils.getDistance(startEv.center, ev.center), + angle: Utils.getAngle(startEv.center, ev.center), + direction: Utils.getDirection(startEv.center, ev.center), + scale: Utils.getScale(startEv.touches, ev.touches), + rotation: Utils.getRotation(startEv.touches, ev.touches) + }); + return ev; + }, - extend(moment.duration.fn = Duration.prototype, { + /** + * register new gesture + * @method register + * @param {Object} gesture object, see `gestures/` for documentation + * @return {Array} gestures + */ + register: function register(gesture) { + // add an enable gesture options if there is no given + var options = gesture.defaults || {}; + if(options[gesture.name] === undefined) { + options[gesture.name] = true; + } - _bubble : function () { - var milliseconds = this._milliseconds, - days = this._days, - months = this._months, - data = this._data, - seconds, minutes, hours, years; + // extend Hammer default options with the Hammer.gesture options + Utils.extend(Hammer.defaults, options, true); - // The following code bubbles up values, see the tests for - // examples of what that means. - data.milliseconds = milliseconds % 1000; + // set its index + gesture.index = gesture.index || 1000; - seconds = absRound(milliseconds / 1000); - data.seconds = seconds % 60; + // add Hammer.gesture to the list + this.gestures.push(gesture); - minutes = absRound(seconds / 60); - data.minutes = minutes % 60; + // sort the list by index + this.gestures.sort(function(a, b) { + if(a.index < b.index) { + return -1; + } + if(a.index > b.index) { + return 1; + } + return 0; + }); - hours = absRound(minutes / 60); - data.hours = hours % 24; + return this.gestures; + } + }; - days += absRound(hours / 24); - data.days = days % 30; - months += absRound(days / 30); - data.months = months % 12; + /** + * @module hammer + */ - years = absRound(months / 12); - data.years = years; - }, + /** + * create new hammer instance + * all methods should return the instance itself, so it is chainable. + * + * @class Instance + * @constructor + * @param {HTMLElement} element + * @param {Object} [options={}] options are merged with `Hammer.defaults` + * @return {Hammer.Instance} + */ + Hammer.Instance = function(element, options) { + var self = this; - weeks : function () { - return absRound(this.days() / 7); - }, + // setup HammerJS window events and register all gestures + // this also sets up the default options + setup(); - valueOf : function () { - return this._milliseconds + - this._days * 864e5 + - (this._months % 12) * 2592e6 + - toInt(this._months / 12) * 31536e6; - }, + /** + * @property element + * @type {HTMLElement} + */ + this.element = element; - humanize : function (withSuffix) { - var difference = +this, - output = relativeTime(difference, !withSuffix, this.lang()); + /** + * @property enabled + * @type {Boolean} + * @protected + */ + this.enabled = true; + + /** + * options, merged with the defaults + * options with an _ are converted to camelCase + * @property options + * @type {Object} + */ + Utils.each(options, function(value, name) { + delete options[name]; + options[Utils.toCamelCase(name)] = value; + }); + + this.options = Utils.extend(Utils.extend({}, Hammer.defaults), options || {}); + + // add some css to the element to prevent the browser from doing its native behavoir + if(this.options.behavior) { + Utils.toggleBehavior(this.element, this.options.behavior, true); + } + + /** + * event start handler on the element to start the detection + * @property eventStartHandler + * @type {Object} + */ + this.eventStartHandler = Event.onTouch(element, EVENT_START, function(ev) { + if(self.enabled && ev.eventType == EVENT_START) { + Detection.startDetect(self, ev); + } else if(ev.eventType == EVENT_TOUCH) { + Detection.detect(ev); + } + }); + + /** + * keep a list of user event handlers which needs to be removed when calling 'dispose' + * @property eventHandlers + * @type {Array} + */ + this.eventHandlers = []; + }; + + Hammer.Instance.prototype = { + /** + * bind events to the instance + * @method on + * @chainable + * @param {String} gestures multiple gestures by splitting with a space + * @param {Function} handler + * @param {Object} handler.ev event object + */ + on: function onEvent(gestures, handler) { + var self = this; + Event.on(self.element, gestures, handler, function(type) { + self.eventHandlers.push({ gesture: type, handler: handler }); + }); + return self; + }, - if (withSuffix) { - output = this.lang().pastFuture(difference, output); + /** + * unbind events to the instance + * @method off + * @chainable + * @param {String} gestures + * @param {Function} handler + */ + off: function offEvent(gestures, handler) { + var self = this; + + Event.off(self.element, gestures, handler, function(type) { + var index = Utils.inArray({ gesture: type, handler: handler }); + if(index !== false) { + self.eventHandlers.splice(index, 1); } + }); + return self; + }, - return this.lang().postformat(output); - }, + /** + * trigger gesture event + * @method trigger + * @chainable + * @param {String} gesture + * @param {Object} [eventData] + */ + trigger: function triggerEvent(gesture, eventData) { + // optional + if(!eventData) { + eventData = {}; + } - add : function (input, val) { - // supports only 2.0-style add(1, 's') or add(moment) - var dur = moment.duration(input, val); + // create DOM event + var event = Hammer.DOCUMENT.createEvent('Event'); + event.initEvent(gesture, true, true); + event.gesture = eventData; - this._milliseconds += dur._milliseconds; - this._days += dur._days; - this._months += dur._months; + // trigger on the target if it is in the instance element, + // this is for event delegation tricks + var element = this.element; + if(Utils.hasParent(eventData.target, element)) { + element = eventData.target; + } - this._bubble(); + element.dispatchEvent(event); + return this; + }, - return this; - }, + /** + * enable of disable hammer.js detection + * @method enable + * @chainable + * @param {Boolean} state + */ + enable: function enable(state) { + this.enabled = state; + return this; + }, - subtract : function (input, val) { - var dur = moment.duration(input, val); + /** + * dispose this hammer instance + * @method dispose + * @return {Null} + */ + dispose: function dispose() { + var i, eh; - this._milliseconds -= dur._milliseconds; - this._days -= dur._days; - this._months -= dur._months; + // undo all changes made by stop_browser_behavior + Utils.toggleBehavior(this.element, this.options.behavior, false); - this._bubble(); + // unbind all custom event handlers + for(i = -1; (eh = this.eventHandlers[++i]);) { + Utils.off(this.element, eh.gesture, eh.handler); + } - return this; - }, + this.eventHandlers = []; - get : function (units) { - units = normalizeUnits(units); - return this[units.toLowerCase() + 's'](); - }, + // unbind the start event listener + Event.off(this.element, EVENT_TYPES[EVENT_START], this.eventStartHandler); - as : function (units) { - units = normalizeUnits(units); - return this['as' + units.charAt(0).toUpperCase() + units.slice(1) + 's'](); - }, + return null; + } + }; - lang : moment.fn.lang, - toIsoString : function () { - // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js - var years = Math.abs(this.years()), - months = Math.abs(this.months()), - days = Math.abs(this.days()), - hours = Math.abs(this.hours()), - minutes = Math.abs(this.minutes()), - seconds = Math.abs(this.seconds() + this.milliseconds() / 1000); + /** + * @module gestures + */ + /** + * Move with x fingers (default 1) around on the page. + * Preventing the default browser behavior is a good way to improve feel and working. + * ```` + * hammertime.on("drag", function(ev) { + * console.log(ev); + * ev.gesture.preventDefault(); + * }); + * ```` + * + * @class Drag + * @static + */ + /** + * @event drag + * @param {Object} ev + */ + /** + * @event dragstart + * @param {Object} ev + */ + /** + * @event dragend + * @param {Object} ev + */ + /** + * @event drapleft + * @param {Object} ev + */ + /** + * @event dragright + * @param {Object} ev + */ + /** + * @event dragup + * @param {Object} ev + */ + /** + * @event dragdown + * @param {Object} ev + */ - if (!this.asSeconds()) { - // this is the same as C#'s (Noda) and python (isodate)... - // but not other JS (goog.date) - return 'P0D'; - } + /** + * @param {String} name + */ + (function(name) { + var triggered = false; - return (this.asSeconds() < 0 ? '-' : '') + - 'P' + - (years ? years + 'Y' : '') + - (months ? months + 'M' : '') + - (days ? days + 'D' : '') + - ((hours || minutes || seconds) ? 'T' : '') + - (hours ? hours + 'H' : '') + - (minutes ? minutes + 'M' : '') + - (seconds ? seconds + 'S' : ''); + function dragGesture(ev, inst) { + var cur = Detection.current; + + // max touches + if(inst.options.dragMaxTouches > 0 && + ev.touches.length > inst.options.dragMaxTouches) { + return; } - }); - function makeDurationGetter(name) { - moment.duration.fn[name] = function () { - return this._data[name]; - }; - } + switch(ev.eventType) { + case EVENT_START: + triggered = false; + break; - function makeDurationAsGetter(name, factor) { - moment.duration.fn['as' + name] = function () { - return +this / factor; - }; - } + case EVENT_MOVE: + // when the distance we moved is too small we skip this gesture + // or we can be already in dragging + if(ev.distance < inst.options.dragMinDistance && + cur.name != name) { + return; + } - for (i in unitMillisecondFactors) { - if (unitMillisecondFactors.hasOwnProperty(i)) { - makeDurationAsGetter(i, unitMillisecondFactors[i]); - makeDurationGetter(i.toLowerCase()); - } - } + var startCenter = cur.startEvent.center; - makeDurationAsGetter('Weeks', 6048e5); - moment.duration.fn.asMonths = function () { - return (+this - this.years() * 31536e6) / 2592e6 + this.years() * 12; - }; + // we are dragging! + if(cur.name != name) { + cur.name = name; + if(inst.options.dragDistanceCorrection && ev.distance > 0) { + // When a drag is triggered, set the event center to dragMinDistance pixels from the original event center. + // Without this correction, the dragged distance would jumpstart at dragMinDistance pixels instead of at 0. + // It might be useful to save the original start point somewhere + var factor = Math.abs(inst.options.dragMinDistance / ev.distance); + startCenter.pageX += ev.deltaX * factor; + startCenter.pageY += ev.deltaY * factor; + startCenter.clientX += ev.deltaX * factor; + startCenter.clientY += ev.deltaY * factor; + // recalculate event data using new start point + ev = Detection.extendEventData(ev); + } + } - /************************************ - Default Lang - ************************************/ + // lock drag to axis? + if(cur.lastEvent.dragLockToAxis || + ( inst.options.dragLockToAxis && + inst.options.dragLockMinDistance <= ev.distance + )) { + ev.dragLockToAxis = true; + } + + // keep direction on the axis that the drag gesture started on + var lastDirection = cur.lastEvent.direction; + if(ev.dragLockToAxis && lastDirection !== ev.direction) { + if(Utils.isVertical(lastDirection)) { + ev.direction = (ev.deltaY < 0) ? DIRECTION_UP : DIRECTION_DOWN; + } else { + ev.direction = (ev.deltaX < 0) ? DIRECTION_LEFT : DIRECTION_RIGHT; + } + } + + // first time, trigger dragstart event + if(!triggered) { + inst.trigger(name + 'start', ev); + triggered = true; + } + // trigger events + inst.trigger(name, ev); + inst.trigger(name + ev.direction, ev); - // Set default language, other languages will inherit from English. - moment.lang('en', { - ordinal : function (number) { - var b = number % 10, - output = (toInt(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; - return number + output; - } - }); + var isVertical = Utils.isVertical(ev.direction); - /* EMBED_LANGUAGES */ + // block the browser events + if((inst.options.dragBlockVertical && isVertical) || + (inst.options.dragBlockHorizontal && !isVertical)) { + ev.preventDefault(); + } + break; - /************************************ - Exposing Moment - ************************************/ + case EVENT_RELEASE: + if(triggered && ev.changedLength <= inst.options.dragMaxTouches) { + inst.trigger(name + 'end', ev); + triggered = false; + } + break; - function makeGlobal(shouldDeprecate) { - /*global ender:false */ - if (typeof ender !== 'undefined') { - return; - } - oldGlobalMoment = globalScope.moment; - if (shouldDeprecate) { - globalScope.moment = deprecate( - "Accessing Moment through the global scope is " + - "deprecated, and will be removed in an upcoming " + - "release.", - moment); - } else { - globalScope.moment = moment; + case EVENT_END: + triggered = false; + break; } } - // CommonJS module is defined - if (hasModule) { - module.exports = moment; - } else if (true) { - !(__WEBPACK_AMD_DEFINE_RESULT__ = (function (require, exports, module) { - if (module.config && module.config() && module.config().noGlobal === true) { - // release the global variable - globalScope.moment = oldGlobalMoment; - } + Hammer.gestures.Drag = { + name: name, + index: 50, + handler: dragGesture, + defaults: { + /** + * minimal movement that have to be made before the drag event gets triggered + * @property dragMinDistance + * @type {Number} + * @default 10 + */ + dragMinDistance: 10, - return moment; - }.call(exports, __webpack_require__, exports, module)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); - makeGlobal(true); - } else { - makeGlobal(); - } - }).call(this); - - /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()), __webpack_require__(133)(module))) + /** + * Set dragDistanceCorrection to true to make the starting point of the drag + * be calculated from where the drag was triggered, not from where the touch started. + * Useful to avoid a jerk-starting drag, which can make fine-adjustments + * through dragging difficult, and be visually unappealing. + * @property dragDistanceCorrection + * @type {Boolean} + * @default true + */ + dragDistanceCorrection: true, -/***/ }, -/* 54 */ -/***/ function(module, exports, __webpack_require__) { + /** + * set 0 for unlimited, but this can conflict with transform + * @property dragMaxTouches + * @type {Number} + * @default 1 + */ + dragMaxTouches: 1, - var __WEBPACK_AMD_DEFINE_RESULT__;/*! Hammer.JS - v1.1.3 - 2014-05-20 - * http://eightmedia.github.io/hammer.js - * - * Copyright (c) 2014 Jorik Tangelder ; - * Licensed under the MIT license */ + /** + * prevent default browser behavior when dragging occurs + * be careful with it, it makes the element a blocking element + * when you are using the drag gesture, it is a good practice to set this true + * @property dragBlockHorizontal + * @type {Boolean} + * @default false + */ + dragBlockHorizontal: false, - (function(window, undefined) { - 'use strict'; + /** + * same as `dragBlockHorizontal`, but for vertical movement + * @property dragBlockVertical + * @type {Boolean} + * @default false + */ + dragBlockVertical: false, - /** - * @main - * @module hammer - * - * @class Hammer - * @static - */ + /** + * dragLockToAxis keeps the drag gesture on the axis that it started on, + * It disallows vertical directions if the initial direction was horizontal, and vice versa. + * @property dragLockToAxis + * @type {Boolean} + * @default false + */ + dragLockToAxis: false, + + /** + * drag lock only kicks in when distance > dragLockMinDistance + * This way, locking occurs only when the distance has become large enough to reliably determine the direction + * @property dragLockMinDistance + * @type {Number} + * @default 25 + */ + dragLockMinDistance: 25 + } + }; + })('drag'); /** - * Hammer, use this to create instances - * ```` - * var hammertime = new Hammer(myElement); - * ```` - * - * @method Hammer - * @param {HTMLElement} element - * @param {Object} [options={}] - * @return {Hammer.Instance} + * @module gestures */ - var Hammer = function Hammer(element, options) { - return new Hammer.Instance(element, options || {}); - }; - /** - * version, as defined in package.json - * the value will be set at each build - * @property VERSION - * @final - * @type {String} + * trigger a simple gesture event, so you can do anything in your handler. + * only usable if you know what your doing... + * + * @class Gesture + * @static */ - Hammer.VERSION = '1.1.3'; - /** - * default settings. - * more settings are defined per gesture at `/gestures`. Each gesture can be disabled/enabled - * by setting it's name (like `swipe`) to false. - * You can set the defaults for all instances by changing this object before creating an instance. - * @example - * ```` - * Hammer.defaults.drag = false; - * Hammer.defaults.behavior.touchAction = 'pan-y'; - * delete Hammer.defaults.behavior.userSelect; - * ```` - * @property defaults - * @type {Object} + * @event gesture + * @param {Object} ev */ - Hammer.defaults = { - /** - * this setting object adds styles and attributes to the element to prevent the browser from doing - * its native behavior. The css properties are auto prefixed for the browsers when needed. - * @property defaults.behavior - * @type {Object} - */ - behavior: { - /** - * Disables text selection to improve the dragging gesture. When the value is `none` it also sets - * `onselectstart=false` for IE on the element. Mainly for desktop browsers. - * @property defaults.behavior.userSelect - * @type {String} - * @default 'none' - */ - userSelect: 'none', - - /** - * Specifies whether and how a given region can be manipulated by the user (for instance, by panning or zooming). - * Used by Chrome 35> and IE10>. By default this makes the element blocking any touch event. - * @property defaults.behavior.touchAction - * @type {String} - * @default: 'pan-y' - */ - touchAction: 'pan-y', - - /** - * Disables the default callout shown when you touch and hold a touch target. - * On iOS, when you touch and hold a touch target such as a link, Safari displays - * a callout containing information about the link. This property allows you to disable that callout. - * @property defaults.behavior.touchCallout - * @type {String} - * @default 'none' - */ - touchCallout: 'none', - - /** - * Specifies whether zooming is enabled. Used by IE10> - * @property defaults.behavior.contentZooming - * @type {String} - * @default 'none' - */ - contentZooming: 'none', - - /** - * Specifies that an entire element should be draggable instead of its contents. - * Mainly for desktop browsers. - * @property defaults.behavior.userDrag - * @type {String} - * @default 'none' - */ - userDrag: 'none', - - /** - * Overrides the highlight color shown when the user taps a link or a JavaScript - * clickable element in Safari on iPhone. This property obeys the alpha value, if specified. - * - * If you don't specify an alpha value, Safari on iPhone applies a default alpha value - * to the color. To disable tap highlighting, set the alpha value to 0 (invisible). - * If you set the alpha value to 1.0 (opaque), the element is not visible when tapped. - * @property defaults.behavior.tapHighlightColor - * @type {String} - * @default 'rgba(0,0,0,0)' - */ - tapHighlightColor: 'rgba(0,0,0,0)' + Hammer.gestures.Gesture = { + name: 'gesture', + index: 1337, + handler: function releaseGesture(ev, inst) { + inst.trigger(this.name, ev); } }; /** - * hammer document where the base events are added at - * @property DOCUMENT - * @type {HTMLElement} - * @default window.document + * @module gestures */ - Hammer.DOCUMENT = document; - /** - * detect support for pointer events - * @property HAS_POINTEREVENTS - * @type {Boolean} + * Touch stays at the same place for x time + * + * @class Hold + * @static */ - Hammer.HAS_POINTEREVENTS = navigator.pointerEnabled || navigator.msPointerEnabled; - /** - * detect support for touch events - * @property HAS_TOUCHEVENTS - * @type {Boolean} + * @event hold + * @param {Object} ev */ - Hammer.HAS_TOUCHEVENTS = ('ontouchstart' in window); /** - * detect mobile browsers - * @property IS_MOBILE - * @type {Boolean} + * @param {String} name */ - Hammer.IS_MOBILE = /mobile|tablet|ip(ad|hone|od)|android|silk/i.test(navigator.userAgent); + (function(name) { + var timer; - /** - * detect if we want to support mouseevents at all - * @property NO_MOUSEEVENTS - * @type {Boolean} - */ - Hammer.NO_MOUSEEVENTS = (Hammer.HAS_TOUCHEVENTS && Hammer.IS_MOBILE) || Hammer.HAS_POINTEREVENTS; + function holdGesture(ev, inst) { + var options = inst.options, + current = Detection.current; + + switch(ev.eventType) { + case EVENT_START: + clearTimeout(timer); + + // set the gesture so we can check in the timeout if it still is + current.name = name; + + // set timer and if after the timeout it still is hold, + // we trigger the hold event + timer = setTimeout(function() { + if(current && current.name == name) { + inst.trigger(name, ev); + } + }, options.holdTimeout); + break; + + case EVENT_MOVE: + if(ev.distance > options.holdThreshold) { + clearTimeout(timer); + } + break; + + case EVENT_RELEASE: + clearTimeout(timer); + break; + } + } + + Hammer.gestures.Hold = { + name: name, + index: 10, + defaults: { + /** + * @property holdTimeout + * @type {Number} + * @default 500 + */ + holdTimeout: 500, + + /** + * movement allowed while holding + * @property holdThreshold + * @type {Number} + * @default 2 + */ + holdThreshold: 2 + }, + handler: holdGesture + }; + })('hold'); /** - * interval in which Hammer recalculates current velocity/direction/angle in ms - * @property CALCULATE_INTERVAL - * @type {Number} - * @default 25 + * @module gestures */ - Hammer.CALCULATE_INTERVAL = 25; - /** - * eventtypes per touchevent (start, move, end) are filled by `Event.determineEventTypes` on `setup` - * the object contains the DOM event names per type (`EVENT_START`, `EVENT_MOVE`, `EVENT_END`) - * @property EVENT_TYPES - * @private - * @writeOnce - * @type {Object} + * when a touch is being released from the page + * + * @class Release + * @static */ - var EVENT_TYPES = {}; - /** - * direction strings, for safe comparisons - * @property DIRECTION_DOWN|LEFT|UP|RIGHT - * @final - * @type {String} - * @default 'down' 'left' 'up' 'right' + * @event release + * @param {Object} ev */ - var DIRECTION_DOWN = Hammer.DIRECTION_DOWN = 'down'; - var DIRECTION_LEFT = Hammer.DIRECTION_LEFT = 'left'; - var DIRECTION_UP = Hammer.DIRECTION_UP = 'up'; - var DIRECTION_RIGHT = Hammer.DIRECTION_RIGHT = 'right'; + Hammer.gestures.Release = { + name: 'release', + index: Infinity, + handler: function releaseGesture(ev, inst) { + if(ev.eventType == EVENT_RELEASE) { + inst.trigger(this.name, ev); + } + } + }; /** - * pointertype strings, for safe comparisons - * @property POINTER_MOUSE|TOUCH|PEN - * @final - * @type {String} - * @default 'mouse' 'touch' 'pen' + * @module gestures */ - var POINTER_MOUSE = Hammer.POINTER_MOUSE = 'mouse'; - var POINTER_TOUCH = Hammer.POINTER_TOUCH = 'touch'; - var POINTER_PEN = Hammer.POINTER_PEN = 'pen'; - /** - * eventtypes - * @property EVENT_START|MOVE|END|RELEASE|TOUCH - * @final - * @type {String} - * @default 'start' 'change' 'move' 'end' 'release' 'touch' + * triggers swipe events when the end velocity is above the threshold + * for best usage, set `preventDefault` (on the drag gesture) to `true` + * ```` + * hammertime.on("dragleft swipeleft", function(ev) { + * console.log(ev); + * ev.gesture.preventDefault(); + * }); + * ```` + * + * @class Swipe + * @static */ - var EVENT_START = Hammer.EVENT_START = 'start'; - var EVENT_MOVE = Hammer.EVENT_MOVE = 'move'; - var EVENT_END = Hammer.EVENT_END = 'end'; - var EVENT_RELEASE = Hammer.EVENT_RELEASE = 'release'; - var EVENT_TOUCH = Hammer.EVENT_TOUCH = 'touch'; - /** - * if the window events are set... - * @property READY - * @writeOnce - * @type {Boolean} - * @default false + * @event swipe + * @param {Object} ev */ - Hammer.READY = false; - /** - * plugins namespace - * @property plugins - * @type {Object} + * @event swipeleft + * @param {Object} ev */ - Hammer.plugins = Hammer.plugins || {}; - /** - * gestures namespace - * see `/gestures` for the definitions - * @property gestures - * @type {Object} + * @event swiperight + * @param {Object} ev */ - Hammer.gestures = Hammer.gestures || {}; - /** - * setup events to detect gestures on the document - * this function is called when creating an new instance - * @private + * @event swipeup + * @param {Object} ev */ - function setup() { - if(Hammer.READY) { - return; - } - - // find what eventtypes we add listeners to - Event.determineEventTypes(); - - // Register all gestures inside Hammer.gestures - Utils.each(Hammer.gestures, function(gesture) { - Detection.register(gesture); - }); - - // Add touch events on the document - Event.onTouch(Hammer.DOCUMENT, EVENT_MOVE, Detection.detect); - Event.onTouch(Hammer.DOCUMENT, EVENT_END, Detection.detect); - - // Hammer is ready...! - Hammer.READY = true; - } - /** - * @module hammer - * - * @class Utils - * @static + * @event swipedown + * @param {Object} ev */ - var Utils = Hammer.utils = { - /** - * extend method, could also be used for cloning when `dest` is an empty object. - * changes the dest object - * @method extend - * @param {Object} dest - * @param {Object} src - * @param {Boolean} [merge=false] do a merge - * @return {Object} dest - */ - extend: function extend(dest, src, merge) { - for(var key in src) { - if(!src.hasOwnProperty(key) || (dest[key] !== undefined && merge)) { - continue; - } - dest[key] = src[key]; - } - return dest; - }, - - /** - * simple addEventListener wrapper - * @method on - * @param {HTMLElement} element - * @param {String} type - * @param {Function} handler - */ - on: function on(element, type, handler) { - element.addEventListener(type, handler, false); - }, + Hammer.gestures.Swipe = { + name: 'swipe', + index: 40, + defaults: { + /** + * @property swipeMinTouches + * @type {Number} + * @default 1 + */ + swipeMinTouches: 1, - /** - * simple removeEventListener wrapper - * @method off - * @param {HTMLElement} element - * @param {String} type - * @param {Function} handler - */ - off: function off(element, type, handler) { - element.removeEventListener(type, handler, false); - }, + /** + * @property swipeMaxTouches + * @type {Number} + * @default 1 + */ + swipeMaxTouches: 1, - /** - * forEach over arrays and objects - * @method each - * @param {Object|Array} obj - * @param {Function} iterator - * @param {any} iterator.item - * @param {Number} iterator.index - * @param {Object|Array} iterator.obj the source object - * @param {Object} context value to use as `this` in the iterator - */ - each: function each(obj, iterator, context) { - var i, len; + /** + * horizontal swipe velocity + * @property swipeVelocityX + * @type {Number} + * @default 0.6 + */ + swipeVelocityX: 0.6, - // native forEach on arrays - if('forEach' in obj) { - obj.forEach(iterator, context); - // arrays - } else if(obj.length !== undefined) { - for(i = 0, len = obj.length; i < len; i++) { - if(iterator.call(context, obj[i], i, obj) === false) { - return; - } - } - // objects - } else { - for(i in obj) { - if(obj.hasOwnProperty(i) && - iterator.call(context, obj[i], i, obj) === false) { - return; - } - } - } + /** + * vertical swipe velocity + * @property swipeVelocityY + * @type {Number} + * @default 0.6 + */ + swipeVelocityY: 0.6 }, - /** - * find if a string contains the string using indexOf - * @method inStr - * @param {String} src - * @param {String} find - * @return {Boolean} found - */ - inStr: function inStr(src, find) { - return src.indexOf(find) > -1; - }, + handler: function swipeGesture(ev, inst) { + if(ev.eventType == EVENT_RELEASE) { + var touches = ev.touches.length, + options = inst.options; - /** - * find if a array contains the object using indexOf or a simple polyfill - * @method inArray - * @param {String} src - * @param {String} find - * @return {Boolean|Number} false when not found, or the index - */ - inArray: function inArray(src, find) { - if(src.indexOf) { - var index = src.indexOf(find); - return (index === -1) ? false : index; - } else { - for(var i = 0, len = src.length; i < len; i++) { - if(src[i] === find) { - return i; - } + // max touches + if(touches < options.swipeMinTouches || + touches > options.swipeMaxTouches) { + return; } - return false; - } - }, - - /** - * convert an array-like object (`arguments`, `touchlist`) to an array - * @method toArray - * @param {Object} obj - * @return {Array} - */ - toArray: function toArray(obj) { - return Array.prototype.slice.call(obj, 0); - }, - /** - * find if a node is in the given parent - * @method hasParent - * @param {HTMLElement} node - * @param {HTMLElement} parent - * @return {Boolean} found - */ - hasParent: function hasParent(node, parent) { - while(node) { - if(node == parent) { - return true; + // when the distance we moved is too small we skip this gesture + // or we can be already in dragging + if(ev.velocityX > options.swipeVelocityX || + ev.velocityY > options.swipeVelocityY) { + // trigger swipe events + inst.trigger(this.name, ev); + inst.trigger(this.name + ev.direction, ev); } - node = node.parentNode; - } - return false; - }, - - /** - * get the center of all the touches - * @method getCenter - * @param {Array} touches - * @return {Object} center contains `pageX`, `pageY`, `clientX` and `clientY` properties - */ - getCenter: function getCenter(touches) { - var pageX = [], - pageY = [], - clientX = [], - clientY = [], - min = Math.min, - max = Math.max; - - // no need to loop when only one touch - if(touches.length === 1) { - return { - pageX: touches[0].pageX, - pageY: touches[0].pageY, - clientX: touches[0].clientX, - clientY: touches[0].clientY - }; } + } + }; - Utils.each(touches, function(touch) { - pageX.push(touch.pageX); - pageY.push(touch.pageY); - clientX.push(touch.clientX); - clientY.push(touch.clientY); - }); - - return { - pageX: (min.apply(Math, pageX) + max.apply(Math, pageX)) / 2, - pageY: (min.apply(Math, pageY) + max.apply(Math, pageY)) / 2, - clientX: (min.apply(Math, clientX) + max.apply(Math, clientX)) / 2, - clientY: (min.apply(Math, clientY) + max.apply(Math, clientY)) / 2 - }; - }, - - /** - * calculate the velocity between two points. unit is in px per ms. - * @method getVelocity - * @param {Number} deltaTime - * @param {Number} deltaX - * @param {Number} deltaY - * @return {Object} velocity `x` and `y` - */ - getVelocity: function getVelocity(deltaTime, deltaX, deltaY) { - return { - x: Math.abs(deltaX / deltaTime) || 0, - y: Math.abs(deltaY / deltaTime) || 0 - }; - }, + /** + * @module gestures + */ + /** + * Single tap and a double tap on a place + * + * @class Tap + * @static + */ + /** + * @event tap + * @param {Object} ev + */ + /** + * @event doubletap + * @param {Object} ev + */ - /** - * calculate the angle between two coordinates - * @method getAngle - * @param {Touch} touch1 - * @param {Touch} touch2 - * @return {Number} angle - */ - getAngle: function getAngle(touch1, touch2) { - var x = touch2.clientX - touch1.clientX, - y = touch2.clientY - touch1.clientY; + /** + * @param {String} name + */ + (function(name) { + var hasMoved = false; - return Math.atan2(y, x) * 180 / Math.PI; - }, + function tapGesture(ev, inst) { + var options = inst.options, + current = Detection.current, + prev = Detection.previous, + sincePrev, + didDoubleTap; - /** - * do a small comparision to get the direction between two touches. - * @method getDirection - * @param {Touch} touch1 - * @param {Touch} touch2 - * @return {String} direction matches `DIRECTION_LEFT|RIGHT|UP|DOWN` - */ - getDirection: function getDirection(touch1, touch2) { - var x = Math.abs(touch1.clientX - touch2.clientX), - y = Math.abs(touch1.clientY - touch2.clientY); + switch(ev.eventType) { + case EVENT_START: + hasMoved = false; + break; - if(x >= y) { - return touch1.clientX - touch2.clientX > 0 ? DIRECTION_LEFT : DIRECTION_RIGHT; - } - return touch1.clientY - touch2.clientY > 0 ? DIRECTION_UP : DIRECTION_DOWN; - }, + case EVENT_MOVE: + hasMoved = hasMoved || (ev.distance > options.tapMaxDistance); + break; - /** - * calculate the distance between two touches - * @method getDistance - * @param {Touch}touch1 - * @param {Touch} touch2 - * @return {Number} distance - */ - getDistance: function getDistance(touch1, touch2) { - var x = touch2.clientX - touch1.clientX, - y = touch2.clientY - touch1.clientY; + case EVENT_END: + if(!Utils.inStr(ev.srcEvent.type, 'cancel') && ev.deltaTime < options.tapMaxTime && !hasMoved) { + // previous gesture, for the double tap since these are two different gesture detections + sincePrev = prev && prev.lastEvent && ev.timeStamp - prev.lastEvent.timeStamp; + didDoubleTap = false; - return Math.sqrt((x * x) + (y * y)); - }, + // check if double tap + if(prev && prev.name == name && + (sincePrev && sincePrev < options.doubleTapInterval) && + ev.distance < options.doubleTapDistance) { + inst.trigger('doubletap', ev); + didDoubleTap = true; + } - /** - * calculate the scale factor between two touchLists - * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out - * @method getScale - * @param {Array} start array of touches - * @param {Array} end array of touches - * @return {Number} scale - */ - getScale: function getScale(start, end) { - // need two fingers... - if(start.length >= 2 && end.length >= 2) { - return this.getDistance(end[0], end[1]) / this.getDistance(start[0], start[1]); + // do a single tap + if(!didDoubleTap || options.tapAlways) { + current.name = name; + inst.trigger(current.name, ev); + } + } + break; } - return 1; - }, + } - /** - * calculate the rotation degrees between two touchLists - * @method getRotation - * @param {Array} start array of touches - * @param {Array} end array of touches - * @return {Number} rotation - */ - getRotation: function getRotation(start, end) { - // need two fingers - if(start.length >= 2 && end.length >= 2) { - return this.getAngle(end[1], end[0]) - this.getAngle(start[1], start[0]); - } - return 0; - }, + Hammer.gestures.Tap = { + name: name, + index: 100, + handler: tapGesture, + defaults: { + /** + * max time of a tap, this is for the slow tappers + * @property tapMaxTime + * @type {Number} + * @default 250 + */ + tapMaxTime: 250, - /** - * find out if the direction is vertical * - * @method isVertical - * @param {String} direction matches `DIRECTION_UP|DOWN` - * @return {Boolean} is_vertical - */ - isVertical: function isVertical(direction) { - return direction == DIRECTION_UP || direction == DIRECTION_DOWN; - }, + /** + * max distance of movement of a tap, this is for the slow tappers + * @property tapMaxDistance + * @type {Number} + * @default 10 + */ + tapMaxDistance: 10, - /** - * set css properties with their prefixes - * @param {HTMLElement} element - * @param {String} prop - * @param {String} value - * @param {Boolean} [toggle=true] - * @return {Boolean} - */ - setPrefixedCss: function setPrefixedCss(element, prop, value, toggle) { - var prefixes = ['', 'Webkit', 'Moz', 'O', 'ms']; - prop = Utils.toCamelCase(prop); + /** + * always trigger the `tap` event, even while double-tapping + * @property tapAlways + * @type {Boolean} + * @default true + */ + tapAlways: true, - for(var i = 0; i < prefixes.length; i++) { - var p = prop; - // prefixes - if(prefixes[i]) { - p = prefixes[i] + p.slice(0, 1).toUpperCase() + p.slice(1); - } + /** + * max distance between two taps + * @property doubleTapDistance + * @type {Number} + * @default 20 + */ + doubleTapDistance: 20, - // test the style - if(p in element.style) { - element.style[p] = (toggle == null || toggle) && value || ''; - break; - } + /** + * max time between two taps + * @property doubleTapInterval + * @type {Number} + * @default 300 + */ + doubleTapInterval: 300 } - }, + }; + })('tap'); - /** - * toggle browser default behavior by setting css properties. - * `userSelect='none'` also sets `element.onselectstart` to false - * `userDrag='none'` also sets `element.ondragstart` to false - * - * @method toggleBehavior - * @param {HtmlElement} element - * @param {Object} props - * @param {Boolean} [toggle=true] - */ - toggleBehavior: function toggleBehavior(element, props, toggle) { - if(!props || !element || !element.style) { + /** + * @module gestures + */ + /** + * when a touch is being touched at the page + * + * @class Touch + * @static + */ + /** + * @event touch + * @param {Object} ev + */ + Hammer.gestures.Touch = { + name: 'touch', + index: -Infinity, + defaults: { + /** + * call preventDefault at touchstart, and makes the element blocking by disabling the scrolling of the page, + * but it improves gestures like transforming and dragging. + * be careful with using this, it can be very annoying for users to be stuck on the page + * @property preventDefault + * @type {Boolean} + * @default false + */ + preventDefault: false, + + /** + * disable mouse events, so only touch (or pen!) input triggers events + * @property preventMouse + * @type {Boolean} + * @default false + */ + preventMouse: false + }, + handler: function touchGesture(ev, inst) { + if(inst.options.preventMouse && ev.pointerType == POINTER_MOUSE) { + ev.stopDetect(); return; } - // set the css properties - Utils.each(props, function(value, prop) { - Utils.setPrefixedCss(element, prop, value, toggle); - }); - - var falseFn = toggle && function() { - return false; - }; - - // also the disable onselectstart - if(props.userSelect == 'none') { - element.onselectstart = falseFn; - } - // and disable ondragstart - if(props.userDrag == 'none') { - element.ondragstart = falseFn; + if(inst.options.preventDefault) { + ev.preventDefault(); } - }, - /** - * convert a string with underscores to camelCase - * so prevent_default becomes preventDefault - * @param {String} str - * @return {String} camelCaseStr - */ - toCamelCase: function toCamelCase(str) { - return str.replace(/[_-]([a-z])/g, function(s) { - return s[1].toUpperCase(); - }); + if(ev.eventType == EVENT_TOUCH) { + inst.trigger('touch', ev); + } } }; + /** + * @module gestures + */ + /** + * User want to scale or rotate with 2 fingers + * Preventing the default browser behavior is a good way to improve feel and working. This can be done with the + * `preventDefault` option. + * + * @class Transform + * @static + */ + /** + * @event transform + * @param {Object} ev + */ + /** + * @event transformstart + * @param {Object} ev + */ + /** + * @event transformend + * @param {Object} ev + */ + /** + * @event pinchin + * @param {Object} ev + */ + /** + * @event pinchout + * @param {Object} ev + */ + /** + * @event rotate + * @param {Object} ev + */ + + /** + * @param {String} name + */ + (function(name) { + var triggered = false; + + function transformGesture(ev, inst) { + switch(ev.eventType) { + case EVENT_START: + triggered = false; + break; + + case EVENT_MOVE: + // at least multitouch + if(ev.touches.length < 2) { + return; + } + + var scaleThreshold = Math.abs(1 - ev.scale); + var rotationThreshold = Math.abs(ev.rotation); - /** - * @module hammer - */ - /** - * @class Event - * @static - */ - var Event = Hammer.event = { - /** - * when touch events have been fired, this is true - * this is used to stop mouse events - * @property prevent_mouseevents - * @private - * @type {Boolean} - */ - preventMouseEvents: false, + // when the distance we moved is too small we skip this gesture + // or we can be already in dragging + if(scaleThreshold < inst.options.transformMinScale && + rotationThreshold < inst.options.transformMinRotation) { + return; + } - /** - * if EVENT_START has been fired - * @property started - * @private - * @type {Boolean} - */ - started: false, + // we are transforming! + Detection.current.name = name; - /** - * when the mouse is hold down, this is true - * @property should_detect - * @private - * @type {Boolean} - */ - shouldDetect: false, + // first time, trigger dragstart event + if(!triggered) { + inst.trigger(name + 'start', ev); + triggered = true; + } - /** - * simple event binder with a hook and support for multiple types - * @method on - * @param {HTMLElement} element - * @param {String} type - * @param {Function} handler - * @param {Function} [hook] - * @param {Object} hook.type - */ - on: function on(element, type, handler, hook) { - var types = type.split(' '); - Utils.each(types, function(type) { - Utils.on(element, type, handler); - hook && hook(type); - }); - }, + inst.trigger(name, ev); // basic transform event - /** - * simple event unbinder with a hook and support for multiple types - * @method off - * @param {HTMLElement} element - * @param {String} type - * @param {Function} handler - * @param {Function} [hook] - * @param {Object} hook.type - */ - off: function off(element, type, handler, hook) { - var types = type.split(' '); - Utils.each(types, function(type) { - Utils.off(element, type, handler); - hook && hook(type); - }); - }, + // trigger rotate event + if(rotationThreshold > inst.options.transformMinRotation) { + inst.trigger('rotate', ev); + } - /** - * the core touch event handler. - * this finds out if we should to detect gestures - * @method onTouch - * @param {HTMLElement} element - * @param {String} eventType matches `EVENT_START|MOVE|END` - * @param {Function} handler - * @return onTouchHandler {Function} the core event handler - */ - onTouch: function onTouch(element, eventType, handler) { - var self = this; + // trigger pinch event + if(scaleThreshold > inst.options.transformMinScale) { + inst.trigger('pinch', ev); + inst.trigger('pinch' + (ev.scale < 1 ? 'in' : 'out'), ev); + } + break; - var onTouchHandler = function onTouchHandler(ev) { - var srcType = ev.type.toLowerCase(), - isPointer = Hammer.HAS_POINTEREVENTS, - isMouse = Utils.inStr(srcType, 'mouse'), - triggerType; + case EVENT_RELEASE: + if(triggered && ev.changedLength < 2) { + inst.trigger(name + 'end', ev); + triggered = false; + } + break; + } + } - // if we are in a mouseevent, but there has been a touchevent triggered in this session - // we want to do nothing. simply break out of the event. - if(isMouse && self.preventMouseEvents) { - return; + Hammer.gestures.Transform = { + name: name, + index: 45, + defaults: { + /** + * minimal scale factor, no scale is 1, zoomin is to 0 and zoomout until higher then 1 + * @property transformMinScale + * @type {Number} + * @default 0.01 + */ + transformMinScale: 0.01, - // mousebutton must be down - } else if(isMouse && eventType == EVENT_START && ev.button === 0) { - self.preventMouseEvents = false; - self.shouldDetect = true; - } else if(isPointer && eventType == EVENT_START) { - self.shouldDetect = (ev.buttons === 1 || PointerEvent.matchType(POINTER_TOUCH, ev)); - // just a valid start event, but no mouse - } else if(!isMouse && eventType == EVENT_START) { - self.preventMouseEvents = true; - self.shouldDetect = true; - } + /** + * rotation in degrees + * @property transformMinRotation + * @type {Number} + * @default 1 + */ + transformMinRotation: 1 + }, - // update the pointer event before entering the detection - if(isPointer && eventType != EVENT_END) { - PointerEvent.updatePointer(eventType, ev); - } + handler: transformGesture + }; + })('transform'); - // we are in a touch/down state, so allowed detection of gestures - if(self.shouldDetect) { - triggerType = self.doDetect.call(self, ev, eventType, element, handler); - } + /** + * @module hammer + */ - // ...and we are done with the detection - // so reset everything to start each detection totally fresh - if(triggerType == EVENT_END) { - self.preventMouseEvents = false; - self.shouldDetect = false; - PointerEvent.reset(); - // update the pointerevent object after the detection - } + // AMD export + if(true) { + !(__WEBPACK_AMD_DEFINE_RESULT__ = (function() { + return Hammer; + }.call(exports, __webpack_require__, exports, module)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); + // commonjs export + } else if(typeof module !== 'undefined' && module.exports) { + module.exports = Hammer; + // browser export + } else { + window.Hammer = Hammer; + } - if(isPointer && eventType == EVENT_END) { - PointerEvent.updatePointer(eventType, ev); - } - }; + })(window); - this.on(element, EVENT_TYPES[eventType], onTouchHandler); - return onTouchHandler; - }, +/***/ }, +/* 48 */ +/***/ function(module, exports, __webpack_require__) { - /** - * the core detection method - * this finds out what hammer-touch-events to trigger - * @method doDetect - * @param {Object} ev - * @param {String} eventType matches `EVENT_START|MOVE|END` - * @param {HTMLElement} element - * @param {Function} handler - * @return {String} triggerType matches `EVENT_START|MOVE|END` - */ - doDetect: function doDetect(ev, eventType, element, handler) { - var touchList = this.getTouchList(ev, eventType); - var touchListLength = touchList.length; - var triggerType = eventType; - var triggerChange = touchList.trigger; // used by fakeMultitouch plugin - var changedLength = touchListLength; + /** + * Creation of the ClusterMixin var. + * + * This contains all the functions the Network object can use to employ clustering + */ - // at each touchstart-like event we want also want to trigger a TOUCH event... - if(eventType == EVENT_START) { - triggerChange = EVENT_TOUCH; - // ...the same for a touchend-like event - } else if(eventType == EVENT_END) { - triggerChange = EVENT_RELEASE; + /** + * This is only called in the constructor of the network object + * + */ + exports.startWithClustering = function() { + // cluster if the data set is big + this.clusterToFit(this.constants.clustering.initialMaxNodes, true); - // keep track of how many touches have been removed - changedLength = touchList.length - ((ev.changedTouches) ? ev.changedTouches.length : 1); - } + // updates the lables after clustering + this.updateLabels(); - // after there are still touches on the screen, - // we just want to trigger a MOVE event. so change the START or END to a MOVE - // but only after detection has been started, the first time we actualy want a START - if(changedLength > 0 && this.started) { - triggerType = EVENT_MOVE; - } + // this is called here because if clusterin is disabled, the start and stabilize are called in + // the setData function. + if (this.stabilize) { + this._stabilize(); + } + this.start(); + }; + + /** + * This function clusters until the initialMaxNodes has been reached + * + * @param {Number} maxNumberOfNodes + * @param {Boolean} reposition + */ + exports.clusterToFit = function(maxNumberOfNodes, reposition) { + var numberOfNodes = this.nodeIndices.length; - // detection has been started, we keep track of this, see above - this.started = true; + var maxLevels = 50; + var level = 0; - // generate some event data, some basic information - var evData = this.collectEventData(element, triggerType, touchList, ev); + // we first cluster the hubs, then we pull in the outliers, repeat + while (numberOfNodes > maxNumberOfNodes && level < maxLevels) { + if (level % 3 == 0) { + this.forceAggregateHubs(true); + this.normalizeClusterLevels(); + } + else { + this.increaseClusterLevel(); // this also includes a cluster normalization + } - // trigger the triggerType event before the change (TOUCH, RELEASE) events - // but the END event should be at last - if(eventType != EVENT_END) { - handler.call(Detection, evData); - } + numberOfNodes = this.nodeIndices.length; + level += 1; + } - // trigger a change (TOUCH, RELEASE) event, this means the length of the touches changed - if(triggerChange) { - evData.changedLength = changedLength; - evData.eventType = triggerChange; + // after the clustering we reposition the nodes to reduce the initial chaos + if (level > 0 && reposition == true) { + this.repositionNodes(); + } + this._updateCalculationNodes(); + }; - handler.call(Detection, evData); + /** + * This function can be called to open up a specific cluster. It is only called by + * It will unpack the cluster back one level. + * + * @param node | Node object: cluster to open. + */ + exports.openCluster = function(node) { + var isMovingBeforeClustering = this.moving; + if (node.clusterSize > this.constants.clustering.sectorThreshold && this._nodeInActiveArea(node) && + !(this._sector() == "default" && this.nodeIndices.length == 1)) { + // this loads a new sector, loads the nodes and edges and nodeIndices of it. + this._addSector(node); + var level = 0; - evData.eventType = triggerType; - delete evData.changedLength; - } + // we decluster until we reach a decent number of nodes + while ((this.nodeIndices.length < this.constants.clustering.initialMaxNodes) && (level < 10)) { + this.decreaseClusterLevel(); + level += 1; + } - // trigger the END event - if(triggerType == EVENT_END) { - handler.call(Detection, evData); + } + else { + this._expandClusterNode(node,false,true); - // ...and we are done with the detection - // so reset everything to start each detection totally fresh - this.started = false; - } + // update the index list, dynamic edges and labels + this._updateNodeIndexList(); + this._updateDynamicEdges(); + this._updateCalculationNodes(); + this.updateLabels(); + } - return triggerType; - }, + // if the simulation was settled, we restart the simulation if a cluster has been formed or expanded + if (this.moving != isMovingBeforeClustering) { + this.start(); + } + }; - /** - * we have different events for each device/browser - * determine what we need and set them in the EVENT_TYPES constant - * the `onTouch` method is bind to these properties. - * @method determineEventTypes - * @return {Object} events - */ - determineEventTypes: function determineEventTypes() { - var types; - if(Hammer.HAS_POINTEREVENTS) { - if(window.PointerEvent) { - types = [ - 'pointerdown', - 'pointermove', - 'pointerup pointercancel lostpointercapture' - ]; - } else { - types = [ - 'MSPointerDown', - 'MSPointerMove', - 'MSPointerUp MSPointerCancel MSLostPointerCapture' - ]; - } - } else if(Hammer.NO_MOUSEEVENTS) { - types = [ - 'touchstart', - 'touchmove', - 'touchend touchcancel' - ]; - } else { - types = [ - 'touchstart mousedown', - 'touchmove mousemove', - 'touchend touchcancel mouseup' - ]; - } - EVENT_TYPES[EVENT_START] = types[0]; - EVENT_TYPES[EVENT_MOVE] = types[1]; - EVENT_TYPES[EVENT_END] = types[2]; - return EVENT_TYPES; - }, + /** + * This calls the updateClustes with default arguments + */ + exports.updateClustersDefault = function() { + if (this.constants.clustering.enabled == true) { + this.updateClusters(0,false,false); + } + }; - /** - * create touchList depending on the event - * @method getTouchList - * @param {Object} ev - * @param {String} eventType - * @return {Array} touches - */ - getTouchList: function getTouchList(ev, eventType) { - // get the fake pointerEvent touchlist - if(Hammer.HAS_POINTEREVENTS) { - return PointerEvent.getTouchList(); - } - // get the touchlist - if(ev.touches) { - if(eventType == EVENT_MOVE) { - return ev.touches; - } + /** + * This function can be called to increase the cluster level. This means that the nodes with only one edge connection will + * be clustered with their connected node. This can be repeated as many times as needed. + * This can be called externally (by a keybind for instance) to reduce the complexity of big datasets. + */ + exports.increaseClusterLevel = function() { + this.updateClusters(-1,false,true); + }; - var identifiers = []; - var concat = [].concat(Utils.toArray(ev.touches), Utils.toArray(ev.changedTouches)); - var touchList = []; - Utils.each(concat, function(touch) { - if(Utils.inArray(identifiers, touch.identifier) === false) { - touchList.push(touch); - } - identifiers.push(touch.identifier); - }); + /** + * This function can be called to decrease the cluster level. This means that the nodes with only one edge connection will + * be unpacked if they are a cluster. This can be repeated as many times as needed. + * This can be called externally (by a key-bind for instance) to look into clusters without zooming. + */ + exports.decreaseClusterLevel = function() { + this.updateClusters(1,false,true); + }; - return touchList; - } - // make fake touchList from mouse position - ev.identifier = 1; - return [ev]; - }, + /** + * This is the main clustering function. It clusters and declusters on zoom or forced + * This function clusters on zoom, it can be called with a predefined zoom direction + * If out, check if we can form clusters, if in, check if we can open clusters. + * This function is only called from _zoom() + * + * @param {Number} zoomDirection | -1 / 0 / +1 for zoomOut / determineByZoom / zoomIn + * @param {Boolean} recursive | enabled or disable recursive calling of the opening of clusters + * @param {Boolean} force | enabled or disable forcing + * @param {Boolean} doNotStart | if true do not call start + * + */ + exports.updateClusters = function(zoomDirection,recursive,force,doNotStart) { + var isMovingBeforeClustering = this.moving; + var amountOfNodes = this.nodeIndices.length; - /** - * collect basic event data - * @method collectEventData - * @param {HTMLElement} element - * @param {String} eventType matches `EVENT_START|MOVE|END` - * @param {Array} touches - * @param {Object} ev - * @return {Object} ev - */ - collectEventData: function collectEventData(element, eventType, touches, ev) { - // find out pointerType - var pointerType = POINTER_TOUCH; - if(Utils.inStr(ev.type, 'mouse') || PointerEvent.matchType(POINTER_MOUSE, ev)) { - pointerType = POINTER_MOUSE; - } else if(PointerEvent.matchType(POINTER_PEN, ev)) { - pointerType = POINTER_PEN; - } + // on zoom out collapse the sector if the scale is at the level the sector was made + if (this.previousScale > this.scale && zoomDirection == 0) { + this._collapseSector(); + } - return { - center: Utils.getCenter(touches), - timeStamp: Date.now(), - target: ev.target, - touches: touches, - eventType: eventType, - pointerType: pointerType, - srcEvent: ev, + // check if we zoom in or out + if (this.previousScale > this.scale || zoomDirection == -1) { // zoom out + // forming clusters when forced pulls outliers in. When not forced, the edge length of the + // outer nodes determines if it is being clustered + this._formClusters(force); + } + else if (this.previousScale < this.scale || zoomDirection == 1) { // zoom in + if (force == true) { + // _openClusters checks for each node if the formationScale of the cluster is smaller than + // the current scale and if so, declusters. When forced, all clusters are reduced by one step + this._openClusters(recursive,force); + } + else { + // if a cluster takes up a set percentage of the active window + this._openClustersBySize(); + } + } + this._updateNodeIndexList(); - /** - * prevent the browser default actions - * mostly used to disable scrolling of the browser - */ - preventDefault: function() { - var srcEvent = this.srcEvent; - srcEvent.preventManipulation && srcEvent.preventManipulation(); - srcEvent.preventDefault && srcEvent.preventDefault(); - }, + // if a cluster was NOT formed and the user zoomed out, we try clustering by hubs + if (this.nodeIndices.length == amountOfNodes && (this.previousScale > this.scale || zoomDirection == -1)) { + this._aggregateHubs(force); + this._updateNodeIndexList(); + } + + // we now reduce chains. + if (this.previousScale > this.scale || zoomDirection == -1) { // zoom out + this.handleChains(); + this._updateNodeIndexList(); + } - /** - * stop bubbling the event up to its parents - */ - stopPropagation: function() { - this.srcEvent.stopPropagation(); - }, + this.previousScale = this.scale; - /** - * immediately stop gesture detection - * might be useful after a swipe was detected - * @return {*} - */ - stopDetect: function() { - return Detection.stopDetect(); - } - }; + // rest of the update the index list, dynamic edges and labels + this._updateDynamicEdges(); + this.updateLabels(); + + // if a cluster was formed, we increase the clusterSession + if (this.nodeIndices.length < amountOfNodes) { // this means a clustering operation has taken place + this.clusterSession += 1; + // if clusters have been made, we normalize the cluster level + this.normalizeClusterLevels(); + } + + if (doNotStart == false || doNotStart === undefined) { + // if the simulation was settled, we restart the simulation if a cluster has been formed or expanded + if (this.moving != isMovingBeforeClustering) { + this.start(); } + } + + this._updateCalculationNodes(); }; + /** + * This function handles the chains. It is called on every updateClusters(). + */ + exports.handleChains = function() { + // after clustering we check how many chains there are + var chainPercentage = this._getChainFraction(); + if (chainPercentage > this.constants.clustering.chainThreshold) { + this._reduceAmountOfChains(1 - this.constants.clustering.chainThreshold / chainPercentage) + + } + }; /** - * @module hammer + * this functions starts clustering by hubs + * The minimum hub threshold is set globally * - * @class PointerEvent - * @static + * @private */ - var PointerEvent = Hammer.PointerEvent = { - /** - * holds all pointers, by `identifier` - * @property pointers - * @type {Object} - */ - pointers: {}, + exports._aggregateHubs = function(force) { + this._getHubSize(); + this._formClustersByHub(force,false); + }; - /** - * get the pointers as an array - * @method getTouchList - * @return {Array} touchlist - */ - getTouchList: function getTouchList() { - var touchlist = []; - // we can use forEach since pointerEvents only is in IE10 - Utils.each(this.pointers, function(pointer) { - touchlist.push(pointer); - }); - return touchlist; - }, - /** - * update the position of a pointer - * @method updatePointer - * @param {String} eventType matches `EVENT_START|MOVE|END` - * @param {Object} pointerEvent - */ - updatePointer: function updatePointer(eventType, pointerEvent) { - if(eventType == EVENT_END || (eventType != EVENT_END && pointerEvent.buttons !== 1)) { - delete this.pointers[pointerEvent.pointerId]; - } else { - pointerEvent.identifier = pointerEvent.pointerId; - this.pointers[pointerEvent.pointerId] = pointerEvent; - } - }, + /** + * This function is fired by keypress. It forces hubs to form. + * + */ + exports.forceAggregateHubs = function(doNotStart) { + var isMovingBeforeClustering = this.moving; + var amountOfNodes = this.nodeIndices.length; - /** - * check if ev matches pointertype - * @method matchType - * @param {String} pointerType matches `POINTER_MOUSE|TOUCH|PEN` - * @param {PointerEvent} ev - */ - matchType: function matchType(pointerType, ev) { - if(!ev.pointerType) { - return false; - } + this._aggregateHubs(true); - var pt = ev.pointerType, - types = {}; + // update the index list, dynamic edges and labels + this._updateNodeIndexList(); + this._updateDynamicEdges(); + this.updateLabels(); - types[POINTER_MOUSE] = (pt === (ev.MSPOINTER_TYPE_MOUSE || POINTER_MOUSE)); - types[POINTER_TOUCH] = (pt === (ev.MSPOINTER_TYPE_TOUCH || POINTER_TOUCH)); - types[POINTER_PEN] = (pt === (ev.MSPOINTER_TYPE_PEN || POINTER_PEN)); - return types[pointerType]; - }, + // if a cluster was formed, we increase the clusterSession + if (this.nodeIndices.length != amountOfNodes) { + this.clusterSession += 1; + } - /** - * reset the stored pointers - * @method reset - */ - reset: function resetList() { - this.pointers = {}; + if (doNotStart == false || doNotStart === undefined) { + // if the simulation was settled, we restart the simulation if a cluster has been formed or expanded + if (this.moving != isMovingBeforeClustering) { + this.start(); } + } }; - /** - * @module hammer + * If a cluster takes up more than a set percentage of the screen, open the cluster * - * @class Detection - * @static + * @private */ - var Detection = Hammer.detection = { - // contains all registred Hammer.gestures in the correct order - gestures: [], - - // data of the current Hammer.gesture detection session - current: null, + exports._openClustersBySize = function() { + for (var nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + var node = this.nodes[nodeId]; + if (node.inView() == true) { + if ((node.width*this.scale > this.constants.clustering.screenSizeThreshold * this.frame.canvas.clientWidth) || + (node.height*this.scale > this.constants.clustering.screenSizeThreshold * this.frame.canvas.clientHeight)) { + this.openCluster(node); + } + } + } + } + }; - // the previous Hammer.gesture session data - // is a full clone of the previous gesture.current object - previous: null, - // when this becomes true, no gestures are fired - stopped: false, + /** + * This function loops over all nodes in the nodeIndices list. For each node it checks if it is a cluster and if it + * has to be opened based on the current zoom level. + * + * @private + */ + exports._openClusters = function(recursive,force) { + for (var i = 0; i < this.nodeIndices.length; i++) { + var node = this.nodes[this.nodeIndices[i]]; + this._expandClusterNode(node,recursive,force); + this._updateCalculationNodes(); + } + }; - /** - * start Hammer.gesture detection - * @method startDetect - * @param {Hammer.Instance} inst - * @param {Object} eventData - */ - startDetect: function startDetect(inst, eventData) { - // already busy with a Hammer.gesture detection on an element - if(this.current) { - return; - } + /** + * This function checks if a node has to be opened. This is done by checking the zoom level. + * If the node contains child nodes, this function is recursively called on the child nodes as well. + * This recursive behaviour is optional and can be set by the recursive argument. + * + * @param {Node} parentNode | to check for cluster and expand + * @param {Boolean} recursive | enabled or disable recursive calling + * @param {Boolean} force | enabled or disable forcing + * @param {Boolean} [openAll] | This will recursively force all nodes in the parent to be released + * @private + */ + exports._expandClusterNode = function(parentNode, recursive, force, openAll) { + // first check if node is a cluster + if (parentNode.clusterSize > 1) { + // this means that on a double tap event or a zoom event, the cluster fully unpacks if it is smaller than 20 + if (parentNode.clusterSize < this.constants.clustering.sectorThreshold) { + openAll = true; + } + recursive = openAll ? true : recursive; - this.stopped = false; + // if the last child has been added on a smaller scale than current scale decluster + if (parentNode.formationScale < this.scale || force == true) { + // we will check if any of the contained child nodes should be removed from the cluster + for (var containedNodeId in parentNode.containedNodes) { + if (parentNode.containedNodes.hasOwnProperty(containedNodeId)) { + var childNode = parentNode.containedNodes[containedNodeId]; - // holds current session - this.current = { - inst: inst, // reference to HammerInstance we're working for - startEvent: Utils.extend({}, eventData), // start eventData for distances, timing etc - lastEvent: false, // last eventData - lastCalcEvent: false, // last eventData for calculations. - futureCalcEvent: false, // last eventData for calculations. - lastCalcData: {}, // last lastCalcData - name: '' // current gesture we're in/detected, can be 'tap', 'hold' etc - }; + // force expand will expand the largest cluster size clusters. Since we cluster from outside in, we assume that + // the largest cluster is the one that comes from outside + if (force == true) { + if (childNode.clusterSession == parentNode.clusterSessions[parentNode.clusterSessions.length-1] + || openAll) { + this._expelChildFromParent(parentNode,containedNodeId,recursive,force,openAll); + } + } + else { + if (this._nodeInActiveArea(parentNode)) { + this._expelChildFromParent(parentNode,containedNodeId,recursive,force,openAll); + } + } + } + } + } + } + }; - this.detect(eventData); - }, + /** + * ONLY CALLED FROM _expandClusterNode + * + * This function will expel a child_node from a parent_node. This is to de-cluster the node. This function will remove + * the child node from the parent contained_node object and put it back into the global nodes object. + * The same holds for the edge that was connected to the child node. It is moved back into the global edges object. + * + * @param {Node} parentNode | the parent node + * @param {String} containedNodeId | child_node id as it is contained in the containedNodes object of the parent node + * @param {Boolean} recursive | This will also check if the child needs to be expanded. + * With force and recursive both true, the entire cluster is unpacked + * @param {Boolean} force | This will disregard the zoom level and will expel this child from the parent + * @param {Boolean} openAll | This will recursively force all nodes in the parent to be released + * @private + */ + exports._expelChildFromParent = function(parentNode, containedNodeId, recursive, force, openAll) { + var childNode = parentNode.containedNodes[containedNodeId]; - /** - * Hammer.gesture detection - * @method detect - * @param {Object} eventData - * @return {any} - */ - detect: function detect(eventData) { - if(!this.current || this.stopped) { - return; - } + // if child node has been added on smaller scale than current, kick out + if (childNode.formationScale < this.scale || force == true) { + // unselect all selected items + this._unselectAll(); - // extend event data with calculations about scale, distance etc - eventData = this.extendEventData(eventData); + // put the child node back in the global nodes object + this.nodes[containedNodeId] = childNode; - // hammer instance and instance options - var inst = this.current.inst, - instOptions = inst.options; + // release the contained edges from this childNode back into the global edges + this._releaseContainedEdges(parentNode,childNode); - // call Hammer.gesture handlers - Utils.each(this.gestures, function triggerGesture(gesture) { - // only when the instance options have enabled this gesture - if(!this.stopped && inst.enabled && instOptions[gesture.name]) { - gesture.handler.call(gesture, eventData, inst); - } - }, this); + // reconnect rerouted edges to the childNode + this._connectEdgeBackToChild(parentNode,childNode); - // store as previous event event - if(this.current) { - this.current.lastEvent = eventData; - } + // validate all edges in dynamicEdges + this._validateEdges(parentNode); - if(eventData.eventType == EVENT_END) { - this.stopDetect(); - } + // undo the changes from the clustering operation on the parent node + parentNode.mass -= childNode.mass; + parentNode.clusterSize -= childNode.clusterSize; + parentNode.fontSize = Math.min(this.constants.clustering.maxFontSize, this.constants.nodes.fontSize + this.constants.clustering.fontSizeMultiplier*parentNode.clusterSize); + parentNode.dynamicEdgesLength = parentNode.dynamicEdges.length; - return eventData; - }, + // place the child node near the parent, not at the exact same location to avoid chaos in the system + childNode.x = parentNode.x + parentNode.growthIndicator * (0.5 - Math.random()); + childNode.y = parentNode.y + parentNode.growthIndicator * (0.5 - Math.random()); - /** - * clear the Hammer.gesture vars - * this is called on endDetect, but can also be used when a final Hammer.gesture has been detected - * to stop other Hammer.gestures from being fired - * @method stopDetect - */ - stopDetect: function stopDetect() { - // clone current data to the store as the previous gesture - // used for the double tap gesture, since this is an other gesture detect session - this.previous = Utils.extend({}, this.current); + // remove node from the list + delete parentNode.containedNodes[containedNodeId]; - // reset the current - this.current = null; - this.stopped = true; - }, + // check if there are other childs with this clusterSession in the parent. + var othersPresent = false; + for (var childNodeId in parentNode.containedNodes) { + if (parentNode.containedNodes.hasOwnProperty(childNodeId)) { + if (parentNode.containedNodes[childNodeId].clusterSession == childNode.clusterSession) { + othersPresent = true; + break; + } + } + } + // if there are no others, remove the cluster session from the list + if (othersPresent == false) { + parentNode.clusterSessions.pop(); + } - /** - * calculate velocity, angle and direction - * @method getVelocityData - * @param {Object} ev - * @param {Object} center - * @param {Number} deltaTime - * @param {Number} deltaX - * @param {Number} deltaY - */ - getCalculatedData: function getCalculatedData(ev, center, deltaTime, deltaX, deltaY) { - var cur = this.current, - recalc = false, - calcEv = cur.lastCalcEvent, - calcData = cur.lastCalcData; + this._repositionBezierNodes(childNode); + // this._repositionBezierNodes(parentNode); - if(calcEv && ev.timeStamp - calcEv.timeStamp > Hammer.CALCULATE_INTERVAL) { - center = calcEv.center; - deltaTime = ev.timeStamp - calcEv.timeStamp; - deltaX = ev.center.clientX - calcEv.center.clientX; - deltaY = ev.center.clientY - calcEv.center.clientY; - recalc = true; - } + // remove the clusterSession from the child node + childNode.clusterSession = 0; - if(ev.eventType == EVENT_TOUCH || ev.eventType == EVENT_RELEASE) { - cur.futureCalcEvent = ev; - } + // recalculate the size of the node on the next time the node is rendered + parentNode.clearSizeCache(); - if(!cur.lastCalcEvent || recalc) { - calcData.velocity = Utils.getVelocity(deltaTime, deltaX, deltaY); - calcData.angle = Utils.getAngle(center, ev.center); - calcData.direction = Utils.getDirection(center, ev.center); + // restart the simulation to reorganise all nodes + this.moving = true; + } - cur.lastCalcEvent = cur.futureCalcEvent || ev; - cur.futureCalcEvent = ev; - } + // check if a further expansion step is possible if recursivity is enabled + if (recursive == true) { + this._expandClusterNode(childNode,recursive,force,openAll); + } + }; - ev.velocityX = calcData.velocity.x; - ev.velocityY = calcData.velocity.y; - ev.interimAngle = calcData.angle; - ev.interimDirection = calcData.direction; - }, - /** - * extend eventData for Hammer.gestures - * @method extendEventData - * @param {Object} ev - * @return {Object} ev - */ - extendEventData: function extendEventData(ev) { - var cur = this.current, - startEv = cur.startEvent, - lastEv = cur.lastEvent || startEv; + /** + * position the bezier nodes at the center of the edges + * + * @param node + * @private + */ + exports._repositionBezierNodes = function(node) { + for (var i = 0; i < node.dynamicEdges.length; i++) { + node.dynamicEdges[i].positionBezierNode(); + } + }; - // update the start touchlist to calculate the scale/rotation - if(ev.eventType == EVENT_TOUCH || ev.eventType == EVENT_RELEASE) { - startEv.touches = []; - Utils.each(ev.touches, function(touch) { - startEv.touches.push({ - clientX: touch.clientX, - clientY: touch.clientY - }); - }); - } - var deltaTime = ev.timeStamp - startEv.timeStamp, - deltaX = ev.center.clientX - startEv.center.clientX, - deltaY = ev.center.clientY - startEv.center.clientY; + /** + * This function checks if any nodes at the end of their trees have edges below a threshold length + * This function is called only from updateClusters() + * forceLevelCollapse ignores the length of the edge and collapses one level + * This means that a node with only one edge will be clustered with its connected node + * + * @private + * @param {Boolean} force + */ + exports._formClusters = function(force) { + if (force == false) { + this._formClustersByZoom(); + } + else { + this._forceClustersByZoom(); + } + }; - this.getCalculatedData(ev, lastEv.center, deltaTime, deltaX, deltaY); - Utils.extend(ev, { - startEvent: startEv, + /** + * This function handles the clustering by zooming out, this is based on a minimum edge distance + * + * @private + */ + exports._formClustersByZoom = function() { + var dx,dy,length, + minLength = this.constants.clustering.clusterEdgeThreshold/this.scale; - deltaTime: deltaTime, - deltaX: deltaX, - deltaY: deltaY, + // check if any edges are shorter than minLength and start the clustering + // the clustering favours the node with the larger mass + for (var edgeId in this.edges) { + if (this.edges.hasOwnProperty(edgeId)) { + var edge = this.edges[edgeId]; + if (edge.connected) { + if (edge.toId != edge.fromId) { + dx = (edge.to.x - edge.from.x); + dy = (edge.to.y - edge.from.y); + length = Math.sqrt(dx * dx + dy * dy); - distance: Utils.getDistance(startEv.center, ev.center), - angle: Utils.getAngle(startEv.center, ev.center), - direction: Utils.getDirection(startEv.center, ev.center), - scale: Utils.getScale(startEv.touches, ev.touches), - rotation: Utils.getRotation(startEv.touches, ev.touches) - }); - return ev; - }, + if (length < minLength) { + // first check which node is larger + var parentNode = edge.from; + var childNode = edge.to; + if (edge.to.mass > edge.from.mass) { + parentNode = edge.to; + childNode = edge.from; + } - /** - * register new gesture - * @method register - * @param {Object} gesture object, see `gestures/` for documentation - * @return {Array} gestures - */ - register: function register(gesture) { - // add an enable gesture options if there is no given - var options = gesture.defaults || {}; - if(options[gesture.name] === undefined) { - options[gesture.name] = true; + if (childNode.dynamicEdgesLength == 1) { + this._addToCluster(parentNode,childNode,false); + } + else if (parentNode.dynamicEdgesLength == 1) { + this._addToCluster(childNode,parentNode,false); + } + } } + } + } + } + }; + + /** + * This function forces the network to cluster all nodes with only one connecting edge to their + * connected node. + * + * @private + */ + exports._forceClustersByZoom = function() { + for (var nodeId in this.nodes) { + // another node could have absorbed this child. + if (this.nodes.hasOwnProperty(nodeId)) { + var childNode = this.nodes[nodeId]; - // extend Hammer default options with the Hammer.gesture options - Utils.extend(Hammer.defaults, options, true); + // the edges can be swallowed by another decrease + if (childNode.dynamicEdgesLength == 1 && childNode.dynamicEdges.length != 0) { + var edge = childNode.dynamicEdges[0]; + var parentNode = (edge.toId == childNode.id) ? this.nodes[edge.fromId] : this.nodes[edge.toId]; - // set its index - gesture.index = gesture.index || 1000; + // group to the largest node + if (childNode.id != parentNode.id) { + if (parentNode.mass > childNode.mass) { + this._addToCluster(parentNode,childNode,true); + } + else { + this._addToCluster(childNode,parentNode,true); + } + } + } + } + } + }; - // add Hammer.gesture to the list - this.gestures.push(gesture); - // sort the list by index - this.gestures.sort(function(a, b) { - if(a.index < b.index) { - return -1; - } - if(a.index > b.index) { - return 1; - } - return 0; - }); + /** + * To keep the nodes of roughly equal size we normalize the cluster levels. + * This function clusters a node to its smallest connected neighbour. + * + * @param node + * @private + */ + exports._clusterToSmallestNeighbour = function(node) { + var smallestNeighbour = -1; + var smallestNeighbourNode = null; + for (var i = 0; i < node.dynamicEdges.length; i++) { + if (node.dynamicEdges[i] !== undefined) { + var neighbour = null; + if (node.dynamicEdges[i].fromId != node.id) { + neighbour = node.dynamicEdges[i].from; + } + else if (node.dynamicEdges[i].toId != node.id) { + neighbour = node.dynamicEdges[i].to; + } - return this.gestures; + + if (neighbour != null && smallestNeighbour > neighbour.clusterSessions.length) { + smallestNeighbour = neighbour.clusterSessions.length; + smallestNeighbourNode = neighbour; + } } + } + + if (neighbour != null && this.nodes[neighbour.id] !== undefined) { + this._addToCluster(neighbour, node, true); + } }; /** - * @module hammer + * This function forms clusters from hubs, it loops over all nodes + * + * @param {Boolean} force | Disregard zoom level + * @param {Boolean} onlyEqual | This only clusters a hub with a specific number of edges + * @private */ + exports._formClustersByHub = function(force, onlyEqual) { + // we loop over all nodes in the list + for (var nodeId in this.nodes) { + // we check if it is still available since it can be used by the clustering in this loop + if (this.nodes.hasOwnProperty(nodeId)) { + this._formClusterFromHub(this.nodes[nodeId],force,onlyEqual); + } + } + }; /** - * create new hammer instance - * all methods should return the instance itself, so it is chainable. + * This function forms a cluster from a specific preselected hub node * - * @class Instance - * @constructor - * @param {HTMLElement} element - * @param {Object} [options={}] options are merged with `Hammer.defaults` - * @return {Hammer.Instance} + * @param {Node} hubNode | the node we will cluster as a hub + * @param {Boolean} force | Disregard zoom level + * @param {Boolean} onlyEqual | This only clusters a hub with a specific number of edges + * @param {Number} [absorptionSizeOffset] | + * @private */ - Hammer.Instance = function(element, options) { - var self = this; - - // setup HammerJS window events and register all gestures - // this also sets up the default options - setup(); - - /** - * @property element - * @type {HTMLElement} - */ - this.element = element; - - /** - * @property enabled - * @type {Boolean} - * @protected - */ - this.enabled = true; + exports._formClusterFromHub = function(hubNode, force, onlyEqual, absorptionSizeOffset) { + if (absorptionSizeOffset === undefined) { + absorptionSizeOffset = 0; + } + // we decide if the node is a hub + if ((hubNode.dynamicEdgesLength >= this.hubThreshold && onlyEqual == false) || + (hubNode.dynamicEdgesLength == this.hubThreshold && onlyEqual == true)) { + // initialize variables + var dx,dy,length; + var minLength = this.constants.clustering.clusterEdgeThreshold/this.scale; + var allowCluster = false; - /** - * options, merged with the defaults - * options with an _ are converted to camelCase - * @property options - * @type {Object} - */ - Utils.each(options, function(value, name) { - delete options[name]; - options[Utils.toCamelCase(name)] = value; - }); + // we create a list of edges because the dynamicEdges change over the course of this loop + var edgesIdarray = []; + var amountOfInitialEdges = hubNode.dynamicEdges.length; + for (var j = 0; j < amountOfInitialEdges; j++) { + edgesIdarray.push(hubNode.dynamicEdges[j].id); + } - this.options = Utils.extend(Utils.extend({}, Hammer.defaults), options || {}); + // if the hub clustering is not forces, we check if one of the edges connected + // to a cluster is small enough based on the constants.clustering.clusterEdgeThreshold + if (force == false) { + allowCluster = false; + for (j = 0; j < amountOfInitialEdges; j++) { + var edge = this.edges[edgesIdarray[j]]; + if (edge !== undefined) { + if (edge.connected) { + if (edge.toId != edge.fromId) { + dx = (edge.to.x - edge.from.x); + dy = (edge.to.y - edge.from.y); + length = Math.sqrt(dx * dx + dy * dy); - // add some css to the element to prevent the browser from doing its native behavoir - if(this.options.behavior) { - Utils.toggleBehavior(this.element, this.options.behavior, true); + if (length < minLength) { + allowCluster = true; + break; + } + } + } + } + } } - /** - * event start handler on the element to start the detection - * @property eventStartHandler - * @type {Object} - */ - this.eventStartHandler = Event.onTouch(element, EVENT_START, function(ev) { - if(self.enabled && ev.eventType == EVENT_START) { - Detection.startDetect(self, ev); - } else if(ev.eventType == EVENT_TOUCH) { - Detection.detect(ev); + // start the clustering if allowed + if ((!force && allowCluster) || force) { + // we loop over all edges INITIALLY connected to this hub + for (j = 0; j < amountOfInitialEdges; j++) { + edge = this.edges[edgesIdarray[j]]; + // the edge can be clustered by this function in a previous loop + if (edge !== undefined) { + var childNode = this.nodes[(edge.fromId == hubNode.id) ? edge.toId : edge.fromId]; + // we do not want hubs to merge with other hubs nor do we want to cluster itself. + if ((childNode.dynamicEdges.length <= (this.hubThreshold + absorptionSizeOffset)) && + (childNode.id != hubNode.id)) { + this._addToCluster(hubNode,childNode,force); + } } - }); - - /** - * keep a list of user event handlers which needs to be removed when calling 'dispose' - * @property eventHandlers - * @type {Array} - */ - this.eventHandlers = []; + } + } + } }; - Hammer.Instance.prototype = { - /** - * bind events to the instance - * @method on - * @chainable - * @param {String} gestures multiple gestures by splitting with a space - * @param {Function} handler - * @param {Object} handler.ev event object - */ - on: function onEvent(gestures, handler) { - var self = this; - Event.on(self.element, gestures, handler, function(type) { - self.eventHandlers.push({ gesture: type, handler: handler }); - }); - return self; - }, - /** - * unbind events to the instance - * @method off - * @chainable - * @param {String} gestures - * @param {Function} handler - */ - off: function offEvent(gestures, handler) { - var self = this; - Event.off(self.element, gestures, handler, function(type) { - var index = Utils.inArray({ gesture: type, handler: handler }); - if(index !== false) { - self.eventHandlers.splice(index, 1); - } - }); - return self; - }, + /** + * This function adds the child node to the parent node, creating a cluster if it is not already. + * + * @param {Node} parentNode | this is the node that will house the child node + * @param {Node} childNode | this node will be deleted from the global this.nodes and stored in the parent node + * @param {Boolean} force | true will only update the remainingEdges at the very end of the clustering, ensuring single level collapse + * @private + */ + exports._addToCluster = function(parentNode, childNode, force) { + // join child node in the parent node + parentNode.containedNodes[childNode.id] = childNode; + + // manage all the edges connected to the child and parent nodes + for (var i = 0; i < childNode.dynamicEdges.length; i++) { + var edge = childNode.dynamicEdges[i]; + if (edge.toId == parentNode.id || edge.fromId == parentNode.id) { // edge connected to parentNode + this._addToContainedEdges(parentNode,childNode,edge); + } + else { + this._connectEdgeToCluster(parentNode,childNode,edge); + } + } + // a contained node has no dynamic edges. + childNode.dynamicEdges = []; - /** - * trigger gesture event - * @method trigger - * @chainable - * @param {String} gesture - * @param {Object} [eventData] - */ - trigger: function triggerEvent(gesture, eventData) { - // optional - if(!eventData) { - eventData = {}; - } + // remove circular edges from clusters + this._containCircularEdgesFromNode(parentNode,childNode); - // create DOM event - var event = Hammer.DOCUMENT.createEvent('Event'); - event.initEvent(gesture, true, true); - event.gesture = eventData; - // trigger on the target if it is in the instance element, - // this is for event delegation tricks - var element = this.element; - if(Utils.hasParent(eventData.target, element)) { - element = eventData.target; - } + // remove the childNode from the global nodes object + delete this.nodes[childNode.id]; - element.dispatchEvent(event); - return this; - }, + // update the properties of the child and parent + var massBefore = parentNode.mass; + childNode.clusterSession = this.clusterSession; + parentNode.mass += childNode.mass; + parentNode.clusterSize += childNode.clusterSize; + parentNode.fontSize = Math.min(this.constants.clustering.maxFontSize, this.constants.nodes.fontSize + this.constants.clustering.fontSizeMultiplier*parentNode.clusterSize); - /** - * enable of disable hammer.js detection - * @method enable - * @chainable - * @param {Boolean} state - */ - enable: function enable(state) { - this.enabled = state; - return this; - }, + // keep track of the clustersessions so we can open the cluster up as it has been formed. + if (parentNode.clusterSessions[parentNode.clusterSessions.length - 1] != this.clusterSession) { + parentNode.clusterSessions.push(this.clusterSession); + } - /** - * dispose this hammer instance - * @method dispose - * @return {Null} - */ - dispose: function dispose() { - var i, eh; + // forced clusters only open from screen size and double tap + if (force == true) { + // parentNode.formationScale = Math.pow(1 - (1.0/11.0),this.clusterSession+3); + parentNode.formationScale = 0; + } + else { + parentNode.formationScale = this.scale; // The latest child has been added on this scale + } - // undo all changes made by stop_browser_behavior - Utils.toggleBehavior(this.element, this.options.behavior, false); + // recalculate the size of the node on the next time the node is rendered + parentNode.clearSizeCache(); - // unbind all custom event handlers - for(i = -1; (eh = this.eventHandlers[++i]);) { - Utils.off(this.element, eh.gesture, eh.handler); - } + // set the pop-out scale for the childnode + parentNode.containedNodes[childNode.id].formationScale = parentNode.formationScale; - this.eventHandlers = []; + // nullify the movement velocity of the child, this is to avoid hectic behaviour + childNode.clearVelocity(); - // unbind the start event listener - Event.off(this.element, EVENT_TYPES[EVENT_START], this.eventStartHandler); + // the mass has altered, preservation of energy dictates the velocity to be updated + parentNode.updateVelocity(massBefore); - return null; - } + // restart the simulation to reorganise all nodes + this.moving = true; }; /** - * @module gestures - */ - /** - * Move with x fingers (default 1) around on the page. - * Preventing the default browser behavior is a good way to improve feel and working. - * ```` - * hammertime.on("drag", function(ev) { - * console.log(ev); - * ev.gesture.preventDefault(); - * }); - * ```` - * - * @class Drag - * @static - */ - /** - * @event drag - * @param {Object} ev - */ - /** - * @event dragstart - * @param {Object} ev - */ - /** - * @event dragend - * @param {Object} ev - */ - /** - * @event drapleft - * @param {Object} ev - */ - /** - * @event dragright - * @param {Object} ev - */ - /** - * @event dragup - * @param {Object} ev - */ - /** - * @event dragdown - * @param {Object} ev - */ - - /** - * @param {String} name + * This function will apply the changes made to the remainingEdges during the formation of the clusters. + * This is a seperate function to allow for level-wise collapsing of the node barnesHutTree. + * It has to be called if a level is collapsed. It is called by _formClusters(). + * @private */ - (function(name) { - var triggered = false; - - function dragGesture(ev, inst) { - var cur = Detection.current; + exports._updateDynamicEdges = function() { + for (var i = 0; i < this.nodeIndices.length; i++) { + var node = this.nodes[this.nodeIndices[i]]; + node.dynamicEdgesLength = node.dynamicEdges.length; - // max touches - if(inst.options.dragMaxTouches > 0 && - ev.touches.length > inst.options.dragMaxTouches) { - return; + // this corrects for multiple edges pointing at the same other node + var correction = 0; + if (node.dynamicEdgesLength > 1) { + for (var j = 0; j < node.dynamicEdgesLength - 1; j++) { + var edgeToId = node.dynamicEdges[j].toId; + var edgeFromId = node.dynamicEdges[j].fromId; + for (var k = j+1; k < node.dynamicEdgesLength; k++) { + if ((node.dynamicEdges[k].toId == edgeToId && node.dynamicEdges[k].fromId == edgeFromId) || + (node.dynamicEdges[k].fromId == edgeToId && node.dynamicEdges[k].toId == edgeFromId)) { + correction += 1; + } } + } + } + node.dynamicEdgesLength -= correction; + } + }; - switch(ev.eventType) { - case EVENT_START: - triggered = false; - break; - - case EVENT_MOVE: - // when the distance we moved is too small we skip this gesture - // or we can be already in dragging - if(ev.distance < inst.options.dragMinDistance && - cur.name != name) { - return; - } - - var startCenter = cur.startEvent.center; - - // we are dragging! - if(cur.name != name) { - cur.name = name; - if(inst.options.dragDistanceCorrection && ev.distance > 0) { - // When a drag is triggered, set the event center to dragMinDistance pixels from the original event center. - // Without this correction, the dragged distance would jumpstart at dragMinDistance pixels instead of at 0. - // It might be useful to save the original start point somewhere - var factor = Math.abs(inst.options.dragMinDistance / ev.distance); - startCenter.pageX += ev.deltaX * factor; - startCenter.pageY += ev.deltaY * factor; - startCenter.clientX += ev.deltaX * factor; - startCenter.clientY += ev.deltaY * factor; - - // recalculate event data using new start point - ev = Detection.extendEventData(ev); - } - } - // lock drag to axis? - if(cur.lastEvent.dragLockToAxis || - ( inst.options.dragLockToAxis && - inst.options.dragLockMinDistance <= ev.distance - )) { - ev.dragLockToAxis = true; - } + /** + * This adds an edge from the childNode to the contained edges of the parent node + * + * @param parentNode | Node object + * @param childNode | Node object + * @param edge | Edge object + * @private + */ + exports._addToContainedEdges = function(parentNode, childNode, edge) { + // create an array object if it does not yet exist for this childNode + if (!(parentNode.containedEdges.hasOwnProperty(childNode.id))) { + parentNode.containedEdges[childNode.id] = [] + } + // add this edge to the list + parentNode.containedEdges[childNode.id].push(edge); - // keep direction on the axis that the drag gesture started on - var lastDirection = cur.lastEvent.direction; - if(ev.dragLockToAxis && lastDirection !== ev.direction) { - if(Utils.isVertical(lastDirection)) { - ev.direction = (ev.deltaY < 0) ? DIRECTION_UP : DIRECTION_DOWN; - } else { - ev.direction = (ev.deltaX < 0) ? DIRECTION_LEFT : DIRECTION_RIGHT; - } - } + // remove the edge from the global edges object + delete this.edges[edge.id]; - // first time, trigger dragstart event - if(!triggered) { - inst.trigger(name + 'start', ev); - triggered = true; - } + // remove the edge from the parent object + for (var i = 0; i < parentNode.dynamicEdges.length; i++) { + if (parentNode.dynamicEdges[i].id == edge.id) { + parentNode.dynamicEdges.splice(i,1); + break; + } + } + }; - // trigger events - inst.trigger(name, ev); - inst.trigger(name + ev.direction, ev); + /** + * This function connects an edge that was connected to a child node to the parent node. + * It keeps track of which nodes it has been connected to with the originalId array. + * + * @param {Node} parentNode | Node object + * @param {Node} childNode | Node object + * @param {Edge} edge | Edge object + * @private + */ + exports._connectEdgeToCluster = function(parentNode, childNode, edge) { + // handle circular edges + if (edge.toId == edge.fromId) { + this._addToContainedEdges(parentNode, childNode, edge); + } + else { + if (edge.toId == childNode.id) { // edge connected to other node on the "to" side + edge.originalToId.push(childNode.id); + edge.to = parentNode; + edge.toId = parentNode.id; + } + else { // edge connected to other node with the "from" side - var isVertical = Utils.isVertical(ev.direction); + edge.originalFromId.push(childNode.id); + edge.from = parentNode; + edge.fromId = parentNode.id; + } - // block the browser events - if((inst.options.dragBlockVertical && isVertical) || - (inst.options.dragBlockHorizontal && !isVertical)) { - ev.preventDefault(); - } - break; + this._addToReroutedEdges(parentNode,childNode,edge); + } + }; - case EVENT_RELEASE: - if(triggered && ev.changedLength <= inst.options.dragMaxTouches) { - inst.trigger(name + 'end', ev); - triggered = false; - } - break; - case EVENT_END: - triggered = false; - break; - } + /** + * If a node is connected to itself, a circular edge is drawn. When clustering we want to contain + * these edges inside of the cluster. + * + * @param parentNode + * @param childNode + * @private + */ + exports._containCircularEdgesFromNode = function(parentNode, childNode) { + // manage all the edges connected to the child and parent nodes + for (var i = 0; i < parentNode.dynamicEdges.length; i++) { + var edge = parentNode.dynamicEdges[i]; + // handle circular edges + if (edge.toId == edge.fromId) { + this._addToContainedEdges(parentNode, childNode, edge); } + } + }; - Hammer.gestures.Drag = { - name: name, - index: 50, - handler: dragGesture, - defaults: { - /** - * minimal movement that have to be made before the drag event gets triggered - * @property dragMinDistance - * @type {Number} - * @default 10 - */ - dragMinDistance: 10, - /** - * Set dragDistanceCorrection to true to make the starting point of the drag - * be calculated from where the drag was triggered, not from where the touch started. - * Useful to avoid a jerk-starting drag, which can make fine-adjustments - * through dragging difficult, and be visually unappealing. - * @property dragDistanceCorrection - * @type {Boolean} - * @default true - */ - dragDistanceCorrection: true, + /** + * This adds an edge from the childNode to the rerouted edges of the parent node + * + * @param parentNode | Node object + * @param childNode | Node object + * @param edge | Edge object + * @private + */ + exports._addToReroutedEdges = function(parentNode, childNode, edge) { + // create an array object if it does not yet exist for this childNode + // we store the edge in the rerouted edges so we can restore it when the cluster pops open + if (!(parentNode.reroutedEdges.hasOwnProperty(childNode.id))) { + parentNode.reroutedEdges[childNode.id] = []; + } + parentNode.reroutedEdges[childNode.id].push(edge); - /** - * set 0 for unlimited, but this can conflict with transform - * @property dragMaxTouches - * @type {Number} - * @default 1 - */ - dragMaxTouches: 1, + // this edge becomes part of the dynamicEdges of the cluster node + parentNode.dynamicEdges.push(edge); + }; - /** - * prevent default browser behavior when dragging occurs - * be careful with it, it makes the element a blocking element - * when you are using the drag gesture, it is a good practice to set this true - * @property dragBlockHorizontal - * @type {Boolean} - * @default false - */ - dragBlockHorizontal: false, - /** - * same as `dragBlockHorizontal`, but for vertical movement - * @property dragBlockVertical - * @type {Boolean} - * @default false - */ - dragBlockVertical: false, - /** - * dragLockToAxis keeps the drag gesture on the axis that it started on, - * It disallows vertical directions if the initial direction was horizontal, and vice versa. - * @property dragLockToAxis - * @type {Boolean} - * @default false - */ - dragLockToAxis: false, + /** + * This function connects an edge that was connected to a cluster node back to the child node. + * + * @param parentNode | Node object + * @param childNode | Node object + * @private + */ + exports._connectEdgeBackToChild = function(parentNode, childNode) { + if (parentNode.reroutedEdges.hasOwnProperty(childNode.id)) { + for (var i = 0; i < parentNode.reroutedEdges[childNode.id].length; i++) { + var edge = parentNode.reroutedEdges[childNode.id][i]; + if (edge.originalFromId[edge.originalFromId.length-1] == childNode.id) { + edge.originalFromId.pop(); + edge.fromId = childNode.id; + edge.from = childNode; + } + else { + edge.originalToId.pop(); + edge.toId = childNode.id; + edge.to = childNode; + } - /** - * drag lock only kicks in when distance > dragLockMinDistance - * This way, locking occurs only when the distance has become large enough to reliably determine the direction - * @property dragLockMinDistance - * @type {Number} - * @default 25 - */ - dragLockMinDistance: 25 + // append this edge to the list of edges connecting to the childnode + childNode.dynamicEdges.push(edge); + + // remove the edge from the parent object + for (var j = 0; j < parentNode.dynamicEdges.length; j++) { + if (parentNode.dynamicEdges[j].id == edge.id) { + parentNode.dynamicEdges.splice(j,1); + break; } - }; - })('drag'); + } + } + // remove the entry from the rerouted edges + delete parentNode.reroutedEdges[childNode.id]; + } + }; + /** - * @module gestures - */ - /** - * trigger a simple gesture event, so you can do anything in your handler. - * only usable if you know what your doing... + * When loops are clustered, an edge can be both in the rerouted array and the contained array. + * This function is called last to verify that all edges in dynamicEdges are in fact connected to the + * parentNode * - * @class Gesture - * @static - */ - /** - * @event gesture - * @param {Object} ev + * @param parentNode | Node object + * @private */ - Hammer.gestures.Gesture = { - name: 'gesture', - index: 1337, - handler: function releaseGesture(ev, inst) { - inst.trigger(this.name, ev); + exports._validateEdges = function(parentNode) { + for (var i = 0; i < parentNode.dynamicEdges.length; i++) { + var edge = parentNode.dynamicEdges[i]; + if (parentNode.id != edge.toId && parentNode.id != edge.fromId) { + parentNode.dynamicEdges.splice(i,1); } + } }; + /** - * @module gestures - */ - /** - * Touch stays at the same place for x time + * This function released the contained edges back into the global domain and puts them back into the + * dynamic edges of both parent and child. * - * @class Hold - * @static - */ - /** - * @event hold - * @param {Object} ev + * @param {Node} parentNode | + * @param {Node} childNode | + * @private */ + exports._releaseContainedEdges = function(parentNode, childNode) { + for (var i = 0; i < parentNode.containedEdges[childNode.id].length; i++) { + var edge = parentNode.containedEdges[childNode.id][i]; + + // put the edge back in the global edges object + this.edges[edge.id] = edge; + + // put the edge back in the dynamic edges of the child and parent + childNode.dynamicEdges.push(edge); + parentNode.dynamicEdges.push(edge); + } + // remove the entry from the contained edges + delete parentNode.containedEdges[childNode.id]; + + }; + + + + + // ------------------- UTILITY FUNCTIONS ---------------------------- // + /** - * @param {String} name + * This updates the node labels for all nodes (for debugging purposes) */ - (function(name) { - var timer; + exports.updateLabels = function() { + var nodeId; + // update node labels + for (nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + var node = this.nodes[nodeId]; + if (node.clusterSize > 1) { + node.label = "[".concat(String(node.clusterSize),"]"); + } + } + } + + // update node labels + for (nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + node = this.nodes[nodeId]; + if (node.clusterSize == 1) { + if (node.originalLabel !== undefined) { + node.label = node.originalLabel; + } + else { + node.label = String(node.id); + } + } + } + } - function holdGesture(ev, inst) { - var options = inst.options, - current = Detection.current; + // /* Debug Override */ + // for (nodeId in this.nodes) { + // if (this.nodes.hasOwnProperty(nodeId)) { + // node = this.nodes[nodeId]; + // node.label = String(node.level); + // } + // } - switch(ev.eventType) { - case EVENT_START: - clearTimeout(timer); + }; - // set the gesture so we can check in the timeout if it still is - current.name = name; - // set timer and if after the timeout it still is hold, - // we trigger the hold event - timer = setTimeout(function() { - if(current && current.name == name) { - inst.trigger(name, ev); - } - }, options.holdTimeout); - break; + /** + * We want to keep the cluster level distribution rather small. This means we do not want unclustered nodes + * if the rest of the nodes are already a few cluster levels in. + * To fix this we use this function. It determines the min and max cluster level and sends nodes that have not + * clustered enough to the clusterToSmallestNeighbours function. + */ + exports.normalizeClusterLevels = function() { + var maxLevel = 0; + var minLevel = 1e9; + var clusterLevel = 0; + var nodeId; - case EVENT_MOVE: - if(ev.distance > options.holdThreshold) { - clearTimeout(timer); - } - break; + // we loop over all nodes in the list + for (nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + clusterLevel = this.nodes[nodeId].clusterSessions.length; + if (maxLevel < clusterLevel) {maxLevel = clusterLevel;} + if (minLevel > clusterLevel) {minLevel = clusterLevel;} + } + } - case EVENT_RELEASE: - clearTimeout(timer); - break; + if (maxLevel - minLevel > this.constants.clustering.clusterLevelDifference) { + var amountOfNodes = this.nodeIndices.length; + var targetLevel = maxLevel - this.constants.clustering.clusterLevelDifference; + // we loop over all nodes in the list + for (nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + if (this.nodes[nodeId].clusterSessions.length < targetLevel) { + this._clusterToSmallestNeighbour(this.nodes[nodeId]); } + } + } + this._updateNodeIndexList(); + this._updateDynamicEdges(); + // if a cluster was formed, we increase the clusterSession + if (this.nodeIndices.length != amountOfNodes) { + this.clusterSession += 1; } + } + }; - Hammer.gestures.Hold = { - name: name, - index: 10, - defaults: { - /** - * @property holdTimeout - * @type {Number} - * @default 500 - */ - holdTimeout: 500, - /** - * movement allowed while holding - * @property holdThreshold - * @type {Number} - * @default 2 - */ - holdThreshold: 2 - }, - handler: holdGesture - }; - })('hold'); /** - * @module gestures - */ - /** - * when a touch is being released from the page + * This function determines if the cluster we want to decluster is in the active area + * this means around the zoom center * - * @class Release - * @static + * @param {Node} node + * @returns {boolean} + * @private */ + exports._nodeInActiveArea = function(node) { + return ( + Math.abs(node.x - this.areaCenter.x) <= this.constants.clustering.activeAreaBoxSize/this.scale + && + Math.abs(node.y - this.areaCenter.y) <= this.constants.clustering.activeAreaBoxSize/this.scale + ) + }; + + /** - * @event release - * @param {Object} ev + * This is an adaptation of the original repositioning function. This is called if the system is clustered initially + * It puts large clusters away from the center and randomizes the order. + * */ - Hammer.gestures.Release = { - name: 'release', - index: Infinity, - handler: function releaseGesture(ev, inst) { - if(ev.eventType == EVENT_RELEASE) { - inst.trigger(this.name, ev); - } + exports.repositionNodes = function() { + for (var i = 0; i < this.nodeIndices.length; i++) { + var node = this.nodes[this.nodeIndices[i]]; + if ((node.xFixed == false || node.yFixed == false)) { + var radius = 10 * 0.1*this.nodeIndices.length * Math.min(100,node.mass); + var angle = 2 * Math.PI * Math.random(); + if (node.xFixed == false) {node.x = radius * Math.cos(angle);} + if (node.yFixed == false) {node.y = radius * Math.sin(angle);} + this._repositionBezierNodes(node); } + } }; + /** - * @module gestures - */ - /** - * triggers swipe events when the end velocity is above the threshold - * for best usage, set `preventDefault` (on the drag gesture) to `true` - * ```` - * hammertime.on("dragleft swipeleft", function(ev) { - * console.log(ev); - * ev.gesture.preventDefault(); - * }); - * ```` + * We determine how many connections denote an important hub. + * We take the mean + 2*std as the important hub size. (Assuming a normal distribution of data, ~2.2%) * - * @class Swipe - * @static - */ - /** - * @event swipe - * @param {Object} ev - */ - /** - * @event swipeleft - * @param {Object} ev - */ - /** - * @event swiperight - * @param {Object} ev - */ - /** - * @event swipeup - * @param {Object} ev - */ - /** - * @event swipedown - * @param {Object} ev + * @private */ - Hammer.gestures.Swipe = { - name: 'swipe', - index: 40, - defaults: { - /** - * @property swipeMinTouches - * @type {Number} - * @default 1 - */ - swipeMinTouches: 1, + exports._getHubSize = function() { + var average = 0; + var averageSquared = 0; + var hubCounter = 0; + var largestHub = 0; - /** - * @property swipeMaxTouches - * @type {Number} - * @default 1 - */ - swipeMaxTouches: 1, + for (var i = 0; i < this.nodeIndices.length; i++) { - /** - * horizontal swipe velocity - * @property swipeVelocityX - * @type {Number} - * @default 0.6 - */ - swipeVelocityX: 0.6, + var node = this.nodes[this.nodeIndices[i]]; + if (node.dynamicEdgesLength > largestHub) { + largestHub = node.dynamicEdgesLength; + } + average += node.dynamicEdgesLength; + averageSquared += Math.pow(node.dynamicEdgesLength,2); + hubCounter += 1; + } + average = average / hubCounter; + averageSquared = averageSquared / hubCounter; - /** - * vertical swipe velocity - * @property swipeVelocityY - * @type {Number} - * @default 0.6 - */ - swipeVelocityY: 0.6 - }, + var variance = averageSquared - Math.pow(average,2); - handler: function swipeGesture(ev, inst) { - if(ev.eventType == EVENT_RELEASE) { - var touches = ev.touches.length, - options = inst.options; + var standardDeviation = Math.sqrt(variance); - // max touches - if(touches < options.swipeMinTouches || - touches > options.swipeMaxTouches) { - return; - } + this.hubThreshold = Math.floor(average + 2*standardDeviation); - // when the distance we moved is too small we skip this gesture - // or we can be already in dragging - if(ev.velocityX > options.swipeVelocityX || - ev.velocityY > options.swipeVelocityY) { - // trigger swipe events - inst.trigger(this.name, ev); - inst.trigger(this.name + ev.direction, ev); - } + // always have at least one to cluster + if (this.hubThreshold > largestHub) { + this.hubThreshold = largestHub; + } + + // console.log("average",average,"averageSQ",averageSquared,"var",variance,"std",standardDeviation); + // console.log("hubThreshold:",this.hubThreshold); + }; + + + /** + * We reduce the amount of "extension nodes" or chains. These are not quickly clustered with the outliers and hubs methods + * with this amount we can cluster specifically on these chains. + * + * @param {Number} fraction | between 0 and 1, the percentage of chains to reduce + * @private + */ + exports._reduceAmountOfChains = function(fraction) { + this.hubThreshold = 2; + var reduceAmount = Math.floor(this.nodeIndices.length * fraction); + for (var nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + if (this.nodes[nodeId].dynamicEdgesLength == 2 && this.nodes[nodeId].dynamicEdges.length >= 2) { + if (reduceAmount > 0) { + this._formClusterFromHub(this.nodes[nodeId],true,true,1); + reduceAmount -= 1; } + } } + } }; /** - * @module gestures - */ - /** - * Single tap and a double tap on a place + * We get the amount of "extension nodes" or chains. These are not quickly clustered with the outliers and hubs methods + * with this amount we can cluster specifically on these chains. * - * @class Tap - * @static - */ - /** - * @event tap - * @param {Object} ev + * @private */ + exports._getChainFraction = function() { + var chains = 0; + var total = 0; + for (var nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + if (this.nodes[nodeId].dynamicEdgesLength == 2 && this.nodes[nodeId].dynamicEdges.length >= 2) { + chains += 1; + } + total += 1; + } + } + return chains/total; + }; + + +/***/ }, +/* 49 */ +/***/ function(module, exports, __webpack_require__) { + + var util = __webpack_require__(1); + /** - * @event doubletap - * @param {Object} ev + * Creation of the SectorMixin var. + * + * This contains all the functions the Network object can use to employ the sector system. + * The sector system is always used by Network, though the benefits only apply to the use of clustering. + * If clustering is not used, there is no overhead except for a duplicate object with references to nodes and edges. */ /** - * @param {String} name + * This function is only called by the setData function of the Network object. + * This loads the global references into the active sector. This initializes the sector. + * + * @private */ - (function(name) { - var hasMoved = false; - - function tapGesture(ev, inst) { - var options = inst.options, - current = Detection.current, - prev = Detection.previous, - sincePrev, - didDoubleTap; - - switch(ev.eventType) { - case EVENT_START: - hasMoved = false; - break; + exports._putDataInSector = function() { + this.sectors["active"][this._sector()].nodes = this.nodes; + this.sectors["active"][this._sector()].edges = this.edges; + this.sectors["active"][this._sector()].nodeIndices = this.nodeIndices; + }; - case EVENT_MOVE: - hasMoved = hasMoved || (ev.distance > options.tapMaxDistance); - break; - case EVENT_END: - if(!Utils.inStr(ev.srcEvent.type, 'cancel') && ev.deltaTime < options.tapMaxTime && !hasMoved) { - // previous gesture, for the double tap since these are two different gesture detections - sincePrev = prev && prev.lastEvent && ev.timeStamp - prev.lastEvent.timeStamp; - didDoubleTap = false; + /** + * /** + * This function sets the global references to nodes, edges and nodeIndices back to + * those of the supplied (active) sector. If a type is defined, do the specific type + * + * @param {String} sectorId + * @param {String} [sectorType] | "active" or "frozen" + * @private + */ + exports._switchToSector = function(sectorId, sectorType) { + if (sectorType === undefined || sectorType == "active") { + this._switchToActiveSector(sectorId); + } + else { + this._switchToFrozenSector(sectorId); + } + }; - // check if double tap - if(prev && prev.name == name && - (sincePrev && sincePrev < options.doubleTapInterval) && - ev.distance < options.doubleTapDistance) { - inst.trigger('doubletap', ev); - didDoubleTap = true; - } - // do a single tap - if(!didDoubleTap || options.tapAlways) { - current.name = name; - inst.trigger(current.name, ev); - } - } - break; - } - } + /** + * This function sets the global references to nodes, edges and nodeIndices back to + * those of the supplied active sector. + * + * @param sectorId + * @private + */ + exports._switchToActiveSector = function(sectorId) { + this.nodeIndices = this.sectors["active"][sectorId]["nodeIndices"]; + this.nodes = this.sectors["active"][sectorId]["nodes"]; + this.edges = this.sectors["active"][sectorId]["edges"]; + }; - Hammer.gestures.Tap = { - name: name, - index: 100, - handler: tapGesture, - defaults: { - /** - * max time of a tap, this is for the slow tappers - * @property tapMaxTime - * @type {Number} - * @default 250 - */ - tapMaxTime: 250, - /** - * max distance of movement of a tap, this is for the slow tappers - * @property tapMaxDistance - * @type {Number} - * @default 10 - */ - tapMaxDistance: 10, + /** + * This function sets the global references to nodes, edges and nodeIndices back to + * those of the supplied active sector. + * + * @private + */ + exports._switchToSupportSector = function() { + this.nodeIndices = this.sectors["support"]["nodeIndices"]; + this.nodes = this.sectors["support"]["nodes"]; + this.edges = this.sectors["support"]["edges"]; + }; - /** - * always trigger the `tap` event, even while double-tapping - * @property tapAlways - * @type {Boolean} - * @default true - */ - tapAlways: true, - /** - * max distance between two taps - * @property doubleTapDistance - * @type {Number} - * @default 20 - */ - doubleTapDistance: 20, + /** + * This function sets the global references to nodes, edges and nodeIndices back to + * those of the supplied frozen sector. + * + * @param sectorId + * @private + */ + exports._switchToFrozenSector = function(sectorId) { + this.nodeIndices = this.sectors["frozen"][sectorId]["nodeIndices"]; + this.nodes = this.sectors["frozen"][sectorId]["nodes"]; + this.edges = this.sectors["frozen"][sectorId]["edges"]; + }; - /** - * max time between two taps - * @property doubleTapInterval - * @type {Number} - * @default 300 - */ - doubleTapInterval: 300 - } - }; - })('tap'); /** - * @module gestures + * This function sets the global references to nodes, edges and nodeIndices back to + * those of the currently active sector. + * + * @private */ + exports._loadLatestSector = function() { + this._switchToSector(this._sector()); + }; + + /** - * when a touch is being touched at the page + * This function returns the currently active sector Id * - * @class Touch - * @static + * @returns {String} + * @private */ + exports._sector = function() { + return this.activeSector[this.activeSector.length-1]; + }; + + /** - * @event touch - * @param {Object} ev + * This function returns the previously active sector Id + * + * @returns {String} + * @private */ - Hammer.gestures.Touch = { - name: 'touch', - index: -Infinity, - defaults: { - /** - * call preventDefault at touchstart, and makes the element blocking by disabling the scrolling of the page, - * but it improves gestures like transforming and dragging. - * be careful with using this, it can be very annoying for users to be stuck on the page - * @property preventDefault - * @type {Boolean} - * @default false - */ - preventDefault: false, - - /** - * disable mouse events, so only touch (or pen!) input triggers events - * @property preventMouse - * @type {Boolean} - * @default false - */ - preventMouse: false - }, - handler: function touchGesture(ev, inst) { - if(inst.options.preventMouse && ev.pointerType == POINTER_MOUSE) { - ev.stopDetect(); - return; - } + exports._previousSector = function() { + if (this.activeSector.length > 1) { + return this.activeSector[this.activeSector.length-2]; + } + else { + throw new TypeError('there are not enough sectors in the this.activeSector array.'); + } + }; - if(inst.options.preventDefault) { - ev.preventDefault(); - } - if(ev.eventType == EVENT_TOUCH) { - inst.trigger('touch', ev); - } - } + /** + * We add the active sector at the end of the this.activeSector array + * This ensures it is the currently active sector returned by _sector() and it reaches the top + * of the activeSector stack. When we reverse our steps we move from the end to the beginning of this stack. + * + * @param newId + * @private + */ + exports._setActiveSector = function(newId) { + this.activeSector.push(newId); }; + /** - * @module gestures + * We remove the currently active sector id from the active sector stack. This happens when + * we reactivate the previously active sector + * + * @private */ + exports._forgetLastSector = function() { + this.activeSector.pop(); + }; + + /** - * User want to scale or rotate with 2 fingers - * Preventing the default browser behavior is a good way to improve feel and working. This can be done with the - * `preventDefault` option. + * This function creates a new active sector with the supplied newId. This newId + * is the expanding node id. * - * @class Transform - * @static + * @param {String} newId | Id of the new active sector + * @private */ + exports._createNewSector = function(newId) { + // create the new sector + this.sectors["active"][newId] = {"nodes":{}, + "edges":{}, + "nodeIndices":[], + "formationScale": this.scale, + "drawingNode": undefined}; + + // create the new sector render node. This gives visual feedback that you are in a new sector. + this.sectors["active"][newId]['drawingNode'] = new Node( + {id:newId, + color: { + background: "#eaefef", + border: "495c5e" + } + },{},{},this.constants); + this.sectors["active"][newId]['drawingNode'].clusterSize = 2; + }; + + /** - * @event transform - * @param {Object} ev + * This function removes the currently active sector. This is called when we create a new + * active sector. + * + * @param {String} sectorId | Id of the active sector that will be removed + * @private */ + exports._deleteActiveSector = function(sectorId) { + delete this.sectors["active"][sectorId]; + }; + + /** - * @event transformstart - * @param {Object} ev + * This function removes the currently active sector. This is called when we reactivate + * the previously active sector. + * + * @param {String} sectorId | Id of the active sector that will be removed + * @private */ + exports._deleteFrozenSector = function(sectorId) { + delete this.sectors["frozen"][sectorId]; + }; + + /** - * @event transformend - * @param {Object} ev + * Freezing an active sector means moving it from the "active" object to the "frozen" object. + * We copy the references, then delete the active entree. + * + * @param sectorId + * @private */ + exports._freezeSector = function(sectorId) { + // we move the set references from the active to the frozen stack. + this.sectors["frozen"][sectorId] = this.sectors["active"][sectorId]; + + // we have moved the sector data into the frozen set, we now remove it from the active set + this._deleteActiveSector(sectorId); + }; + + /** - * @event pinchin - * @param {Object} ev + * This is the reverse operation of _freezeSector. Activating means moving the sector from the "frozen" + * object to the "active" object. + * + * @param sectorId + * @private */ + exports._activateSector = function(sectorId) { + // we move the set references from the frozen to the active stack. + this.sectors["active"][sectorId] = this.sectors["frozen"][sectorId]; + + // we have moved the sector data into the active set, we now remove it from the frozen stack + this._deleteFrozenSector(sectorId); + }; + + /** - * @event pinchout - * @param {Object} ev + * This function merges the data from the currently active sector with a frozen sector. This is used + * in the process of reverting back to the previously active sector. + * The data that is placed in the frozen (the previously active) sector is the node that has been removed from it + * upon the creation of a new active sector. + * + * @param sectorId + * @private */ + exports._mergeThisWithFrozen = function(sectorId) { + // copy all nodes + for (var nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + this.sectors["frozen"][sectorId]["nodes"][nodeId] = this.nodes[nodeId]; + } + } + + // copy all edges (if not fully clustered, else there are no edges) + for (var edgeId in this.edges) { + if (this.edges.hasOwnProperty(edgeId)) { + this.sectors["frozen"][sectorId]["edges"][edgeId] = this.edges[edgeId]; + } + } + + // merge the nodeIndices + for (var i = 0; i < this.nodeIndices.length; i++) { + this.sectors["frozen"][sectorId]["nodeIndices"].push(this.nodeIndices[i]); + } + }; + + /** - * @event rotate - * @param {Object} ev + * This clusters the sector to one cluster. It was a single cluster before this process started so + * we revert to that state. The clusterToFit function with a maximum size of 1 node does this. + * + * @private */ + exports._collapseThisToSingleCluster = function() { + this.clusterToFit(1,false); + }; + /** - * @param {String} name + * We create a new active sector from the node that we want to open. + * + * @param node + * @private */ - (function(name) { - var triggered = false; + exports._addSector = function(node) { + // this is the currently active sector + var sector = this._sector(); - function transformGesture(ev, inst) { - switch(ev.eventType) { - case EVENT_START: - triggered = false; - break; + // // this should allow me to select nodes from a frozen set. + // if (this.sectors['active'][sector]["nodes"].hasOwnProperty(node.id)) { + // console.log("the node is part of the active sector"); + // } + // else { + // console.log("I dont know what the fuck happened!!"); + // } - case EVENT_MOVE: - // at least multitouch - if(ev.touches.length < 2) { - return; - } + // when we switch to a new sector, we remove the node that will be expanded from the current nodes list. + delete this.nodes[node.id]; - var scaleThreshold = Math.abs(1 - ev.scale); - var rotationThreshold = Math.abs(ev.rotation); + var unqiueIdentifier = util.randomUUID(); - // when the distance we moved is too small we skip this gesture - // or we can be already in dragging - if(scaleThreshold < inst.options.transformMinScale && - rotationThreshold < inst.options.transformMinRotation) { - return; - } + // we fully freeze the currently active sector + this._freezeSector(sector); - // we are transforming! - Detection.current.name = name; + // we create a new active sector. This sector has the Id of the node to ensure uniqueness + this._createNewSector(unqiueIdentifier); - // first time, trigger dragstart event - if(!triggered) { - inst.trigger(name + 'start', ev); - triggered = true; - } + // we add the active sector to the sectors array to be able to revert these steps later on + this._setActiveSector(unqiueIdentifier); - inst.trigger(name, ev); // basic transform event + // we redirect the global references to the new sector's references. this._sector() now returns unqiueIdentifier + this._switchToSector(this._sector()); - // trigger rotate event - if(rotationThreshold > inst.options.transformMinRotation) { - inst.trigger('rotate', ev); - } + // finally we add the node we removed from our previous active sector to the new active sector + this.nodes[node.id] = node; + }; + + + /** + * We close the sector that is currently open and revert back to the one before. + * If the active sector is the "default" sector, nothing happens. + * + * @private + */ + exports._collapseSector = function() { + // the currently active sector + var sector = this._sector(); + + // we cannot collapse the default sector + if (sector != "default") { + if ((this.nodeIndices.length == 1) || + (this.sectors["active"][sector]["drawingNode"].width*this.scale < this.constants.clustering.screenSizeThreshold * this.frame.canvas.clientWidth) || + (this.sectors["active"][sector]["drawingNode"].height*this.scale < this.constants.clustering.screenSizeThreshold * this.frame.canvas.clientHeight)) { + var previousSector = this._previousSector(); + + // we collapse the sector back to a single cluster + this._collapseThisToSingleCluster(); + + // we move the remaining nodes, edges and nodeIndices to the previous sector. + // This previous sector is the one we will reactivate + this._mergeThisWithFrozen(previousSector); + + // the previously active (frozen) sector now has all the data from the currently active sector. + // we can now delete the active sector. + this._deleteActiveSector(sector); + + // we activate the previously active (and currently frozen) sector. + this._activateSector(previousSector); + + // we load the references from the newly active sector into the global references + this._switchToSector(previousSector); + + // we forget the previously active sector because we reverted to the one before + this._forgetLastSector(); - // trigger pinch event - if(scaleThreshold > inst.options.transformMinScale) { - inst.trigger('pinch', ev); - inst.trigger('pinch' + (ev.scale < 1 ? 'in' : 'out'), ev); - } - break; + // finally, we update the node index list. + this._updateNodeIndexList(); - case EVENT_RELEASE: - if(triggered && ev.changedLength < 2) { - inst.trigger(name + 'end', ev); - triggered = false; - } - break; - } + // we refresh the list with calulation nodes and calculation node indices. + this._updateCalculationNodes(); } + } + }; - Hammer.gestures.Transform = { - name: name, - index: 45, - defaults: { - /** - * minimal scale factor, no scale is 1, zoomin is to 0 and zoomout until higher then 1 - * @property transformMinScale - * @type {Number} - * @default 0.01 - */ - transformMinScale: 0.01, - /** - * rotation in degrees - * @property transformMinRotation - * @type {Number} - * @default 1 - */ - transformMinRotation: 1 - }, + /** + * This runs a function in all active sectors. This is used in _redraw() and the _initializeForceCalculation(). + * + * @param {String} runFunction | This is the NAME of a function we want to call in all active sectors + * | we dont pass the function itself because then the "this" is the window object + * | instead of the Network object + * @param {*} [argument] | Optional: arguments to pass to the runFunction + * @private + */ + exports._doInAllActiveSectors = function(runFunction,argument) { + if (argument === undefined) { + for (var sector in this.sectors["active"]) { + if (this.sectors["active"].hasOwnProperty(sector)) { + // switch the global references to those of this sector + this._switchToActiveSector(sector); + this[runFunction](); + } + } + } + else { + for (var sector in this.sectors["active"]) { + if (this.sectors["active"].hasOwnProperty(sector)) { + // switch the global references to those of this sector + this._switchToActiveSector(sector); + var args = Array.prototype.splice.call(arguments, 1); + if (args.length > 1) { + this[runFunction](args[0],args[1]); + } + else { + this[runFunction](argument); + } + } + } + } + // we revert the global references back to our active sector + this._loadLatestSector(); + }; - handler: transformGesture - }; - })('transform'); /** - * @module hammer + * This runs a function in all active sectors. This is used in _redraw() and the _initializeForceCalculation(). + * + * @param {String} runFunction | This is the NAME of a function we want to call in all active sectors + * | we dont pass the function itself because then the "this" is the window object + * | instead of the Network object + * @param {*} [argument] | Optional: arguments to pass to the runFunction + * @private */ + exports._doInSupportSector = function(runFunction,argument) { + if (argument === undefined) { + this._switchToSupportSector(); + this[runFunction](); + } + else { + this._switchToSupportSector(); + var args = Array.prototype.splice.call(arguments, 1); + if (args.length > 1) { + this[runFunction](args[0],args[1]); + } + else { + this[runFunction](argument); + } + } + // we revert the global references back to our active sector + this._loadLatestSector(); + }; - // AMD export - if(true) { - !(__WEBPACK_AMD_DEFINE_RESULT__ = (function() { - return Hammer; - }.call(exports, __webpack_require__, exports, module)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); - // commonjs export - } else if(typeof module !== 'undefined' && module.exports) { - module.exports = Hammer; - // browser export - } else { - window.Hammer = Hammer; - } - })(window); + /** + * This runs a function in all frozen sectors. This is used in the _redraw(). + * + * @param {String} runFunction | This is the NAME of a function we want to call in all active sectors + * | we don't pass the function itself because then the "this" is the window object + * | instead of the Network object + * @param {*} [argument] | Optional: arguments to pass to the runFunction + * @private + */ + exports._doInAllFrozenSectors = function(runFunction,argument) { + if (argument === undefined) { + for (var sector in this.sectors["frozen"]) { + if (this.sectors["frozen"].hasOwnProperty(sector)) { + // switch the global references to those of this sector + this._switchToFrozenSector(sector); + this[runFunction](); + } + } + } + else { + for (var sector in this.sectors["frozen"]) { + if (this.sectors["frozen"].hasOwnProperty(sector)) { + // switch the global references to those of this sector + this._switchToFrozenSector(sector); + var args = Array.prototype.splice.call(arguments, 1); + if (args.length > 1) { + this[runFunction](args[0],args[1]); + } + else { + this[runFunction](argument); + } + } + } + } + this._loadLatestSector(); + }; -/***/ }, -/* 55 */ -/***/ function(module, exports, __webpack_require__) { /** - * Calculate the forces the nodes apply on each other based on a repulsion field. - * This field is linearly approximated. + * This runs a function in all sectors. This is used in the _redraw(). * + * @param {String} runFunction | This is the NAME of a function we want to call in all active sectors + * | we don't pass the function itself because then the "this" is the window object + * | instead of the Network object + * @param {*} [argument] | Optional: arguments to pass to the runFunction * @private */ - exports._calculateNodeForces = function () { - var dx, dy, angle, distance, fx, fy, combinedClusterSize, - repulsingForce, node1, node2, i, j; + exports._doInAllSectors = function(runFunction,argument) { + var args = Array.prototype.splice.call(arguments, 1); + if (argument === undefined) { + this._doInAllActiveSectors(runFunction); + this._doInAllFrozenSectors(runFunction); + } + else { + if (args.length > 1) { + this._doInAllActiveSectors(runFunction,args[0],args[1]); + this._doInAllFrozenSectors(runFunction,args[0],args[1]); + } + else { + this._doInAllActiveSectors(runFunction,argument); + this._doInAllFrozenSectors(runFunction,argument); + } + } + }; - var nodes = this.calculationNodes; - var nodeIndices = this.calculationNodeIndices; - // approximation constants - var a_base = -2 / 3; - var b = 4 / 3; + /** + * This clears the nodeIndices list. We cannot use this.nodeIndices = [] because we would break the link with the + * active sector. Thus we clear the nodeIndices in the active sector, then reconnect the this.nodeIndices to it. + * + * @private + */ + exports._clearNodeIndexList = function() { + var sector = this._sector(); + this.sectors["active"][sector]["nodeIndices"] = []; + this.nodeIndices = this.sectors["active"][sector]["nodeIndices"]; + }; - // repulsing forces between nodes - var nodeDistance = this.constants.physics.repulsion.nodeDistance; - var minimumDistance = nodeDistance; - // we loop from i over all but the last entree in the array - // j loops from i+1 to the last. This way we do not double count any of the indices, nor i == j - for (i = 0; i < nodeIndices.length - 1; i++) { - node1 = nodes[nodeIndices[i]]; - for (j = i + 1; j < nodeIndices.length; j++) { - node2 = nodes[nodeIndices[j]]; - combinedClusterSize = node1.clusterSize + node2.clusterSize - 2; + /** + * Draw the encompassing sector node + * + * @param ctx + * @param sectorType + * @private + */ + exports._drawSectorNodes = function(ctx,sectorType) { + var minY = 1e9, maxY = -1e9, minX = 1e9, maxX = -1e9, node; + for (var sector in this.sectors[sectorType]) { + if (this.sectors[sectorType].hasOwnProperty(sector)) { + if (this.sectors[sectorType][sector]["drawingNode"] !== undefined) { - dx = node2.x - node1.x; - dy = node2.y - node1.y; - distance = Math.sqrt(dx * dx + dy * dy); + this._switchToSector(sector,sectorType); - minimumDistance = (combinedClusterSize == 0) ? nodeDistance : (nodeDistance * (1 + combinedClusterSize * this.constants.clustering.distanceAmplification)); - var a = a_base / minimumDistance; - if (distance < 2 * minimumDistance) { - if (distance < 0.5 * minimumDistance) { - repulsingForce = 1.0; - } - else { - repulsingForce = a * distance + b; // linear approx of 1 / (1 + Math.exp((distance / minimumDistance - 1) * steepness)) + minY = 1e9; maxY = -1e9; minX = 1e9; maxX = -1e9; + for (var nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + node = this.nodes[nodeId]; + node.resize(ctx); + if (minX > node.x - 0.5 * node.width) {minX = node.x - 0.5 * node.width;} + if (maxX < node.x + 0.5 * node.width) {maxX = node.x + 0.5 * node.width;} + if (minY > node.y - 0.5 * node.height) {minY = node.y - 0.5 * node.height;} + if (maxY < node.y + 0.5 * node.height) {maxY = node.y + 0.5 * node.height;} + } } - - // amplify the repulsion for clusters. - repulsingForce *= (combinedClusterSize == 0) ? 1 : 1 + combinedClusterSize * this.constants.clustering.forceAmplification; - repulsingForce = repulsingForce / distance; - - fx = dx * repulsingForce; - fy = dy * repulsingForce; - - node1.fx -= fx; - node1.fy -= fy; - node2.fx += fx; - node2.fy += fy; + node = this.sectors[sectorType][sector]["drawingNode"]; + node.x = 0.5 * (maxX + minX); + node.y = 0.5 * (maxY + minY); + node.width = 2 * (node.x - minX); + node.height = 2 * (node.y - minY); + node.radius = Math.sqrt(Math.pow(0.5*node.width,2) + Math.pow(0.5*node.height,2)); + node.setScale(this.scale); + node._drawCircle(ctx); } } } }; + exports._drawAllSectorNodes = function(ctx) { + this._drawSectorNodes(ctx,"frozen"); + this._drawSectorNodes(ctx,"active"); + this._loadLatestSector(); + }; + /***/ }, -/* 56 */ +/* 50 */ /***/ function(module, exports, __webpack_require__) { + var Node = __webpack_require__(36); + /** - * Calculate the forces the nodes apply on eachother based on a repulsion field. - * This field is linearly approximated. + * This function can be called from the _doInAllSectors function * + * @param object + * @param overlappingNodes * @private */ - exports._calculateNodeForces = function () { - var dx, dy, distance, fx, fy, - repulsingForce, node1, node2, i, j; + exports._getNodesOverlappingWith = function(object, overlappingNodes) { + var nodes = this.nodes; + for (var nodeId in nodes) { + if (nodes.hasOwnProperty(nodeId)) { + if (nodes[nodeId].isOverlappingWith(object)) { + overlappingNodes.push(nodeId); + } + } + } + }; - var nodes = this.calculationNodes; - var nodeIndices = this.calculationNodeIndices; + /** + * retrieve all nodes overlapping with given object + * @param {Object} object An object with parameters left, top, right, bottom + * @return {Number[]} An array with id's of the overlapping nodes + * @private + */ + exports._getAllNodesOverlappingWith = function (object) { + var overlappingNodes = []; + this._doInAllActiveSectors("_getNodesOverlappingWith",object,overlappingNodes); + return overlappingNodes; + }; - // repulsing forces between nodes - var nodeDistance = this.constants.physics.hierarchicalRepulsion.nodeDistance; - // we loop from i over all but the last entree in the array - // j loops from i+1 to the last. This way we do not double count any of the indices, nor i == j - for (i = 0; i < nodeIndices.length - 1; i++) { - node1 = nodes[nodeIndices[i]]; - for (j = i + 1; j < nodeIndices.length; j++) { - node2 = nodes[nodeIndices[j]]; + /** + * Return a position object in canvasspace from a single point in screenspace + * + * @param pointer + * @returns {{left: number, top: number, right: number, bottom: number}} + * @private + */ + exports._pointerToPositionObject = function(pointer) { + var x = this._XconvertDOMtoCanvas(pointer.x); + var y = this._YconvertDOMtoCanvas(pointer.y); - // nodes only affect nodes on their level - if (node1.level == node2.level) { + return { + left: x, + top: y, + right: x, + bottom: y + }; + }; - dx = node2.x - node1.x; - dy = node2.y - node1.y; - distance = Math.sqrt(dx * dx + dy * dy); + /** + * Get the top node at the a specific point (like a click) + * + * @param {{x: Number, y: Number}} pointer + * @return {Node | null} node + * @private + */ + exports._getNodeAt = function (pointer) { + // we first check if this is an navigation controls element + var positionObject = this._pointerToPositionObject(pointer); + var overlappingNodes = this._getAllNodesOverlappingWith(positionObject); - var steepness = 0.05; - if (distance < nodeDistance) { - repulsingForce = -Math.pow(steepness*distance,2) + Math.pow(steepness*nodeDistance,2); - } - else { - repulsingForce = 0; - } - // normalize force with - if (distance == 0) { - distance = 0.01; - } - else { - repulsingForce = repulsingForce / distance; - } - fx = dx * repulsingForce; - fy = dy * repulsingForce; + // if there are overlapping nodes, select the last one, this is the + // one which is drawn on top of the others + if (overlappingNodes.length > 0) { + return this.nodes[overlappingNodes[overlappingNodes.length - 1]]; + } + else { + return null; + } + }; - node1.fx -= fx; - node1.fy -= fy; - node2.fx += fx; - node2.fy += fy; + + /** + * retrieve all edges overlapping with given object, selector is around center + * @param {Object} object An object with parameters left, top, right, bottom + * @return {Number[]} An array with id's of the overlapping nodes + * @private + */ + exports._getEdgesOverlappingWith = function (object, overlappingEdges) { + var edges = this.edges; + for (var edgeId in edges) { + if (edges.hasOwnProperty(edgeId)) { + if (edges[edgeId].isOverlappingWith(object)) { + overlappingEdges.push(edgeId); } } } @@ -30844,7467 +28298,3071 @@ return /******/ (function(modules) { // webpackBootstrap /** - * this function calculates the effects of the springs in the case of unsmooth curves. - * + * retrieve all nodes overlapping with given object + * @param {Object} object An object with parameters left, top, right, bottom + * @return {Number[]} An array with id's of the overlapping nodes * @private */ - exports._calculateHierarchicalSpringForces = function () { - var edgeLength, edge, edgeId; - var dx, dy, fx, fy, springForce, distance; - var edges = this.edges; - - var nodes = this.calculationNodes; - var nodeIndices = this.calculationNodeIndices; + exports._getAllEdgesOverlappingWith = function (object) { + var overlappingEdges = []; + this._doInAllActiveSectors("_getEdgesOverlappingWith",object,overlappingEdges); + return overlappingEdges; + }; + /** + * Place holder. To implement change the _getNodeAt to a _getObjectAt. Have the _getObjectAt call + * _getNodeAt and _getEdgesAt, then priortize the selection to user preferences. + * + * @param pointer + * @returns {null} + * @private + */ + exports._getEdgeAt = function(pointer) { + var positionObject = this._pointerToPositionObject(pointer); + var overlappingEdges = this._getAllEdgesOverlappingWith(positionObject); - for (var i = 0; i < nodeIndices.length; i++) { - var node1 = nodes[nodeIndices[i]]; - node1.springFx = 0; - node1.springFy = 0; + if (overlappingEdges.length > 0) { + return this.edges[overlappingEdges[overlappingEdges.length - 1]]; } + else { + return null; + } + }; - // forces caused by the edges, modelled as springs - for (edgeId in edges) { - if (edges.hasOwnProperty(edgeId)) { - edge = edges[edgeId]; - if (edge.connected) { - // only calculate forces if nodes are in the same sector - if (this.nodes.hasOwnProperty(edge.toId) && this.nodes.hasOwnProperty(edge.fromId)) { - edgeLength = edge.customLength ? edge.length : this.constants.physics.springLength; - // this implies that the edges between big clusters are longer - edgeLength += (edge.to.clusterSize + edge.from.clusterSize - 2) * this.constants.clustering.edgeGrowth; - - dx = (edge.from.x - edge.to.x); - dy = (edge.from.y - edge.to.y); - distance = Math.sqrt(dx * dx + dy * dy); - - if (distance == 0) { - distance = 0.01; - } - - // the 1/distance is so the fx and fy can be calculated without sine or cosine. - springForce = this.constants.physics.springConstant * (edgeLength - distance) / distance; + /** + * Add object to the selection array. + * + * @param obj + * @private + */ + exports._addToSelection = function(obj) { + if (obj instanceof Node) { + this.selectionObj.nodes[obj.id] = obj; + } + else { + this.selectionObj.edges[obj.id] = obj; + } + }; - fx = dx * springForce; - fy = dy * springForce; + /** + * Add object to the selection array. + * + * @param obj + * @private + */ + exports._addToHover = function(obj) { + if (obj instanceof Node) { + this.hoverObj.nodes[obj.id] = obj; + } + else { + this.hoverObj.edges[obj.id] = obj; + } + }; + /** + * Remove a single option from selection. + * + * @param {Object} obj + * @private + */ + exports._removeFromSelection = function(obj) { + if (obj instanceof Node) { + delete this.selectionObj.nodes[obj.id]; + } + else { + delete this.selectionObj.edges[obj.id]; + } + }; - if (edge.to.level != edge.from.level) { - edge.to.springFx -= fx; - edge.to.springFy -= fy; - edge.from.springFx += fx; - edge.from.springFy += fy; - } - else { - var factor = 0.5; - edge.to.fx -= factor*fx; - edge.to.fy -= factor*fy; - edge.from.fx += factor*fx; - edge.from.fy += factor*fy; - } - } - } + /** + * Unselect all. The selectionObj is useful for this. + * + * @param {Boolean} [doNotTrigger] | ignore trigger + * @private + */ + exports._unselectAll = function(doNotTrigger) { + if (doNotTrigger === undefined) { + doNotTrigger = false; + } + for(var nodeId in this.selectionObj.nodes) { + if(this.selectionObj.nodes.hasOwnProperty(nodeId)) { + this.selectionObj.nodes[nodeId].unselect(); + } + } + for(var edgeId in this.selectionObj.edges) { + if(this.selectionObj.edges.hasOwnProperty(edgeId)) { + this.selectionObj.edges[edgeId].unselect(); } } - // normalize spring forces - var springForce = 1; - var springFx, springFy; - for (i = 0; i < nodeIndices.length; i++) { - var node = nodes[nodeIndices[i]]; - springFx = Math.min(springForce,Math.max(-springForce,node.springFx)); - springFy = Math.min(springForce,Math.max(-springForce,node.springFy)); + this.selectionObj = {nodes:{},edges:{}}; - node.fx += springFx; - node.fy += springFy; + if (doNotTrigger == false) { + this.emit('select', this.getSelection()); } + }; - // retain energy balance - var totalFx = 0; - var totalFy = 0; - for (i = 0; i < nodeIndices.length; i++) { - var node = nodes[nodeIndices[i]]; - totalFx += node.fx; - totalFy += node.fy; + /** + * Unselect all clusters. The selectionObj is useful for this. + * + * @param {Boolean} [doNotTrigger] | ignore trigger + * @private + */ + exports._unselectClusters = function(doNotTrigger) { + if (doNotTrigger === undefined) { + doNotTrigger = false; } - var correctionFx = totalFx / nodeIndices.length; - var correctionFy = totalFy / nodeIndices.length; - for (i = 0; i < nodeIndices.length; i++) { - var node = nodes[nodeIndices[i]]; - node.fx -= correctionFx; - node.fy -= correctionFy; + for (var nodeId in this.selectionObj.nodes) { + if (this.selectionObj.nodes.hasOwnProperty(nodeId)) { + if (this.selectionObj.nodes[nodeId].clusterSize > 1) { + this.selectionObj.nodes[nodeId].unselect(); + this._removeFromSelection(this.selectionObj.nodes[nodeId]); + } + } } + if (doNotTrigger == false) { + this.emit('select', this.getSelection()); + } }; -/***/ }, -/* 57 */ -/***/ function(module, exports, __webpack_require__) { /** - * This function calculates the forces the nodes apply on eachother based on a gravitational model. - * The Barnes Hut method is used to speed up this N-body simulation. + * return the number of selected nodes * + * @returns {number} * @private */ - exports._calculateNodeForces = function() { - if (this.constants.physics.barnesHut.gravitationalConstant != 0) { - var node; - var nodes = this.calculationNodes; - var nodeIndices = this.calculationNodeIndices; - var nodeCount = nodeIndices.length; - - this._formBarnesHutTree(nodes,nodeIndices); + exports._getSelectedNodeCount = function() { + var count = 0; + for (var nodeId in this.selectionObj.nodes) { + if (this.selectionObj.nodes.hasOwnProperty(nodeId)) { + count += 1; + } + } + return count; + }; - var barnesHutTree = this.barnesHutTree; + /** + * return the selected node + * + * @returns {number} + * @private + */ + exports._getSelectedNode = function() { + for (var nodeId in this.selectionObj.nodes) { + if (this.selectionObj.nodes.hasOwnProperty(nodeId)) { + return this.selectionObj.nodes[nodeId]; + } + } + return null; + }; - // place the nodes one by one recursively - for (var i = 0; i < nodeCount; i++) { - node = nodes[nodeIndices[i]]; - // starting with root is irrelevant, it never passes the BarnesHut condition - this._getForceContribution(barnesHutTree.root.children.NW,node); - this._getForceContribution(barnesHutTree.root.children.NE,node); - this._getForceContribution(barnesHutTree.root.children.SW,node); - this._getForceContribution(barnesHutTree.root.children.SE,node); + /** + * return the selected edge + * + * @returns {number} + * @private + */ + exports._getSelectedEdge = function() { + for (var edgeId in this.selectionObj.edges) { + if (this.selectionObj.edges.hasOwnProperty(edgeId)) { + return this.selectionObj.edges[edgeId]; } } + return null; }; /** - * This function traverses the barnesHutTree. It checks when it can approximate distant nodes with their center of mass. - * If a region contains a single node, we check if it is not itself, then we apply the force. + * return the number of selected edges * - * @param parentBranch - * @param node + * @returns {number} * @private */ - exports._getForceContribution = function(parentBranch,node) { - // we get no force contribution from an empty region - if (parentBranch.childrenCount > 0) { - var dx,dy,distance; + exports._getSelectedEdgeCount = function() { + var count = 0; + for (var edgeId in this.selectionObj.edges) { + if (this.selectionObj.edges.hasOwnProperty(edgeId)) { + count += 1; + } + } + return count; + }; - // get the distance from the center of mass to the node. - dx = parentBranch.centerOfMass.x - node.x; - dy = parentBranch.centerOfMass.y - node.y; - distance = Math.sqrt(dx * dx + dy * dy); - // BarnesHut condition - // original condition : s/d < theta = passed === d/s > 1/theta = passed - // calcSize = 1/s --> d * 1/s > 1/theta = passed - if (distance * parentBranch.calcSize > this.constants.physics.barnesHut.theta) { - // duplicate code to reduce function calls to speed up program - if (distance == 0) { - distance = 0.1*Math.random(); - dx = distance; - } - var gravityForce = this.constants.physics.barnesHut.gravitationalConstant * parentBranch.mass * node.mass / (distance * distance * distance); - var fx = dx * gravityForce; - var fy = dy * gravityForce; - node.fx += fx; - node.fy += fy; + /** + * return the number of selected objects. + * + * @returns {number} + * @private + */ + exports._getSelectedObjectCount = function() { + var count = 0; + for(var nodeId in this.selectionObj.nodes) { + if(this.selectionObj.nodes.hasOwnProperty(nodeId)) { + count += 1; } - else { - // Did not pass the condition, go into children if available - if (parentBranch.childrenCount == 4) { - this._getForceContribution(parentBranch.children.NW,node); - this._getForceContribution(parentBranch.children.NE,node); - this._getForceContribution(parentBranch.children.SW,node); - this._getForceContribution(parentBranch.children.SE,node); - } - else { // parentBranch must have only one node, if it was empty we wouldnt be here - if (parentBranch.children.data.id != node.id) { // if it is not self - // duplicate code to reduce function calls to speed up program - if (distance == 0) { - distance = 0.5*Math.random(); - dx = distance; - } - var gravityForce = this.constants.physics.barnesHut.gravitationalConstant * parentBranch.mass * node.mass / (distance * distance * distance); - var fx = dx * gravityForce; - var fy = dy * gravityForce; - node.fx += fx; - node.fy += fy; - } - } + } + for(var edgeId in this.selectionObj.edges) { + if(this.selectionObj.edges.hasOwnProperty(edgeId)) { + count += 1; } } + return count; }; /** - * This function constructs the barnesHut tree recursively. It creates the root, splits it and starts placing the nodes. + * Check if anything is selected * - * @param nodes - * @param nodeIndices + * @returns {boolean} * @private */ - exports._formBarnesHutTree = function(nodes,nodeIndices) { - var node; - var nodeCount = nodeIndices.length; - - var minX = Number.MAX_VALUE, - minY = Number.MAX_VALUE, - maxX =-Number.MAX_VALUE, - maxY =-Number.MAX_VALUE; - - // get the range of the nodes - for (var i = 0; i < nodeCount; i++) { - var x = nodes[nodeIndices[i]].x; - var y = nodes[nodeIndices[i]].y; - if (x < minX) { minX = x; } - if (x > maxX) { maxX = x; } - if (y < minY) { minY = y; } - if (y > maxY) { maxY = y; } + exports._selectionIsEmpty = function() { + for(var nodeId in this.selectionObj.nodes) { + if(this.selectionObj.nodes.hasOwnProperty(nodeId)) { + return false; + } } - // make the range a square - var sizeDiff = Math.abs(maxX - minX) - Math.abs(maxY - minY); // difference between X and Y - if (sizeDiff > 0) {minY -= 0.5 * sizeDiff; maxY += 0.5 * sizeDiff;} // xSize > ySize - else {minX += 0.5 * sizeDiff; maxX -= 0.5 * sizeDiff;} // xSize < ySize - + for(var edgeId in this.selectionObj.edges) { + if(this.selectionObj.edges.hasOwnProperty(edgeId)) { + return false; + } + } + return true; + }; - var minimumTreeSize = 1e-5; - var rootSize = Math.max(minimumTreeSize,Math.abs(maxX - minX)); - var halfRootSize = 0.5 * rootSize; - var centerX = 0.5 * (minX + maxX), centerY = 0.5 * (minY + maxY); - // construct the barnesHutTree - var barnesHutTree = { - root:{ - centerOfMass: {x:0, y:0}, - mass:0, - range: { - minX: centerX-halfRootSize,maxX:centerX+halfRootSize, - minY: centerY-halfRootSize,maxY:centerY+halfRootSize - }, - size: rootSize, - calcSize: 1 / rootSize, - children: { data:null}, - maxWidth: 0, - level: 0, - childrenCount: 4 + /** + * check if one of the selected nodes is a cluster. + * + * @returns {boolean} + * @private + */ + exports._clusterInSelection = function() { + for(var nodeId in this.selectionObj.nodes) { + if(this.selectionObj.nodes.hasOwnProperty(nodeId)) { + if (this.selectionObj.nodes[nodeId].clusterSize > 1) { + return true; + } } - }; - this._splitBranch(barnesHutTree.root); - - // place the nodes one by one recursively - for (i = 0; i < nodeCount; i++) { - node = nodes[nodeIndices[i]]; - this._placeInTree(barnesHutTree.root,node); } - - // make global - this.barnesHutTree = barnesHutTree + return false; }; + /** + * select the edges connected to the node that is being selected + * + * @param {Node} node + * @private + */ + exports._selectConnectedEdges = function(node) { + for (var i = 0; i < node.dynamicEdges.length; i++) { + var edge = node.dynamicEdges[i]; + edge.select(); + this._addToSelection(edge); + } + }; /** - * this updates the mass of a branch. this is increased by adding a node. + * select the edges connected to the node that is being selected * - * @param parentBranch - * @param node + * @param {Node} node * @private */ - exports._updateBranchMass = function(parentBranch, node) { - var totalMass = parentBranch.mass + node.mass; - var totalMassInv = 1/totalMass; + exports._hoverConnectedEdges = function(node) { + for (var i = 0; i < node.dynamicEdges.length; i++) { + var edge = node.dynamicEdges[i]; + edge.hover = true; + this._addToHover(edge); + } + }; - parentBranch.centerOfMass.x = parentBranch.centerOfMass.x * parentBranch.mass + node.x * node.mass; - parentBranch.centerOfMass.x *= totalMassInv; - parentBranch.centerOfMass.y = parentBranch.centerOfMass.y * parentBranch.mass + node.y * node.mass; - parentBranch.centerOfMass.y *= totalMassInv; + /** + * unselect the edges connected to the node that is being selected + * + * @param {Node} node + * @private + */ + exports._unselectConnectedEdges = function(node) { + for (var i = 0; i < node.dynamicEdges.length; i++) { + var edge = node.dynamicEdges[i]; + edge.unselect(); + this._removeFromSelection(edge); + } + }; - parentBranch.mass = totalMass; - var biggestSize = Math.max(Math.max(node.height,node.radius),node.width); - parentBranch.maxWidth = (parentBranch.maxWidth < biggestSize) ? biggestSize : parentBranch.maxWidth; - }; /** - * determine in which branch the node will be placed. + * This is called when someone clicks on a node. either select or deselect it. + * If there is an existing selection and we don't want to append to it, clear the existing selection * - * @param parentBranch - * @param node - * @param skipMassUpdate + * @param {Node || Edge} object + * @param {Boolean} append + * @param {Boolean} [doNotTrigger] | ignore trigger * @private */ - exports._placeInTree = function(parentBranch,node,skipMassUpdate) { - if (skipMassUpdate != true || skipMassUpdate === undefined) { - // update the mass of the branch. - this._updateBranchMass(parentBranch,node); + exports._selectObject = function(object, append, doNotTrigger, highlightEdges) { + if (doNotTrigger === undefined) { + doNotTrigger = false; + } + if (highlightEdges === undefined) { + highlightEdges = true; } - if (parentBranch.children.NW.range.maxX > node.x) { // in NW or SW - if (parentBranch.children.NW.range.maxY > node.y) { // in NW - this._placeInRegion(parentBranch,node,"NW"); - } - else { // in SW - this._placeInRegion(parentBranch,node,"SW"); - } + if (this._selectionIsEmpty() == false && append == false && this.forceAppendSelection == false) { + this._unselectAll(true); } - else { // in NE or SE - if (parentBranch.children.NW.range.maxY > node.y) { // in NE - this._placeInRegion(parentBranch,node,"NE"); - } - else { // in SE - this._placeInRegion(parentBranch,node,"SE"); + + if (object.selected == false) { + object.select(); + this._addToSelection(object); + if (object instanceof Node && this.blockConnectingEdgeSelection == false && highlightEdges == true) { + this._selectConnectedEdges(object); } } + else { + object.unselect(); + this._removeFromSelection(object); + } + + if (doNotTrigger == false) { + this.emit('select', this.getSelection()); + } }; /** - * actually place the node in a region (or branch) + * This is called when someone clicks on a node. either select or deselect it. + * If there is an existing selection and we don't want to append to it, clear the existing selection * - * @param parentBranch - * @param node - * @param region + * @param {Node || Edge} object * @private */ - exports._placeInRegion = function(parentBranch,node,region) { - switch (parentBranch.children[region].childrenCount) { - case 0: // place node here - parentBranch.children[region].children.data = node; - parentBranch.children[region].childrenCount = 1; - this._updateBranchMass(parentBranch.children[region],node); - break; - case 1: // convert into children - // if there are two nodes exactly overlapping (on init, on opening of cluster etc.) - // we move one node a pixel and we do not put it in the tree. - if (parentBranch.children[region].children.data.x == node.x && - parentBranch.children[region].children.data.y == node.y) { - node.x += Math.random(); - node.y += Math.random(); - } - else { - this._splitBranch(parentBranch.children[region]); - this._placeInTree(parentBranch.children[region],node); - } - break; - case 4: // place in branch - this._placeInTree(parentBranch.children[region],node); - break; + exports._blurObject = function(object) { + if (object.hover == true) { + object.hover = false; + this.emit("blurNode",{node:object.id}); } }; - /** - * this function splits a branch into 4 sub branches. If the branch contained a node, we place it in the subbranch - * after the split is complete. + * This is called when someone clicks on a node. either select or deselect it. + * If there is an existing selection and we don't want to append to it, clear the existing selection * - * @param parentBranch + * @param {Node || Edge} object * @private */ - exports._splitBranch = function(parentBranch) { - // if the branch is shaded with a node, replace the node in the new subset. - var containedNode = null; - if (parentBranch.childrenCount == 1) { - containedNode = parentBranch.children.data; - parentBranch.mass = 0; parentBranch.centerOfMass.x = 0; parentBranch.centerOfMass.y = 0; + exports._hoverObject = function(object) { + if (object.hover == false) { + object.hover = true; + this._addToHover(object); + if (object instanceof Node) { + this.emit("hoverNode",{node:object.id}); + } } - parentBranch.childrenCount = 4; - parentBranch.children.data = null; - this._insertRegion(parentBranch,"NW"); - this._insertRegion(parentBranch,"NE"); - this._insertRegion(parentBranch,"SW"); - this._insertRegion(parentBranch,"SE"); - - if (containedNode != null) { - this._placeInTree(parentBranch,containedNode); + if (object instanceof Node) { + this._hoverConnectedEdges(object); } }; /** - * This function subdivides the region into four new segments. - * Specifically, this inserts a single new segment. - * It fills the children section of the parentBranch + * handles the selection part of the touch, only for navigation controls elements; + * Touch is triggered before tap, also before hold. Hold triggers after a while. + * This is the most responsive solution * - * @param parentBranch - * @param region - * @param parentRange + * @param {Object} pointer * @private */ - exports._insertRegion = function(parentBranch, region) { - var minX,maxX,minY,maxY; - var childSize = 0.5 * parentBranch.size; - switch (region) { - case "NW": - minX = parentBranch.range.minX; - maxX = parentBranch.range.minX + childSize; - minY = parentBranch.range.minY; - maxY = parentBranch.range.minY + childSize; - break; - case "NE": - minX = parentBranch.range.minX + childSize; - maxX = parentBranch.range.maxX; - minY = parentBranch.range.minY; - maxY = parentBranch.range.minY + childSize; - break; - case "SW": - minX = parentBranch.range.minX; - maxX = parentBranch.range.minX + childSize; - minY = parentBranch.range.minY + childSize; - maxY = parentBranch.range.maxY; - break; - case "SE": - minX = parentBranch.range.minX + childSize; - maxX = parentBranch.range.maxX; - minY = parentBranch.range.minY + childSize; - maxY = parentBranch.range.maxY; - break; - } + exports._handleTouch = function(pointer) { + }; - parentBranch.children[region] = { - centerOfMass:{x:0,y:0}, - mass:0, - range:{minX:minX,maxX:maxX,minY:minY,maxY:maxY}, - size: 0.5 * parentBranch.size, - calcSize: 2 * parentBranch.calcSize, - children: {data:null}, - maxWidth: 0, - level: parentBranch.level+1, - childrenCount: 0 - }; + /** + * handles the selection part of the tap; + * + * @param {Object} pointer + * @private + */ + exports._handleTap = function(pointer) { + var node = this._getNodeAt(pointer); + if (node != null) { + this._selectObject(node,false); + } + else { + var edge = this._getEdgeAt(pointer); + if (edge != null) { + this._selectObject(edge,false); + } + else { + this._unselectAll(); + } + } + this.emit("click", this.getSelection()); + this._redraw(); }; /** - * This function is for debugging purposed, it draws the tree. + * handles the selection part of the double tap and opens a cluster if needed * - * @param ctx - * @param color + * @param {Object} pointer * @private */ - exports._drawTree = function(ctx,color) { - if (this.barnesHutTree !== undefined) { - - ctx.lineWidth = 1; - - this._drawBranch(this.barnesHutTree.root,ctx,color); + exports._handleDoubleTap = function(pointer) { + var node = this._getNodeAt(pointer); + if (node != null && node !== undefined) { + // we reset the areaCenter here so the opening of the node will occur + this.areaCenter = {"x" : this._XconvertDOMtoCanvas(pointer.x), + "y" : this._YconvertDOMtoCanvas(pointer.y)}; + this.openCluster(node); } + this.emit("doubleClick", this.getSelection()); }; /** - * This function is for debugging purposes. It draws the branches recursively. + * Handle the onHold selection part * - * @param branch - * @param ctx - * @param color + * @param pointer * @private */ - exports._drawBranch = function(branch,ctx,color) { - if (color === undefined) { - color = "#FF0000"; + exports._handleOnHold = function(pointer) { + var node = this._getNodeAt(pointer); + if (node != null) { + this._selectObject(node,true); } - - if (branch.childrenCount == 4) { - this._drawBranch(branch.children.NW,ctx); - this._drawBranch(branch.children.NE,ctx); - this._drawBranch(branch.children.SE,ctx); - this._drawBranch(branch.children.SW,ctx); + else { + var edge = this._getEdgeAt(pointer); + if (edge != null) { + this._selectObject(edge,true); + } } - ctx.strokeStyle = color; - ctx.beginPath(); - ctx.moveTo(branch.range.minX,branch.range.minY); - ctx.lineTo(branch.range.maxX,branch.range.minY); - ctx.stroke(); - - ctx.beginPath(); - ctx.moveTo(branch.range.maxX,branch.range.minY); - ctx.lineTo(branch.range.maxX,branch.range.maxY); - ctx.stroke(); - - ctx.beginPath(); - ctx.moveTo(branch.range.maxX,branch.range.maxY); - ctx.lineTo(branch.range.minX,branch.range.maxY); - ctx.stroke(); - - ctx.beginPath(); - ctx.moveTo(branch.range.minX,branch.range.maxY); - ctx.lineTo(branch.range.minX,branch.range.minY); - ctx.stroke(); - - /* - if (branch.mass > 0) { - ctx.circle(branch.centerOfMass.x, branch.centerOfMass.y, 3*branch.mass); - ctx.stroke(); - } - */ + this._redraw(); }; -/***/ }, -/* 58 */ -/***/ function(module, exports, __webpack_require__) { + /** + * handle the onRelease event. These functions are here for the navigation controls module. + * + * @private + */ + exports._handleOnRelease = function(pointer) { - var map = { - "./ar": 61, - "./ar-ma": 59, - "./ar-ma.js": 59, - "./ar-sa": 60, - "./ar-sa.js": 60, - "./ar.js": 61, - "./az": 62, - "./az.js": 62, - "./bg": 63, - "./bg.js": 63, - "./bn": 64, - "./bn.js": 64, - "./br": 65, - "./br.js": 65, - "./bs": 66, - "./bs.js": 66, - "./ca": 67, - "./ca.js": 67, - "./cs": 68, - "./cs.js": 68, - "./cv": 69, - "./cv.js": 69, - "./cy": 70, - "./cy.js": 70, - "./da": 71, - "./da.js": 71, - "./de": 73, - "./de-at": 72, - "./de-at.js": 72, - "./de.js": 73, - "./el": 74, - "./el.js": 74, - "./en-au": 75, - "./en-au.js": 75, - "./en-ca": 76, - "./en-ca.js": 76, - "./en-gb": 77, - "./en-gb.js": 77, - "./eo": 78, - "./eo.js": 78, - "./es": 79, - "./es.js": 79, - "./et": 80, - "./et.js": 80, - "./eu": 81, - "./eu.js": 81, - "./fa": 82, - "./fa.js": 82, - "./fi": 83, - "./fi.js": 83, - "./fo": 84, - "./fo.js": 84, - "./fr": 86, - "./fr-ca": 85, - "./fr-ca.js": 85, - "./fr.js": 86, - "./gl": 87, - "./gl.js": 87, - "./he": 88, - "./he.js": 88, - "./hi": 89, - "./hi.js": 89, - "./hr": 90, - "./hr.js": 90, - "./hu": 91, - "./hu.js": 91, - "./hy-am": 92, - "./hy-am.js": 92, - "./id": 93, - "./id.js": 93, - "./is": 94, - "./is.js": 94, - "./it": 95, - "./it.js": 95, - "./ja": 96, - "./ja.js": 96, - "./ka": 97, - "./ka.js": 97, - "./km": 98, - "./km.js": 98, - "./ko": 99, - "./ko.js": 99, - "./lb": 100, - "./lb.js": 100, - "./lt": 101, - "./lt.js": 101, - "./lv": 102, - "./lv.js": 102, - "./mk": 103, - "./mk.js": 103, - "./ml": 104, - "./ml.js": 104, - "./mr": 105, - "./mr.js": 105, - "./ms-my": 106, - "./ms-my.js": 106, - "./nb": 107, - "./nb.js": 107, - "./ne": 108, - "./ne.js": 108, - "./nl": 109, - "./nl.js": 109, - "./nn": 110, - "./nn.js": 110, - "./pl": 111, - "./pl.js": 111, - "./pt": 113, - "./pt-br": 112, - "./pt-br.js": 112, - "./pt.js": 113, - "./ro": 114, - "./ro.js": 114, - "./ru": 115, - "./ru.js": 115, - "./sk": 116, - "./sk.js": 116, - "./sl": 117, - "./sl.js": 117, - "./sq": 118, - "./sq.js": 118, - "./sr": 120, - "./sr-cyrl": 119, - "./sr-cyrl.js": 119, - "./sr.js": 120, - "./sv": 121, - "./sv.js": 121, - "./ta": 122, - "./ta.js": 122, - "./th": 123, - "./th.js": 123, - "./tl-ph": 124, - "./tl-ph.js": 124, - "./tr": 125, - "./tr.js": 125, - "./tzm": 127, - "./tzm-latn": 126, - "./tzm-latn.js": 126, - "./tzm.js": 127, - "./uk": 128, - "./uk.js": 128, - "./uz": 129, - "./uz.js": 129, - "./vi": 130, - "./vi.js": 130, - "./zh-cn": 131, - "./zh-cn.js": 131, - "./zh-tw": 132, - "./zh-tw.js": 132 - }; - function webpackContext(req) { - return __webpack_require__(webpackContextResolve(req)); - }; - function webpackContextResolve(req) { - return map[req] || (function() { throw new Error("Cannot find module '" + req + "'.") }()); - }; - webpackContext.keys = function webpackContextKeys() { - return Object.keys(map); }; - webpackContext.resolve = webpackContextResolve; - module.exports = webpackContext; - - -/***/ }, -/* 59 */ -/***/ function(module, exports, __webpack_require__) { - - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// moment.js language configuration - // language : Moroccan Arabic (ar-ma) - // author : ElFadili Yassine : https://github.com/ElFadiliY - // author : Abdel Said : https://github.com/abdelsaid - - (function (factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(53)], __WEBPACK_AMD_DEFINE_RESULT__ = (factory.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory(window.moment); // Browser global - } - }(function (moment) { - return moment.lang('ar-ma', { - months : "يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"), - monthsShort : "يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"), - weekdays : "الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"), - weekdaysShort : "احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"), - weekdaysMin : "ح_ن_ث_ر_خ_ج_س".split("_"), - longDateFormat : { - LT : "HH:mm", - L : "DD/MM/YYYY", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY LT", - LLLL : "dddd D MMMM YYYY LT" - }, - calendar : { - sameDay: "[اليوم على الساعة] LT", - nextDay: '[غدا على الساعة] LT', - nextWeek: 'dddd [على الساعة] LT', - lastDay: '[أمس على الساعة] LT', - lastWeek: 'dddd [على الساعة] LT', - sameElse: 'L' - }, - relativeTime : { - future : "في %s", - past : "منذ %s", - s : "ثوان", - m : "دقيقة", - mm : "%d دقائق", - h : "ساعة", - hh : "%d ساعات", - d : "يوم", - dd : "%d أيام", - M : "شهر", - MM : "%d أشهر", - y : "سنة", - yy : "%d سنوات" - }, - week : { - dow : 6, // Saturday is the first day of the week. - doy : 12 // The week that contains Jan 1st is the first week of the year. - } - }); - })); - - -/***/ }, -/* 60 */ -/***/ function(module, exports, __webpack_require__) { - - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// moment.js language configuration - // language : Arabic Saudi Arabia (ar-sa) - // author : Suhail Alkowaileet : https://github.com/xsoh - - (function (factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(53)], __WEBPACK_AMD_DEFINE_RESULT__ = (factory.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory(window.moment); // Browser global - } - }(function (moment) { - var symbolMap = { - '1': '١', - '2': '٢', - '3': '٣', - '4': '٤', - '5': '٥', - '6': '٦', - '7': '٧', - '8': '٨', - '9': '٩', - '0': '٠' - }, numberMap = { - '١': '1', - '٢': '2', - '٣': '3', - '٤': '4', - '٥': '5', - '٦': '6', - '٧': '7', - '٨': '8', - '٩': '9', - '٠': '0' - }; - - return moment.lang('ar-sa', { - months : "يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"), - monthsShort : "يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"), - weekdays : "الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"), - weekdaysShort : "أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"), - weekdaysMin : "ح_ن_ث_ر_خ_ج_س".split("_"), - longDateFormat : { - LT : "HH:mm", - L : "DD/MM/YYYY", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY LT", - LLLL : "dddd D MMMM YYYY LT" - }, - meridiem : function (hour, minute, isLower) { - if (hour < 12) { - return "ص"; - } else { - return "م"; - } - }, - calendar : { - sameDay: "[اليوم على الساعة] LT", - nextDay: '[غدا على الساعة] LT', - nextWeek: 'dddd [على الساعة] LT', - lastDay: '[أمس على الساعة] LT', - lastWeek: 'dddd [على الساعة] LT', - sameElse: 'L' - }, - relativeTime : { - future : "في %s", - past : "منذ %s", - s : "ثوان", - m : "دقيقة", - mm : "%d دقائق", - h : "ساعة", - hh : "%d ساعات", - d : "يوم", - dd : "%d أيام", - M : "شهر", - MM : "%d أشهر", - y : "سنة", - yy : "%d سنوات" - }, - preparse: function (string) { - return string.replace(/[۰-۹]/g, function (match) { - return numberMap[match]; - }).replace(/،/g, ','); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap[match]; - }).replace(/,/g, '،'); - }, - week : { - dow : 6, // Saturday is the first day of the week. - doy : 12 // The week that contains Jan 1st is the first week of the year. - } - }); - })); - - -/***/ }, -/* 61 */ -/***/ function(module, exports, __webpack_require__) { - - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// moment.js language configuration - // language : Arabic (ar) - // author : Abdel Said : https://github.com/abdelsaid - // changes in months, weekdays : Ahmed Elkhatib - - (function (factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(53)], __WEBPACK_AMD_DEFINE_RESULT__ = (factory.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory(window.moment); // Browser global - } - }(function (moment) { - var symbolMap = { - '1': '١', - '2': '٢', - '3': '٣', - '4': '٤', - '5': '٥', - '6': '٦', - '7': '٧', - '8': '٨', - '9': '٩', - '0': '٠' - }, numberMap = { - '١': '1', - '٢': '2', - '٣': '3', - '٤': '4', - '٥': '5', - '٦': '6', - '٧': '7', - '٨': '8', - '٩': '9', - '٠': '0' - }; - - return moment.lang('ar', { - months : "يناير/ كانون الثاني_فبراير/ شباط_مارس/ آذار_أبريل/ نيسان_مايو/ أيار_يونيو/ حزيران_يوليو/ تموز_أغسطس/ آب_سبتمبر/ أيلول_أكتوبر/ تشرين الأول_نوفمبر/ تشرين الثاني_ديسمبر/ كانون الأول".split("_"), - monthsShort : "يناير/ كانون الثاني_فبراير/ شباط_مارس/ آذار_أبريل/ نيسان_مايو/ أيار_يونيو/ حزيران_يوليو/ تموز_أغسطس/ آب_سبتمبر/ أيلول_أكتوبر/ تشرين الأول_نوفمبر/ تشرين الثاني_ديسمبر/ كانون الأول".split("_"), - weekdays : "الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"), - weekdaysShort : "أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"), - weekdaysMin : "ح_ن_ث_ر_خ_ج_س".split("_"), - longDateFormat : { - LT : "HH:mm", - L : "DD/MM/YYYY", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY LT", - LLLL : "dddd D MMMM YYYY LT" - }, - meridiem : function (hour, minute, isLower) { - if (hour < 12) { - return "ص"; - } else { - return "م"; - } - }, - calendar : { - sameDay: "[اليوم على الساعة] LT", - nextDay: '[غدا على الساعة] LT', - nextWeek: 'dddd [على الساعة] LT', - lastDay: '[أمس على الساعة] LT', - lastWeek: 'dddd [على الساعة] LT', - sameElse: 'L' - }, - relativeTime : { - future : "في %s", - past : "منذ %s", - s : "ثوان", - m : "دقيقة", - mm : "%d دقائق", - h : "ساعة", - hh : "%d ساعات", - d : "يوم", - dd : "%d أيام", - M : "شهر", - MM : "%d أشهر", - y : "سنة", - yy : "%d سنوات" - }, - preparse: function (string) { - return string.replace(/[۰-۹]/g, function (match) { - return numberMap[match]; - }).replace(/،/g, ','); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap[match]; - }).replace(/,/g, '،'); - }, - week : { - dow : 6, // Saturday is the first day of the week. - doy : 12 // The week that contains Jan 1st is the first week of the year. - } - }); - })); -/***/ }, -/* 62 */ -/***/ function(module, exports, __webpack_require__) { - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// moment.js language configuration - // language : azerbaijani (az) - // author : topchiyev : https://github.com/topchiyev + /** + * + * retrieve the currently selected objects + * @return {{nodes: Array., edges: Array.}} selection + */ + exports.getSelection = function() { + var nodeIds = this.getSelectedNodes(); + var edgeIds = this.getSelectedEdges(); + return {nodes:nodeIds, edges:edgeIds}; + }; - (function (factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(53)], __WEBPACK_AMD_DEFINE_RESULT__ = (factory.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory(window.moment); // Browser global + /** + * + * retrieve the currently selected nodes + * @return {String[]} selection An array with the ids of the + * selected nodes. + */ + exports.getSelectedNodes = function() { + var idArray = []; + for(var nodeId in this.selectionObj.nodes) { + if(this.selectionObj.nodes.hasOwnProperty(nodeId)) { + idArray.push(nodeId); } - }(function (moment) { - - var suffixes = { - 1: "-inci", - 5: "-inci", - 8: "-inci", - 70: "-inci", - 80: "-inci", - - 2: "-nci", - 7: "-nci", - 20: "-nci", - 50: "-nci", - - 3: "-üncü", - 4: "-üncü", - 100: "-üncü", - - 6: "-ncı", - - 9: "-uncu", - 10: "-uncu", - 30: "-uncu", - - 60: "-ıncı", - 90: "-ıncı" - }; - return moment.lang('az', { - months : "yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr".split("_"), - monthsShort : "yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek".split("_"), - weekdays : "Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə".split("_"), - weekdaysShort : "Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən".split("_"), - weekdaysMin : "Bz_BE_ÇA_Çə_CA_Cü_Şə".split("_"), - longDateFormat : { - LT : "HH:mm", - L : "DD.MM.YYYY", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY LT", - LLLL : "dddd, D MMMM YYYY LT" - }, - calendar : { - sameDay : '[bugün saat] LT', - nextDay : '[sabah saat] LT', - nextWeek : '[gələn həftə] dddd [saat] LT', - lastDay : '[dünən] LT', - lastWeek : '[keçən həftə] dddd [saat] LT', - sameElse : 'L' - }, - relativeTime : { - future : "%s sonra", - past : "%s əvvəl", - s : "birneçə saniyyə", - m : "bir dəqiqə", - mm : "%d dəqiqə", - h : "bir saat", - hh : "%d saat", - d : "bir gün", - dd : "%d gün", - M : "bir ay", - MM : "%d ay", - y : "bir il", - yy : "%d il" - }, - meridiem : function (hour, minute, isLower) { - if (hour < 4) { - return "gecə"; - } else if (hour < 12) { - return "səhər"; - } else if (hour < 17) { - return "gündüz"; - } else { - return "axşam"; - } - }, - ordinal : function (number) { - if (number === 0) { // special case for zero - return number + "-ıncı"; - } - var a = number % 10, - b = number % 100 - a, - c = number >= 100 ? 100 : null; - - return number + (suffixes[a] || suffixes[b] || suffixes[c]); - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - })); + } + return idArray + }; + /** + * + * retrieve the currently selected edges + * @return {Array} selection An array with the ids of the + * selected nodes. + */ + exports.getSelectedEdges = function() { + var idArray = []; + for(var edgeId in this.selectionObj.edges) { + if(this.selectionObj.edges.hasOwnProperty(edgeId)) { + idArray.push(edgeId); + } + } + return idArray; + }; -/***/ }, -/* 63 */ -/***/ function(module, exports, __webpack_require__) { - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// moment.js language configuration - // language : bulgarian (bg) - // author : Krasen Borisov : https://github.com/kraz + /** + * select zero or more nodes + * @param {Number[] | String[]} selection An array with the ids of the + * selected nodes. + */ + exports.setSelection = function(selection) { + var i, iMax, id; - (function (factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(53)], __WEBPACK_AMD_DEFINE_RESULT__ = (factory.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory(window.moment); // Browser global - } - }(function (moment) { - return moment.lang('bg', { - months : "януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември".split("_"), - monthsShort : "янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек".split("_"), - weekdays : "неделя_понеделник_вторник_сряда_четвъртък_петък_събота".split("_"), - weekdaysShort : "нед_пон_вто_сря_чет_пет_съб".split("_"), - weekdaysMin : "нд_пн_вт_ср_чт_пт_сб".split("_"), - longDateFormat : { - LT : "H:mm", - L : "D.MM.YYYY", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY LT", - LLLL : "dddd, D MMMM YYYY LT" - }, - calendar : { - sameDay : '[Днес в] LT', - nextDay : '[Утре в] LT', - nextWeek : 'dddd [в] LT', - lastDay : '[Вчера в] LT', - lastWeek : function () { - switch (this.day()) { - case 0: - case 3: - case 6: - return '[В изминалата] dddd [в] LT'; - case 1: - case 2: - case 4: - case 5: - return '[В изминалия] dddd [в] LT'; - } - }, - sameElse : 'L' - }, - relativeTime : { - future : "след %s", - past : "преди %s", - s : "няколко секунди", - m : "минута", - mm : "%d минути", - h : "час", - hh : "%d часа", - d : "ден", - dd : "%d дни", - M : "месец", - MM : "%d месеца", - y : "година", - yy : "%d години" - }, - ordinal : function (number) { - var lastDigit = number % 10, - last2Digits = number % 100; - if (number === 0) { - return number + '-ев'; - } else if (last2Digits === 0) { - return number + '-ен'; - } else if (last2Digits > 10 && last2Digits < 20) { - return number + '-ти'; - } else if (lastDigit === 1) { - return number + '-ви'; - } else if (lastDigit === 2) { - return number + '-ри'; - } else if (lastDigit === 7 || lastDigit === 8) { - return number + '-ми'; - } else { - return number + '-ти'; - } - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - })); + if (!selection || (selection.length == undefined)) + throw 'Selection must be an array with ids'; + // first unselect any selected node + this._unselectAll(true); -/***/ }, -/* 64 */ -/***/ function(module, exports, __webpack_require__) { + for (i = 0, iMax = selection.length; i < iMax; i++) { + id = selection[i]; - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// moment.js language configuration - // language : Bengali (bn) - // author : Kaushik Gandhi : https://github.com/kaushikgandhi + var node = this.nodes[id]; + if (!node) { + throw new RangeError('Node with id "' + id + '" not found'); + } + this._selectObject(node,true,true); + } - (function (factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(53)], __WEBPACK_AMD_DEFINE_RESULT__ = (factory.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory(window.moment); // Browser global - } - }(function (moment) { - var symbolMap = { - '1': '১', - '2': '২', - '3': '৩', - '4': '৪', - '5': '৫', - '6': '৬', - '7': '৭', - '8': '৮', - '9': '৯', - '0': '০' - }, - numberMap = { - '১': '1', - '২': '2', - '৩': '3', - '৪': '4', - '৫': '5', - '৬': '6', - '৭': '7', - '৮': '8', - '৯': '9', - '০': '0' - }; + console.log("setSelection is deprecated. Please use selectNodes instead.") - return moment.lang('bn', { - months : 'জানুয়ারী_ফেবুয়ারী_মার্চ_এপ্রিল_মে_জুন_জুলাই_অগাস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split("_"), - monthsShort : 'জানু_ফেব_মার্চ_এপর_মে_জুন_জুল_অগ_সেপ্ট_অক্টো_নভ_ডিসেম্'.split("_"), - weekdays : 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পত্তিবার_শুক্রুবার_শনিবার'.split("_"), - weekdaysShort : 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পত্তি_শুক্রু_শনি'.split("_"), - weekdaysMin : 'রব_সম_মঙ্গ_বু_ব্রিহ_শু_শনি'.split("_"), - longDateFormat : { - LT : "A h:mm সময়", - L : "DD/MM/YYYY", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY, LT", - LLLL : "dddd, D MMMM YYYY, LT" - }, - calendar : { - sameDay : '[আজ] LT', - nextDay : '[আগামীকাল] LT', - nextWeek : 'dddd, LT', - lastDay : '[গতকাল] LT', - lastWeek : '[গত] dddd, LT', - sameElse : 'L' - }, - relativeTime : { - future : "%s পরে", - past : "%s আগে", - s : "কএক সেকেন্ড", - m : "এক মিনিট", - mm : "%d মিনিট", - h : "এক ঘন্টা", - hh : "%d ঘন্টা", - d : "এক দিন", - dd : "%d দিন", - M : "এক মাস", - MM : "%d মাস", - y : "এক বছর", - yy : "%d বছর" - }, - preparse: function (string) { - return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) { - return numberMap[match]; - }); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap[match]; - }); - }, - //Bengali is a vast language its spoken - //in different forms in various parts of the world. - //I have just generalized with most common one used - meridiem : function (hour, minute, isLower) { - if (hour < 4) { - return "রাত"; - } else if (hour < 10) { - return "শকাল"; - } else if (hour < 17) { - return "দুপুর"; - } else if (hour < 20) { - return "বিকেল"; - } else { - return "রাত"; - } - }, - week : { - dow : 0, // Sunday is the first day of the week. - doy : 6 // The week that contains Jan 1st is the first week of the year. - } - }); - })); + this.redraw(); + }; -/***/ }, -/* 65 */ -/***/ function(module, exports, __webpack_require__) { + /** + * select zero or more nodes with the option to highlight edges + * @param {Number[] | String[]} selection An array with the ids of the + * selected nodes. + * @param {boolean} [highlightEdges] + */ + exports.selectNodes = function(selection, highlightEdges) { + var i, iMax, id; - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// moment.js language configuration - // language : breton (br) - // author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou + if (!selection || (selection.length == undefined)) + throw 'Selection must be an array with ids'; - (function (factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(53)], __WEBPACK_AMD_DEFINE_RESULT__ = (factory.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory(window.moment); // Browser global - } - }(function (moment) { - function relativeTimeWithMutation(number, withoutSuffix, key) { - var format = { - 'mm': "munutenn", - 'MM': "miz", - 'dd': "devezh" - }; - return number + ' ' + mutation(format[key], number); - } + // first unselect any selected node + this._unselectAll(true); - function specialMutationForYears(number) { - switch (lastNumber(number)) { - case 1: - case 3: - case 4: - case 5: - case 9: - return number + ' bloaz'; - default: - return number + ' vloaz'; - } - } + for (i = 0, iMax = selection.length; i < iMax; i++) { + id = selection[i]; - function lastNumber(number) { - if (number > 9) { - return lastNumber(number % 10); - } - return number; + var node = this.nodes[id]; + if (!node) { + throw new RangeError('Node with id "' + id + '" not found'); } + this._selectObject(node,true,true,highlightEdges); + } + this.redraw(); + }; - function mutation(text, number) { - if (number === 2) { - return softMutation(text); - } - return text; - } - function softMutation(text) { - var mutationTable = { - 'm': 'v', - 'b': 'v', - 'd': 'z' - }; - if (mutationTable[text.charAt(0)] === undefined) { - return text; - } - return mutationTable[text.charAt(0)] + text.substring(1); - } - - return moment.lang('br', { - months : "Genver_C'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"), - monthsShort : "Gen_C'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"), - weekdays : "Sul_Lun_Meurzh_Merc'her_Yaou_Gwener_Sadorn".split("_"), - weekdaysShort : "Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"), - weekdaysMin : "Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"), - longDateFormat : { - LT : "h[e]mm A", - L : "DD/MM/YYYY", - LL : "D [a viz] MMMM YYYY", - LLL : "D [a viz] MMMM YYYY LT", - LLLL : "dddd, D [a viz] MMMM YYYY LT" - }, - calendar : { - sameDay : '[Hiziv da] LT', - nextDay : '[Warc\'hoazh da] LT', - nextWeek : 'dddd [da] LT', - lastDay : '[Dec\'h da] LT', - lastWeek : 'dddd [paset da] LT', - sameElse : 'L' - }, - relativeTime : { - future : "a-benn %s", - past : "%s 'zo", - s : "un nebeud segondennoù", - m : "ur vunutenn", - mm : relativeTimeWithMutation, - h : "un eur", - hh : "%d eur", - d : "un devezh", - dd : relativeTimeWithMutation, - M : "ur miz", - MM : relativeTimeWithMutation, - y : "ur bloaz", - yy : specialMutationForYears - }, - ordinal : function (number) { - var output = (number === 1) ? 'añ' : 'vet'; - return number + output; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - })); + /** + * select zero or more edges + * @param {Number[] | String[]} selection An array with the ids of the + * selected nodes. + */ + exports.selectEdges = function(selection) { + var i, iMax, id; + if (!selection || (selection.length == undefined)) + throw 'Selection must be an array with ids'; -/***/ }, -/* 66 */ -/***/ function(module, exports, __webpack_require__) { + // first unselect any selected node + this._unselectAll(true); - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// moment.js language configuration - // language : bosnian (bs) - // author : Nedim Cholich : https://github.com/frontyard - // based on (hr) translation by Bojan Marković + for (i = 0, iMax = selection.length; i < iMax; i++) { + id = selection[i]; - (function (factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(53)], __WEBPACK_AMD_DEFINE_RESULT__ = (factory.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory(window.moment); // Browser global + var edge = this.edges[id]; + if (!edge) { + throw new RangeError('Edge with id "' + id + '" not found'); } - }(function (moment) { + this._selectObject(edge,true,true,highlightEdges); + } + this.redraw(); + }; - function translate(number, withoutSuffix, key) { - var result = number + " "; - switch (key) { - case 'm': - return withoutSuffix ? 'jedna minuta' : 'jedne minute'; - case 'mm': - if (number === 1) { - result += 'minuta'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'minute'; - } else { - result += 'minuta'; - } - return result; - case 'h': - return withoutSuffix ? 'jedan sat' : 'jednog sata'; - case 'hh': - if (number === 1) { - result += 'sat'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'sata'; - } else { - result += 'sati'; - } - return result; - case 'dd': - if (number === 1) { - result += 'dan'; - } else { - result += 'dana'; - } - return result; - case 'MM': - if (number === 1) { - result += 'mjesec'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'mjeseca'; - } else { - result += 'mjeseci'; - } - return result; - case 'yy': - if (number === 1) { - result += 'godina'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'godine'; - } else { - result += 'godina'; - } - return result; - } - } - - return moment.lang('bs', { - months : "januar_februar_mart_april_maj_juni_juli_avgust_septembar_oktobar_novembar_decembar".split("_"), - monthsShort : "jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"), - weekdays : "nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"), - weekdaysShort : "ned._pon._uto._sri._čet._pet._sub.".split("_"), - weekdaysMin : "ne_po_ut_sr_če_pe_su".split("_"), - longDateFormat : { - LT : "H:mm", - L : "DD. MM. YYYY", - LL : "D. MMMM YYYY", - LLL : "D. MMMM YYYY LT", - LLLL : "dddd, D. MMMM YYYY LT" - }, - calendar : { - sameDay : '[danas u] LT', - nextDay : '[sutra u] LT', - - nextWeek : function () { - switch (this.day()) { - case 0: - return '[u] [nedjelju] [u] LT'; - case 3: - return '[u] [srijedu] [u] LT'; - case 6: - return '[u] [subotu] [u] LT'; - case 1: - case 2: - case 4: - case 5: - return '[u] dddd [u] LT'; - } - }, - lastDay : '[jučer u] LT', - lastWeek : function () { - switch (this.day()) { - case 0: - case 3: - return '[prošlu] dddd [u] LT'; - case 6: - return '[prošle] [subote] [u] LT'; - case 1: - case 2: - case 4: - case 5: - return '[prošli] dddd [u] LT'; - } - }, - sameElse : 'L' - }, - relativeTime : { - future : "za %s", - past : "prije %s", - s : "par sekundi", - m : translate, - mm : translate, - h : translate, - hh : translate, - d : "dan", - dd : translate, - M : "mjesec", - MM : translate, - y : "godinu", - yy : translate - }, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - })); + /** + * Validate the selection: remove ids of nodes which no longer exist + * @private + */ + exports._updateSelection = function () { + for(var nodeId in this.selectionObj.nodes) { + if(this.selectionObj.nodes.hasOwnProperty(nodeId)) { + if (!this.nodes.hasOwnProperty(nodeId)) { + delete this.selectionObj.nodes[nodeId]; + } + } + } + for(var edgeId in this.selectionObj.edges) { + if(this.selectionObj.edges.hasOwnProperty(edgeId)) { + if (!this.edges.hasOwnProperty(edgeId)) { + delete this.selectionObj.edges[edgeId]; + } + } + } + }; /***/ }, -/* 67 */ +/* 51 */ /***/ function(module, exports, __webpack_require__) { - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// moment.js language configuration - // language : catalan (ca) - // author : Juan G. Hurtado : https://github.com/juanghurtado + var util = __webpack_require__(1); + var Node = __webpack_require__(36); + var Edge = __webpack_require__(33); - (function (factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(53)], __WEBPACK_AMD_DEFINE_RESULT__ = (factory.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory(window.moment); // Browser global - } - }(function (moment) { - return moment.lang('ca', { - months : "gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre".split("_"), - monthsShort : "gen._febr._mar._abr._mai._jun._jul._ag._set._oct._nov._des.".split("_"), - weekdays : "diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte".split("_"), - weekdaysShort : "dg._dl._dt._dc._dj._dv._ds.".split("_"), - weekdaysMin : "Dg_Dl_Dt_Dc_Dj_Dv_Ds".split("_"), - longDateFormat : { - LT : "H:mm", - L : "DD/MM/YYYY", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY LT", - LLLL : "dddd D MMMM YYYY LT" - }, - calendar : { - sameDay : function () { - return '[avui a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; - }, - nextDay : function () { - return '[demà a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; - }, - nextWeek : function () { - return 'dddd [a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; - }, - lastDay : function () { - return '[ahir a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; - }, - lastWeek : function () { - return '[el] dddd [passat a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; - }, - sameElse : 'L' - }, - relativeTime : { - future : "en %s", - past : "fa %s", - s : "uns segons", - m : "un minut", - mm : "%d minuts", - h : "una hora", - hh : "%d hores", - d : "un dia", - dd : "%d dies", - M : "un mes", - MM : "%d mesos", - y : "un any", - yy : "%d anys" - }, - ordinal : '%dº', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - })); + /** + * clears the toolbar div element of children + * + * @private + */ + exports._clearManipulatorBar = function() { + while (this.manipulationDiv.hasChildNodes()) { + this.manipulationDiv.removeChild(this.manipulationDiv.firstChild); + } + }; + /** + * Manipulation UI temporarily overloads certain functions to extend or replace them. To be able to restore + * these functions to their original functionality, we saved them in this.cachedFunctions. + * This function restores these functions to their original function. + * + * @private + */ + exports._restoreOverloadedFunctions = function() { + for (var functionName in this.cachedFunctions) { + if (this.cachedFunctions.hasOwnProperty(functionName)) { + this[functionName] = this.cachedFunctions[functionName]; + } + } + }; -/***/ }, -/* 68 */ -/***/ function(module, exports, __webpack_require__) { + /** + * Enable or disable edit-mode. + * + * @private + */ + exports._toggleEditMode = function() { + this.editMode = !this.editMode; + var toolbar = document.getElementById("network-manipulationDiv"); + var closeDiv = document.getElementById("network-manipulation-closeDiv"); + var editModeDiv = document.getElementById("network-manipulation-editMode"); + if (this.editMode == true) { + toolbar.style.display="block"; + closeDiv.style.display="block"; + editModeDiv.style.display="none"; + closeDiv.onclick = this._toggleEditMode.bind(this); + } + else { + toolbar.style.display="none"; + closeDiv.style.display="none"; + editModeDiv.style.display="block"; + closeDiv.onclick = null; + } + this._createManipulatorBar() + }; - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// moment.js language configuration - // language : czech (cs) - // author : petrbela : https://github.com/petrbela + /** + * main function, creates the main toolbar. Removes functions bound to the select event. Binds all the buttons of the toolbar. + * + * @private + */ + exports._createManipulatorBar = function() { + // remove bound functions + if (this.boundFunction) { + this.off('select', this.boundFunction); + } - (function (factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(53)], __WEBPACK_AMD_DEFINE_RESULT__ = (factory.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory(window.moment); // Browser global - } - }(function (moment) { - var months = "leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec".split("_"), - monthsShort = "led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro".split("_"); - - function plural(n) { - return (n > 1) && (n < 5) && (~~(n / 10) !== 1); - } - - function translate(number, withoutSuffix, key, isFuture) { - var result = number + " "; - switch (key) { - case 's': // a few seconds / in a few seconds / a few seconds ago - return (withoutSuffix || isFuture) ? 'pár sekund' : 'pár sekundami'; - case 'm': // a minute / in a minute / a minute ago - return withoutSuffix ? 'minuta' : (isFuture ? 'minutu' : 'minutou'); - case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'minuty' : 'minut'); - } else { - return result + 'minutami'; - } - break; - case 'h': // an hour / in an hour / an hour ago - return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou'); - case 'hh': // 9 hours / in 9 hours / 9 hours ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'hodiny' : 'hodin'); - } else { - return result + 'hodinami'; - } - break; - case 'd': // a day / in a day / a day ago - return (withoutSuffix || isFuture) ? 'den' : 'dnem'; - case 'dd': // 9 days / in 9 days / 9 days ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'dny' : 'dní'); - } else { - return result + 'dny'; - } - break; - case 'M': // a month / in a month / a month ago - return (withoutSuffix || isFuture) ? 'měsíc' : 'měsícem'; - case 'MM': // 9 months / in 9 months / 9 months ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'měsíce' : 'měsíců'); - } else { - return result + 'měsíci'; - } - break; - case 'y': // a year / in a year / a year ago - return (withoutSuffix || isFuture) ? 'rok' : 'rokem'; - case 'yy': // 9 years / in 9 years / 9 years ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'roky' : 'let'); - } else { - return result + 'lety'; - } - break; - } - } + if (this.edgeBeingEdited !== undefined) { + this.edgeBeingEdited._disableControlNodes(); + this.edgeBeingEdited = undefined; + this.selectedControlNode = null; + this.controlNodesActive = false; + } - return moment.lang('cs', { - months : months, - monthsShort : monthsShort, - monthsParse : (function (months, monthsShort) { - var i, _monthsParse = []; - for (i = 0; i < 12; i++) { - // use custom parser to solve problem with July (červenec) - _monthsParse[i] = new RegExp('^' + months[i] + '$|^' + monthsShort[i] + '$', 'i'); - } - return _monthsParse; - }(months, monthsShort)), - weekdays : "neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota".split("_"), - weekdaysShort : "ne_po_út_st_čt_pá_so".split("_"), - weekdaysMin : "ne_po_út_st_čt_pá_so".split("_"), - longDateFormat : { - LT: "H.mm", - L : "DD. MM. YYYY", - LL : "D. MMMM YYYY", - LLL : "D. MMMM YYYY LT", - LLLL : "dddd D. MMMM YYYY LT" - }, - calendar : { - sameDay: "[dnes v] LT", - nextDay: '[zítra v] LT', - nextWeek: function () { - switch (this.day()) { - case 0: - return '[v neděli v] LT'; - case 1: - case 2: - return '[v] dddd [v] LT'; - case 3: - return '[ve středu v] LT'; - case 4: - return '[ve čtvrtek v] LT'; - case 5: - return '[v pátek v] LT'; - case 6: - return '[v sobotu v] LT'; - } - }, - lastDay: '[včera v] LT', - lastWeek: function () { - switch (this.day()) { - case 0: - return '[minulou neděli v] LT'; - case 1: - case 2: - return '[minulé] dddd [v] LT'; - case 3: - return '[minulou středu v] LT'; - case 4: - case 5: - return '[minulý] dddd [v] LT'; - case 6: - return '[minulou sobotu v] LT'; - } - }, - sameElse: "L" - }, - relativeTime : { - future : "za %s", - past : "před %s", - s : translate, - m : translate, - mm : translate, - h : translate, - hh : translate, - d : translate, - dd : translate, - M : translate, - MM : translate, - y : translate, - yy : translate - }, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - })); + // restore overloaded functions + this._restoreOverloadedFunctions(); + // resume calculation + this.freezeSimulation = false; -/***/ }, -/* 69 */ -/***/ function(module, exports, __webpack_require__) { + // reset global variables + this.blockConnectingEdgeSelection = false; + this.forceAppendSelection = false; - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// moment.js language configuration - // language : chuvash (cv) - // author : Anatoly Mironov : https://github.com/mirontoli + if (this.editMode == true) { + while (this.manipulationDiv.hasChildNodes()) { + this.manipulationDiv.removeChild(this.manipulationDiv.firstChild); + } + // add the icons to the manipulator div + this.manipulationDiv.innerHTML = "" + + "" + + ""+this.constants.labels['add'] +"" + + "
" + + "" + + ""+this.constants.labels['link'] +""; + if (this._getSelectedNodeCount() == 1 && this.triggerFunctions.edit) { + this.manipulationDiv.innerHTML += "" + + "
" + + "" + + ""+this.constants.labels['editNode'] +""; + } + else if (this._getSelectedEdgeCount() == 1 && this._getSelectedNodeCount() == 0) { + this.manipulationDiv.innerHTML += "" + + "
" + + "" + + ""+this.constants.labels['editEdge'] +""; + } + if (this._selectionIsEmpty() == false) { + this.manipulationDiv.innerHTML += "" + + "
" + + "" + + ""+this.constants.labels['del'] +""; + } - (function (factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(53)], __WEBPACK_AMD_DEFINE_RESULT__ = (factory.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory(window.moment); // Browser global - } - }(function (moment) { - return moment.lang('cv', { - months : "кăрлач_нарăс_пуш_ака_май_çĕртме_утă_çурла_авăн_юпа_чӳк_раштав".split("_"), - monthsShort : "кăр_нар_пуш_ака_май_çĕр_утă_çур_ав_юпа_чӳк_раш".split("_"), - weekdays : "вырсарникун_тунтикун_ытларикун_юнкун_кĕçнерникун_эрнекун_шăматкун".split("_"), - weekdaysShort : "выр_тун_ытл_юн_кĕç_эрн_шăм".split("_"), - weekdaysMin : "вр_тн_ыт_юн_кç_эр_шм".split("_"), - longDateFormat : { - LT : "HH:mm", - L : "DD-MM-YYYY", - LL : "YYYY [çулхи] MMMM [уйăхĕн] D[-мĕшĕ]", - LLL : "YYYY [çулхи] MMMM [уйăхĕн] D[-мĕшĕ], LT", - LLLL : "dddd, YYYY [çулхи] MMMM [уйăхĕн] D[-мĕшĕ], LT" - }, - calendar : { - sameDay: '[Паян] LT [сехетре]', - nextDay: '[Ыран] LT [сехетре]', - lastDay: '[Ĕнер] LT [сехетре]', - nextWeek: '[Çитес] dddd LT [сехетре]', - lastWeek: '[Иртнĕ] dddd LT [сехетре]', - sameElse: 'L' - }, - relativeTime : { - future : function (output) { - var affix = /сехет$/i.exec(output) ? "рен" : /çул$/i.exec(output) ? "тан" : "ран"; - return output + affix; - }, - past : "%s каялла", - s : "пĕр-ик çеккунт", - m : "пĕр минут", - mm : "%d минут", - h : "пĕр сехет", - hh : "%d сехет", - d : "пĕр кун", - dd : "%d кун", - M : "пĕр уйăх", - MM : "%d уйăх", - y : "пĕр çул", - yy : "%d çул" - }, - ordinal : '%d-мĕш', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - })); + // bind the icons + var addNodeButton = document.getElementById("network-manipulate-addNode"); + addNodeButton.onclick = this._createAddNodeToolbar.bind(this); + var addEdgeButton = document.getElementById("network-manipulate-connectNode"); + addEdgeButton.onclick = this._createAddEdgeToolbar.bind(this); + if (this._getSelectedNodeCount() == 1 && this.triggerFunctions.edit) { + var editButton = document.getElementById("network-manipulate-editNode"); + editButton.onclick = this._editNode.bind(this); + } + else if (this._getSelectedEdgeCount() == 1 && this._getSelectedNodeCount() == 0) { + var editButton = document.getElementById("network-manipulate-editEdge"); + editButton.onclick = this._createEditEdgeToolbar.bind(this); + } + if (this._selectionIsEmpty() == false) { + var deleteButton = document.getElementById("network-manipulate-delete"); + deleteButton.onclick = this._deleteSelected.bind(this); + } + var closeDiv = document.getElementById("network-manipulation-closeDiv"); + closeDiv.onclick = this._toggleEditMode.bind(this); -/***/ }, -/* 70 */ -/***/ function(module, exports, __webpack_require__) { + this.boundFunction = this._createManipulatorBar.bind(this); + this.on('select', this.boundFunction); + } + else { + this.editModeDiv.innerHTML = "" + + "" + + "" + this.constants.labels['edit'] + ""; + var editModeButton = document.getElementById("network-manipulate-editModeButton"); + editModeButton.onclick = this._toggleEditMode.bind(this); + } + }; - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// moment.js language configuration - // language : Welsh (cy) - // author : Robert Allen - (function (factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(53)], __WEBPACK_AMD_DEFINE_RESULT__ = (factory.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory(window.moment); // Browser global - } - }(function (moment) { - return moment.lang("cy", { - months: "Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr".split("_"), - monthsShort: "Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag".split("_"), - weekdays: "Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn".split("_"), - weekdaysShort: "Sul_Llun_Maw_Mer_Iau_Gwe_Sad".split("_"), - weekdaysMin: "Su_Ll_Ma_Me_Ia_Gw_Sa".split("_"), - // time formats are the same as en-gb - longDateFormat: { - LT: "HH:mm", - L: "DD/MM/YYYY", - LL: "D MMMM YYYY", - LLL: "D MMMM YYYY LT", - LLLL: "dddd, D MMMM YYYY LT" - }, - calendar: { - sameDay: '[Heddiw am] LT', - nextDay: '[Yfory am] LT', - nextWeek: 'dddd [am] LT', - lastDay: '[Ddoe am] LT', - lastWeek: 'dddd [diwethaf am] LT', - sameElse: 'L' - }, - relativeTime: { - future: "mewn %s", - past: "%s yn ôl", - s: "ychydig eiliadau", - m: "munud", - mm: "%d munud", - h: "awr", - hh: "%d awr", - d: "diwrnod", - dd: "%d diwrnod", - M: "mis", - MM: "%d mis", - y: "blwyddyn", - yy: "%d flynedd" - }, - // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh - ordinal: function (number) { - var b = number, - output = '', - lookup = [ - '', 'af', 'il', 'ydd', 'ydd', 'ed', 'ed', 'ed', 'fed', 'fed', 'fed', // 1af to 10fed - 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'fed' // 11eg to 20fed - ]; - if (b > 20) { - if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) { - output = 'fed'; // not 30ain, 70ain or 90ain - } else { - output = 'ain'; - } - } else if (b > 0) { - output = lookup[b]; - } + /** + * Create the toolbar for adding Nodes + * + * @private + */ + exports._createAddNodeToolbar = function() { + // clear the toolbar + this._clearManipulatorBar(); + if (this.boundFunction) { + this.off('select', this.boundFunction); + } - return number + output; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - })); + // create the toolbar contents + this.manipulationDiv.innerHTML = "" + + "" + + "" + this.constants.labels['back'] + " " + + "
" + + "" + + "" + this.constants.labels['addDescription'] + ""; + // bind the icon + var backButton = document.getElementById("network-manipulate-back"); + backButton.onclick = this._createManipulatorBar.bind(this); -/***/ }, -/* 71 */ -/***/ function(module, exports, __webpack_require__) { + // we use the boundFunction so we can reference it when we unbind it from the "select" event. + this.boundFunction = this._addNode.bind(this); + this.on('select', this.boundFunction); + }; - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// moment.js language configuration - // language : danish (da) - // author : Ulrik Nielsen : https://github.com/mrbase - (function (factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(53)], __WEBPACK_AMD_DEFINE_RESULT__ = (factory.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory(window.moment); // Browser global - } - }(function (moment) { - return moment.lang('da', { - months : "januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"), - monthsShort : "jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"), - weekdays : "søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"), - weekdaysShort : "søn_man_tir_ons_tor_fre_lør".split("_"), - weekdaysMin : "sø_ma_ti_on_to_fr_lø".split("_"), - longDateFormat : { - LT : "HH:mm", - L : "DD/MM/YYYY", - LL : "D. MMMM YYYY", - LLL : "D. MMMM YYYY LT", - LLLL : "dddd [d.] D. MMMM YYYY LT" - }, - calendar : { - sameDay : '[I dag kl.] LT', - nextDay : '[I morgen kl.] LT', - nextWeek : 'dddd [kl.] LT', - lastDay : '[I går kl.] LT', - lastWeek : '[sidste] dddd [kl] LT', - sameElse : 'L' - }, - relativeTime : { - future : "om %s", - past : "%s siden", - s : "få sekunder", - m : "et minut", - mm : "%d minutter", - h : "en time", - hh : "%d timer", - d : "en dag", - dd : "%d dage", - M : "en måned", - MM : "%d måneder", - y : "et år", - yy : "%d år" - }, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - })); + /** + * create the toolbar to connect nodes + * + * @private + */ + exports._createAddEdgeToolbar = function() { + // clear the toolbar + this._clearManipulatorBar(); + this._unselectAll(true); + this.freezeSimulation = true; + if (this.boundFunction) { + this.off('select', this.boundFunction); + } -/***/ }, -/* 72 */ -/***/ function(module, exports, __webpack_require__) { + this._unselectAll(); + this.forceAppendSelection = false; + this.blockConnectingEdgeSelection = true; - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// moment.js language configuration - // language : austrian german (de-at) - // author : lluchs : https://github.com/lluchs - // author: Menelion Elensúle: https://github.com/Oire - // author : Martin Groller : https://github.com/MadMG - - (function (factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(53)], __WEBPACK_AMD_DEFINE_RESULT__ = (factory.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory(window.moment); // Browser global - } - }(function (moment) { - function processRelativeTime(number, withoutSuffix, key, isFuture) { - var format = { - 'm': ['eine Minute', 'einer Minute'], - 'h': ['eine Stunde', 'einer Stunde'], - 'd': ['ein Tag', 'einem Tag'], - 'dd': [number + ' Tage', number + ' Tagen'], - 'M': ['ein Monat', 'einem Monat'], - 'MM': [number + ' Monate', number + ' Monaten'], - 'y': ['ein Jahr', 'einem Jahr'], - 'yy': [number + ' Jahre', number + ' Jahren'] - }; - return withoutSuffix ? format[key][0] : format[key][1]; - } - - return moment.lang('de-at', { - months : "Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"), - monthsShort : "Jän._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"), - weekdays : "Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"), - weekdaysShort : "So._Mo._Di._Mi._Do._Fr._Sa.".split("_"), - weekdaysMin : "So_Mo_Di_Mi_Do_Fr_Sa".split("_"), - longDateFormat : { - LT: "HH:mm [Uhr]", - L : "DD.MM.YYYY", - LL : "D. MMMM YYYY", - LLL : "D. MMMM YYYY LT", - LLLL : "dddd, D. MMMM YYYY LT" - }, - calendar : { - sameDay: "[Heute um] LT", - sameElse: "L", - nextDay: '[Morgen um] LT', - nextWeek: 'dddd [um] LT', - lastDay: '[Gestern um] LT', - lastWeek: '[letzten] dddd [um] LT' - }, - relativeTime : { - future : "in %s", - past : "vor %s", - s : "ein paar Sekunden", - m : processRelativeTime, - mm : "%d Minuten", - h : processRelativeTime, - hh : "%d Stunden", - d : processRelativeTime, - dd : processRelativeTime, - M : processRelativeTime, - MM : processRelativeTime, - y : processRelativeTime, - yy : processRelativeTime - }, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - })); + this.manipulationDiv.innerHTML = "" + + "" + + "" + this.constants.labels['back'] + " " + + "
" + + "" + + "" + this.constants.labels['linkDescription'] + ""; + // bind the icon + var backButton = document.getElementById("network-manipulate-back"); + backButton.onclick = this._createManipulatorBar.bind(this); -/***/ }, -/* 73 */ -/***/ function(module, exports, __webpack_require__) { + // we use the boundFunction so we can reference it when we unbind it from the "select" event. + this.boundFunction = this._handleConnect.bind(this); + this.on('select', this.boundFunction); - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// moment.js language configuration - // language : german (de) - // author : lluchs : https://github.com/lluchs - // author: Menelion Elensúle: https://github.com/Oire + // temporarily overload functions + this.cachedFunctions["_handleTouch"] = this._handleTouch; + this.cachedFunctions["_handleOnRelease"] = this._handleOnRelease; + this._handleTouch = this._handleConnect; + this._handleOnRelease = this._finishConnect; - (function (factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(53)], __WEBPACK_AMD_DEFINE_RESULT__ = (factory.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory(window.moment); // Browser global - } - }(function (moment) { - function processRelativeTime(number, withoutSuffix, key, isFuture) { - var format = { - 'm': ['eine Minute', 'einer Minute'], - 'h': ['eine Stunde', 'einer Stunde'], - 'd': ['ein Tag', 'einem Tag'], - 'dd': [number + ' Tage', number + ' Tagen'], - 'M': ['ein Monat', 'einem Monat'], - 'MM': [number + ' Monate', number + ' Monaten'], - 'y': ['ein Jahr', 'einem Jahr'], - 'yy': [number + ' Jahre', number + ' Jahren'] - }; - return withoutSuffix ? format[key][0] : format[key][1]; - } - - return moment.lang('de', { - months : "Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"), - monthsShort : "Jan._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"), - weekdays : "Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"), - weekdaysShort : "So._Mo._Di._Mi._Do._Fr._Sa.".split("_"), - weekdaysMin : "So_Mo_Di_Mi_Do_Fr_Sa".split("_"), - longDateFormat : { - LT: "HH:mm [Uhr]", - L : "DD.MM.YYYY", - LL : "D. MMMM YYYY", - LLL : "D. MMMM YYYY LT", - LLLL : "dddd, D. MMMM YYYY LT" - }, - calendar : { - sameDay: "[Heute um] LT", - sameElse: "L", - nextDay: '[Morgen um] LT', - nextWeek: 'dddd [um] LT', - lastDay: '[Gestern um] LT', - lastWeek: '[letzten] dddd [um] LT' - }, - relativeTime : { - future : "in %s", - past : "vor %s", - s : "ein paar Sekunden", - m : processRelativeTime, - mm : "%d Minuten", - h : processRelativeTime, - hh : "%d Stunden", - d : processRelativeTime, - dd : processRelativeTime, - M : processRelativeTime, - MM : processRelativeTime, - y : processRelativeTime, - yy : processRelativeTime - }, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - })); + // redraw to show the unselect + this._redraw(); + }; + /** + * create the toolbar to edit edges + * + * @private + */ + exports._createEditEdgeToolbar = function() { + // clear the toolbar + this._clearManipulatorBar(); + this.controlNodesActive = true; -/***/ }, -/* 74 */ -/***/ function(module, exports, __webpack_require__) { + if (this.boundFunction) { + this.off('select', this.boundFunction); + } - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// moment.js language configuration - // language : modern greek (el) - // author : Aggelos Karalias : https://github.com/mehiel + this.edgeBeingEdited = this._getSelectedEdge(); + this.edgeBeingEdited._enableControlNodes(); - (function (factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(53)], __WEBPACK_AMD_DEFINE_RESULT__ = (factory.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory(window.moment); // Browser global - } - }(function (moment) { - return moment.lang('el', { - monthsNominativeEl : "Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος".split("_"), - monthsGenitiveEl : "Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου".split("_"), - months : function (momentToFormat, format) { - if (/D/.test(format.substring(0, format.indexOf("MMMM")))) { // if there is a day number before 'MMMM' - return this._monthsGenitiveEl[momentToFormat.month()]; - } else { - return this._monthsNominativeEl[momentToFormat.month()]; - } - }, - monthsShort : "Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ".split("_"), - weekdays : "Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο".split("_"), - weekdaysShort : "Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ".split("_"), - weekdaysMin : "Κυ_Δε_Τρ_Τε_Πε_Πα_Σα".split("_"), - meridiem : function (hours, minutes, isLower) { - if (hours > 11) { - return isLower ? 'μμ' : 'ΜΜ'; - } else { - return isLower ? 'πμ' : 'ΠΜ'; - } - }, - longDateFormat : { - LT : "h:mm A", - L : "DD/MM/YYYY", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY LT", - LLLL : "dddd, D MMMM YYYY LT" - }, - calendarEl : { - sameDay : '[Σήμερα {}] LT', - nextDay : '[Αύριο {}] LT', - nextWeek : 'dddd [{}] LT', - lastDay : '[Χθες {}] LT', - lastWeek : function() { - switch (this.day()) { - case 6: - return '[το προηγούμενο] dddd [{}] LT'; - default: - return '[την προηγούμενη] dddd [{}] LT'; - } - }, - sameElse : 'L' - }, - calendar : function (key, mom) { - var output = this._calendarEl[key], - hours = mom && mom.hours(); + this.manipulationDiv.innerHTML = "" + + "" + + "" + this.constants.labels['back'] + " " + + "
" + + "" + + "" + this.constants.labels['editEdgeDescription'] + ""; - if (typeof output === 'function') { - output = output.apply(mom); - } + // bind the icon + var backButton = document.getElementById("network-manipulate-back"); + backButton.onclick = this._createManipulatorBar.bind(this); - return output.replace("{}", (hours % 12 === 1 ? "στη" : "στις")); - }, - relativeTime : { - future : "σε %s", - past : "%s πριν", - s : "δευτερόλεπτα", - m : "ένα λεπτό", - mm : "%d λεπτά", - h : "μία ώρα", - hh : "%d ώρες", - d : "μία μέρα", - dd : "%d μέρες", - M : "ένας μήνας", - MM : "%d μήνες", - y : "ένας χρόνος", - yy : "%d χρόνια" - }, - ordinal : function (number) { - return number + 'η'; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4st is the first week of the year. - } - }); - })); + // temporarily overload functions + this.cachedFunctions["_handleTouch"] = this._handleTouch; + this.cachedFunctions["_handleOnRelease"] = this._handleOnRelease; + this.cachedFunctions["_handleTap"] = this._handleTap; + this.cachedFunctions["_handleDragStart"] = this._handleDragStart; + this.cachedFunctions["_handleOnDrag"] = this._handleOnDrag; + this._handleTouch = this._selectControlNode; + this._handleTap = function () {}; + this._handleOnDrag = this._controlNodeDrag; + this._handleDragStart = function () {} + this._handleOnRelease = this._releaseControlNode; + // redraw to show the unselect + this._redraw(); + }; -/***/ }, -/* 75 */ -/***/ function(module, exports, __webpack_require__) { - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// moment.js language configuration - // language : australian english (en-au) - (function (factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(53)], __WEBPACK_AMD_DEFINE_RESULT__ = (factory.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory(window.moment); // Browser global - } - }(function (moment) { - return moment.lang('en-au', { - months : "January_February_March_April_May_June_July_August_September_October_November_December".split("_"), - monthsShort : "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"), - weekdays : "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"), - weekdaysShort : "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"), - weekdaysMin : "Su_Mo_Tu_We_Th_Fr_Sa".split("_"), - longDateFormat : { - LT : "h:mm A", - L : "DD/MM/YYYY", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY LT", - LLLL : "dddd, D MMMM YYYY LT" - }, - calendar : { - sameDay : '[Today at] LT', - nextDay : '[Tomorrow at] LT', - nextWeek : 'dddd [at] LT', - lastDay : '[Yesterday at] LT', - lastWeek : '[Last] dddd [at] LT', - sameElse : 'L' - }, - relativeTime : { - future : "in %s", - past : "%s ago", - s : "a few seconds", - m : "a minute", - mm : "%d minutes", - h : "an hour", - hh : "%d hours", - d : "a day", - dd : "%d days", - M : "a month", - MM : "%d months", - y : "a year", - yy : "%d years" - }, - ordinal : function (number) { - var b = number % 10, - output = (~~ (number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; - return number + output; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - })); -/***/ }, -/* 76 */ -/***/ function(module, exports, __webpack_require__) { + /** + * the function bound to the selection event. It checks if you want to connect a cluster and changes the description + * to walk the user through the process. + * + * @private + */ + exports._selectControlNode = function(pointer) { + this.edgeBeingEdited.controlNodes.from.unselect(); + this.edgeBeingEdited.controlNodes.to.unselect(); + this.selectedControlNode = this.edgeBeingEdited._getSelectedControlNode(this._XconvertDOMtoCanvas(pointer.x),this._YconvertDOMtoCanvas(pointer.y)); + if (this.selectedControlNode !== null) { + this.selectedControlNode.select(); + this.freezeSimulation = true; + } + this._redraw(); + }; - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// moment.js language configuration - // language : canadian english (en-ca) - // author : Jonathan Abourbih : https://github.com/jonbca + /** + * the function bound to the selection event. It checks if you want to connect a cluster and changes the description + * to walk the user through the process. + * + * @private + */ + exports._controlNodeDrag = function(event) { + var pointer = this._getPointer(event.gesture.center); + if (this.selectedControlNode !== null && this.selectedControlNode !== undefined) { + this.selectedControlNode.x = this._XconvertDOMtoCanvas(pointer.x); + this.selectedControlNode.y = this._YconvertDOMtoCanvas(pointer.y); + } + this._redraw(); + }; - (function (factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(53)], __WEBPACK_AMD_DEFINE_RESULT__ = (factory.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory(window.moment); // Browser global - } - }(function (moment) { - return moment.lang('en-ca', { - months : "January_February_March_April_May_June_July_August_September_October_November_December".split("_"), - monthsShort : "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"), - weekdays : "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"), - weekdaysShort : "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"), - weekdaysMin : "Su_Mo_Tu_We_Th_Fr_Sa".split("_"), - longDateFormat : { - LT : "h:mm A", - L : "YYYY-MM-DD", - LL : "D MMMM, YYYY", - LLL : "D MMMM, YYYY LT", - LLLL : "dddd, D MMMM, YYYY LT" - }, - calendar : { - sameDay : '[Today at] LT', - nextDay : '[Tomorrow at] LT', - nextWeek : 'dddd [at] LT', - lastDay : '[Yesterday at] LT', - lastWeek : '[Last] dddd [at] LT', - sameElse : 'L' - }, - relativeTime : { - future : "in %s", - past : "%s ago", - s : "a few seconds", - m : "a minute", - mm : "%d minutes", - h : "an hour", - hh : "%d hours", - d : "a day", - dd : "%d days", - M : "a month", - MM : "%d months", - y : "a year", - yy : "%d years" - }, - ordinal : function (number) { - var b = number % 10, - output = (~~ (number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; - return number + output; - } - }); - })); + exports._releaseControlNode = function(pointer) { + var newNode = this._getNodeAt(pointer); + if (newNode != null) { + if (this.edgeBeingEdited.controlNodes.from.selected == true) { + this._editEdge(newNode.id, this.edgeBeingEdited.to.id); + this.edgeBeingEdited.controlNodes.from.unselect(); + } + if (this.edgeBeingEdited.controlNodes.to.selected == true) { + this._editEdge(this.edgeBeingEdited.from.id, newNode.id); + this.edgeBeingEdited.controlNodes.to.unselect(); + } + } + else { + this.edgeBeingEdited._restoreControlNodes(); + } + this.freezeSimulation = false; + this._redraw(); + }; + /** + * the function bound to the selection event. It checks if you want to connect a cluster and changes the description + * to walk the user through the process. + * + * @private + */ + exports._handleConnect = function(pointer) { + if (this._getSelectedNodeCount() == 0) { + var node = this._getNodeAt(pointer); + if (node != null) { + if (node.clusterSize > 1) { + alert("Cannot create edges to a cluster.") + } + else { + this._selectObject(node,false); + // create a node the temporary line can look at + this.sectors['support']['nodes']['targetNode'] = new Node({id:'targetNode'},{},{},this.constants); + this.sectors['support']['nodes']['targetNode'].x = node.x; + this.sectors['support']['nodes']['targetNode'].y = node.y; + this.sectors['support']['nodes']['targetViaNode'] = new Node({id:'targetViaNode'},{},{},this.constants); + this.sectors['support']['nodes']['targetViaNode'].x = node.x; + this.sectors['support']['nodes']['targetViaNode'].y = node.y; + this.sectors['support']['nodes']['targetViaNode'].parentEdgeId = "connectionEdge"; -/***/ }, -/* 77 */ -/***/ function(module, exports, __webpack_require__) { + // create a temporary edge + this.edges['connectionEdge'] = new Edge({id:"connectionEdge",from:node.id,to:this.sectors['support']['nodes']['targetNode'].id}, this, this.constants); + this.edges['connectionEdge'].from = node; + this.edges['connectionEdge'].connected = true; + this.edges['connectionEdge'].smooth = true; + this.edges['connectionEdge'].selected = true; + this.edges['connectionEdge'].to = this.sectors['support']['nodes']['targetNode']; + this.edges['connectionEdge'].via = this.sectors['support']['nodes']['targetViaNode']; - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// moment.js language configuration - // language : great britain english (en-gb) - // author : Chris Gedrim : https://github.com/chrisgedrim + this.cachedFunctions["_handleOnDrag"] = this._handleOnDrag; + this._handleOnDrag = function(event) { + var pointer = this._getPointer(event.gesture.center); + this.sectors['support']['nodes']['targetNode'].x = this._XconvertDOMtoCanvas(pointer.x); + this.sectors['support']['nodes']['targetNode'].y = this._YconvertDOMtoCanvas(pointer.y); + this.sectors['support']['nodes']['targetViaNode'].x = 0.5 * (this._XconvertDOMtoCanvas(pointer.x) + this.edges['connectionEdge'].from.x); + this.sectors['support']['nodes']['targetViaNode'].y = this._YconvertDOMtoCanvas(pointer.y); + }; - (function (factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(53)], __WEBPACK_AMD_DEFINE_RESULT__ = (factory.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory(window.moment); // Browser global - } - }(function (moment) { - return moment.lang('en-gb', { - months : "January_February_March_April_May_June_July_August_September_October_November_December".split("_"), - monthsShort : "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"), - weekdays : "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"), - weekdaysShort : "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"), - weekdaysMin : "Su_Mo_Tu_We_Th_Fr_Sa".split("_"), - longDateFormat : { - LT : "HH:mm", - L : "DD/MM/YYYY", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY LT", - LLLL : "dddd, D MMMM YYYY LT" - }, - calendar : { - sameDay : '[Today at] LT', - nextDay : '[Tomorrow at] LT', - nextWeek : 'dddd [at] LT', - lastDay : '[Yesterday at] LT', - lastWeek : '[Last] dddd [at] LT', - sameElse : 'L' - }, - relativeTime : { - future : "in %s", - past : "%s ago", - s : "a few seconds", - m : "a minute", - mm : "%d minutes", - h : "an hour", - hh : "%d hours", - d : "a day", - dd : "%d days", - M : "a month", - MM : "%d months", - y : "a year", - yy : "%d years" - }, - ordinal : function (number) { - var b = number % 10, - output = (~~ (number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; - return number + output; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - })); + this.moving = true; + this.start(); + } + } + } + }; + exports._finishConnect = function(pointer) { + if (this._getSelectedNodeCount() == 1) { -/***/ }, -/* 78 */ -/***/ function(module, exports, __webpack_require__) { + // restore the drag function + this._handleOnDrag = this.cachedFunctions["_handleOnDrag"]; + delete this.cachedFunctions["_handleOnDrag"]; - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// moment.js language configuration - // language : esperanto (eo) - // author : Colin Dean : https://github.com/colindean - // komento: Mi estas malcerta se mi korekte traktis akuzativojn en tiu traduko. - // Se ne, bonvolu korekti kaj avizi min por ke mi povas lerni! - - (function (factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(53)], __WEBPACK_AMD_DEFINE_RESULT__ = (factory.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory(window.moment); // Browser global - } - }(function (moment) { - return moment.lang('eo', { - months : "januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro".split("_"), - monthsShort : "jan_feb_mar_apr_maj_jun_jul_aŭg_sep_okt_nov_dec".split("_"), - weekdays : "Dimanĉo_Lundo_Mardo_Merkredo_Ĵaŭdo_Vendredo_Sabato".split("_"), - weekdaysShort : "Dim_Lun_Mard_Merk_Ĵaŭ_Ven_Sab".split("_"), - weekdaysMin : "Di_Lu_Ma_Me_Ĵa_Ve_Sa".split("_"), - longDateFormat : { - LT : "HH:mm", - L : "YYYY-MM-DD", - LL : "D[-an de] MMMM, YYYY", - LLL : "D[-an de] MMMM, YYYY LT", - LLLL : "dddd, [la] D[-an de] MMMM, YYYY LT" - }, - meridiem : function (hours, minutes, isLower) { - if (hours > 11) { - return isLower ? 'p.t.m.' : 'P.T.M.'; - } else { - return isLower ? 'a.t.m.' : 'A.T.M.'; - } - }, - calendar : { - sameDay : '[Hodiaŭ je] LT', - nextDay : '[Morgaŭ je] LT', - nextWeek : 'dddd [je] LT', - lastDay : '[Hieraŭ je] LT', - lastWeek : '[pasinta] dddd [je] LT', - sameElse : 'L' - }, - relativeTime : { - future : "je %s", - past : "antaŭ %s", - s : "sekundoj", - m : "minuto", - mm : "%d minutoj", - h : "horo", - hh : "%d horoj", - d : "tago",//ne 'diurno', ĉar estas uzita por proksimumo - dd : "%d tagoj", - M : "monato", - MM : "%d monatoj", - y : "jaro", - yy : "%d jaroj" - }, - ordinal : "%da", - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - })); + // remember the edge id + var connectFromId = this.edges['connectionEdge'].fromId; + // remove the temporary nodes and edge + delete this.edges['connectionEdge']; + delete this.sectors['support']['nodes']['targetNode']; + delete this.sectors['support']['nodes']['targetViaNode']; -/***/ }, -/* 79 */ -/***/ function(module, exports, __webpack_require__) { + var node = this._getNodeAt(pointer); + if (node != null) { + if (node.clusterSize > 1) { + alert("Cannot create edges to a cluster.") + } + else { + this._createEdge(connectFromId,node.id); + this._createManipulatorBar(); + } + } + this._unselectAll(); + } + }; - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// moment.js language configuration - // language : spanish (es) - // author : Julio Napurí : https://github.com/julionc - (function (factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(53)], __WEBPACK_AMD_DEFINE_RESULT__ = (factory.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory(window.moment); // Browser global + /** + * Adds a node on the specified location + */ + exports._addNode = function() { + if (this._selectionIsEmpty() && this.editMode == true) { + var positionObject = this._pointerToPositionObject(this.pointerPosition); + var defaultData = {id:util.randomUUID(),x:positionObject.left,y:positionObject.top,label:"new",allowedToMoveX:true,allowedToMoveY:true}; + if (this.triggerFunctions.add) { + if (this.triggerFunctions.add.length == 2) { + var me = this; + this.triggerFunctions.add(defaultData, function(finalizedData) { + me.nodesData.add(finalizedData); + me._createManipulatorBar(); + me.moving = true; + me.start(); + }); + } + else { + alert(this.constants.labels['addError']); + this._createManipulatorBar(); + this.moving = true; + this.start(); + } } - }(function (moment) { - var monthsShortDot = "ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"), - monthsShort = "ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"); - - return moment.lang('es', { - months : "enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"), - monthsShort : function (m, format) { - if (/-MMM-/.test(format)) { - return monthsShort[m.month()]; - } else { - return monthsShortDot[m.month()]; - } - }, - weekdays : "domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"), - weekdaysShort : "dom._lun._mar._mié._jue._vie._sáb.".split("_"), - weekdaysMin : "Do_Lu_Ma_Mi_Ju_Vi_Sá".split("_"), - longDateFormat : { - LT : "H:mm", - L : "DD/MM/YYYY", - LL : "D [de] MMMM [del] YYYY", - LLL : "D [de] MMMM [del] YYYY LT", - LLLL : "dddd, D [de] MMMM [del] YYYY LT" - }, - calendar : { - sameDay : function () { - return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; - }, - nextDay : function () { - return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; - }, - nextWeek : function () { - return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; - }, - lastDay : function () { - return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; - }, - lastWeek : function () { - return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; - }, - sameElse : 'L' - }, - relativeTime : { - future : "en %s", - past : "hace %s", - s : "unos segundos", - m : "un minuto", - mm : "%d minutos", - h : "una hora", - hh : "%d horas", - d : "un día", - dd : "%d días", - M : "un mes", - MM : "%d meses", - y : "un año", - yy : "%d años" - }, - ordinal : '%dº', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - })); + else { + this.nodesData.add(defaultData); + this._createManipulatorBar(); + this.moving = true; + this.start(); + } + } + }; -/***/ }, -/* 80 */ -/***/ function(module, exports, __webpack_require__) { + /** + * connect two nodes with a new edge. + * + * @private + */ + exports._createEdge = function(sourceNodeId,targetNodeId) { + if (this.editMode == true) { + var defaultData = {from:sourceNodeId, to:targetNodeId}; + if (this.triggerFunctions.connect) { + if (this.triggerFunctions.connect.length == 2) { + var me = this; + this.triggerFunctions.connect(defaultData, function(finalizedData) { + me.edgesData.add(finalizedData); + me.moving = true; + me.start(); + }); + } + else { + alert(this.constants.labels["linkError"]); + this.moving = true; + this.start(); + } + } + else { + this.edgesData.add(defaultData); + this.moving = true; + this.start(); + } + } + }; - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// moment.js language configuration - // language : estonian (et) - // author : Henry Kehlmann : https://github.com/madhenry - // improvements : Illimar Tambek : https://github.com/ragulka + /** + * connect two nodes with a new edge. + * + * @private + */ + exports._editEdge = function(sourceNodeId,targetNodeId) { + if (this.editMode == true) { + var defaultData = {id: this.edgeBeingEdited.id, from:sourceNodeId, to:targetNodeId}; + if (this.triggerFunctions.editEdge) { + if (this.triggerFunctions.editEdge.length == 2) { + var me = this; + this.triggerFunctions.editEdge(defaultData, function(finalizedData) { + me.edgesData.update(finalizedData); + me.moving = true; + me.start(); + }); + } + else { + alert(this.constants.labels["linkError"]); + this.moving = true; + this.start(); + } + } + else { + this.edgesData.update(defaultData); + this.moving = true; + this.start(); + } + } + }; - (function (factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(53)], __WEBPACK_AMD_DEFINE_RESULT__ = (factory.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory(window.moment); // Browser global - } - }(function (moment) { - function processRelativeTime(number, withoutSuffix, key, isFuture) { - var format = { - 's' : ['mõne sekundi', 'mõni sekund', 'paar sekundit'], - 'm' : ['ühe minuti', 'üks minut'], - 'mm': [number + ' minuti', number + ' minutit'], - 'h' : ['ühe tunni', 'tund aega', 'üks tund'], - 'hh': [number + ' tunni', number + ' tundi'], - 'd' : ['ühe päeva', 'üks päev'], - 'M' : ['kuu aja', 'kuu aega', 'üks kuu'], - 'MM': [number + ' kuu', number + ' kuud'], - 'y' : ['ühe aasta', 'aasta', 'üks aasta'], - 'yy': [number + ' aasta', number + ' aastat'] - }; - if (withoutSuffix) { - return format[key][2] ? format[key][2] : format[key][1]; - } - return isFuture ? format[key][0] : format[key][1]; - } - - return moment.lang('et', { - months : "jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"), - monthsShort : "jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"), - weekdays : "pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev".split("_"), - weekdaysShort : "P_E_T_K_N_R_L".split("_"), - weekdaysMin : "P_E_T_K_N_R_L".split("_"), - longDateFormat : { - LT : "H:mm", - L : "DD.MM.YYYY", - LL : "D. MMMM YYYY", - LLL : "D. MMMM YYYY LT", - LLLL : "dddd, D. MMMM YYYY LT" - }, - calendar : { - sameDay : '[Täna,] LT', - nextDay : '[Homme,] LT', - nextWeek : '[Järgmine] dddd LT', - lastDay : '[Eile,] LT', - lastWeek : '[Eelmine] dddd LT', - sameElse : 'L' - }, - relativeTime : { - future : "%s pärast", - past : "%s tagasi", - s : processRelativeTime, - m : processRelativeTime, - mm : processRelativeTime, - h : processRelativeTime, - hh : processRelativeTime, - d : processRelativeTime, - dd : '%d päeva', - M : processRelativeTime, - MM : processRelativeTime, - y : processRelativeTime, - yy : processRelativeTime - }, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. + /** + * Create the toolbar to edit the selected node. The label and the color can be changed. Other colors are derived from the chosen color. + * + * @private + */ + exports._editNode = function() { + if (this.triggerFunctions.edit && this.editMode == true) { + var node = this._getSelectedNode(); + var data = {id:node.id, + label: node.label, + group: node.group, + shape: node.shape, + color: { + background:node.color.background, + border:node.color.border, + highlight: { + background:node.color.highlight.background, + border:node.color.highlight.border } - }); - })); + }}; + if (this.triggerFunctions.edit.length == 2) { + var me = this; + this.triggerFunctions.edit(data, function (finalizedData) { + me.nodesData.update(finalizedData); + me._createManipulatorBar(); + me.moving = true; + me.start(); + }); + } + else { + alert(this.constants.labels["editError"]); + } + } + else { + alert(this.constants.labels["editBoundError"]); + } + }; -/***/ }, -/* 81 */ -/***/ function(module, exports, __webpack_require__) { - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// moment.js language configuration - // language : euskara (eu) - // author : Eneko Illarramendi : https://github.com/eillarra - (function (factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(53)], __WEBPACK_AMD_DEFINE_RESULT__ = (factory.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory(window.moment); // Browser global - } - }(function (moment) { - return moment.lang('eu', { - months : "urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua".split("_"), - monthsShort : "urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.".split("_"), - weekdays : "igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata".split("_"), - weekdaysShort : "ig._al._ar._az._og._ol._lr.".split("_"), - weekdaysMin : "ig_al_ar_az_og_ol_lr".split("_"), - longDateFormat : { - LT : "HH:mm", - L : "YYYY-MM-DD", - LL : "YYYY[ko] MMMM[ren] D[a]", - LLL : "YYYY[ko] MMMM[ren] D[a] LT", - LLLL : "dddd, YYYY[ko] MMMM[ren] D[a] LT", - l : "YYYY-M-D", - ll : "YYYY[ko] MMM D[a]", - lll : "YYYY[ko] MMM D[a] LT", - llll : "ddd, YYYY[ko] MMM D[a] LT" - }, - calendar : { - sameDay : '[gaur] LT[etan]', - nextDay : '[bihar] LT[etan]', - nextWeek : 'dddd LT[etan]', - lastDay : '[atzo] LT[etan]', - lastWeek : '[aurreko] dddd LT[etan]', - sameElse : 'L' - }, - relativeTime : { - future : "%s barru", - past : "duela %s", - s : "segundo batzuk", - m : "minutu bat", - mm : "%d minutu", - h : "ordu bat", - hh : "%d ordu", - d : "egun bat", - dd : "%d egun", - M : "hilabete bat", - MM : "%d hilabete", - y : "urte bat", - yy : "%d urte" - }, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. + /** + * delete everything in the selection + * + * @private + */ + exports._deleteSelected = function() { + if (!this._selectionIsEmpty() && this.editMode == true) { + if (!this._clusterInSelection()) { + var selectedNodes = this.getSelectedNodes(); + var selectedEdges = this.getSelectedEdges(); + if (this.triggerFunctions.del) { + var me = this; + var data = {nodes: selectedNodes, edges: selectedEdges}; + if (this.triggerFunctions.del.length = 2) { + this.triggerFunctions.del(data, function (finalizedData) { + me.edgesData.remove(finalizedData.edges); + me.nodesData.remove(finalizedData.nodes); + me._unselectAll(); + me.moving = true; + me.start(); + }); } - }); - })); - - -/***/ }, -/* 82 */ -/***/ function(module, exports, __webpack_require__) { - - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// moment.js language configuration - // language : Persian Language - // author : Ebrahim Byagowi : https://github.com/ebraminio - - (function (factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(53)], __WEBPACK_AMD_DEFINE_RESULT__ = (factory.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory(window.moment); // Browser global - } - }(function (moment) { - var symbolMap = { - '1': '۱', - '2': '۲', - '3': '۳', - '4': '۴', - '5': '۵', - '6': '۶', - '7': '۷', - '8': '۸', - '9': '۹', - '0': '۰' - }, numberMap = { - '۱': '1', - '۲': '2', - '۳': '3', - '۴': '4', - '۵': '5', - '۶': '6', - '۷': '7', - '۸': '8', - '۹': '9', - '۰': '0' - }; - - return moment.lang('fa', { - months : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'), - monthsShort : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'), - weekdays : 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split('_'), - weekdaysShort : 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split('_'), - weekdaysMin : 'ی_د_س_چ_پ_ج_ش'.split('_'), - longDateFormat : { - LT : 'HH:mm', - L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY LT', - LLLL : 'dddd, D MMMM YYYY LT' - }, - meridiem : function (hour, minute, isLower) { - if (hour < 12) { - return "قبل از ظهر"; - } else { - return "بعد از ظهر"; - } - }, - calendar : { - sameDay : '[امروز ساعت] LT', - nextDay : '[فردا ساعت] LT', - nextWeek : 'dddd [ساعت] LT', - lastDay : '[دیروز ساعت] LT', - lastWeek : 'dddd [پیش] [ساعت] LT', - sameElse : 'L' - }, - relativeTime : { - future : 'در %s', - past : '%s پیش', - s : 'چندین ثانیه', - m : 'یک دقیقه', - mm : '%d دقیقه', - h : 'یک ساعت', - hh : '%d ساعت', - d : 'یک روز', - dd : '%d روز', - M : 'یک ماه', - MM : '%d ماه', - y : 'یک سال', - yy : '%d سال' - }, - preparse: function (string) { - return string.replace(/[۰-۹]/g, function (match) { - return numberMap[match]; - }).replace(/،/g, ','); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap[match]; - }).replace(/,/g, '،'); - }, - ordinal : '%dم', - week : { - dow : 6, // Saturday is the first day of the week. - doy : 12 // The week that contains Jan 1st is the first week of the year. + else { + alert(this.constants.labels["deleteError"]) } - }); - })); + } + else { + this.edgesData.remove(selectedEdges); + this.nodesData.remove(selectedNodes); + this._unselectAll(); + this.moving = true; + this.start(); + } + } + else { + alert(this.constants.labels["deleteClusterError"]); + } + } + }; /***/ }, -/* 83 */ +/* 52 */ /***/ function(module, exports, __webpack_require__) { - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// moment.js language configuration - // language : finnish (fi) - // author : Tarmo Aidantausta : https://github.com/bleadof - - (function (factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(53)], __WEBPACK_AMD_DEFINE_RESULT__ = (factory.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory(window.moment); // Browser global - } - }(function (moment) { - var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(' '), - numbersFuture = ['nolla', 'yhden', 'kahden', 'kolmen', 'neljän', 'viiden', 'kuuden', - numbersPast[7], numbersPast[8], numbersPast[9]]; - - function translate(number, withoutSuffix, key, isFuture) { - var result = ""; - switch (key) { - case 's': - return isFuture ? 'muutaman sekunnin' : 'muutama sekunti'; - case 'm': - return isFuture ? 'minuutin' : 'minuutti'; - case 'mm': - result = isFuture ? 'minuutin' : 'minuuttia'; - break; - case 'h': - return isFuture ? 'tunnin' : 'tunti'; - case 'hh': - result = isFuture ? 'tunnin' : 'tuntia'; - break; - case 'd': - return isFuture ? 'päivän' : 'päivä'; - case 'dd': - result = isFuture ? 'päivän' : 'päivää'; - break; - case 'M': - return isFuture ? 'kuukauden' : 'kuukausi'; - case 'MM': - result = isFuture ? 'kuukauden' : 'kuukautta'; - break; - case 'y': - return isFuture ? 'vuoden' : 'vuosi'; - case 'yy': - result = isFuture ? 'vuoden' : 'vuotta'; - break; - } - result = verbalNumber(number, isFuture) + " " + result; - return result; - } + var util = __webpack_require__(1); - function verbalNumber(number, isFuture) { - return number < 10 ? (isFuture ? numbersFuture[number] : numbersPast[number]) : number; - } - - return moment.lang('fi', { - months : "tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"), - monthsShort : "tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu".split("_"), - weekdays : "sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"), - weekdaysShort : "su_ma_ti_ke_to_pe_la".split("_"), - weekdaysMin : "su_ma_ti_ke_to_pe_la".split("_"), - longDateFormat : { - LT : "HH.mm", - L : "DD.MM.YYYY", - LL : "Do MMMM[ta] YYYY", - LLL : "Do MMMM[ta] YYYY, [klo] LT", - LLLL : "dddd, Do MMMM[ta] YYYY, [klo] LT", - l : "D.M.YYYY", - ll : "Do MMM YYYY", - lll : "Do MMM YYYY, [klo] LT", - llll : "ddd, Do MMM YYYY, [klo] LT" - }, - calendar : { - sameDay : '[tänään] [klo] LT', - nextDay : '[huomenna] [klo] LT', - nextWeek : 'dddd [klo] LT', - lastDay : '[eilen] [klo] LT', - lastWeek : '[viime] dddd[na] [klo] LT', - sameElse : 'L' - }, - relativeTime : { - future : "%s päästä", - past : "%s sitten", - s : translate, - m : translate, - mm : translate, - h : translate, - hh : translate, - d : translate, - dd : translate, - M : translate, - MM : translate, - y : translate, - yy : translate - }, - ordinal : "%d.", - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - })); + exports._cleanNavigation = function() { + // clean up previous navigation items + var wrapper = document.getElementById('network-navigation_wrapper'); + if (wrapper != null) { + this.containerElement.removeChild(wrapper); + } + document.onmouseup = null; + }; + /** + * Creation of the navigation controls nodes. They are drawn over the rest of the nodes and are not affected by scale and translation + * they have a triggerFunction which is called on click. If the position of the navigation controls is dependent + * on this.frame.canvas.clientWidth or this.frame.canvas.clientHeight, we flag horizontalAlignLeft and verticalAlignTop false. + * This means that the location will be corrected by the _relocateNavigation function on a size change of the canvas. + * + * @private + */ + exports._loadNavigationElements = function() { + this._cleanNavigation(); -/***/ }, -/* 84 */ -/***/ function(module, exports, __webpack_require__) { + this.navigationDivs = {}; + var navigationDivs = ['up','down','left','right','zoomIn','zoomOut','zoomExtends']; + var navigationDivActions = ['_moveUp','_moveDown','_moveLeft','_moveRight','_zoomIn','_zoomOut','zoomExtent']; - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// moment.js language configuration - // language : faroese (fo) - // author : Ragnar Johannesen : https://github.com/ragnar123 + this.navigationDivs['wrapper'] = document.createElement('div'); + this.navigationDivs['wrapper'].id = "network-navigation_wrapper"; + this.navigationDivs['wrapper'].style.position = "absolute"; + this.navigationDivs['wrapper'].style.width = this.frame.canvas.clientWidth + "px"; + this.navigationDivs['wrapper'].style.height = this.frame.canvas.clientHeight + "px"; + this.containerElement.insertBefore(this.navigationDivs['wrapper'],this.frame); - (function (factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(53)], __WEBPACK_AMD_DEFINE_RESULT__ = (factory.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory(window.moment); // Browser global - } - }(function (moment) { - return moment.lang('fo', { - months : "januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember".split("_"), - monthsShort : "jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"), - weekdays : "sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur".split("_"), - weekdaysShort : "sun_mán_týs_mik_hós_frí_ley".split("_"), - weekdaysMin : "su_má_tý_mi_hó_fr_le".split("_"), - longDateFormat : { - LT : "HH:mm", - L : "DD/MM/YYYY", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY LT", - LLLL : "dddd D. MMMM, YYYY LT" - }, - calendar : { - sameDay : '[Í dag kl.] LT', - nextDay : '[Í morgin kl.] LT', - nextWeek : 'dddd [kl.] LT', - lastDay : '[Í gjár kl.] LT', - lastWeek : '[síðstu] dddd [kl] LT', - sameElse : 'L' - }, - relativeTime : { - future : "um %s", - past : "%s síðani", - s : "fá sekund", - m : "ein minutt", - mm : "%d minuttir", - h : "ein tími", - hh : "%d tímar", - d : "ein dagur", - dd : "%d dagar", - M : "ein mánaði", - MM : "%d mánaðir", - y : "eitt ár", - yy : "%d ár" - }, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - })); + for (var i = 0; i < navigationDivs.length; i++) { + this.navigationDivs[navigationDivs[i]] = document.createElement('div'); + this.navigationDivs[navigationDivs[i]].id = "network-navigation_" + navigationDivs[i]; + this.navigationDivs[navigationDivs[i]].className = "network-navigation " + navigationDivs[i]; + this.navigationDivs['wrapper'].appendChild(this.navigationDivs[navigationDivs[i]]); + this.navigationDivs[navigationDivs[i]].onmousedown = this[navigationDivActions[i]].bind(this); + } + document.onmouseup = this._stopMovement.bind(this); + }; -/***/ }, -/* 85 */ -/***/ function(module, exports, __webpack_require__) { + /** + * this stops all movement induced by the navigation buttons + * + * @private + */ + exports._stopMovement = function() { + this._xStopMoving(); + this._yStopMoving(); + this._stopZoom(); + }; - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// moment.js language configuration - // language : canadian french (fr-ca) - // author : Jonathan Abourbih : https://github.com/jonbca - (function (factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(53)], __WEBPACK_AMD_DEFINE_RESULT__ = (factory.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory(window.moment); // Browser global - } - }(function (moment) { - return moment.lang('fr-ca', { - months : "janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"), - monthsShort : "janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"), - weekdays : "dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"), - weekdaysShort : "dim._lun._mar._mer._jeu._ven._sam.".split("_"), - weekdaysMin : "Di_Lu_Ma_Me_Je_Ve_Sa".split("_"), - longDateFormat : { - LT : "HH:mm", - L : "YYYY-MM-DD", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY LT", - LLLL : "dddd D MMMM YYYY LT" - }, - calendar : { - sameDay: "[Aujourd'hui à] LT", - nextDay: '[Demain à] LT', - nextWeek: 'dddd [à] LT', - lastDay: '[Hier à] LT', - lastWeek: 'dddd [dernier à] LT', - sameElse: 'L' - }, - relativeTime : { - future : "dans %s", - past : "il y a %s", - s : "quelques secondes", - m : "une minute", - mm : "%d minutes", - h : "une heure", - hh : "%d heures", - d : "un jour", - dd : "%d jours", - M : "un mois", - MM : "%d mois", - y : "un an", - yy : "%d ans" - }, - ordinal : function (number) { - return number + (number === 1 ? 'er' : ''); - } - }); - })); + /** + * move the screen up + * By using the increments, instead of adding a fixed number to the translation, we keep fluent and + * instant movement. The onKeypress event triggers immediately, then pauses, then triggers frequently + * To avoid this behaviour, we do the translation in the start loop. + * + * @private + */ + exports._moveUp = function(event) { + this.yIncrement = this.constants.keyboard.speed.y; + this.start(); // if there is no node movement, the calculation wont be done + util.preventDefault(event); + if (this.navigationDivs) { + this.navigationDivs['up'].className += " active"; + } + }; -/***/ }, -/* 86 */ -/***/ function(module, exports, __webpack_require__) { + /** + * move the screen down + * @private + */ + exports._moveDown = function(event) { + this.yIncrement = -this.constants.keyboard.speed.y; + this.start(); // if there is no node movement, the calculation wont be done + util.preventDefault(event); + if (this.navigationDivs) { + this.navigationDivs['down'].className += " active"; + } + }; - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// moment.js language configuration - // language : french (fr) - // author : John Fischer : https://github.com/jfroffice - (function (factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(53)], __WEBPACK_AMD_DEFINE_RESULT__ = (factory.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory(window.moment); // Browser global - } - }(function (moment) { - return moment.lang('fr', { - months : "janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"), - monthsShort : "janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"), - weekdays : "dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"), - weekdaysShort : "dim._lun._mar._mer._jeu._ven._sam.".split("_"), - weekdaysMin : "Di_Lu_Ma_Me_Je_Ve_Sa".split("_"), - longDateFormat : { - LT : "HH:mm", - L : "DD/MM/YYYY", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY LT", - LLLL : "dddd D MMMM YYYY LT" - }, - calendar : { - sameDay: "[Aujourd'hui à] LT", - nextDay: '[Demain à] LT', - nextWeek: 'dddd [à] LT', - lastDay: '[Hier à] LT', - lastWeek: 'dddd [dernier à] LT', - sameElse: 'L' - }, - relativeTime : { - future : "dans %s", - past : "il y a %s", - s : "quelques secondes", - m : "une minute", - mm : "%d minutes", - h : "une heure", - hh : "%d heures", - d : "un jour", - dd : "%d jours", - M : "un mois", - MM : "%d mois", - y : "un an", - yy : "%d ans" - }, - ordinal : function (number) { - return number + (number === 1 ? 'er' : ''); - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - })); + /** + * move the screen left + * @private + */ + exports._moveLeft = function(event) { + this.xIncrement = this.constants.keyboard.speed.x; + this.start(); // if there is no node movement, the calculation wont be done + util.preventDefault(event); + if (this.navigationDivs) { + this.navigationDivs['left'].className += " active"; + } + }; -/***/ }, -/* 87 */ -/***/ function(module, exports, __webpack_require__) { + /** + * move the screen right + * @private + */ + exports._moveRight = function(event) { + this.xIncrement = -this.constants.keyboard.speed.y; + this.start(); // if there is no node movement, the calculation wont be done + util.preventDefault(event); + if (this.navigationDivs) { + this.navigationDivs['right'].className += " active"; + } + }; - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// moment.js language configuration - // language : galician (gl) - // author : Juan G. Hurtado : https://github.com/juanghurtado - (function (factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(53)], __WEBPACK_AMD_DEFINE_RESULT__ = (factory.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory(window.moment); // Browser global - } - }(function (moment) { - return moment.lang('gl', { - months : "Xaneiro_Febreiro_Marzo_Abril_Maio_Xuño_Xullo_Agosto_Setembro_Outubro_Novembro_Decembro".split("_"), - monthsShort : "Xan._Feb._Mar._Abr._Mai._Xuñ._Xul._Ago._Set._Out._Nov._Dec.".split("_"), - weekdays : "Domingo_Luns_Martes_Mércores_Xoves_Venres_Sábado".split("_"), - weekdaysShort : "Dom._Lun._Mar._Mér._Xov._Ven._Sáb.".split("_"), - weekdaysMin : "Do_Lu_Ma_Mé_Xo_Ve_Sá".split("_"), - longDateFormat : { - LT : "H:mm", - L : "DD/MM/YYYY", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY LT", - LLLL : "dddd D MMMM YYYY LT" - }, - calendar : { - sameDay : function () { - return '[hoxe ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT'; - }, - nextDay : function () { - return '[mañá ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT'; - }, - nextWeek : function () { - return 'dddd [' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT'; - }, - lastDay : function () { - return '[onte ' + ((this.hours() !== 1) ? 'á' : 'a') + '] LT'; - }, - lastWeek : function () { - return '[o] dddd [pasado ' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT'; - }, - sameElse : 'L' - }, - relativeTime : { - future : function (str) { - if (str === "uns segundos") { - return "nuns segundos"; - } - return "en " + str; - }, - past : "hai %s", - s : "uns segundos", - m : "un minuto", - mm : "%d minutos", - h : "unha hora", - hh : "%d horas", - d : "un día", - dd : "%d días", - M : "un mes", - MM : "%d meses", - y : "un ano", - yy : "%d anos" - }, - ordinal : '%dº', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - })); + /** + * Zoom in, using the same method as the movement. + * @private + */ + exports._zoomIn = function(event) { + this.zoomIncrement = this.constants.keyboard.speed.zoom; + this.start(); // if there is no node movement, the calculation wont be done + util.preventDefault(event); + if (this.navigationDivs) { + this.navigationDivs['zoomIn'].className += " active"; + } + }; -/***/ }, -/* 88 */ -/***/ function(module, exports, __webpack_require__) { + /** + * Zoom out + * @private + */ + exports._zoomOut = function() { + this.zoomIncrement = -this.constants.keyboard.speed.zoom; + this.start(); // if there is no node movement, the calculation wont be done + util.preventDefault(event); + if (this.navigationDivs) { + this.navigationDivs['zoomOut'].className += " active"; + } + }; - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// moment.js language configuration - // language : Hebrew (he) - // author : Tomer Cohen : https://github.com/tomer - // author : Moshe Simantov : https://github.com/DevelopmentIL - // author : Tal Ater : https://github.com/TalAter - - (function (factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(53)], __WEBPACK_AMD_DEFINE_RESULT__ = (factory.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory(window.moment); // Browser global - } - }(function (moment) { - return moment.lang('he', { - months : "ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר".split("_"), - monthsShort : "ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳".split("_"), - weekdays : "ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת".split("_"), - weekdaysShort : "א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳".split("_"), - weekdaysMin : "א_ב_ג_ד_ה_ו_ש".split("_"), - longDateFormat : { - LT : "HH:mm", - L : "DD/MM/YYYY", - LL : "D [ב]MMMM YYYY", - LLL : "D [ב]MMMM YYYY LT", - LLLL : "dddd, D [ב]MMMM YYYY LT", - l : "D/M/YYYY", - ll : "D MMM YYYY", - lll : "D MMM YYYY LT", - llll : "ddd, D MMM YYYY LT" - }, - calendar : { - sameDay : '[היום ב־]LT', - nextDay : '[מחר ב־]LT', - nextWeek : 'dddd [בשעה] LT', - lastDay : '[אתמול ב־]LT', - lastWeek : '[ביום] dddd [האחרון בשעה] LT', - sameElse : 'L' - }, - relativeTime : { - future : "בעוד %s", - past : "לפני %s", - s : "מספר שניות", - m : "דקה", - mm : "%d דקות", - h : "שעה", - hh : function (number) { - if (number === 2) { - return "שעתיים"; - } - return number + " שעות"; - }, - d : "יום", - dd : function (number) { - if (number === 2) { - return "יומיים"; - } - return number + " ימים"; - }, - M : "חודש", - MM : function (number) { - if (number === 2) { - return "חודשיים"; - } - return number + " חודשים"; - }, - y : "שנה", - yy : function (number) { - if (number === 2) { - return "שנתיים"; - } - return number + " שנים"; - } - } - }); - })); + /** + * Stop zooming and unhighlight the zoom controls + * @private + */ + exports._stopZoom = function() { + this.zoomIncrement = 0; + if (this.navigationDivs) { + this.navigationDivs['zoomIn'].className = this.navigationDivs['zoomIn'].className.replace(" active",""); + this.navigationDivs['zoomOut'].className = this.navigationDivs['zoomOut'].className.replace(" active",""); + } + }; -/***/ }, -/* 89 */ -/***/ function(module, exports, __webpack_require__) { - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// moment.js language configuration - // language : hindi (hi) - // author : Mayank Singhal : https://github.com/mayanksinghal + /** + * Stop moving in the Y direction and unHighlight the up and down + * @private + */ + exports._yStopMoving = function() { + this.yIncrement = 0; + if (this.navigationDivs) { + this.navigationDivs['up'].className = this.navigationDivs['up'].className.replace(" active",""); + this.navigationDivs['down'].className = this.navigationDivs['down'].className.replace(" active",""); + } + }; - (function (factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(53)], __WEBPACK_AMD_DEFINE_RESULT__ = (factory.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory(window.moment); // Browser global - } - }(function (moment) { - var symbolMap = { - '1': '१', - '2': '२', - '3': '३', - '4': '४', - '5': '५', - '6': '६', - '7': '७', - '8': '८', - '9': '९', - '0': '०' - }, - numberMap = { - '१': '1', - '२': '2', - '३': '3', - '४': '4', - '५': '5', - '६': '6', - '७': '7', - '८': '8', - '९': '9', - '०': '0' - }; - return moment.lang('hi', { - months : 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split("_"), - monthsShort : 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split("_"), - weekdays : 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split("_"), - weekdaysShort : 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split("_"), - weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split("_"), - longDateFormat : { - LT : "A h:mm बजे", - L : "DD/MM/YYYY", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY, LT", - LLLL : "dddd, D MMMM YYYY, LT" - }, - calendar : { - sameDay : '[आज] LT', - nextDay : '[कल] LT', - nextWeek : 'dddd, LT', - lastDay : '[कल] LT', - lastWeek : '[पिछले] dddd, LT', - sameElse : 'L' - }, - relativeTime : { - future : "%s में", - past : "%s पहले", - s : "कुछ ही क्षण", - m : "एक मिनट", - mm : "%d मिनट", - h : "एक घंटा", - hh : "%d घंटे", - d : "एक दिन", - dd : "%d दिन", - M : "एक महीने", - MM : "%d महीने", - y : "एक वर्ष", - yy : "%d वर्ष" - }, - preparse: function (string) { - return string.replace(/[१२३४५६७८९०]/g, function (match) { - return numberMap[match]; - }); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap[match]; - }); - }, - // Hindi notation for meridiems are quite fuzzy in practice. While there exists - // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi. - meridiem : function (hour, minute, isLower) { - if (hour < 4) { - return "रात"; - } else if (hour < 10) { - return "सुबह"; - } else if (hour < 17) { - return "दोपहर"; - } else if (hour < 20) { - return "शाम"; - } else { - return "रात"; - } - }, - week : { - dow : 0, // Sunday is the first day of the week. - doy : 6 // The week that contains Jan 1st is the first week of the year. - } - }); - })); + /** + * Stop moving in the X direction and unHighlight left and right. + * @private + */ + exports._xStopMoving = function() { + this.xIncrement = 0; + if (this.navigationDivs) { + this.navigationDivs['left'].className = this.navigationDivs['left'].className.replace(" active",""); + this.navigationDivs['right'].className = this.navigationDivs['right'].className.replace(" active",""); + } + }; /***/ }, -/* 90 */ +/* 53 */ /***/ function(module, exports, __webpack_require__) { - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// moment.js language configuration - // language : hrvatski (hr) - // author : Bojan Marković : https://github.com/bmarkovic - - // based on (sl) translation by Robert Sedovšek - - (function (factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(53)], __WEBPACK_AMD_DEFINE_RESULT__ = (factory.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory(window.moment); // Browser global + exports._resetLevels = function() { + for (var nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + var node = this.nodes[nodeId]; + if (node.preassignedLevel == false) { + node.level = -1; + } } - }(function (moment) { - - function translate(number, withoutSuffix, key) { - var result = number + " "; - switch (key) { - case 'm': - return withoutSuffix ? 'jedna minuta' : 'jedne minute'; - case 'mm': - if (number === 1) { - result += 'minuta'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'minute'; - } else { - result += 'minuta'; - } - return result; - case 'h': - return withoutSuffix ? 'jedan sat' : 'jednog sata'; - case 'hh': - if (number === 1) { - result += 'sat'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'sata'; - } else { - result += 'sati'; - } - return result; - case 'dd': - if (number === 1) { - result += 'dan'; - } else { - result += 'dana'; - } - return result; - case 'MM': - if (number === 1) { - result += 'mjesec'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'mjeseca'; - } else { - result += 'mjeseci'; - } - return result; - case 'yy': - if (number === 1) { - result += 'godina'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'godine'; - } else { - result += 'godina'; - } - return result; - } - } - - return moment.lang('hr', { - months : "sječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_"), - monthsShort : "sje._vel._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"), - weekdays : "nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"), - weekdaysShort : "ned._pon._uto._sri._čet._pet._sub.".split("_"), - weekdaysMin : "ne_po_ut_sr_če_pe_su".split("_"), - longDateFormat : { - LT : "H:mm", - L : "DD. MM. YYYY", - LL : "D. MMMM YYYY", - LLL : "D. MMMM YYYY LT", - LLLL : "dddd, D. MMMM YYYY LT" - }, - calendar : { - sameDay : '[danas u] LT', - nextDay : '[sutra u] LT', - - nextWeek : function () { - switch (this.day()) { - case 0: - return '[u] [nedjelju] [u] LT'; - case 3: - return '[u] [srijedu] [u] LT'; - case 6: - return '[u] [subotu] [u] LT'; - case 1: - case 2: - case 4: - case 5: - return '[u] dddd [u] LT'; - } - }, - lastDay : '[jučer u] LT', - lastWeek : function () { - switch (this.day()) { - case 0: - case 3: - return '[prošlu] dddd [u] LT'; - case 6: - return '[prošle] [subote] [u] LT'; - case 1: - case 2: - case 4: - case 5: - return '[prošli] dddd [u] LT'; - } - }, - sameElse : 'L' - }, - relativeTime : { - future : "za %s", - past : "prije %s", - s : "par sekundi", - m : translate, - mm : translate, - h : translate, - hh : translate, - d : "dan", - dd : translate, - M : "mjesec", - MM : translate, - y : "godinu", - yy : translate - }, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - })); - - -/***/ }, -/* 91 */ -/***/ function(module, exports, __webpack_require__) { - - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// moment.js language configuration - // language : hungarian (hu) - // author : Adam Brunner : https://github.com/adambrunner + } + }; - (function (factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(53)], __WEBPACK_AMD_DEFINE_RESULT__ = (factory.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory(window.moment); // Browser global + /** + * This is the main function to layout the nodes in a hierarchical way. + * It checks if the node details are supplied correctly + * + * @private + */ + exports._setupHierarchicalLayout = function() { + if (this.constants.hierarchicalLayout.enabled == true && this.nodeIndices.length > 0) { + if (this.constants.hierarchicalLayout.direction == "RL" || this.constants.hierarchicalLayout.direction == "DU") { + this.constants.hierarchicalLayout.levelSeparation *= -1; } - }(function (moment) { - var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' '); - - function translate(number, withoutSuffix, key, isFuture) { - var num = number, - suffix; - - switch (key) { - case 's': - return (isFuture || withoutSuffix) ? 'néhány másodperc' : 'néhány másodperce'; - case 'm': - return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce'); - case 'mm': - return num + (isFuture || withoutSuffix ? ' perc' : ' perce'); - case 'h': - return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája'); - case 'hh': - return num + (isFuture || withoutSuffix ? ' óra' : ' órája'); - case 'd': - return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja'); - case 'dd': - return num + (isFuture || withoutSuffix ? ' nap' : ' napja'); - case 'M': - return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja'); - case 'MM': - return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja'); - case 'y': - return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve'); - case 'yy': - return num + (isFuture || withoutSuffix ? ' év' : ' éve'); - } - - return ''; + else { + this.constants.hierarchicalLayout.levelSeparation = Math.abs(this.constants.hierarchicalLayout.levelSeparation); } - function week(isFuture) { - return (isFuture ? '' : '[múlt] ') + '[' + weekEndings[this.day()] + '] LT[-kor]'; + if (this.constants.hierarchicalLayout.direction == "RL" || this.constants.hierarchicalLayout.direction == "LR") { + if (this.constants.smoothCurves.enabled == true) { + this.constants.smoothCurves.type = "vertical"; + } } + else { + if (this.constants.smoothCurves.enabled == true) { + this.constants.smoothCurves.type = "horizontal"; + } + } + // get the size of the largest hubs and check if the user has defined a level for a node. + var hubsize = 0; + var node, nodeId; + var definedLevel = false; + var undefinedLevel = false; - return moment.lang('hu', { - months : "január_február_március_április_május_június_július_augusztus_szeptember_október_november_december".split("_"), - monthsShort : "jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec".split("_"), - weekdays : "vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat".split("_"), - weekdaysShort : "vas_hét_kedd_sze_csüt_pén_szo".split("_"), - weekdaysMin : "v_h_k_sze_cs_p_szo".split("_"), - longDateFormat : { - LT : "H:mm", - L : "YYYY.MM.DD.", - LL : "YYYY. MMMM D.", - LLL : "YYYY. MMMM D., LT", - LLLL : "YYYY. MMMM D., dddd LT" - }, - meridiem : function (hours, minutes, isLower) { - if (hours < 12) { - return isLower === true ? 'de' : 'DE'; - } else { - return isLower === true ? 'du' : 'DU'; - } - }, - calendar : { - sameDay : '[ma] LT[-kor]', - nextDay : '[holnap] LT[-kor]', - nextWeek : function () { - return week.call(this, true); - }, - lastDay : '[tegnap] LT[-kor]', - lastWeek : function () { - return week.call(this, false); - }, - sameElse : 'L' - }, - relativeTime : { - future : "%s múlva", - past : "%s", - s : translate, - m : translate, - mm : translate, - h : translate, - hh : translate, - d : translate, - dd : translate, - M : translate, - MM : translate, - y : translate, - yy : translate - }, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - })); - - -/***/ }, -/* 92 */ -/***/ function(module, exports, __webpack_require__) { - - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// moment.js language configuration - // language : Armenian (hy-am) - // author : Armendarabyan : https://github.com/armendarabyan + for (nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + node = this.nodes[nodeId]; + if (node.level != -1) { + definedLevel = true; + } + else { + undefinedLevel = true; + } + if (hubsize < node.edges.length) { + hubsize = node.edges.length; + } + } + } - (function (factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(53)], __WEBPACK_AMD_DEFINE_RESULT__ = (factory.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory(window.moment); // Browser global + // if the user defined some levels but not all, alert and run without hierarchical layout + if (undefinedLevel == true && definedLevel == true) { + alert("To use the hierarchical layout, nodes require either no predefined levels or levels have to be defined for all nodes."); + this.zoomExtent(true,this.constants.clustering.enabled); + if (!this.constants.clustering.enabled) { + this.start(); + } } - }(function (moment) { + else { + // setup the system to use hierarchical method. + this._changeConstants(); - function monthsCaseReplace(m, format) { - var months = { - 'nominative': 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split('_'), - 'accusative': 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split('_') - }, + // define levels if undefined by the users. Based on hubsize + if (undefinedLevel == true) { + this._determineLevels(hubsize); + } + // check the distribution of the nodes per level. + var distribution = this._getDistribution(); - nounCase = (/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/).test(format) ? - 'accusative' : - 'nominative'; + // place the nodes on the canvas. This also stablilizes the system. + this._placeNodesByHierarchy(distribution); - return months[nounCase][m.month()]; + // start the simulation. + this.start(); } + } + }; - function monthsShortCaseReplace(m, format) { - var monthsShort = 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'); - - return monthsShort[m.month()]; - } - function weekdaysCaseReplace(m, format) { - var weekdays = 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split('_'); + /** + * This function places the nodes on the canvas based on the hierarchial distribution. + * + * @param {Object} distribution | obtained by the function this._getDistribution() + * @private + */ + exports._placeNodesByHierarchy = function(distribution) { + var nodeId, node; - return weekdays[m.day()]; - } + // start placing all the level 0 nodes first. Then recursively position their branches. + for (var level in distribution) { + if (distribution.hasOwnProperty(level)) { - return moment.lang('hy-am', { - months : monthsCaseReplace, - monthsShort : monthsShortCaseReplace, - weekdays : weekdaysCaseReplace, - weekdaysShort : "կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"), - weekdaysMin : "կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"), - longDateFormat : { - LT : "HH:mm", - L : "DD.MM.YYYY", - LL : "D MMMM YYYY թ.", - LLL : "D MMMM YYYY թ., LT", - LLLL : "dddd, D MMMM YYYY թ., LT" - }, - calendar : { - sameDay: '[այսօր] LT', - nextDay: '[վաղը] LT', - lastDay: '[երեկ] LT', - nextWeek: function () { - return 'dddd [օրը ժամը] LT'; - }, - lastWeek: function () { - return '[անցած] dddd [օրը ժամը] LT'; - }, - sameElse: 'L' - }, - relativeTime : { - future : "%s հետո", - past : "%s առաջ", - s : "մի քանի վայրկյան", - m : "րոպե", - mm : "%d րոպե", - h : "ժամ", - hh : "%d ժամ", - d : "օր", - dd : "%d օր", - M : "ամիս", - MM : "%d ամիս", - y : "տարի", - yy : "%d տարի" - }, + for (nodeId in distribution[level].nodes) { + if (distribution[level].nodes.hasOwnProperty(nodeId)) { + node = distribution[level].nodes[nodeId]; + if (this.constants.hierarchicalLayout.direction == "UD" || this.constants.hierarchicalLayout.direction == "DU") { + if (node.xFixed) { + node.x = distribution[level].minPos; + node.xFixed = false; - meridiem : function (hour) { - if (hour < 4) { - return "գիշերվա"; - } else if (hour < 12) { - return "առավոտվա"; - } else if (hour < 17) { - return "ցերեկվա"; - } else { - return "երեկոյան"; + distribution[level].minPos += distribution[level].nodeSpacing; } - }, + } + else { + if (node.yFixed) { + node.y = distribution[level].minPos; + node.yFixed = false; - ordinal: function (number, period) { - switch (period) { - case 'DDD': - case 'w': - case 'W': - case 'DDDo': - if (number === 1) { - return number + '-ին'; - } - return number + '-րդ'; - default: - return number; + distribution[level].minPos += distribution[level].nodeSpacing; } - }, - - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. + } + this._placeBranchNodes(node.edges,node.id,distribution,node.level); } - }); - })); - - -/***/ }, -/* 93 */ -/***/ function(module, exports, __webpack_require__) { - - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// moment.js language configuration - // language : Bahasa Indonesia (id) - // author : Mohammad Satrio Utomo : https://github.com/tyok - // reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan + } + } + } - (function (factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(53)], __WEBPACK_AMD_DEFINE_RESULT__ = (factory.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory(window.moment); // Browser global - } - }(function (moment) { - return moment.lang('id', { - months : "Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"), - monthsShort : "Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nov_Des".split("_"), - weekdays : "Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"), - weekdaysShort : "Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"), - weekdaysMin : "Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"), - longDateFormat : { - LT : "HH.mm", - L : "DD/MM/YYYY", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY [pukul] LT", - LLLL : "dddd, D MMMM YYYY [pukul] LT" - }, - meridiem : function (hours, minutes, isLower) { - if (hours < 11) { - return 'pagi'; - } else if (hours < 15) { - return 'siang'; - } else if (hours < 19) { - return 'sore'; - } else { - return 'malam'; - } - }, - calendar : { - sameDay : '[Hari ini pukul] LT', - nextDay : '[Besok pukul] LT', - nextWeek : 'dddd [pukul] LT', - lastDay : '[Kemarin pukul] LT', - lastWeek : 'dddd [lalu pukul] LT', - sameElse : 'L' - }, - relativeTime : { - future : "dalam %s", - past : "%s yang lalu", - s : "beberapa detik", - m : "semenit", - mm : "%d menit", - h : "sejam", - hh : "%d jam", - d : "sehari", - dd : "%d hari", - M : "sebulan", - MM : "%d bulan", - y : "setahun", - yy : "%d tahun" - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - })); + // stabilize the system after positioning. This function calls zoomExtent. + this._stabilize(); + }; -/***/ }, -/* 94 */ -/***/ function(module, exports, __webpack_require__) { + /** + * This function get the distribution of levels based on hubsize + * + * @returns {Object} + * @private + */ + exports._getDistribution = function() { + var distribution = {}; + var nodeId, node, level; - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// moment.js language configuration - // language : icelandic (is) - // author : Hinrik Örn Sigurðsson : https://github.com/hinrik + // we fix Y because the hierarchy is vertical, we fix X so we do not give a node an x position for a second time. + // the fix of X is removed after the x value has been set. + for (nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + node = this.nodes[nodeId]; + node.xFixed = true; + node.yFixed = true; + if (this.constants.hierarchicalLayout.direction == "UD" || this.constants.hierarchicalLayout.direction == "DU") { + node.y = this.constants.hierarchicalLayout.levelSeparation*node.level; + } + else { + node.x = this.constants.hierarchicalLayout.levelSeparation*node.level; + } + if (distribution[node.level] === undefined) { + distribution[node.level] = {amount: 0, nodes: {}, minPos:0, nodeSpacing:0}; + } + distribution[node.level].amount += 1; + distribution[node.level].nodes[nodeId] = node; + } + } - (function (factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(53)], __WEBPACK_AMD_DEFINE_RESULT__ = (factory.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory(window.moment); // Browser global + // determine the largest amount of nodes of all levels + var maxCount = 0; + for (level in distribution) { + if (distribution.hasOwnProperty(level)) { + if (maxCount < distribution[level].amount) { + maxCount = distribution[level].amount; + } } - }(function (moment) { - function plural(n) { - if (n % 100 === 11) { - return true; - } else if (n % 10 === 1) { - return false; - } - return true; + } + + // set the initial position and spacing of each nodes accordingly + for (level in distribution) { + if (distribution.hasOwnProperty(level)) { + distribution[level].nodeSpacing = (maxCount + 1) * this.constants.hierarchicalLayout.nodeSpacing; + distribution[level].nodeSpacing /= (distribution[level].amount + 1); + distribution[level].minPos = distribution[level].nodeSpacing - (0.5 * (distribution[level].amount + 1) * distribution[level].nodeSpacing); } + } - function translate(number, withoutSuffix, key, isFuture) { - var result = number + " "; - switch (key) { - case 's': - return withoutSuffix || isFuture ? 'nokkrar sekúndur' : 'nokkrum sekúndum'; - case 'm': - return withoutSuffix ? 'mínúta' : 'mínútu'; - case 'mm': - if (plural(number)) { - return result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum'); - } else if (withoutSuffix) { - return result + 'mínúta'; - } - return result + 'mínútu'; - case 'hh': - if (plural(number)) { - return result + (withoutSuffix || isFuture ? 'klukkustundir' : 'klukkustundum'); - } - return result + 'klukkustund'; - case 'd': - if (withoutSuffix) { - return 'dagur'; - } - return isFuture ? 'dag' : 'degi'; - case 'dd': - if (plural(number)) { - if (withoutSuffix) { - return result + 'dagar'; - } - return result + (isFuture ? 'daga' : 'dögum'); - } else if (withoutSuffix) { - return result + 'dagur'; - } - return result + (isFuture ? 'dag' : 'degi'); - case 'M': - if (withoutSuffix) { - return 'mánuður'; - } - return isFuture ? 'mánuð' : 'mánuði'; - case 'MM': - if (plural(number)) { - if (withoutSuffix) { - return result + 'mánuðir'; - } - return result + (isFuture ? 'mánuði' : 'mánuðum'); - } else if (withoutSuffix) { - return result + 'mánuður'; - } - return result + (isFuture ? 'mánuð' : 'mánuði'); - case 'y': - return withoutSuffix || isFuture ? 'ár' : 'ári'; - case 'yy': - if (plural(number)) { - return result + (withoutSuffix || isFuture ? 'ár' : 'árum'); - } - return result + (withoutSuffix || isFuture ? 'ár' : 'ári'); - } - } - - return moment.lang('is', { - months : "janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember".split("_"), - monthsShort : "jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des".split("_"), - weekdays : "sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur".split("_"), - weekdaysShort : "sun_mán_þri_mið_fim_fös_lau".split("_"), - weekdaysMin : "Su_Má_Þr_Mi_Fi_Fö_La".split("_"), - longDateFormat : { - LT : "H:mm", - L : "DD/MM/YYYY", - LL : "D. MMMM YYYY", - LLL : "D. MMMM YYYY [kl.] LT", - LLLL : "dddd, D. MMMM YYYY [kl.] LT" - }, - calendar : { - sameDay : '[í dag kl.] LT', - nextDay : '[á morgun kl.] LT', - nextWeek : 'dddd [kl.] LT', - lastDay : '[í gær kl.] LT', - lastWeek : '[síðasta] dddd [kl.] LT', - sameElse : 'L' - }, - relativeTime : { - future : "eftir %s", - past : "fyrir %s síðan", - s : translate, - m : translate, - mm : translate, - h : "klukkustund", - hh : translate, - d : translate, - dd : translate, - M : translate, - MM : translate, - y : translate, - yy : translate - }, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - })); + return distribution; + }; -/***/ }, -/* 95 */ -/***/ function(module, exports, __webpack_require__) { + /** + * this function allocates nodes in levels based on the recursive branching from the largest hubs. + * + * @param hubsize + * @private + */ + exports._determineLevels = function(hubsize) { + var nodeId, node; - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// moment.js language configuration - // language : italian (it) - // author : Lorenzo : https://github.com/aliem - // author: Mattia Larentis: https://github.com/nostalgiaz + // determine hubs + for (nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + node = this.nodes[nodeId]; + if (node.edges.length == hubsize) { + node.level = 0; + } + } + } - (function (factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(53)], __WEBPACK_AMD_DEFINE_RESULT__ = (factory.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory(window.moment); // Browser global - } - }(function (moment) { - return moment.lang('it', { - months : "gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"), - monthsShort : "gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"), - weekdays : "Domenica_Lunedì_Martedì_Mercoledì_Giovedì_Venerdì_Sabato".split("_"), - weekdaysShort : "Dom_Lun_Mar_Mer_Gio_Ven_Sab".split("_"), - weekdaysMin : "D_L_Ma_Me_G_V_S".split("_"), - longDateFormat : { - LT : "HH:mm", - L : "DD/MM/YYYY", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY LT", - LLLL : "dddd, D MMMM YYYY LT" - }, - calendar : { - sameDay: '[Oggi alle] LT', - nextDay: '[Domani alle] LT', - nextWeek: 'dddd [alle] LT', - lastDay: '[Ieri alle] LT', - lastWeek: '[lo scorso] dddd [alle] LT', - sameElse: 'L' - }, - relativeTime : { - future : function (s) { - return ((/^[0-9].+$/).test(s) ? "tra" : "in") + " " + s; - }, - past : "%s fa", - s : "alcuni secondi", - m : "un minuto", - mm : "%d minuti", - h : "un'ora", - hh : "%d ore", - d : "un giorno", - dd : "%d giorni", - M : "un mese", - MM : "%d mesi", - y : "un anno", - yy : "%d anni" - }, - ordinal: '%dº', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - })); + // branch from hubs + for (nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + node = this.nodes[nodeId]; + if (node.level == 0) { + this._setLevel(1,node.edges,node.id); + } + } + } + }; -/***/ }, -/* 96 */ -/***/ function(module, exports, __webpack_require__) { + /** + * Since hierarchical layout does not support: + * - smooth curves (based on the physics), + * - clustering (based on dynamic node counts) + * + * We disable both features so there will be no problems. + * + * @private + */ + exports._changeConstants = function() { + this.constants.clustering.enabled = false; + this.constants.physics.barnesHut.enabled = false; + this.constants.physics.hierarchicalRepulsion.enabled = true; + this._loadSelectedForceSolver(); + if (this.constants.smoothCurves.enabled == true) { + this.constants.smoothCurves.dynamic = false; + } + this._configureSmoothCurves(); + }; - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// moment.js language configuration - // language : japanese (ja) - // author : LI Long : https://github.com/baryon - (function (factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(53)], __WEBPACK_AMD_DEFINE_RESULT__ = (factory.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory(window.moment); // Browser global - } - }(function (moment) { - return moment.lang('ja', { - months : "1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"), - monthsShort : "1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"), - weekdays : "日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日".split("_"), - weekdaysShort : "日_月_火_水_木_金_土".split("_"), - weekdaysMin : "日_月_火_水_木_金_土".split("_"), - longDateFormat : { - LT : "Ah時m分", - L : "YYYY/MM/DD", - LL : "YYYY年M月D日", - LLL : "YYYY年M月D日LT", - LLLL : "YYYY年M月D日LT dddd" - }, - meridiem : function (hour, minute, isLower) { - if (hour < 12) { - return "午前"; - } else { - return "午後"; - } - }, - calendar : { - sameDay : '[今日] LT', - nextDay : '[明日] LT', - nextWeek : '[来週]dddd LT', - lastDay : '[昨日] LT', - lastWeek : '[前週]dddd LT', - sameElse : 'L' - }, - relativeTime : { - future : "%s後", - past : "%s前", - s : "数秒", - m : "1分", - mm : "%d分", - h : "1時間", - hh : "%d時間", - d : "1日", - dd : "%d日", - M : "1ヶ月", - MM : "%dヶ月", - y : "1年", - yy : "%d年" - } - }); - })); + /** + * This is a recursively called function to enumerate the branches from the largest hubs and place the nodes + * on a X position that ensures there will be no overlap. + * + * @param edges + * @param parentId + * @param distribution + * @param parentLevel + * @private + */ + exports._placeBranchNodes = function(edges, parentId, distribution, parentLevel) { + for (var i = 0; i < edges.length; i++) { + var childNode = null; + if (edges[i].toId == parentId) { + childNode = edges[i].from; + } + else { + childNode = edges[i].to; + } + // if a node is conneceted to another node on the same level (or higher (means lower level))!, this is not handled here. + var nodeMoved = false; + if (this.constants.hierarchicalLayout.direction == "UD" || this.constants.hierarchicalLayout.direction == "DU") { + if (childNode.xFixed && childNode.level > parentLevel) { + childNode.xFixed = false; + childNode.x = distribution[childNode.level].minPos; + nodeMoved = true; + } + } + else { + if (childNode.yFixed && childNode.level > parentLevel) { + childNode.yFixed = false; + childNode.y = distribution[childNode.level].minPos; + nodeMoved = true; + } + } -/***/ }, -/* 97 */ -/***/ function(module, exports, __webpack_require__) { + if (nodeMoved == true) { + distribution[childNode.level].minPos += distribution[childNode.level].nodeSpacing; + if (childNode.edges.length > 1) { + this._placeBranchNodes(childNode.edges,childNode.id,distribution,childNode.level); + } + } + } + }; - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// moment.js language configuration - // language : Georgian (ka) - // author : Irakli Janiashvili : https://github.com/irakli-janiashvili - (function (factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(53)], __WEBPACK_AMD_DEFINE_RESULT__ = (factory.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory(window.moment); // Browser global + /** + * this function is called recursively to enumerate the barnches of the largest hubs and give each node a level. + * + * @param level + * @param edges + * @param parentId + * @private + */ + exports._setLevel = function(level, edges, parentId) { + for (var i = 0; i < edges.length; i++) { + var childNode = null; + if (edges[i].toId == parentId) { + childNode = edges[i].from; } - }(function (moment) { - - function monthsCaseReplace(m, format) { - var months = { - 'nominative': 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split('_'), - 'accusative': 'იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს'.split('_') - }, + else { + childNode = edges[i].to; + } + if (childNode.level == -1 || childNode.level > level) { + childNode.level = level; + if (edges.length > 1) { + this._setLevel(level+1, childNode.edges, childNode.id); + } + } + } + }; - nounCase = (/D[oD] *MMMM?/).test(format) ? - 'accusative' : - 'nominative'; - return months[nounCase][m.month()]; + /** + * Unfix nodes + * + * @private + */ + exports._restoreNodes = function() { + for (var nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + this.nodes[nodeId].xFixed = false; + this.nodes[nodeId].yFixed = false; } + } + }; - function weekdaysCaseReplace(m, format) { - var weekdays = { - 'nominative': 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split('_'), - 'accusative': 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split('_') - }, - - nounCase = (/(წინა|შემდეგ)/).test(format) ? - 'accusative' : - 'nominative'; - return weekdays[nounCase][m.day()]; - } +/***/ }, +/* 54 */ +/***/ function(module, exports, __webpack_require__) { - return moment.lang('ka', { - months : monthsCaseReplace, - monthsShort : "იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ".split("_"), - weekdays : weekdaysCaseReplace, - weekdaysShort : "კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ".split("_"), - weekdaysMin : "კვ_ორ_სა_ოთ_ხუ_პა_შა".split("_"), - longDateFormat : { - LT : "h:mm A", - L : "DD/MM/YYYY", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY LT", - LLLL : "dddd, D MMMM YYYY LT" - }, - calendar : { - sameDay : '[დღეს] LT[-ზე]', - nextDay : '[ხვალ] LT[-ზე]', - lastDay : '[გუშინ] LT[-ზე]', - nextWeek : '[შემდეგ] dddd LT[-ზე]', - lastWeek : '[წინა] dddd LT-ზე', - sameElse : 'L' - }, - relativeTime : { - future : function (s) { - return (/(წამი|წუთი|საათი|წელი)/).test(s) ? - s.replace(/ი$/, "ში") : - s + "ში"; - }, - past : function (s) { - if ((/(წამი|წუთი|საათი|დღე|თვე)/).test(s)) { - return s.replace(/(ი|ე)$/, "ის წინ"); - } - if ((/წელი/).test(s)) { - return s.replace(/წელი$/, "წლის წინ"); - } - }, - s : "რამდენიმე წამი", - m : "წუთი", - mm : "%d წუთი", - h : "საათი", - hh : "%d საათი", - d : "დღე", - dd : "%d დღე", - M : "თვე", - MM : "%d თვე", - y : "წელი", - yy : "%d წელი" - }, - ordinal : function (number) { - if (number === 0) { - return number; - } + var util = __webpack_require__(1); + var RepulsionMixin = __webpack_require__(56); + var HierarchialRepulsionMixin = __webpack_require__(57); + var BarnesHutMixin = __webpack_require__(58); - if (number === 1) { - return number + "-ლი"; - } + /** + * Toggling barnes Hut calculation on and off. + * + * @private + */ + exports._toggleBarnesHut = function () { + this.constants.physics.barnesHut.enabled = !this.constants.physics.barnesHut.enabled; + this._loadSelectedForceSolver(); + this.moving = true; + this.start(); + }; - if ((number < 20) || (number <= 100 && (number % 20 === 0)) || (number % 100 === 0)) { - return "მე-" + number; - } - return number + "-ე"; - }, - week : { - dow : 1, - doy : 7 - } - }); - })); + /** + * This loads the node force solver based on the barnes hut or repulsion algorithm + * + * @private + */ + exports._loadSelectedForceSolver = function () { + // this overloads the this._calculateNodeForces + if (this.constants.physics.barnesHut.enabled == true) { + this._clearMixin(RepulsionMixin); + this._clearMixin(HierarchialRepulsionMixin); + this.constants.physics.centralGravity = this.constants.physics.barnesHut.centralGravity; + this.constants.physics.springLength = this.constants.physics.barnesHut.springLength; + this.constants.physics.springConstant = this.constants.physics.barnesHut.springConstant; + this.constants.physics.damping = this.constants.physics.barnesHut.damping; -/***/ }, -/* 98 */ -/***/ function(module, exports, __webpack_require__) { + this._loadMixin(BarnesHutMixin); + } + else if (this.constants.physics.hierarchicalRepulsion.enabled == true) { + this._clearMixin(BarnesHutMixin); + this._clearMixin(RepulsionMixin); - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// moment.js language configuration - // language : khmer (km) - // author : Kruy Vanna : https://github.com/kruyvanna + this.constants.physics.centralGravity = this.constants.physics.hierarchicalRepulsion.centralGravity; + this.constants.physics.springLength = this.constants.physics.hierarchicalRepulsion.springLength; + this.constants.physics.springConstant = this.constants.physics.hierarchicalRepulsion.springConstant; + this.constants.physics.damping = this.constants.physics.hierarchicalRepulsion.damping; - (function (factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(53)], __WEBPACK_AMD_DEFINE_RESULT__ = (factory.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory(window.moment); // Browser global - } - }(function (moment) { - return moment.lang('km', { - months: "មករា_កុម្ភៈ_មិនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"), - monthsShort: "មករា_កុម្ភៈ_មិនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"), - weekdays: "អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍".split("_"), - weekdaysShort: "អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍".split("_"), - weekdaysMin: "អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍".split("_"), - longDateFormat: { - LT: "HH:mm", - L: "DD/MM/YYYY", - LL: "D MMMM YYYY", - LLL: "D MMMM YYYY LT", - LLLL: "dddd, D MMMM YYYY LT" - }, - calendar: { - sameDay: '[ថ្ងៃនៈ ម៉ោង] LT', - nextDay: '[ស្អែក ម៉ោង] LT', - nextWeek: 'dddd [ម៉ោង] LT', - lastDay: '[ម្សិលមិញ ម៉ោង] LT', - lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT', - sameElse: 'L' - }, - relativeTime: { - future: "%sទៀត", - past: "%sមុន", - s: "ប៉ុន្មានវិនាទី", - m: "មួយនាទី", - mm: "%d នាទី", - h: "មួយម៉ោង", - hh: "%d ម៉ោង", - d: "មួយថ្ងៃ", - dd: "%d ថ្ងៃ", - M: "មួយខែ", - MM: "%d ខែ", - y: "មួយឆ្នាំ", - yy: "%d ឆ្នាំ" - }, - week: { - dow: 1, // Monday is the first day of the week. - doy: 4 // The week that contains Jan 4th is the first week of the year. - } - }); - })); + this._loadMixin(HierarchialRepulsionMixin); + } + else { + this._clearMixin(BarnesHutMixin); + this._clearMixin(HierarchialRepulsionMixin); + this.barnesHutTree = undefined; + this.constants.physics.centralGravity = this.constants.physics.repulsion.centralGravity; + this.constants.physics.springLength = this.constants.physics.repulsion.springLength; + this.constants.physics.springConstant = this.constants.physics.repulsion.springConstant; + this.constants.physics.damping = this.constants.physics.repulsion.damping; -/***/ }, -/* 99 */ -/***/ function(module, exports, __webpack_require__) { + this._loadMixin(RepulsionMixin); + } + }; - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// moment.js language configuration - // language : korean (ko) - // - // authors - // - // - Kyungwook, Park : https://github.com/kyungw00k - // - Jeeeyul Lee - (function (factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(53)], __WEBPACK_AMD_DEFINE_RESULT__ = (factory.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory(window.moment); // Browser global - } - }(function (moment) { - return moment.lang('ko', { - months : "1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"), - monthsShort : "1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"), - weekdays : "일요일_월요일_화요일_수요일_목요일_금요일_토요일".split("_"), - weekdaysShort : "일_월_화_수_목_금_토".split("_"), - weekdaysMin : "일_월_화_수_목_금_토".split("_"), - longDateFormat : { - LT : "A h시 mm분", - L : "YYYY.MM.DD", - LL : "YYYY년 MMMM D일", - LLL : "YYYY년 MMMM D일 LT", - LLLL : "YYYY년 MMMM D일 dddd LT" - }, - meridiem : function (hour, minute, isUpper) { - return hour < 12 ? '오전' : '오후'; - }, - calendar : { - sameDay : '오늘 LT', - nextDay : '내일 LT', - nextWeek : 'dddd LT', - lastDay : '어제 LT', - lastWeek : '지난주 dddd LT', - sameElse : 'L' - }, - relativeTime : { - future : "%s 후", - past : "%s 전", - s : "몇초", - ss : "%d초", - m : "일분", - mm : "%d분", - h : "한시간", - hh : "%d시간", - d : "하루", - dd : "%d일", - M : "한달", - MM : "%d달", - y : "일년", - yy : "%d년" - }, - ordinal : '%d일', - meridiemParse : /(오전|오후)/, - isPM : function (token) { - return token === "오후"; - } - }); - })); + /** + * Before calculating the forces, we check if we need to cluster to keep up performance and we check + * if there is more than one node. If it is just one node, we dont calculate anything. + * + * @private + */ + exports._initializeForceCalculation = function () { + // stop calculation if there is only one node + if (this.nodeIndices.length == 1) { + this.nodes[this.nodeIndices[0]]._setForce(0, 0); + } + else { + // if there are too many nodes on screen, we cluster without repositioning + if (this.nodeIndices.length > this.constants.clustering.clusterThreshold && this.constants.clustering.enabled == true) { + this.clusterToFit(this.constants.clustering.reduceToNodes, false); + } + // we now start the force calculation + this._calculateForces(); + } + }; -/***/ }, -/* 100 */ -/***/ function(module, exports, __webpack_require__) { - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// moment.js language configuration - // language : Luxembourgish (lb) - // author : mweimerskirch : https://github.com/mweimerskirch + /** + * Calculate the external forces acting on the nodes + * Forces are caused by: edges, repulsing forces between nodes, gravity + * @private + */ + exports._calculateForces = function () { + // Gravity is required to keep separated groups from floating off + // the forces are reset to zero in this loop by using _setForce instead + // of _addForce - // Note: Luxembourgish has a very particular phonological rule ("Eifeler Regel") that causes the - // deletion of the final "n" in certain contexts. That's what the "eifelerRegelAppliesToWeekday" - // and "eifelerRegelAppliesToNumber" methods are meant for + this._calculateGravitationalForces(); + this._calculateNodeForces(); - (function (factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(53)], __WEBPACK_AMD_DEFINE_RESULT__ = (factory.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory(window.moment); // Browser global - } - }(function (moment) { - function processRelativeTime(number, withoutSuffix, key, isFuture) { - var format = { - 'm': ['eng Minutt', 'enger Minutt'], - 'h': ['eng Stonn', 'enger Stonn'], - 'd': ['een Dag', 'engem Dag'], - 'dd': [number + ' Deeg', number + ' Deeg'], - 'M': ['ee Mount', 'engem Mount'], - 'MM': [number + ' Méint', number + ' Méint'], - 'y': ['ee Joer', 'engem Joer'], - 'yy': [number + ' Joer', number + ' Joer'] - }; - return withoutSuffix ? format[key][0] : format[key][1]; + if (this.constants.physics.springConstant > 0) { + if (this.constants.smoothCurves.enabled == true && this.constants.smoothCurves.dynamic == true) { + this._calculateSpringForcesWithSupport(); } - - function processFutureTime(string) { - var number = string.substr(0, string.indexOf(' ')); - if (eifelerRegelAppliesToNumber(number)) { - return "a " + string; - } - return "an " + string; + else { + if (this.constants.physics.hierarchicalRepulsion.enabled == true) { + this._calculateHierarchicalSpringForces(); + } + else { + this._calculateSpringForces(); + } } + } + }; - function processPastTime(string) { - var number = string.substr(0, string.indexOf(' ')); - if (eifelerRegelAppliesToNumber(number)) { - return "viru " + string; - } - return "virun " + string; - } - function processLastWeek(string1) { - var weekday = this.format('d'); - if (eifelerRegelAppliesToWeekday(weekday)) { - return '[Leschte] dddd [um] LT'; - } - return '[Leschten] dddd [um] LT'; - } + /** + * Smooth curves are created by adding invisible nodes in the center of the edges. These nodes are also + * handled in the calculateForces function. We then use a quadratic curve with the center node as control. + * This function joins the datanodes and invisible (called support) nodes into one object. + * We do this so we do not contaminate this.nodes with the support nodes. + * + * @private + */ + exports._updateCalculationNodes = function () { + if (this.constants.smoothCurves.enabled == true && this.constants.smoothCurves.dynamic == true) { + this.calculationNodes = {}; + this.calculationNodeIndices = []; - /** - * Returns true if the word before the given week day loses the "-n" ending. - * e.g. "Leschten Dënschdeg" but "Leschte Méindeg" - * - * @param weekday {integer} - * @returns {boolean} - */ - function eifelerRegelAppliesToWeekday(weekday) { - weekday = parseInt(weekday, 10); - switch (weekday) { - case 0: // Sonndeg - case 1: // Méindeg - case 3: // Mëttwoch - case 5: // Freideg - case 6: // Samschdeg - return true; - default: // 2 Dënschdeg, 4 Donneschdeg - return false; - } + for (var nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + this.calculationNodes[nodeId] = this.nodes[nodeId]; + } } - - /** - * Returns true if the word before the given number loses the "-n" ending. - * e.g. "an 10 Deeg" but "a 5 Deeg" - * - * @param number {integer} - * @returns {boolean} - */ - function eifelerRegelAppliesToNumber(number) { - number = parseInt(number, 10); - if (isNaN(number)) { - return false; + var supportNodes = this.sectors['support']['nodes']; + for (var supportNodeId in supportNodes) { + if (supportNodes.hasOwnProperty(supportNodeId)) { + if (this.edges.hasOwnProperty(supportNodes[supportNodeId].parentEdgeId)) { + this.calculationNodes[supportNodeId] = supportNodes[supportNodeId]; } - if (number < 0) { - // Negative Number --> always true - return true; - } else if (number < 10) { - // Only 1 digit - if (4 <= number && number <= 7) { - return true; - } - return false; - } else if (number < 100) { - // 2 digits - var lastDigit = number % 10, firstDigit = number / 10; - if (lastDigit === 0) { - return eifelerRegelAppliesToNumber(firstDigit); - } - return eifelerRegelAppliesToNumber(lastDigit); - } else if (number < 10000) { - // 3 or 4 digits --> recursively check first digit - while (number >= 10) { - number = number / 10; - } - return eifelerRegelAppliesToNumber(number); - } else { - // Anything larger than 4 digits: recursively check first n-3 digits - number = number / 1000; - return eifelerRegelAppliesToNumber(number); - } - } - - return moment.lang('lb', { - months: "Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember".split("_"), - monthsShort: "Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"), - weekdays: "Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg".split("_"), - weekdaysShort: "So._Mé._Dë._Më._Do._Fr._Sa.".split("_"), - weekdaysMin: "So_Mé_Dë_Më_Do_Fr_Sa".split("_"), - longDateFormat: { - LT: "H:mm [Auer]", - L: "DD.MM.YYYY", - LL: "D. MMMM YYYY", - LLL: "D. MMMM YYYY LT", - LLLL: "dddd, D. MMMM YYYY LT" - }, - calendar: { - sameDay: "[Haut um] LT", - sameElse: "L", - nextDay: '[Muer um] LT', - nextWeek: 'dddd [um] LT', - lastDay: '[Gëschter um] LT', - lastWeek: processLastWeek - }, - relativeTime: { - future: processFutureTime, - past: processPastTime, - s: "e puer Sekonnen", - m: processRelativeTime, - mm: "%d Minutten", - h: processRelativeTime, - hh: "%d Stonnen", - d: processRelativeTime, - dd: processRelativeTime, - M: processRelativeTime, - MM: processRelativeTime, - y: processRelativeTime, - yy: processRelativeTime - }, - ordinal: '%d.', - week: { - dow: 1, // Monday is the first day of the week. - doy: 4 // The week that contains Jan 4th is the first week of the year. + else { + supportNodes[supportNodeId]._setForce(0, 0); } - }); - })); - + } + } -/***/ }, -/* 101 */ -/***/ function(module, exports, __webpack_require__) { + for (var idx in this.calculationNodes) { + if (this.calculationNodes.hasOwnProperty(idx)) { + this.calculationNodeIndices.push(idx); + } + } + } + else { + this.calculationNodes = this.nodes; + this.calculationNodeIndices = this.nodeIndices; + } + }; - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// moment.js language configuration - // language : Lithuanian (lt) - // author : Mindaugas Mozūras : https://github.com/mmozuras - (function (factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(53)], __WEBPACK_AMD_DEFINE_RESULT__ = (factory.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory(window.moment); // Browser global - } - }(function (moment) { - var units = { - "m" : "minutė_minutės_minutę", - "mm": "minutės_minučių_minutes", - "h" : "valanda_valandos_valandą", - "hh": "valandos_valandų_valandas", - "d" : "diena_dienos_dieną", - "dd": "dienos_dienų_dienas", - "M" : "mėnuo_mėnesio_mėnesį", - "MM": "mėnesiai_mėnesių_mėnesius", - "y" : "metai_metų_metus", - "yy": "metai_metų_metus" - }, - weekDays = "sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis".split("_"); + /** + * this function applies the central gravity effect to keep groups from floating off + * + * @private + */ + exports._calculateGravitationalForces = function () { + var dx, dy, distance, node, i; + var nodes = this.calculationNodes; + var gravity = this.constants.physics.centralGravity; + var gravityForce = 0; - function translateSeconds(number, withoutSuffix, key, isFuture) { - if (withoutSuffix) { - return "kelios sekundės"; - } else { - return isFuture ? "kelių sekundžių" : "kelias sekundes"; - } - } + for (i = 0; i < this.calculationNodeIndices.length; i++) { + node = nodes[this.calculationNodeIndices[i]]; + node.damping = this.constants.physics.damping; // possibly add function to alter damping properties of clusters. + // gravity does not apply when we are in a pocket sector + if (this._sector() == "default" && gravity != 0) { + dx = -node.x; + dy = -node.y; + distance = Math.sqrt(dx * dx + dy * dy); - function translateSingular(number, withoutSuffix, key, isFuture) { - return withoutSuffix ? forms(key)[0] : (isFuture ? forms(key)[1] : forms(key)[2]); + gravityForce = (distance == 0) ? 0 : (gravity / distance); + node.fx = dx * gravityForce; + node.fy = dy * gravityForce; } - - function special(number) { - return number % 10 === 0 || (number > 10 && number < 20); + else { + node.fx = 0; + node.fy = 0; } + } + }; - function forms(key) { - return units[key].split("_"); - } - function translate(number, withoutSuffix, key, isFuture) { - var result = number + " "; - if (number === 1) { - return result + translateSingular(number, withoutSuffix, key[0], isFuture); - } else if (withoutSuffix) { - return result + (special(number) ? forms(key)[1] : forms(key)[0]); - } else { - if (isFuture) { - return result + forms(key)[1]; - } else { - return result + (special(number) ? forms(key)[1] : forms(key)[2]); - } - } - } - function relativeWeekDay(moment, format) { - var nominative = format.indexOf('dddd HH:mm') === -1, - weekDay = weekDays[moment.day()]; - return nominative ? weekDay : weekDay.substring(0, weekDay.length - 2) + "į"; - } + /** + * this function calculates the effects of the springs in the case of unsmooth curves. + * + * @private + */ + exports._calculateSpringForces = function () { + var edgeLength, edge, edgeId; + var dx, dy, fx, fy, springForce, distance; + var edges = this.edges; - return moment.lang("lt", { - months : "sausio_vasario_kovo_balandžio_gegužės_biržėlio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio".split("_"), - monthsShort : "sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"), - weekdays : relativeWeekDay, - weekdaysShort : "Sek_Pir_Ant_Tre_Ket_Pen_Šeš".split("_"), - weekdaysMin : "S_P_A_T_K_Pn_Š".split("_"), - longDateFormat : { - LT : "HH:mm", - L : "YYYY-MM-DD", - LL : "YYYY [m.] MMMM D [d.]", - LLL : "YYYY [m.] MMMM D [d.], LT [val.]", - LLLL : "YYYY [m.] MMMM D [d.], dddd, LT [val.]", - l : "YYYY-MM-DD", - ll : "YYYY [m.] MMMM D [d.]", - lll : "YYYY [m.] MMMM D [d.], LT [val.]", - llll : "YYYY [m.] MMMM D [d.], ddd, LT [val.]" - }, - calendar : { - sameDay : "[Šiandien] LT", - nextDay : "[Rytoj] LT", - nextWeek : "dddd LT", - lastDay : "[Vakar] LT", - lastWeek : "[Praėjusį] dddd LT", - sameElse : "L" - }, - relativeTime : { - future : "po %s", - past : "prieš %s", - s : translateSeconds, - m : translateSingular, - mm : translate, - h : translateSingular, - hh : translate, - d : translateSingular, - dd : translate, - M : translateSingular, - MM : translate, - y : translateSingular, - yy : translate - }, - ordinal : function (number) { - return number + '-oji'; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - })); + // forces caused by the edges, modelled as springs + for (edgeId in edges) { + if (edges.hasOwnProperty(edgeId)) { + edge = edges[edgeId]; + if (edge.connected) { + // only calculate forces if nodes are in the same sector + if (this.nodes.hasOwnProperty(edge.toId) && this.nodes.hasOwnProperty(edge.fromId)) { + edgeLength = edge.customLength ? edge.length : this.constants.physics.springLength; + // this implies that the edges between big clusters are longer + edgeLength += (edge.to.clusterSize + edge.from.clusterSize - 2) * this.constants.clustering.edgeGrowth; + dx = (edge.from.x - edge.to.x); + dy = (edge.from.y - edge.to.y); + distance = Math.sqrt(dx * dx + dy * dy); -/***/ }, -/* 102 */ -/***/ function(module, exports, __webpack_require__) { + if (distance == 0) { + distance = 0.01; + } - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// moment.js language configuration - // language : latvian (lv) - // author : Kristaps Karlsons : https://github.com/skakri + // the 1/distance is so the fx and fy can be calculated without sine or cosine. + springForce = this.constants.physics.springConstant * (edgeLength - distance) / distance; - (function (factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(53)], __WEBPACK_AMD_DEFINE_RESULT__ = (factory.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory(window.moment); // Browser global - } - }(function (moment) { - var units = { - 'mm': 'minūti_minūtes_minūte_minūtes', - 'hh': 'stundu_stundas_stunda_stundas', - 'dd': 'dienu_dienas_diena_dienas', - 'MM': 'mēnesi_mēnešus_mēnesis_mēneši', - 'yy': 'gadu_gadus_gads_gadi' - }; + fx = dx * springForce; + fy = dy * springForce; - function format(word, number, withoutSuffix) { - var forms = word.split('_'); - if (withoutSuffix) { - return number % 10 === 1 && number !== 11 ? forms[2] : forms[3]; - } else { - return number % 10 === 1 && number !== 11 ? forms[0] : forms[1]; + edge.from.fx += fx; + edge.from.fy += fy; + edge.to.fx -= fx; + edge.to.fy -= fy; } + } } + } + }; - function relativeTimeWithPlural(number, withoutSuffix, key) { - return number + ' ' + format(units[key], number, withoutSuffix); - } - return moment.lang('lv', { - months : "janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris".split("_"), - monthsShort : "jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec".split("_"), - weekdays : "svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena".split("_"), - weekdaysShort : "Sv_P_O_T_C_Pk_S".split("_"), - weekdaysMin : "Sv_P_O_T_C_Pk_S".split("_"), - longDateFormat : { - LT : "HH:mm", - L : "DD.MM.YYYY", - LL : "YYYY. [gada] D. MMMM", - LLL : "YYYY. [gada] D. MMMM, LT", - LLLL : "YYYY. [gada] D. MMMM, dddd, LT" - }, - calendar : { - sameDay : '[Šodien pulksten] LT', - nextDay : '[Rīt pulksten] LT', - nextWeek : 'dddd [pulksten] LT', - lastDay : '[Vakar pulksten] LT', - lastWeek : '[Pagājušā] dddd [pulksten] LT', - sameElse : 'L' - }, - relativeTime : { - future : "%s vēlāk", - past : "%s agrāk", - s : "dažas sekundes", - m : "minūti", - mm : relativeTimeWithPlural, - h : "stundu", - hh : relativeTimeWithPlural, - d : "dienu", - dd : relativeTimeWithPlural, - M : "mēnesi", - MM : relativeTimeWithPlural, - y : "gadu", - yy : relativeTimeWithPlural - }, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - })); -/***/ }, -/* 103 */ -/***/ function(module, exports, __webpack_require__) { + /** + * This function calculates the springforces on the nodes, accounting for the support nodes. + * + * @private + */ + exports._calculateSpringForcesWithSupport = function () { + var edgeLength, edge, edgeId, combinedClusterSize; + var edges = this.edges; - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// moment.js language configuration - // language : macedonian (mk) - // author : Borislav Mickov : https://github.com/B0k0 + // forces caused by the edges, modelled as springs + for (edgeId in edges) { + if (edges.hasOwnProperty(edgeId)) { + edge = edges[edgeId]; + if (edge.connected) { + // only calculate forces if nodes are in the same sector + if (this.nodes.hasOwnProperty(edge.toId) && this.nodes.hasOwnProperty(edge.fromId)) { + if (edge.via != null) { + var node1 = edge.to; + var node2 = edge.via; + var node3 = edge.from; - (function (factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(53)], __WEBPACK_AMD_DEFINE_RESULT__ = (factory.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory(window.moment); // Browser global - } - }(function (moment) { - return moment.lang('mk', { - months : "јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември".split("_"), - monthsShort : "јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек".split("_"), - weekdays : "недела_понеделник_вторник_среда_четврток_петок_сабота".split("_"), - weekdaysShort : "нед_пон_вто_сре_чет_пет_саб".split("_"), - weekdaysMin : "нe_пo_вт_ср_че_пе_сa".split("_"), - longDateFormat : { - LT : "H:mm", - L : "D.MM.YYYY", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY LT", - LLLL : "dddd, D MMMM YYYY LT" - }, - calendar : { - sameDay : '[Денес во] LT', - nextDay : '[Утре во] LT', - nextWeek : 'dddd [во] LT', - lastDay : '[Вчера во] LT', - lastWeek : function () { - switch (this.day()) { - case 0: - case 3: - case 6: - return '[Во изминатата] dddd [во] LT'; - case 1: - case 2: - case 4: - case 5: - return '[Во изминатиот] dddd [во] LT'; - } - }, - sameElse : 'L' - }, - relativeTime : { - future : "после %s", - past : "пред %s", - s : "неколку секунди", - m : "минута", - mm : "%d минути", - h : "час", - hh : "%d часа", - d : "ден", - dd : "%d дена", - M : "месец", - MM : "%d месеци", - y : "година", - yy : "%d години" - }, - ordinal : function (number) { - var lastDigit = number % 10, - last2Digits = number % 100; - if (number === 0) { - return number + '-ев'; - } else if (last2Digits === 0) { - return number + '-ен'; - } else if (last2Digits > 10 && last2Digits < 20) { - return number + '-ти'; - } else if (lastDigit === 1) { - return number + '-ви'; - } else if (lastDigit === 2) { - return number + '-ри'; - } else if (lastDigit === 7 || lastDigit === 8) { - return number + '-ми'; - } else { - return number + '-ти'; - } - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - })); + edgeLength = edge.customLength ? edge.length : this.constants.physics.springLength; + combinedClusterSize = node1.clusterSize + node3.clusterSize - 2; -/***/ }, -/* 104 */ -/***/ function(module, exports, __webpack_require__) { + // this implies that the edges between big clusters are longer + edgeLength += combinedClusterSize * this.constants.clustering.edgeGrowth; + this._calculateSpringForce(node1, node2, 0.5 * edgeLength); + this._calculateSpringForce(node2, node3, 0.5 * edgeLength); + } + } + } + } + } + }; - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// moment.js language configuration - // language : malayalam (ml) - // author : Floyd Pink : https://github.com/floydpink - (function (factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(53)], __WEBPACK_AMD_DEFINE_RESULT__ = (factory.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory(window.moment); // Browser global - } - }(function (moment) { - return moment.lang('ml', { - months : 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split("_"), - monthsShort : 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split("_"), - weekdays : 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split("_"), - weekdaysShort : 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split("_"), - weekdaysMin : 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split("_"), - longDateFormat : { - LT : "A h:mm -നു", - L : "DD/MM/YYYY", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY, LT", - LLLL : "dddd, D MMMM YYYY, LT" - }, - calendar : { - sameDay : '[ഇന്ന്] LT', - nextDay : '[നാളെ] LT', - nextWeek : 'dddd, LT', - lastDay : '[ഇന്നലെ] LT', - lastWeek : '[കഴിഞ്ഞ] dddd, LT', - sameElse : 'L' - }, - relativeTime : { - future : "%s കഴിഞ്ഞ്", - past : "%s മുൻപ്", - s : "അൽപ നിമിഷങ്ങൾ", - m : "ഒരു മിനിറ്റ്", - mm : "%d മിനിറ്റ്", - h : "ഒരു മണിക്കൂർ", - hh : "%d മണിക്കൂർ", - d : "ഒരു ദിവസം", - dd : "%d ദിവസം", - M : "ഒരു മാസം", - MM : "%d മാസം", - y : "ഒരു വർഷം", - yy : "%d വർഷം" - }, - meridiem : function (hour, minute, isLower) { - if (hour < 4) { - return "രാത്രി"; - } else if (hour < 12) { - return "രാവിലെ"; - } else if (hour < 17) { - return "ഉച്ച കഴിഞ്ഞ്"; - } else if (hour < 20) { - return "വൈകുന്നേരം"; - } else { - return "രാത്രി"; - } - } - }); - })); + /** + * This is the code actually performing the calculation for the function above. It is split out to avoid repetition. + * + * @param node1 + * @param node2 + * @param edgeLength + * @private + */ + exports._calculateSpringForce = function (node1, node2, edgeLength) { + var dx, dy, fx, fy, springForce, distance; + dx = (node1.x - node2.x); + dy = (node1.y - node2.y); + distance = Math.sqrt(dx * dx + dy * dy); -/***/ }, -/* 105 */ -/***/ function(module, exports, __webpack_require__) { + if (distance == 0) { + distance = 0.01; + } - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// moment.js language configuration - // language : Marathi (mr) - // author : Harshad Kale : https://github.com/kalehv + // the 1/distance is so the fx and fy can be calculated without sine or cosine. + springForce = this.constants.physics.springConstant * (edgeLength - distance) / distance; - (function (factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(53)], __WEBPACK_AMD_DEFINE_RESULT__ = (factory.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory(window.moment); // Browser global - } - }(function (moment) { - var symbolMap = { - '1': '१', - '2': '२', - '3': '३', - '4': '४', - '5': '५', - '6': '६', - '7': '७', - '8': '८', - '9': '९', - '0': '०' - }, - numberMap = { - '१': '1', - '२': '2', - '३': '3', - '४': '4', - '५': '5', - '६': '6', - '७': '7', - '८': '8', - '९': '9', - '०': '0' - }; + fx = dx * springForce; + fy = dy * springForce; - return moment.lang('mr', { - months : 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split("_"), - monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split("_"), - weekdays : 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split("_"), - weekdaysShort : 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split("_"), - weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split("_"), - longDateFormat : { - LT : "A h:mm वाजता", - L : "DD/MM/YYYY", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY, LT", - LLLL : "dddd, D MMMM YYYY, LT" - }, - calendar : { - sameDay : '[आज] LT', - nextDay : '[उद्या] LT', - nextWeek : 'dddd, LT', - lastDay : '[काल] LT', - lastWeek: '[मागील] dddd, LT', - sameElse : 'L' - }, - relativeTime : { - future : "%s नंतर", - past : "%s पूर्वी", - s : "सेकंद", - m: "एक मिनिट", - mm: "%d मिनिटे", - h : "एक तास", - hh : "%d तास", - d : "एक दिवस", - dd : "%d दिवस", - M : "एक महिना", - MM : "%d महिने", - y : "एक वर्ष", - yy : "%d वर्षे" - }, - preparse: function (string) { - return string.replace(/[१२३४५६७८९०]/g, function (match) { - return numberMap[match]; - }); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap[match]; - }); - }, - meridiem: function (hour, minute, isLower) - { - if (hour < 4) { - return "रात्री"; - } else if (hour < 10) { - return "सकाळी"; - } else if (hour < 17) { - return "दुपारी"; - } else if (hour < 20) { - return "सायंकाळी"; - } else { - return "रात्री"; - } - }, - week : { - dow : 0, // Sunday is the first day of the week. - doy : 6 // The week that contains Jan 1st is the first week of the year. - } - }); - })); + node1.fx += fx; + node1.fy += fy; + node2.fx -= fx; + node2.fy -= fy; + }; -/***/ }, -/* 106 */ -/***/ function(module, exports, __webpack_require__) { + /** + * Load the HTML for the physics config and bind it + * @private + */ + exports._loadPhysicsConfiguration = function () { + if (this.physicsConfiguration === undefined) { + this.backupConstants = {}; + util.deepExtend(this.backupConstants,this.constants); - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// moment.js language configuration - // language : Bahasa Malaysia (ms-MY) - // author : Weldan Jamili : https://github.com/weldan + var hierarchicalLayoutDirections = ["LR", "RL", "UD", "DU"]; + this.physicsConfiguration = document.createElement('div'); + this.physicsConfiguration.className = "PhysicsConfiguration"; + this.physicsConfiguration.innerHTML = '' + + '' + + '' + + '' + + '' + + '' + + '' + + '
Simulation Mode:
Barnes HutRepulsionHierarchical
' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '
Options:
' + this.containerElement.parentElement.insertBefore(this.physicsConfiguration, this.containerElement); + this.optionsDiv = document.createElement("div"); + this.optionsDiv.style.fontSize = "14px"; + this.optionsDiv.style.fontFamily = "verdana"; + this.containerElement.parentElement.insertBefore(this.optionsDiv, this.containerElement); - (function (factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(53)], __WEBPACK_AMD_DEFINE_RESULT__ = (factory.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory(window.moment); // Browser global - } - }(function (moment) { - return moment.lang('ms-my', { - months : "Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"), - monthsShort : "Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"), - weekdays : "Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"), - weekdaysShort : "Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"), - weekdaysMin : "Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"), - longDateFormat : { - LT : "HH.mm", - L : "DD/MM/YYYY", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY [pukul] LT", - LLLL : "dddd, D MMMM YYYY [pukul] LT" - }, - meridiem : function (hours, minutes, isLower) { - if (hours < 11) { - return 'pagi'; - } else if (hours < 15) { - return 'tengahari'; - } else if (hours < 19) { - return 'petang'; - } else { - return 'malam'; - } - }, - calendar : { - sameDay : '[Hari ini pukul] LT', - nextDay : '[Esok pukul] LT', - nextWeek : 'dddd [pukul] LT', - lastDay : '[Kelmarin pukul] LT', - lastWeek : 'dddd [lepas pukul] LT', - sameElse : 'L' - }, - relativeTime : { - future : "dalam %s", - past : "%s yang lepas", - s : "beberapa saat", - m : "seminit", - mm : "%d minit", - h : "sejam", - hh : "%d jam", - d : "sehari", - dd : "%d hari", - M : "sebulan", - MM : "%d bulan", - y : "setahun", - yy : "%d tahun" - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - })); + var rangeElement; + rangeElement = document.getElementById('graph_BH_gc'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_BH_gc', -1, "physics_barnesHut_gravitationalConstant"); + rangeElement = document.getElementById('graph_BH_cg'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_BH_cg', 1, "physics_centralGravity"); + rangeElement = document.getElementById('graph_BH_sc'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_BH_sc', 1, "physics_springConstant"); + rangeElement = document.getElementById('graph_BH_sl'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_BH_sl', 1, "physics_springLength"); + rangeElement = document.getElementById('graph_BH_damp'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_BH_damp', 1, "physics_damping"); + rangeElement = document.getElementById('graph_R_nd'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_R_nd', 1, "physics_repulsion_nodeDistance"); + rangeElement = document.getElementById('graph_R_cg'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_R_cg', 1, "physics_centralGravity"); + rangeElement = document.getElementById('graph_R_sc'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_R_sc', 1, "physics_springConstant"); + rangeElement = document.getElementById('graph_R_sl'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_R_sl', 1, "physics_springLength"); + rangeElement = document.getElementById('graph_R_damp'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_R_damp', 1, "physics_damping"); -/***/ }, -/* 107 */ -/***/ function(module, exports, __webpack_require__) { + rangeElement = document.getElementById('graph_H_nd'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_nd', 1, "physics_hierarchicalRepulsion_nodeDistance"); + rangeElement = document.getElementById('graph_H_cg'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_cg', 1, "physics_centralGravity"); + rangeElement = document.getElementById('graph_H_sc'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_sc', 1, "physics_springConstant"); + rangeElement = document.getElementById('graph_H_sl'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_sl', 1, "physics_springLength"); + rangeElement = document.getElementById('graph_H_damp'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_damp', 1, "physics_damping"); + rangeElement = document.getElementById('graph_H_direction'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_direction', hierarchicalLayoutDirections, "hierarchicalLayout_direction"); + rangeElement = document.getElementById('graph_H_levsep'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_levsep', 1, "hierarchicalLayout_levelSeparation"); + rangeElement = document.getElementById('graph_H_nspac'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_nspac', 1, "hierarchicalLayout_nodeSpacing"); - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// moment.js language configuration - // language : norwegian bokmål (nb) - // authors : Espen Hovlandsdal : https://github.com/rexxars - // Sigurd Gartmann : https://github.com/sigurdga + var radioButton1 = document.getElementById("graph_physicsMethod1"); + var radioButton2 = document.getElementById("graph_physicsMethod2"); + var radioButton3 = document.getElementById("graph_physicsMethod3"); + radioButton2.checked = true; + if (this.constants.physics.barnesHut.enabled) { + radioButton1.checked = true; + } + if (this.constants.hierarchicalLayout.enabled) { + radioButton3.checked = true; + } - (function (factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(53)], __WEBPACK_AMD_DEFINE_RESULT__ = (factory.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory(window.moment); // Browser global - } - }(function (moment) { - return moment.lang('nb', { - months : "januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"), - monthsShort : "jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.".split("_"), - weekdays : "søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"), - weekdaysShort : "sø._ma._ti._on._to._fr._lø.".split("_"), - weekdaysMin : "sø_ma_ti_on_to_fr_lø".split("_"), - longDateFormat : { - LT : "H.mm", - L : "DD.MM.YYYY", - LL : "D. MMMM YYYY", - LLL : "D. MMMM YYYY [kl.] LT", - LLLL : "dddd D. MMMM YYYY [kl.] LT" - }, - calendar : { - sameDay: '[i dag kl.] LT', - nextDay: '[i morgen kl.] LT', - nextWeek: 'dddd [kl.] LT', - lastDay: '[i går kl.] LT', - lastWeek: '[forrige] dddd [kl.] LT', - sameElse: 'L' - }, - relativeTime : { - future : "om %s", - past : "for %s siden", - s : "noen sekunder", - m : "ett minutt", - mm : "%d minutter", - h : "en time", - hh : "%d timer", - d : "en dag", - dd : "%d dager", - M : "en måned", - MM : "%d måneder", - y : "ett år", - yy : "%d år" - }, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - })); + var graph_toggleSmooth = document.getElementById("graph_toggleSmooth"); + var graph_repositionNodes = document.getElementById("graph_repositionNodes"); + var graph_generateOptions = document.getElementById("graph_generateOptions"); + graph_toggleSmooth.onclick = graphToggleSmoothCurves.bind(this); + graph_repositionNodes.onclick = graphRepositionNodes.bind(this); + graph_generateOptions.onclick = graphGenerateOptions.bind(this); + if (this.constants.smoothCurves == true && this.constants.dynamicSmoothCurves == false) { + graph_toggleSmooth.style.background = "#A4FF56"; + } + else { + graph_toggleSmooth.style.background = "#FF8532"; + } -/***/ }, -/* 108 */ -/***/ function(module, exports, __webpack_require__) { - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// moment.js language configuration - // language : nepali/nepalese - // author : suvash : https://github.com/suvash + switchConfigurations.apply(this); - (function (factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(53)], __WEBPACK_AMD_DEFINE_RESULT__ = (factory.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory(window.moment); // Browser global - } - }(function (moment) { - var symbolMap = { - '1': '१', - '2': '२', - '3': '३', - '4': '४', - '5': '५', - '6': '६', - '7': '७', - '8': '८', - '9': '९', - '0': '०' - }, - numberMap = { - '१': '1', - '२': '2', - '३': '3', - '४': '4', - '५': '5', - '६': '6', - '७': '7', - '८': '8', - '९': '9', - '०': '0' - }; + radioButton1.onchange = switchConfigurations.bind(this); + radioButton2.onchange = switchConfigurations.bind(this); + radioButton3.onchange = switchConfigurations.bind(this); + } + }; - return moment.lang('ne', { - months : 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split("_"), - monthsShort : 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split("_"), - weekdays : 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split("_"), - weekdaysShort : 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split("_"), - weekdaysMin : 'आइ._सो._मङ्_बु._बि._शु._श.'.split("_"), - longDateFormat : { - LT : "Aको h:mm बजे", - L : "DD/MM/YYYY", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY, LT", - LLLL : "dddd, D MMMM YYYY, LT" - }, - preparse: function (string) { - return string.replace(/[१२३४५६७८९०]/g, function (match) { - return numberMap[match]; - }); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap[match]; - }); - }, - meridiem : function (hour, minute, isLower) { - if (hour < 3) { - return "राती"; - } else if (hour < 10) { - return "बिहान"; - } else if (hour < 15) { - return "दिउँसो"; - } else if (hour < 18) { - return "बेलुका"; - } else if (hour < 20) { - return "साँझ"; - } else { - return "राती"; - } - }, - calendar : { - sameDay : '[आज] LT', - nextDay : '[भोली] LT', - nextWeek : '[आउँदो] dddd[,] LT', - lastDay : '[हिजो] LT', - lastWeek : '[गएको] dddd[,] LT', - sameElse : 'L' - }, - relativeTime : { - future : "%sमा", - past : "%s अगाडी", - s : "केही समय", - m : "एक मिनेट", - mm : "%d मिनेट", - h : "एक घण्टा", - hh : "%d घण्टा", - d : "एक दिन", - dd : "%d दिन", - M : "एक महिना", - MM : "%d महिना", - y : "एक बर्ष", - yy : "%d बर्ष" - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - })); + /** + * This overwrites the this.constants. + * + * @param constantsVariableName + * @param value + * @private + */ + exports._overWriteGraphConstants = function (constantsVariableName, value) { + var nameArray = constantsVariableName.split("_"); + if (nameArray.length == 1) { + this.constants[nameArray[0]] = value; + } + else if (nameArray.length == 2) { + this.constants[nameArray[0]][nameArray[1]] = value; + } + else if (nameArray.length == 3) { + this.constants[nameArray[0]][nameArray[1]][nameArray[2]] = value; + } + }; -/***/ }, -/* 109 */ -/***/ function(module, exports, __webpack_require__) { + /** + * this function is bound to the toggle smooth curves button. That is also why it is not in the prototype. + */ + function graphToggleSmoothCurves () { + this.constants.smoothCurves.enabled = !this.constants.smoothCurves.enabled; + var graph_toggleSmooth = document.getElementById("graph_toggleSmooth"); + if (this.constants.smoothCurves.enabled == true) {graph_toggleSmooth.style.background = "#A4FF56";} + else {graph_toggleSmooth.style.background = "#FF8532";} - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// moment.js language configuration - // language : dutch (nl) - // author : Joris Röling : https://github.com/jjupiter + this._configureSmoothCurves(false); + } - (function (factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(53)], __WEBPACK_AMD_DEFINE_RESULT__ = (factory.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory(window.moment); // Browser global + /** + * this function is used to scramble the nodes + * + */ + function graphRepositionNodes () { + for (var nodeId in this.calculationNodes) { + if (this.calculationNodes.hasOwnProperty(nodeId)) { + this.calculationNodes[nodeId].vx = 0; this.calculationNodes[nodeId].vy = 0; + this.calculationNodes[nodeId].fx = 0; this.calculationNodes[nodeId].fy = 0; } - }(function (moment) { - var monthsShortWithDots = "jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"), - monthsShortWithoutDots = "jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"); + } + if (this.constants.hierarchicalLayout.enabled == true) { + this._setupHierarchicalLayout(); + showValueOfRange.call(this, 'graph_H_nd', 1, "physics_hierarchicalRepulsion_nodeDistance"); + showValueOfRange.call(this, 'graph_H_cg', 1, "physics_centralGravity"); + showValueOfRange.call(this, 'graph_H_sc', 1, "physics_springConstant"); + showValueOfRange.call(this, 'graph_H_sl', 1, "physics_springLength"); + showValueOfRange.call(this, 'graph_H_damp', 1, "physics_damping"); + } + else { + this.repositionNodes(); + } + this.moving = true; + this.start(); + } - return moment.lang('nl', { - months : "januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"), - monthsShort : function (m, format) { - if (/-MMM-/.test(format)) { - return monthsShortWithoutDots[m.month()]; - } else { - return monthsShortWithDots[m.month()]; - } - }, - weekdays : "zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"), - weekdaysShort : "zo._ma._di._wo._do._vr._za.".split("_"), - weekdaysMin : "Zo_Ma_Di_Wo_Do_Vr_Za".split("_"), - longDateFormat : { - LT : "HH:mm", - L : "DD-MM-YYYY", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY LT", - LLLL : "dddd D MMMM YYYY LT" - }, - calendar : { - sameDay: '[vandaag om] LT', - nextDay: '[morgen om] LT', - nextWeek: 'dddd [om] LT', - lastDay: '[gisteren om] LT', - lastWeek: '[afgelopen] dddd [om] LT', - sameElse: 'L' - }, - relativeTime : { - future : "over %s", - past : "%s geleden", - s : "een paar seconden", - m : "één minuut", - mm : "%d minuten", - h : "één uur", - hh : "%d uur", - d : "één dag", - dd : "%d dagen", - M : "één maand", - MM : "%d maanden", - y : "één jaar", - yy : "%d jaar" - }, - ordinal : function (number) { - return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. + /** + * this is used to generate an options file from the playing with physics system. + */ + function graphGenerateOptions () { + var options = "No options are required, default values used."; + var optionsSpecific = []; + var radioButton1 = document.getElementById("graph_physicsMethod1"); + var radioButton2 = document.getElementById("graph_physicsMethod2"); + if (radioButton1.checked == true) { + if (this.constants.physics.barnesHut.gravitationalConstant != this.backupConstants.physics.barnesHut.gravitationalConstant) {optionsSpecific.push("gravitationalConstant: " + this.constants.physics.barnesHut.gravitationalConstant);} + if (this.constants.physics.centralGravity != this.backupConstants.physics.barnesHut.centralGravity) {optionsSpecific.push("centralGravity: " + this.constants.physics.centralGravity);} + if (this.constants.physics.springLength != this.backupConstants.physics.barnesHut.springLength) {optionsSpecific.push("springLength: " + this.constants.physics.springLength);} + if (this.constants.physics.springConstant != this.backupConstants.physics.barnesHut.springConstant) {optionsSpecific.push("springConstant: " + this.constants.physics.springConstant);} + if (this.constants.physics.damping != this.backupConstants.physics.barnesHut.damping) {optionsSpecific.push("damping: " + this.constants.physics.damping);} + if (optionsSpecific.length != 0) { + options = "var options = {"; + options += "physics: {barnesHut: {"; + for (var i = 0; i < optionsSpecific.length; i++) { + options += optionsSpecific[i]; + if (i < optionsSpecific.length - 1) { + options += ", " } - }); - })); - - -/***/ }, -/* 110 */ -/***/ function(module, exports, __webpack_require__) { - - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// moment.js language configuration - // language : norwegian nynorsk (nn) - // author : https://github.com/mechuwind - - (function (factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(53)], __WEBPACK_AMD_DEFINE_RESULT__ = (factory.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory(window.moment); // Browser global - } - }(function (moment) { - return moment.lang('nn', { - months : "januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"), - monthsShort : "jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"), - weekdays : "sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"), - weekdaysShort : "sun_mån_tys_ons_tor_fre_lau".split("_"), - weekdaysMin : "su_må_ty_on_to_fr_lø".split("_"), - longDateFormat : { - LT : "HH:mm", - L : "DD.MM.YYYY", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY LT", - LLLL : "dddd D MMMM YYYY LT" - }, - calendar : { - sameDay: '[I dag klokka] LT', - nextDay: '[I morgon klokka] LT', - nextWeek: 'dddd [klokka] LT', - lastDay: '[I går klokka] LT', - lastWeek: '[Føregåande] dddd [klokka] LT', - sameElse: 'L' - }, - relativeTime : { - future : "om %s", - past : "for %s sidan", - s : "nokre sekund", - m : "eit minutt", - mm : "%d minutt", - h : "ein time", - hh : "%d timar", - d : "ein dag", - dd : "%d dagar", - M : "ein månad", - MM : "%d månader", - y : "eit år", - yy : "%d år" - }, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. + } + options += '}}' + } + if (this.constants.smoothCurves.enabled != this.backupConstants.smoothCurves.enabled) { + if (optionsSpecific.length == 0) {options = "var options = {";} + else {options += ", "} + options += "smoothCurves: " + this.constants.smoothCurves.enabled; + } + if (options != "No options are required, default values used.") { + options += '};' + } + } + else if (radioButton2.checked == true) { + options = "var options = {"; + options += "physics: {barnesHut: {enabled: false}"; + if (this.constants.physics.repulsion.nodeDistance != this.backupConstants.physics.repulsion.nodeDistance) {optionsSpecific.push("nodeDistance: " + this.constants.physics.repulsion.nodeDistance);} + if (this.constants.physics.centralGravity != this.backupConstants.physics.repulsion.centralGravity) {optionsSpecific.push("centralGravity: " + this.constants.physics.centralGravity);} + if (this.constants.physics.springLength != this.backupConstants.physics.repulsion.springLength) {optionsSpecific.push("springLength: " + this.constants.physics.springLength);} + if (this.constants.physics.springConstant != this.backupConstants.physics.repulsion.springConstant) {optionsSpecific.push("springConstant: " + this.constants.physics.springConstant);} + if (this.constants.physics.damping != this.backupConstants.physics.repulsion.damping) {optionsSpecific.push("damping: " + this.constants.physics.damping);} + if (optionsSpecific.length != 0) { + options += ", repulsion: {"; + for (var i = 0; i < optionsSpecific.length; i++) { + options += optionsSpecific[i]; + if (i < optionsSpecific.length - 1) { + options += ", " } - }); - })); - - -/***/ }, -/* 111 */ -/***/ function(module, exports, __webpack_require__) { - - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// moment.js language configuration - // language : polish (pl) - // author : Rafal Hirsz : https://github.com/evoL - - (function (factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(53)], __WEBPACK_AMD_DEFINE_RESULT__ = (factory.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory(window.moment); // Browser global + } + options += '}}' } - }(function (moment) { - var monthsNominative = "styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień".split("_"), - monthsSubjective = "stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia".split("_"); - - function plural(n) { - return (n % 10 < 5) && (n % 10 > 1) && ((~~(n / 10) % 10) !== 1); + if (optionsSpecific.length == 0) {options += "}"} + if (this.constants.smoothCurves != this.backupConstants.smoothCurves) { + options += ", smoothCurves: " + this.constants.smoothCurves; } - - function translate(number, withoutSuffix, key) { - var result = number + " "; - switch (key) { - case 'm': - return withoutSuffix ? 'minuta' : 'minutę'; - case 'mm': - return result + (plural(number) ? 'minuty' : 'minut'); - case 'h': - return withoutSuffix ? 'godzina' : 'godzinę'; - case 'hh': - return result + (plural(number) ? 'godziny' : 'godzin'); - case 'MM': - return result + (plural(number) ? 'miesiące' : 'miesięcy'); - case 'yy': - return result + (plural(number) ? 'lata' : 'lat'); + options += '};' + } + else { + options = "var options = {"; + if (this.constants.physics.hierarchicalRepulsion.nodeDistance != this.backupConstants.physics.hierarchicalRepulsion.nodeDistance) {optionsSpecific.push("nodeDistance: " + this.constants.physics.hierarchicalRepulsion.nodeDistance);} + if (this.constants.physics.centralGravity != this.backupConstants.physics.hierarchicalRepulsion.centralGravity) {optionsSpecific.push("centralGravity: " + this.constants.physics.centralGravity);} + if (this.constants.physics.springLength != this.backupConstants.physics.hierarchicalRepulsion.springLength) {optionsSpecific.push("springLength: " + this.constants.physics.springLength);} + if (this.constants.physics.springConstant != this.backupConstants.physics.hierarchicalRepulsion.springConstant) {optionsSpecific.push("springConstant: " + this.constants.physics.springConstant);} + if (this.constants.physics.damping != this.backupConstants.physics.hierarchicalRepulsion.damping) {optionsSpecific.push("damping: " + this.constants.physics.damping);} + if (optionsSpecific.length != 0) { + options += "physics: {hierarchicalRepulsion: {"; + for (var i = 0; i < optionsSpecific.length; i++) { + options += optionsSpecific[i]; + if (i < optionsSpecific.length - 1) { + options += ", "; } + } + options += '}},'; } - - return moment.lang('pl', { - months : function (momentToFormat, format) { - if (/D MMMM/.test(format)) { - return monthsSubjective[momentToFormat.month()]; - } else { - return monthsNominative[momentToFormat.month()]; - } - }, - monthsShort : "sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru".split("_"), - weekdays : "niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota".split("_"), - weekdaysShort : "nie_pon_wt_śr_czw_pt_sb".split("_"), - weekdaysMin : "N_Pn_Wt_Śr_Cz_Pt_So".split("_"), - longDateFormat : { - LT : "HH:mm", - L : "DD.MM.YYYY", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY LT", - LLLL : "dddd, D MMMM YYYY LT" - }, - calendar : { - sameDay: '[Dziś o] LT', - nextDay: '[Jutro o] LT', - nextWeek: '[W] dddd [o] LT', - lastDay: '[Wczoraj o] LT', - lastWeek: function () { - switch (this.day()) { - case 0: - return '[W zeszłą niedzielę o] LT'; - case 3: - return '[W zeszłą środę o] LT'; - case 6: - return '[W zeszłą sobotę o] LT'; - default: - return '[W zeszły] dddd [o] LT'; - } - }, - sameElse: 'L' - }, - relativeTime : { - future : "za %s", - past : "%s temu", - s : "kilka sekund", - m : translate, - mm : translate, - h : translate, - hh : translate, - d : "1 dzień", - dd : '%d dni', - M : "miesiąc", - MM : translate, - y : "rok", - yy : translate - }, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. + options += 'hierarchicalLayout: {'; + optionsSpecific = []; + if (this.constants.hierarchicalLayout.direction != this.backupConstants.hierarchicalLayout.direction) {optionsSpecific.push("direction: " + this.constants.hierarchicalLayout.direction);} + if (Math.abs(this.constants.hierarchicalLayout.levelSeparation) != this.backupConstants.hierarchicalLayout.levelSeparation) {optionsSpecific.push("levelSeparation: " + this.constants.hierarchicalLayout.levelSeparation);} + if (this.constants.hierarchicalLayout.nodeSpacing != this.backupConstants.hierarchicalLayout.nodeSpacing) {optionsSpecific.push("nodeSpacing: " + this.constants.hierarchicalLayout.nodeSpacing);} + if (optionsSpecific.length != 0) { + for (var i = 0; i < optionsSpecific.length; i++) { + options += optionsSpecific[i]; + if (i < optionsSpecific.length - 1) { + options += ", " } - }); - })); - + } + options += '}' + } + else { + options += "enabled:true}"; + } + options += '};' + } -/***/ }, -/* 112 */ -/***/ function(module, exports, __webpack_require__) { - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// moment.js language configuration - // language : brazilian portuguese (pt-br) - // author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira + this.optionsDiv.innerHTML = options; + } - (function (factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(53)], __WEBPACK_AMD_DEFINE_RESULT__ = (factory.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory(window.moment); // Browser global - } - }(function (moment) { - return moment.lang('pt-br', { - months : "janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"), - monthsShort : "jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"), - weekdays : "domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado".split("_"), - weekdaysShort : "dom_seg_ter_qua_qui_sex_sáb".split("_"), - weekdaysMin : "dom_2ª_3ª_4ª_5ª_6ª_sáb".split("_"), - longDateFormat : { - LT : "HH:mm", - L : "DD/MM/YYYY", - LL : "D [de] MMMM [de] YYYY", - LLL : "D [de] MMMM [de] YYYY [às] LT", - LLLL : "dddd, D [de] MMMM [de] YYYY [às] LT" - }, - calendar : { - sameDay: '[Hoje às] LT', - nextDay: '[Amanhã às] LT', - nextWeek: 'dddd [às] LT', - lastDay: '[Ontem às] LT', - lastWeek: function () { - return (this.day() === 0 || this.day() === 6) ? - '[Último] dddd [às] LT' : // Saturday + Sunday - '[Última] dddd [às] LT'; // Monday - Friday - }, - sameElse: 'L' - }, - relativeTime : { - future : "em %s", - past : "%s atrás", - s : "segundos", - m : "um minuto", - mm : "%d minutos", - h : "uma hora", - hh : "%d horas", - d : "um dia", - dd : "%d dias", - M : "um mês", - MM : "%d meses", - y : "um ano", - yy : "%d anos" - }, - ordinal : '%dº' - }); - })); + /** + * this is used to switch between barnesHut, repulsion and hierarchical. + * + */ + function switchConfigurations () { + var ids = ["graph_BH_table", "graph_R_table", "graph_H_table"]; + var radioButton = document.querySelector('input[name="graph_physicsMethod"]:checked').value; + var tableId = "graph_" + radioButton + "_table"; + var table = document.getElementById(tableId); + table.style.display = "block"; + for (var i = 0; i < ids.length; i++) { + if (ids[i] != tableId) { + table = document.getElementById(ids[i]); + table.style.display = "none"; + } + } + this._restoreNodes(); + if (radioButton == "R") { + this.constants.hierarchicalLayout.enabled = false; + this.constants.physics.hierarchicalRepulsion.enabled = false; + this.constants.physics.barnesHut.enabled = false; + } + else if (radioButton == "H") { + if (this.constants.hierarchicalLayout.enabled == false) { + this.constants.hierarchicalLayout.enabled = true; + this.constants.physics.hierarchicalRepulsion.enabled = true; + this.constants.physics.barnesHut.enabled = false; + this.constants.smoothCurves.enabled = false; + this._setupHierarchicalLayout(); + } + } + else { + this.constants.hierarchicalLayout.enabled = false; + this.constants.physics.hierarchicalRepulsion.enabled = false; + this.constants.physics.barnesHut.enabled = true; + } + this._loadSelectedForceSolver(); + var graph_toggleSmooth = document.getElementById("graph_toggleSmooth"); + if (this.constants.smoothCurves.enabled == true) {graph_toggleSmooth.style.background = "#A4FF56";} + else {graph_toggleSmooth.style.background = "#FF8532";} + this.moving = true; + this.start(); + } -/***/ }, -/* 113 */ -/***/ function(module, exports, __webpack_require__) { + /** + * this generates the ranges depending on the iniital values. + * + * @param id + * @param map + * @param constantsVariableName + */ + function showValueOfRange (id,map,constantsVariableName) { + var valueId = id + "_value"; + var rangeValue = document.getElementById(id).value; - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// moment.js language configuration - // language : portuguese (pt) - // author : Jefferson : https://github.com/jalex79 + if (map instanceof Array) { + document.getElementById(valueId).value = map[parseInt(rangeValue)]; + this._overWriteGraphConstants(constantsVariableName,map[parseInt(rangeValue)]); + } + else { + document.getElementById(valueId).value = parseInt(map) * parseFloat(rangeValue); + this._overWriteGraphConstants(constantsVariableName, parseInt(map) * parseFloat(rangeValue)); + } - (function (factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(53)], __WEBPACK_AMD_DEFINE_RESULT__ = (factory.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory(window.moment); // Browser global - } - }(function (moment) { - return moment.lang('pt', { - months : "janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"), - monthsShort : "jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"), - weekdays : "domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado".split("_"), - weekdaysShort : "dom_seg_ter_qua_qui_sex_sáb".split("_"), - weekdaysMin : "dom_2ª_3ª_4ª_5ª_6ª_sáb".split("_"), - longDateFormat : { - LT : "HH:mm", - L : "DD/MM/YYYY", - LL : "D [de] MMMM [de] YYYY", - LLL : "D [de] MMMM [de] YYYY LT", - LLLL : "dddd, D [de] MMMM [de] YYYY LT" - }, - calendar : { - sameDay: '[Hoje às] LT', - nextDay: '[Amanhã às] LT', - nextWeek: 'dddd [às] LT', - lastDay: '[Ontem às] LT', - lastWeek: function () { - return (this.day() === 0 || this.day() === 6) ? - '[Último] dddd [às] LT' : // Saturday + Sunday - '[Última] dddd [às] LT'; // Monday - Friday - }, - sameElse: 'L' - }, - relativeTime : { - future : "em %s", - past : "há %s", - s : "segundos", - m : "um minuto", - mm : "%d minutos", - h : "uma hora", - hh : "%d horas", - d : "um dia", - dd : "%d dias", - M : "um mês", - MM : "%d meses", - y : "um ano", - yy : "%d anos" - }, - ordinal : '%dº', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - })); + if (constantsVariableName == "hierarchicalLayout_direction" || + constantsVariableName == "hierarchicalLayout_levelSeparation" || + constantsVariableName == "hierarchicalLayout_nodeSpacing") { + this._setupHierarchicalLayout(); + } + this.moving = true; + this.start(); + } /***/ }, -/* 114 */ +/* 55 */ /***/ function(module, exports, __webpack_require__) { - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// moment.js language configuration - // language : romanian (ro) - // author : Vlad Gurdiga : https://github.com/gurdiga - // author : Valentin Agachi : https://github.com/avaly - - (function (factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(53)], __WEBPACK_AMD_DEFINE_RESULT__ = (factory.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory(window.moment); // Browser global - } - }(function (moment) { - function relativeTimeWithPlural(number, withoutSuffix, key) { - var format = { - 'mm': 'minute', - 'hh': 'ore', - 'dd': 'zile', - 'MM': 'luni', - 'yy': 'ani' - }, - separator = ' '; - if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) { - separator = ' de '; - } - - return number + separator + format[key]; - } - - return moment.lang('ro', { - months : "ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie".split("_"), - monthsShort : "ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.".split("_"), - weekdays : "duminică_luni_marți_miercuri_joi_vineri_sâmbătă".split("_"), - weekdaysShort : "Dum_Lun_Mar_Mie_Joi_Vin_Sâm".split("_"), - weekdaysMin : "Du_Lu_Ma_Mi_Jo_Vi_Sâ".split("_"), - longDateFormat : { - LT : "H:mm", - L : "DD.MM.YYYY", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY H:mm", - LLLL : "dddd, D MMMM YYYY H:mm" - }, - calendar : { - sameDay: "[azi la] LT", - nextDay: '[mâine la] LT', - nextWeek: 'dddd [la] LT', - lastDay: '[ieri la] LT', - lastWeek: '[fosta] dddd [la] LT', - sameElse: 'L' - }, - relativeTime : { - future : "peste %s", - past : "%s în urmă", - s : "câteva secunde", - m : "un minut", - mm : relativeTimeWithPlural, - h : "o oră", - hh : relativeTimeWithPlural, - d : "o zi", - dd : relativeTimeWithPlural, - M : "o lună", - MM : relativeTimeWithPlural, - y : "un an", - yy : relativeTimeWithPlural - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - })); + var map = {}; + function webpackContext(req) { + return __webpack_require__(webpackContextResolve(req)); + }; + function webpackContextResolve(req) { + return map[req] || (function() { throw new Error("Cannot find module '" + req + "'.") }()); + }; + webpackContext.keys = function webpackContextKeys() { + return Object.keys(map); + }; + webpackContext.resolve = webpackContextResolve; + module.exports = webpackContext; /***/ }, -/* 115 */ +/* 56 */ /***/ function(module, exports, __webpack_require__) { - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// moment.js language configuration - // language : russian (ru) - // author : Viktorminator : https://github.com/Viktorminator - // Author : Menelion Elensúle : https://github.com/Oire - - (function (factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(53)], __WEBPACK_AMD_DEFINE_RESULT__ = (factory.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory(window.moment); // Browser global - } - }(function (moment) { - function plural(word, num) { - var forms = word.split('_'); - return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]); - } - - function relativeTimeWithPlural(number, withoutSuffix, key) { - var format = { - 'mm': withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут', - 'hh': 'час_часа_часов', - 'dd': 'день_дня_дней', - 'MM': 'месяц_месяца_месяцев', - 'yy': 'год_года_лет' - }; - if (key === 'm') { - return withoutSuffix ? 'минута' : 'минуту'; - } - else { - return number + ' ' + plural(format[key], +number); - } - } - - function monthsCaseReplace(m, format) { - var months = { - 'nominative': 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_'), - 'accusative': 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split('_') - }, - - nounCase = (/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/).test(format) ? - 'accusative' : - 'nominative'; - - return months[nounCase][m.month()]; - } - - function monthsShortCaseReplace(m, format) { - var monthsShort = { - 'nominative': 'янв_фев_мар_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split('_'), - 'accusative': 'янв_фев_мар_апр_мая_июня_июля_авг_сен_окт_ноя_дек'.split('_') - }, - - nounCase = (/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/).test(format) ? - 'accusative' : - 'nominative'; - - return monthsShort[nounCase][m.month()]; - } - - function weekdaysCaseReplace(m, format) { - var weekdays = { - 'nominative': 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split('_'), - 'accusative': 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split('_') - }, + /** + * Calculate the forces the nodes apply on each other based on a repulsion field. + * This field is linearly approximated. + * + * @private + */ + exports._calculateNodeForces = function () { + var dx, dy, angle, distance, fx, fy, combinedClusterSize, + repulsingForce, node1, node2, i, j; - nounCase = (/\[ ?[Вв] ?(?:прошлую|следующую)? ?\] ?dddd/).test(format) ? - 'accusative' : - 'nominative'; - - return weekdays[nounCase][m.day()]; - } - - return moment.lang('ru', { - months : monthsCaseReplace, - monthsShort : monthsShortCaseReplace, - weekdays : weekdaysCaseReplace, - weekdaysShort : "вс_пн_вт_ср_чт_пт_сб".split("_"), - weekdaysMin : "вс_пн_вт_ср_чт_пт_сб".split("_"), - monthsParse : [/^янв/i, /^фев/i, /^мар/i, /^апр/i, /^ма[й|я]/i, /^июн/i, /^июл/i, /^авг/i, /^сен/i, /^окт/i, /^ноя/i, /^дек/i], - longDateFormat : { - LT : "HH:mm", - L : "DD.MM.YYYY", - LL : "D MMMM YYYY г.", - LLL : "D MMMM YYYY г., LT", - LLLL : "dddd, D MMMM YYYY г., LT" - }, - calendar : { - sameDay: '[Сегодня в] LT', - nextDay: '[Завтра в] LT', - lastDay: '[Вчера в] LT', - nextWeek: function () { - return this.day() === 2 ? '[Во] dddd [в] LT' : '[В] dddd [в] LT'; - }, - lastWeek: function () { - switch (this.day()) { - case 0: - return '[В прошлое] dddd [в] LT'; - case 1: - case 2: - case 4: - return '[В прошлый] dddd [в] LT'; - case 3: - case 5: - case 6: - return '[В прошлую] dddd [в] LT'; - } - }, - sameElse: 'L' - }, - relativeTime : { - future : "через %s", - past : "%s назад", - s : "несколько секунд", - m : relativeTimeWithPlural, - mm : relativeTimeWithPlural, - h : "час", - hh : relativeTimeWithPlural, - d : "день", - dd : relativeTimeWithPlural, - M : "месяц", - MM : relativeTimeWithPlural, - y : "год", - yy : relativeTimeWithPlural - }, + var nodes = this.calculationNodes; + var nodeIndices = this.calculationNodeIndices; - meridiemParse: /ночи|утра|дня|вечера/i, - isPM : function (input) { - return /^(дня|вечера)$/.test(input); - }, + // approximation constants + var a_base = -2 / 3; + var b = 4 / 3; - meridiem : function (hour, minute, isLower) { - if (hour < 4) { - return "ночи"; - } else if (hour < 12) { - return "утра"; - } else if (hour < 17) { - return "дня"; - } else { - return "вечера"; - } - }, + // repulsing forces between nodes + var nodeDistance = this.constants.physics.repulsion.nodeDistance; + var minimumDistance = nodeDistance; - ordinal: function (number, period) { - switch (period) { - case 'M': - case 'd': - case 'DDD': - return number + '-й'; - case 'D': - return number + '-го'; - case 'w': - case 'W': - return number + '-я'; - default: - return number; - } - }, + // we loop from i over all but the last entree in the array + // j loops from i+1 to the last. This way we do not double count any of the indices, nor i == j + for (i = 0; i < nodeIndices.length - 1; i++) { + node1 = nodes[nodeIndices[i]]; + for (j = i + 1; j < nodeIndices.length; j++) { + node2 = nodes[nodeIndices[j]]; + combinedClusterSize = node1.clusterSize + node2.clusterSize - 2; - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - })); + dx = node2.x - node1.x; + dy = node2.y - node1.y; + distance = Math.sqrt(dx * dx + dy * dy); + minimumDistance = (combinedClusterSize == 0) ? nodeDistance : (nodeDistance * (1 + combinedClusterSize * this.constants.clustering.distanceAmplification)); + var a = a_base / minimumDistance; + if (distance < 2 * minimumDistance) { + if (distance < 0.5 * minimumDistance) { + repulsingForce = 1.0; + } + else { + repulsingForce = a * distance + b; // linear approx of 1 / (1 + Math.exp((distance / minimumDistance - 1) * steepness)) + } -/***/ }, -/* 116 */ -/***/ function(module, exports, __webpack_require__) { + // amplify the repulsion for clusters. + repulsingForce *= (combinedClusterSize == 0) ? 1 : 1 + combinedClusterSize * this.constants.clustering.forceAmplification; + repulsingForce = repulsingForce / distance; - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// moment.js language configuration - // language : slovak (sk) - // author : Martin Minka : https://github.com/k2s - // based on work of petrbela : https://github.com/petrbela + fx = dx * repulsingForce; + fy = dy * repulsingForce; - (function (factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(53)], __WEBPACK_AMD_DEFINE_RESULT__ = (factory.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory(window.moment); // Browser global - } - }(function (moment) { - var months = "január_február_marec_apríl_máj_jún_júl_august_september_október_november_december".split("_"), - monthsShort = "jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec".split("_"); - - function plural(n) { - return (n > 1) && (n < 5); - } - - function translate(number, withoutSuffix, key, isFuture) { - var result = number + " "; - switch (key) { - case 's': // a few seconds / in a few seconds / a few seconds ago - return (withoutSuffix || isFuture) ? 'pár sekúnd' : 'pár sekundami'; - case 'm': // a minute / in a minute / a minute ago - return withoutSuffix ? 'minúta' : (isFuture ? 'minútu' : 'minútou'); - case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'minúty' : 'minút'); - } else { - return result + 'minútami'; - } - break; - case 'h': // an hour / in an hour / an hour ago - return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou'); - case 'hh': // 9 hours / in 9 hours / 9 hours ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'hodiny' : 'hodín'); - } else { - return result + 'hodinami'; - } - break; - case 'd': // a day / in a day / a day ago - return (withoutSuffix || isFuture) ? 'deň' : 'dňom'; - case 'dd': // 9 days / in 9 days / 9 days ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'dni' : 'dní'); - } else { - return result + 'dňami'; - } - break; - case 'M': // a month / in a month / a month ago - return (withoutSuffix || isFuture) ? 'mesiac' : 'mesiacom'; - case 'MM': // 9 months / in 9 months / 9 months ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'mesiace' : 'mesiacov'); - } else { - return result + 'mesiacmi'; - } - break; - case 'y': // a year / in a year / a year ago - return (withoutSuffix || isFuture) ? 'rok' : 'rokom'; - case 'yy': // 9 years / in 9 years / 9 years ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'roky' : 'rokov'); - } else { - return result + 'rokmi'; - } - break; - } + node1.fx -= fx; + node1.fy -= fy; + node2.fx += fx; + node2.fy += fy; + } } - - return moment.lang('sk', { - months : months, - monthsShort : monthsShort, - monthsParse : (function (months, monthsShort) { - var i, _monthsParse = []; - for (i = 0; i < 12; i++) { - // use custom parser to solve problem with July (červenec) - _monthsParse[i] = new RegExp('^' + months[i] + '$|^' + monthsShort[i] + '$', 'i'); - } - return _monthsParse; - }(months, monthsShort)), - weekdays : "nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota".split("_"), - weekdaysShort : "ne_po_ut_st_št_pi_so".split("_"), - weekdaysMin : "ne_po_ut_st_št_pi_so".split("_"), - longDateFormat : { - LT: "H:mm", - L : "DD.MM.YYYY", - LL : "D. MMMM YYYY", - LLL : "D. MMMM YYYY LT", - LLLL : "dddd D. MMMM YYYY LT" - }, - calendar : { - sameDay: "[dnes o] LT", - nextDay: '[zajtra o] LT', - nextWeek: function () { - switch (this.day()) { - case 0: - return '[v nedeľu o] LT'; - case 1: - case 2: - return '[v] dddd [o] LT'; - case 3: - return '[v stredu o] LT'; - case 4: - return '[vo štvrtok o] LT'; - case 5: - return '[v piatok o] LT'; - case 6: - return '[v sobotu o] LT'; - } - }, - lastDay: '[včera o] LT', - lastWeek: function () { - switch (this.day()) { - case 0: - return '[minulú nedeľu o] LT'; - case 1: - case 2: - return '[minulý] dddd [o] LT'; - case 3: - return '[minulú stredu o] LT'; - case 4: - case 5: - return '[minulý] dddd [o] LT'; - case 6: - return '[minulú sobotu o] LT'; - } - }, - sameElse: "L" - }, - relativeTime : { - future : "za %s", - past : "pred %s", - s : translate, - m : translate, - mm : translate, - h : translate, - hh : translate, - d : translate, - dd : translate, - M : translate, - MM : translate, - y : translate, - yy : translate - }, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - })); + } + }; /***/ }, -/* 117 */ +/* 57 */ /***/ function(module, exports, __webpack_require__) { - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// moment.js language configuration - // language : slovenian (sl) - // author : Robert Sedovšek : https://github.com/sedovsek - - (function (factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(53)], __WEBPACK_AMD_DEFINE_RESULT__ = (factory.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory(window.moment); // Browser global - } - }(function (moment) { - function translate(number, withoutSuffix, key) { - var result = number + " "; - switch (key) { - case 'm': - return withoutSuffix ? 'ena minuta' : 'eno minuto'; - case 'mm': - if (number === 1) { - result += 'minuta'; - } else if (number === 2) { - result += 'minuti'; - } else if (number === 3 || number === 4) { - result += 'minute'; - } else { - result += 'minut'; - } - return result; - case 'h': - return withoutSuffix ? 'ena ura' : 'eno uro'; - case 'hh': - if (number === 1) { - result += 'ura'; - } else if (number === 2) { - result += 'uri'; - } else if (number === 3 || number === 4) { - result += 'ure'; - } else { - result += 'ur'; - } - return result; - case 'dd': - if (number === 1) { - result += 'dan'; - } else { - result += 'dni'; - } - return result; - case 'MM': - if (number === 1) { - result += 'mesec'; - } else if (number === 2) { - result += 'meseca'; - } else if (number === 3 || number === 4) { - result += 'mesece'; - } else { - result += 'mesecev'; - } - return result; - case 'yy': - if (number === 1) { - result += 'leto'; - } else if (number === 2) { - result += 'leti'; - } else if (number === 3 || number === 4) { - result += 'leta'; - } else { - result += 'let'; - } - return result; - } - } - - return moment.lang('sl', { - months : "januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"), - monthsShort : "jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"), - weekdays : "nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota".split("_"), - weekdaysShort : "ned._pon._tor._sre._čet._pet._sob.".split("_"), - weekdaysMin : "ne_po_to_sr_če_pe_so".split("_"), - longDateFormat : { - LT : "H:mm", - L : "DD. MM. YYYY", - LL : "D. MMMM YYYY", - LLL : "D. MMMM YYYY LT", - LLLL : "dddd, D. MMMM YYYY LT" - }, - calendar : { - sameDay : '[danes ob] LT', - nextDay : '[jutri ob] LT', - - nextWeek : function () { - switch (this.day()) { - case 0: - return '[v] [nedeljo] [ob] LT'; - case 3: - return '[v] [sredo] [ob] LT'; - case 6: - return '[v] [soboto] [ob] LT'; - case 1: - case 2: - case 4: - case 5: - return '[v] dddd [ob] LT'; - } - }, - lastDay : '[včeraj ob] LT', - lastWeek : function () { - switch (this.day()) { - case 0: - case 3: - case 6: - return '[prejšnja] dddd [ob] LT'; - case 1: - case 2: - case 4: - case 5: - return '[prejšnji] dddd [ob] LT'; - } - }, - sameElse : 'L' - }, - relativeTime : { - future : "čez %s", - past : "%s nazaj", - s : "nekaj sekund", - m : translate, - mm : translate, - h : translate, - hh : translate, - d : "en dan", - dd : translate, - M : "en mesec", - MM : translate, - y : "eno leto", - yy : translate - }, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - })); + /** + * Calculate the forces the nodes apply on eachother based on a repulsion field. + * This field is linearly approximated. + * + * @private + */ + exports._calculateNodeForces = function () { + var dx, dy, distance, fx, fy, + repulsingForce, node1, node2, i, j; + var nodes = this.calculationNodes; + var nodeIndices = this.calculationNodeIndices; -/***/ }, -/* 118 */ -/***/ function(module, exports, __webpack_require__) { + // repulsing forces between nodes + var nodeDistance = this.constants.physics.hierarchicalRepulsion.nodeDistance; - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// moment.js language configuration - // language : Albanian (sq) - // author : Flakërim Ismani : https://github.com/flakerimi - // author: Menelion Elensúle: https://github.com/Oire (tests) - // author : Oerd Cukalla : https://github.com/oerd (fixes) - - (function (factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(53)], __WEBPACK_AMD_DEFINE_RESULT__ = (factory.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory(window.moment); // Browser global - } - }(function (moment) { - return moment.lang('sq', { - months : "Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor".split("_"), - monthsShort : "Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj".split("_"), - weekdays : "E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë".split("_"), - weekdaysShort : "Die_Hën_Mar_Mër_Enj_Pre_Sht".split("_"), - weekdaysMin : "D_H_Ma_Më_E_P_Sh".split("_"), - meridiem : function (hours, minutes, isLower) { - return hours < 12 ? 'PD' : 'MD'; - }, - longDateFormat : { - LT : "HH:mm", - L : "DD/MM/YYYY", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY LT", - LLLL : "dddd, D MMMM YYYY LT" - }, - calendar : { - sameDay : '[Sot në] LT', - nextDay : '[Nesër në] LT', - nextWeek : 'dddd [në] LT', - lastDay : '[Dje në] LT', - lastWeek : 'dddd [e kaluar në] LT', - sameElse : 'L' - }, - relativeTime : { - future : "në %s", - past : "%s më parë", - s : "disa sekonda", - m : "një minutë", - mm : "%d minuta", - h : "një orë", - hh : "%d orë", - d : "një ditë", - dd : "%d ditë", - M : "një muaj", - MM : "%d muaj", - y : "një vit", - yy : "%d vite" - }, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - })); + // we loop from i over all but the last entree in the array + // j loops from i+1 to the last. This way we do not double count any of the indices, nor i == j + for (i = 0; i < nodeIndices.length - 1; i++) { + node1 = nodes[nodeIndices[i]]; + for (j = i + 1; j < nodeIndices.length; j++) { + node2 = nodes[nodeIndices[j]]; + // nodes only affect nodes on their level + if (node1.level == node2.level) { -/***/ }, -/* 119 */ -/***/ function(module, exports, __webpack_require__) { + dx = node2.x - node1.x; + dy = node2.y - node1.y; + distance = Math.sqrt(dx * dx + dy * dy); - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// moment.js language configuration - // language : Serbian-cyrillic (sr-cyrl) - // author : Milan Janačković : https://github.com/milan-j - (function (factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(53)], __WEBPACK_AMD_DEFINE_RESULT__ = (factory.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory(window.moment); // Browser global - } - }(function (moment) { - - var translator = { - words: { //Different grammatical cases - m: ['један минут', 'једне минуте'], - mm: ['минут', 'минуте', 'минута'], - h: ['један сат', 'једног сата'], - hh: ['сат', 'сата', 'сати'], - dd: ['дан', 'дана', 'дана'], - MM: ['месец', 'месеца', 'месеци'], - yy: ['година', 'године', 'година'] - }, - correctGrammaticalCase: function (number, wordKey) { - return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]); - }, - translate: function (number, withoutSuffix, key) { - var wordKey = translator.words[key]; - if (key.length === 1) { - return withoutSuffix ? wordKey[0] : wordKey[1]; - } else { - return number + ' ' + translator.correctGrammaticalCase(number, wordKey); - } + var steepness = 0.05; + if (distance < nodeDistance) { + repulsingForce = -Math.pow(steepness*distance,2) + Math.pow(steepness*nodeDistance,2); } - }; - - return moment.lang('sr-cyrl', { - months: ['јануар', 'фебруар', 'март', 'април', 'мај', 'јун', 'јул', 'август', 'септембар', 'октобар', 'новембар', 'децембар'], - monthsShort: ['јан.', 'феб.', 'мар.', 'апр.', 'мај', 'јун', 'јул', 'авг.', 'сеп.', 'окт.', 'нов.', 'дец.'], - weekdays: ['недеља', 'понедељак', 'уторак', 'среда', 'четвртак', 'петак', 'субота'], - weekdaysShort: ['нед.', 'пон.', 'уто.', 'сре.', 'чет.', 'пет.', 'суб.'], - weekdaysMin: ['не', 'по', 'ут', 'ср', 'че', 'пе', 'су'], - longDateFormat: { - LT: "H:mm", - L: "DD. MM. YYYY", - LL: "D. MMMM YYYY", - LLL: "D. MMMM YYYY LT", - LLLL: "dddd, D. MMMM YYYY LT" - }, - calendar: { - sameDay: '[данас у] LT', - nextDay: '[сутра у] LT', - - nextWeek: function () { - switch (this.day()) { - case 0: - return '[у] [недељу] [у] LT'; - case 3: - return '[у] [среду] [у] LT'; - case 6: - return '[у] [суботу] [у] LT'; - case 1: - case 2: - case 4: - case 5: - return '[у] dddd [у] LT'; - } - }, - lastDay : '[јуче у] LT', - lastWeek : function () { - var lastWeekDays = [ - '[прошле] [недеље] [у] LT', - '[прошлог] [понедељка] [у] LT', - '[прошлог] [уторка] [у] LT', - '[прошле] [среде] [у] LT', - '[прошлог] [четвртка] [у] LT', - '[прошлог] [петка] [у] LT', - '[прошле] [суботе] [у] LT' - ]; - return lastWeekDays[this.day()]; - }, - sameElse : 'L' - }, - relativeTime : { - future : "за %s", - past : "пре %s", - s : "неколико секунди", - m : translator.translate, - mm : translator.translate, - h : translator.translate, - hh : translator.translate, - d : "дан", - dd : translator.translate, - M : "месец", - MM : translator.translate, - y : "годину", - yy : translator.translate - }, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. + else { + repulsingForce = 0; } - }); - })); + // normalize force with + if (distance == 0) { + distance = 0.01; + } + else { + repulsingForce = repulsingForce / distance; + } + fx = dx * repulsingForce; + fy = dy * repulsingForce; + node1.fx -= fx; + node1.fy -= fy; + node2.fx += fx; + node2.fy += fy; + } + } + } + }; -/***/ }, -/* 120 */ -/***/ function(module, exports, __webpack_require__) { - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// moment.js language configuration - // language : Serbian-latin (sr) - // author : Milan Janačković : https://github.com/milan-j + /** + * this function calculates the effects of the springs in the case of unsmooth curves. + * + * @private + */ + exports._calculateHierarchicalSpringForces = function () { + var edgeLength, edge, edgeId; + var dx, dy, fx, fy, springForce, distance; + var edges = this.edges; - (function (factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(53)], __WEBPACK_AMD_DEFINE_RESULT__ = (factory.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory(window.moment); // Browser global - } - }(function (moment) { - - var translator = { - words: { //Different grammatical cases - m: ['jedan minut', 'jedne minute'], - mm: ['minut', 'minute', 'minuta'], - h: ['jedan sat', 'jednog sata'], - hh: ['sat', 'sata', 'sati'], - dd: ['dan', 'dana', 'dana'], - MM: ['mesec', 'meseca', 'meseci'], - yy: ['godina', 'godine', 'godina'] - }, - correctGrammaticalCase: function (number, wordKey) { - return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]); - }, - translate: function (number, withoutSuffix, key) { - var wordKey = translator.words[key]; - if (key.length === 1) { - return withoutSuffix ? wordKey[0] : wordKey[1]; - } else { - return number + ' ' + translator.correctGrammaticalCase(number, wordKey); - } - } - }; + var nodes = this.calculationNodes; + var nodeIndices = this.calculationNodeIndices; - return moment.lang('sr', { - months: ['januar', 'februar', 'mart', 'april', 'maj', 'jun', 'jul', 'avgust', 'septembar', 'oktobar', 'novembar', 'decembar'], - monthsShort: ['jan.', 'feb.', 'mar.', 'apr.', 'maj', 'jun', 'jul', 'avg.', 'sep.', 'okt.', 'nov.', 'dec.'], - weekdays: ['nedelja', 'ponedeljak', 'utorak', 'sreda', 'četvrtak', 'petak', 'subota'], - weekdaysShort: ['ned.', 'pon.', 'uto.', 'sre.', 'čet.', 'pet.', 'sub.'], - weekdaysMin: ['ne', 'po', 'ut', 'sr', 'če', 'pe', 'su'], - longDateFormat: { - LT: "H:mm", - L: "DD. MM. YYYY", - LL: "D. MMMM YYYY", - LLL: "D. MMMM YYYY LT", - LLLL: "dddd, D. MMMM YYYY LT" - }, - calendar: { - sameDay: '[danas u] LT', - nextDay: '[sutra u] LT', - - nextWeek: function () { - switch (this.day()) { - case 0: - return '[u] [nedelju] [u] LT'; - case 3: - return '[u] [sredu] [u] LT'; - case 6: - return '[u] [subotu] [u] LT'; - case 1: - case 2: - case 4: - case 5: - return '[u] dddd [u] LT'; - } - }, - lastDay : '[juče u] LT', - lastWeek : function () { - var lastWeekDays = [ - '[prošle] [nedelje] [u] LT', - '[prošlog] [ponedeljka] [u] LT', - '[prošlog] [utorka] [u] LT', - '[prošle] [srede] [u] LT', - '[prošlog] [četvrtka] [u] LT', - '[prošlog] [petka] [u] LT', - '[prošle] [subote] [u] LT' - ]; - return lastWeekDays[this.day()]; - }, - sameElse : 'L' - }, - relativeTime : { - future : "za %s", - past : "pre %s", - s : "nekoliko sekundi", - m : translator.translate, - mm : translator.translate, - h : translator.translate, - hh : translator.translate, - d : "dan", - dd : translator.translate, - M : "mesec", - MM : translator.translate, - y : "godinu", - yy : translator.translate - }, - ordinal : '%d.', - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - })); + for (var i = 0; i < nodeIndices.length; i++) { + var node1 = nodes[nodeIndices[i]]; + node1.springFx = 0; + node1.springFy = 0; + } -/***/ }, -/* 121 */ -/***/ function(module, exports, __webpack_require__) { - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// moment.js language configuration - // language : swedish (sv) - // author : Jens Alm : https://github.com/ulmus + // forces caused by the edges, modelled as springs + for (edgeId in edges) { + if (edges.hasOwnProperty(edgeId)) { + edge = edges[edgeId]; + if (edge.connected) { + // only calculate forces if nodes are in the same sector + if (this.nodes.hasOwnProperty(edge.toId) && this.nodes.hasOwnProperty(edge.fromId)) { + edgeLength = edge.customLength ? edge.length : this.constants.physics.springLength; + // this implies that the edges between big clusters are longer + edgeLength += (edge.to.clusterSize + edge.from.clusterSize - 2) * this.constants.clustering.edgeGrowth; - (function (factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(53)], __WEBPACK_AMD_DEFINE_RESULT__ = (factory.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory(window.moment); // Browser global - } - }(function (moment) { - return moment.lang('sv', { - months : "januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"), - monthsShort : "jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"), - weekdays : "söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag".split("_"), - weekdaysShort : "sön_mån_tis_ons_tor_fre_lör".split("_"), - weekdaysMin : "sö_må_ti_on_to_fr_lö".split("_"), - longDateFormat : { - LT : "HH:mm", - L : "YYYY-MM-DD", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY LT", - LLLL : "dddd D MMMM YYYY LT" - }, - calendar : { - sameDay: '[Idag] LT', - nextDay: '[Imorgon] LT', - lastDay: '[Igår] LT', - nextWeek: 'dddd LT', - lastWeek: '[Förra] dddd[en] LT', - sameElse: 'L' - }, - relativeTime : { - future : "om %s", - past : "för %s sedan", - s : "några sekunder", - m : "en minut", - mm : "%d minuter", - h : "en timme", - hh : "%d timmar", - d : "en dag", - dd : "%d dagar", - M : "en månad", - MM : "%d månader", - y : "ett år", - yy : "%d år" - }, - ordinal : function (number) { - var b = number % 10, - output = (~~ (number % 100 / 10) === 1) ? 'e' : - (b === 1) ? 'a' : - (b === 2) ? 'a' : - (b === 3) ? 'e' : 'e'; - return number + output; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - })); + dx = (edge.from.x - edge.to.x); + dy = (edge.from.y - edge.to.y); + distance = Math.sqrt(dx * dx + dy * dy); + if (distance == 0) { + distance = 0.01; + } -/***/ }, -/* 122 */ -/***/ function(module, exports, __webpack_require__) { + // the 1/distance is so the fx and fy can be calculated without sine or cosine. + springForce = this.constants.physics.springConstant * (edgeLength - distance) / distance; - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// moment.js language configuration - // language : tamil (ta) - // author : Arjunkumar Krishnamoorthy : https://github.com/tk120404 + fx = dx * springForce; + fy = dy * springForce; - (function (factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(53)], __WEBPACK_AMD_DEFINE_RESULT__ = (factory.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory(window.moment); // Browser global - } - }(function (moment) { - /*var symbolMap = { - '1': '௧', - '2': '௨', - '3': '௩', - '4': '௪', - '5': '௫', - '6': '௬', - '7': '௭', - '8': '௮', - '9': '௯', - '0': '௦' - }, - numberMap = { - '௧': '1', - '௨': '2', - '௩': '3', - '௪': '4', - '௫': '5', - '௬': '6', - '௭': '7', - '௮': '8', - '௯': '9', - '௦': '0' - }; */ - - return moment.lang('ta', { - months : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split("_"), - monthsShort : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split("_"), - weekdays : 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split("_"), - weekdaysShort : 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split("_"), - weekdaysMin : 'ஞா_தி_செ_பு_வி_வெ_ச'.split("_"), - longDateFormat : { - LT : "HH:mm", - L : "DD/MM/YYYY", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY, LT", - LLLL : "dddd, D MMMM YYYY, LT" - }, - calendar : { - sameDay : '[இன்று] LT', - nextDay : '[நாளை] LT', - nextWeek : 'dddd, LT', - lastDay : '[நேற்று] LT', - lastWeek : '[கடந்த வாரம்] dddd, LT', - sameElse : 'L' - }, - relativeTime : { - future : "%s இல்", - past : "%s முன்", - s : "ஒரு சில விநாடிகள்", - m : "ஒரு நிமிடம்", - mm : "%d நிமிடங்கள்", - h : "ஒரு மணி நேரம்", - hh : "%d மணி நேரம்", - d : "ஒரு நாள்", - dd : "%d நாட்கள்", - M : "ஒரு மாதம்", - MM : "%d மாதங்கள்", - y : "ஒரு வருடம்", - yy : "%d ஆண்டுகள்" - }, - /* preparse: function (string) { - return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) { - return numberMap[match]; - }); - }, - postformat: function (string) { - return string.replace(/\d/g, function (match) { - return symbolMap[match]; - }); - },*/ - ordinal : function (number) { - return number + 'வது'; - }, - // refer http://ta.wikipedia.org/s/1er1 - - meridiem : function (hour, minute, isLower) { - if (hour >= 6 && hour <= 10) { - return " காலை"; - } else if (hour >= 10 && hour <= 14) { - return " நண்பகல்"; - } else if (hour >= 14 && hour <= 18) { - return " எற்பாடு"; - } else if (hour >= 18 && hour <= 20) { - return " மாலை"; - } else if (hour >= 20 && hour <= 24) { - return " இரவு"; - } else if (hour >= 0 && hour <= 6) { - return " வைகறை"; - } - }, - week : { - dow : 0, // Sunday is the first day of the week. - doy : 6 // The week that contains Jan 1st is the first week of the year. + if (edge.to.level != edge.from.level) { + edge.to.springFx -= fx; + edge.to.springFy -= fy; + edge.from.springFx += fx; + edge.from.springFy += fy; + } + else { + var factor = 0.5; + edge.to.fx -= factor*fx; + edge.to.fy -= factor*fy; + edge.from.fx += factor*fx; + edge.from.fy += factor*fy; + } } - }); - })); + } + } + } + // normalize spring forces + var springForce = 1; + var springFx, springFy; + for (i = 0; i < nodeIndices.length; i++) { + var node = nodes[nodeIndices[i]]; + springFx = Math.min(springForce,Math.max(-springForce,node.springFx)); + springFy = Math.min(springForce,Math.max(-springForce,node.springFy)); -/***/ }, -/* 123 */ -/***/ function(module, exports, __webpack_require__) { + node.fx += springFx; + node.fy += springFy; + } - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// moment.js language configuration - // language : thai (th) - // author : Kridsada Thanabulpong : https://github.com/sirn + // retain energy balance + var totalFx = 0; + var totalFy = 0; + for (i = 0; i < nodeIndices.length; i++) { + var node = nodes[nodeIndices[i]]; + totalFx += node.fx; + totalFy += node.fy; + } + var correctionFx = totalFx / nodeIndices.length; + var correctionFy = totalFy / nodeIndices.length; - (function (factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(53)], __WEBPACK_AMD_DEFINE_RESULT__ = (factory.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory(window.moment); // Browser global - } - }(function (moment) { - return moment.lang('th', { - months : "มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม".split("_"), - monthsShort : "มกรา_กุมภา_มีนา_เมษา_พฤษภา_มิถุนา_กรกฎา_สิงหา_กันยา_ตุลา_พฤศจิกา_ธันวา".split("_"), - weekdays : "อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์".split("_"), - weekdaysShort : "อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์".split("_"), // yes, three characters difference - weekdaysMin : "อา._จ._อ._พ._พฤ._ศ._ส.".split("_"), - longDateFormat : { - LT : "H นาฬิกา m นาที", - L : "YYYY/MM/DD", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY เวลา LT", - LLLL : "วันddddที่ D MMMM YYYY เวลา LT" - }, - meridiem : function (hour, minute, isLower) { - if (hour < 12) { - return "ก่อนเที่ยง"; - } else { - return "หลังเที่ยง"; - } - }, - calendar : { - sameDay : '[วันนี้ เวลา] LT', - nextDay : '[พรุ่งนี้ เวลา] LT', - nextWeek : 'dddd[หน้า เวลา] LT', - lastDay : '[เมื่อวานนี้ เวลา] LT', - lastWeek : '[วัน]dddd[ที่แล้ว เวลา] LT', - sameElse : 'L' - }, - relativeTime : { - future : "อีก %s", - past : "%sที่แล้ว", - s : "ไม่กี่วินาที", - m : "1 นาที", - mm : "%d นาที", - h : "1 ชั่วโมง", - hh : "%d ชั่วโมง", - d : "1 วัน", - dd : "%d วัน", - M : "1 เดือน", - MM : "%d เดือน", - y : "1 ปี", - yy : "%d ปี" - } - }); - })); + for (i = 0; i < nodeIndices.length; i++) { + var node = nodes[nodeIndices[i]]; + node.fx -= correctionFx; + node.fy -= correctionFy; + } + }; /***/ }, -/* 124 */ +/* 58 */ /***/ function(module, exports, __webpack_require__) { - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// moment.js language configuration - // language : Tagalog/Filipino (tl-ph) - // author : Dan Hagman - - (function (factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(53)], __WEBPACK_AMD_DEFINE_RESULT__ = (factory.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory(window.moment); // Browser global - } - }(function (moment) { - return moment.lang('tl-ph', { - months : "Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"), - monthsShort : "Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"), - weekdays : "Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"), - weekdaysShort : "Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"), - weekdaysMin : "Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"), - longDateFormat : { - LT : "HH:mm", - L : "MM/D/YYYY", - LL : "MMMM D, YYYY", - LLL : "MMMM D, YYYY LT", - LLLL : "dddd, MMMM DD, YYYY LT" - }, - calendar : { - sameDay: "[Ngayon sa] LT", - nextDay: '[Bukas sa] LT', - nextWeek: 'dddd [sa] LT', - lastDay: '[Kahapon sa] LT', - lastWeek: 'dddd [huling linggo] LT', - sameElse: 'L' - }, - relativeTime : { - future : "sa loob ng %s", - past : "%s ang nakalipas", - s : "ilang segundo", - m : "isang minuto", - mm : "%d minuto", - h : "isang oras", - hh : "%d oras", - d : "isang araw", - dd : "%d araw", - M : "isang buwan", - MM : "%d buwan", - y : "isang taon", - yy : "%d taon" - }, - ordinal : function (number) { - return number; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - })); - + /** + * This function calculates the forces the nodes apply on eachother based on a gravitational model. + * The Barnes Hut method is used to speed up this N-body simulation. + * + * @private + */ + exports._calculateNodeForces = function() { + if (this.constants.physics.barnesHut.gravitationalConstant != 0) { + var node; + var nodes = this.calculationNodes; + var nodeIndices = this.calculationNodeIndices; + var nodeCount = nodeIndices.length; -/***/ }, -/* 125 */ -/***/ function(module, exports, __webpack_require__) { + this._formBarnesHutTree(nodes,nodeIndices); - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// moment.js language configuration - // language : turkish (tr) - // authors : Erhan Gundogan : https://github.com/erhangundogan, - // Burak Yiğit Kaya: https://github.com/BYK + var barnesHutTree = this.barnesHutTree; - (function (factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(53)], __WEBPACK_AMD_DEFINE_RESULT__ = (factory.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory(window.moment); // Browser global + // place the nodes one by one recursively + for (var i = 0; i < nodeCount; i++) { + node = nodes[nodeIndices[i]]; + // starting with root is irrelevant, it never passes the BarnesHut condition + this._getForceContribution(barnesHutTree.root.children.NW,node); + this._getForceContribution(barnesHutTree.root.children.NE,node); + this._getForceContribution(barnesHutTree.root.children.SW,node); + this._getForceContribution(barnesHutTree.root.children.SE,node); } - }(function (moment) { + } + }; - var suffixes = { - 1: "'inci", - 5: "'inci", - 8: "'inci", - 70: "'inci", - 80: "'inci", - 2: "'nci", - 7: "'nci", - 20: "'nci", - 50: "'nci", + /** + * This function traverses the barnesHutTree. It checks when it can approximate distant nodes with their center of mass. + * If a region contains a single node, we check if it is not itself, then we apply the force. + * + * @param parentBranch + * @param node + * @private + */ + exports._getForceContribution = function(parentBranch,node) { + // we get no force contribution from an empty region + if (parentBranch.childrenCount > 0) { + var dx,dy,distance; - 3: "'üncü", - 4: "'üncü", - 100: "'üncü", + // get the distance from the center of mass to the node. + dx = parentBranch.centerOfMass.x - node.x; + dy = parentBranch.centerOfMass.y - node.y; + distance = Math.sqrt(dx * dx + dy * dy); - 6: "'ncı", + // BarnesHut condition + // original condition : s/d < theta = passed === d/s > 1/theta = passed + // calcSize = 1/s --> d * 1/s > 1/theta = passed + if (distance * parentBranch.calcSize > this.constants.physics.barnesHut.theta) { + // duplicate code to reduce function calls to speed up program + if (distance == 0) { + distance = 0.1*Math.random(); + dx = distance; + } + var gravityForce = this.constants.physics.barnesHut.gravitationalConstant * parentBranch.mass * node.mass / (distance * distance * distance); + var fx = dx * gravityForce; + var fy = dy * gravityForce; + node.fx += fx; + node.fy += fy; + } + else { + // Did not pass the condition, go into children if available + if (parentBranch.childrenCount == 4) { + this._getForceContribution(parentBranch.children.NW,node); + this._getForceContribution(parentBranch.children.NE,node); + this._getForceContribution(parentBranch.children.SW,node); + this._getForceContribution(parentBranch.children.SE,node); + } + else { // parentBranch must have only one node, if it was empty we wouldnt be here + if (parentBranch.children.data.id != node.id) { // if it is not self + // duplicate code to reduce function calls to speed up program + if (distance == 0) { + distance = 0.5*Math.random(); + dx = distance; + } + var gravityForce = this.constants.physics.barnesHut.gravitationalConstant * parentBranch.mass * node.mass / (distance * distance * distance); + var fx = dx * gravityForce; + var fy = dy * gravityForce; + node.fx += fx; + node.fy += fy; + } + } + } + } + }; - 9: "'uncu", - 10: "'uncu", - 30: "'uncu", + /** + * This function constructs the barnesHut tree recursively. It creates the root, splits it and starts placing the nodes. + * + * @param nodes + * @param nodeIndices + * @private + */ + exports._formBarnesHutTree = function(nodes,nodeIndices) { + var node; + var nodeCount = nodeIndices.length; - 60: "'ıncı", - 90: "'ıncı" - }; + var minX = Number.MAX_VALUE, + minY = Number.MAX_VALUE, + maxX =-Number.MAX_VALUE, + maxY =-Number.MAX_VALUE; - return moment.lang('tr', { - months : "Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık".split("_"), - monthsShort : "Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara".split("_"), - weekdays : "Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi".split("_"), - weekdaysShort : "Paz_Pts_Sal_Çar_Per_Cum_Cts".split("_"), - weekdaysMin : "Pz_Pt_Sa_Ça_Pe_Cu_Ct".split("_"), - longDateFormat : { - LT : "HH:mm", - L : "DD.MM.YYYY", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY LT", - LLLL : "dddd, D MMMM YYYY LT" - }, - calendar : { - sameDay : '[bugün saat] LT', - nextDay : '[yarın saat] LT', - nextWeek : '[haftaya] dddd [saat] LT', - lastDay : '[dün] LT', - lastWeek : '[geçen hafta] dddd [saat] LT', - sameElse : 'L' - }, - relativeTime : { - future : "%s sonra", - past : "%s önce", - s : "birkaç saniye", - m : "bir dakika", - mm : "%d dakika", - h : "bir saat", - hh : "%d saat", - d : "bir gün", - dd : "%d gün", - M : "bir ay", - MM : "%d ay", - y : "bir yıl", - yy : "%d yıl" - }, - ordinal : function (number) { - if (number === 0) { // special case for zero - return number + "'ıncı"; - } - var a = number % 10, - b = number % 100 - a, - c = number >= 100 ? 100 : null; + // get the range of the nodes + for (var i = 0; i < nodeCount; i++) { + var x = nodes[nodeIndices[i]].x; + var y = nodes[nodeIndices[i]].y; + if (x < minX) { minX = x; } + if (x > maxX) { maxX = x; } + if (y < minY) { minY = y; } + if (y > maxY) { maxY = y; } + } + // make the range a square + var sizeDiff = Math.abs(maxX - minX) - Math.abs(maxY - minY); // difference between X and Y + if (sizeDiff > 0) {minY -= 0.5 * sizeDiff; maxY += 0.5 * sizeDiff;} // xSize > ySize + else {minX += 0.5 * sizeDiff; maxX -= 0.5 * sizeDiff;} // xSize < ySize - return number + (suffixes[a] || suffixes[b] || suffixes[c]); - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - })); + var minimumTreeSize = 1e-5; + var rootSize = Math.max(minimumTreeSize,Math.abs(maxX - minX)); + var halfRootSize = 0.5 * rootSize; + var centerX = 0.5 * (minX + maxX), centerY = 0.5 * (minY + maxY); -/***/ }, -/* 126 */ -/***/ function(module, exports, __webpack_require__) { + // construct the barnesHutTree + var barnesHutTree = { + root:{ + centerOfMass: {x:0, y:0}, + mass:0, + range: { + minX: centerX-halfRootSize,maxX:centerX+halfRootSize, + minY: centerY-halfRootSize,maxY:centerY+halfRootSize + }, + size: rootSize, + calcSize: 1 / rootSize, + children: { data:null}, + maxWidth: 0, + level: 0, + childrenCount: 4 + } + }; + this._splitBranch(barnesHutTree.root); - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// moment.js language configuration - // language : Morocco Central Atlas Tamaziɣt in Latin (tzm-latn) - // author : Abdel Said : https://github.com/abdelsaid + // place the nodes one by one recursively + for (i = 0; i < nodeCount; i++) { + node = nodes[nodeIndices[i]]; + this._placeInTree(barnesHutTree.root,node); + } - (function (factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(53)], __WEBPACK_AMD_DEFINE_RESULT__ = (factory.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory(window.moment); // Browser global - } - }(function (moment) { - return moment.lang('tzm-latn', { - months : "innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"), - monthsShort : "innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"), - weekdays : "asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"), - weekdaysShort : "asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"), - weekdaysMin : "asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"), - longDateFormat : { - LT : "HH:mm", - L : "DD/MM/YYYY", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY LT", - LLLL : "dddd D MMMM YYYY LT" - }, - calendar : { - sameDay: "[asdkh g] LT", - nextDay: '[aska g] LT', - nextWeek: 'dddd [g] LT', - lastDay: '[assant g] LT', - lastWeek: 'dddd [g] LT', - sameElse: 'L' - }, - relativeTime : { - future : "dadkh s yan %s", - past : "yan %s", - s : "imik", - m : "minuḍ", - mm : "%d minuḍ", - h : "saɛa", - hh : "%d tassaɛin", - d : "ass", - dd : "%d ossan", - M : "ayowr", - MM : "%d iyyirn", - y : "asgas", - yy : "%d isgasn" - }, - week : { - dow : 6, // Saturday is the first day of the week. - doy : 12 // The week that contains Jan 1st is the first week of the year. - } - }); - })); + // make global + this.barnesHutTree = barnesHutTree + }; -/***/ }, -/* 127 */ -/***/ function(module, exports, __webpack_require__) { + /** + * this updates the mass of a branch. this is increased by adding a node. + * + * @param parentBranch + * @param node + * @private + */ + exports._updateBranchMass = function(parentBranch, node) { + var totalMass = parentBranch.mass + node.mass; + var totalMassInv = 1/totalMass; - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// moment.js language configuration - // language : Morocco Central Atlas Tamaziɣt (tzm) - // author : Abdel Said : https://github.com/abdelsaid + parentBranch.centerOfMass.x = parentBranch.centerOfMass.x * parentBranch.mass + node.x * node.mass; + parentBranch.centerOfMass.x *= totalMassInv; - (function (factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(53)], __WEBPACK_AMD_DEFINE_RESULT__ = (factory.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory(window.moment); // Browser global - } - }(function (moment) { - return moment.lang('tzm', { - months : "ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"), - monthsShort : "ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"), - weekdays : "ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"), - weekdaysShort : "ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"), - weekdaysMin : "ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"), - longDateFormat : { - LT : "HH:mm", - L : "DD/MM/YYYY", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY LT", - LLLL : "dddd D MMMM YYYY LT" - }, - calendar : { - sameDay: "[ⴰⵙⴷⵅ ⴴ] LT", - nextDay: '[ⴰⵙⴽⴰ ⴴ] LT', - nextWeek: 'dddd [ⴴ] LT', - lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT', - lastWeek: 'dddd [ⴴ] LT', - sameElse: 'L' - }, - relativeTime : { - future : "ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s", - past : "ⵢⴰⵏ %s", - s : "ⵉⵎⵉⴽ", - m : "ⵎⵉⵏⵓⴺ", - mm : "%d ⵎⵉⵏⵓⴺ", - h : "ⵙⴰⵄⴰ", - hh : "%d ⵜⴰⵙⵙⴰⵄⵉⵏ", - d : "ⴰⵙⵙ", - dd : "%d oⵙⵙⴰⵏ", - M : "ⴰⵢoⵓⵔ", - MM : "%d ⵉⵢⵢⵉⵔⵏ", - y : "ⴰⵙⴳⴰⵙ", - yy : "%d ⵉⵙⴳⴰⵙⵏ" - }, - week : { - dow : 6, // Saturday is the first day of the week. - doy : 12 // The week that contains Jan 1st is the first week of the year. - } - }); - })); + parentBranch.centerOfMass.y = parentBranch.centerOfMass.y * parentBranch.mass + node.y * node.mass; + parentBranch.centerOfMass.y *= totalMassInv; + parentBranch.mass = totalMass; + var biggestSize = Math.max(Math.max(node.height,node.radius),node.width); + parentBranch.maxWidth = (parentBranch.maxWidth < biggestSize) ? biggestSize : parentBranch.maxWidth; -/***/ }, -/* 128 */ -/***/ function(module, exports, __webpack_require__) { + }; - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// moment.js language configuration - // language : ukrainian (uk) - // author : zemlanin : https://github.com/zemlanin - // Author : Menelion Elensúle : https://github.com/Oire - (function (factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(53)], __WEBPACK_AMD_DEFINE_RESULT__ = (factory.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory(window.moment); // Browser global - } - }(function (moment) { - function plural(word, num) { - var forms = word.split('_'); - return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]); - } + /** + * determine in which branch the node will be placed. + * + * @param parentBranch + * @param node + * @param skipMassUpdate + * @private + */ + exports._placeInTree = function(parentBranch,node,skipMassUpdate) { + if (skipMassUpdate != true || skipMassUpdate === undefined) { + // update the mass of the branch. + this._updateBranchMass(parentBranch,node); + } - function relativeTimeWithPlural(number, withoutSuffix, key) { - var format = { - 'mm': 'хвилина_хвилини_хвилин', - 'hh': 'година_години_годин', - 'dd': 'день_дні_днів', - 'MM': 'місяць_місяці_місяців', - 'yy': 'рік_роки_років' - }; - if (key === 'm') { - return withoutSuffix ? 'хвилина' : 'хвилину'; - } - else if (key === 'h') { - return withoutSuffix ? 'година' : 'годину'; - } - else { - return number + ' ' + plural(format[key], +number); - } + if (parentBranch.children.NW.range.maxX > node.x) { // in NW or SW + if (parentBranch.children.NW.range.maxY > node.y) { // in NW + this._placeInRegion(parentBranch,node,"NW"); } - - function monthsCaseReplace(m, format) { - var months = { - 'nominative': 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split('_'), - 'accusative': 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split('_') - }, - - nounCase = (/D[oD]? *MMMM?/).test(format) ? - 'accusative' : - 'nominative'; - - return months[nounCase][m.month()]; + else { // in SW + this._placeInRegion(parentBranch,node,"SW"); } - - function weekdaysCaseReplace(m, format) { - var weekdays = { - 'nominative': 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split('_'), - 'accusative': 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split('_'), - 'genitive': 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split('_') - }, - - nounCase = (/(\[[ВвУу]\]) ?dddd/).test(format) ? - 'accusative' : - ((/\[?(?:минулої|наступної)? ?\] ?dddd/).test(format) ? - 'genitive' : - 'nominative'); - - return weekdays[nounCase][m.day()]; + } + else { // in NE or SE + if (parentBranch.children.NW.range.maxY > node.y) { // in NE + this._placeInRegion(parentBranch,node,"NE"); } - - function processHoursFunction(str) { - return function () { - return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT'; - }; + else { // in SE + this._placeInRegion(parentBranch,node,"SE"); } + } + }; - return moment.lang('uk', { - months : monthsCaseReplace, - monthsShort : "січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд".split("_"), - weekdays : weekdaysCaseReplace, - weekdaysShort : "нд_пн_вт_ср_чт_пт_сб".split("_"), - weekdaysMin : "нд_пн_вт_ср_чт_пт_сб".split("_"), - longDateFormat : { - LT : "HH:mm", - L : "DD.MM.YYYY", - LL : "D MMMM YYYY р.", - LLL : "D MMMM YYYY р., LT", - LLLL : "dddd, D MMMM YYYY р., LT" - }, - calendar : { - sameDay: processHoursFunction('[Сьогодні '), - nextDay: processHoursFunction('[Завтра '), - lastDay: processHoursFunction('[Вчора '), - nextWeek: processHoursFunction('[У] dddd ['), - lastWeek: function () { - switch (this.day()) { - case 0: - case 3: - case 5: - case 6: - return processHoursFunction('[Минулої] dddd [').call(this); - case 1: - case 2: - case 4: - return processHoursFunction('[Минулого] dddd [').call(this); - } - }, - sameElse: 'L' - }, - relativeTime : { - future : "за %s", - past : "%s тому", - s : "декілька секунд", - m : relativeTimeWithPlural, - mm : relativeTimeWithPlural, - h : "годину", - hh : relativeTimeWithPlural, - d : "день", - dd : relativeTimeWithPlural, - M : "місяць", - MM : relativeTimeWithPlural, - y : "рік", - yy : relativeTimeWithPlural - }, - - // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason - meridiem : function (hour, minute, isLower) { - if (hour < 4) { - return "ночі"; - } else if (hour < 12) { - return "ранку"; - } else if (hour < 17) { - return "дня"; - } else { - return "вечора"; - } - }, + /** + * actually place the node in a region (or branch) + * + * @param parentBranch + * @param node + * @param region + * @private + */ + exports._placeInRegion = function(parentBranch,node,region) { + switch (parentBranch.children[region].childrenCount) { + case 0: // place node here + parentBranch.children[region].children.data = node; + parentBranch.children[region].childrenCount = 1; + this._updateBranchMass(parentBranch.children[region],node); + break; + case 1: // convert into children + // if there are two nodes exactly overlapping (on init, on opening of cluster etc.) + // we move one node a pixel and we do not put it in the tree. + if (parentBranch.children[region].children.data.x == node.x && + parentBranch.children[region].children.data.y == node.y) { + node.x += Math.random(); + node.y += Math.random(); + } + else { + this._splitBranch(parentBranch.children[region]); + this._placeInTree(parentBranch.children[region],node); + } + break; + case 4: // place in branch + this._placeInTree(parentBranch.children[region],node); + break; + } + }; - ordinal: function (number, period) { - switch (period) { - case 'M': - case 'd': - case 'DDD': - case 'w': - case 'W': - return number + '-й'; - case 'D': - return number + '-го'; - default: - return number; - } - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. - } - }); - })); + /** + * this function splits a branch into 4 sub branches. If the branch contained a node, we place it in the subbranch + * after the split is complete. + * + * @param parentBranch + * @private + */ + exports._splitBranch = function(parentBranch) { + // if the branch is shaded with a node, replace the node in the new subset. + var containedNode = null; + if (parentBranch.childrenCount == 1) { + containedNode = parentBranch.children.data; + parentBranch.mass = 0; parentBranch.centerOfMass.x = 0; parentBranch.centerOfMass.y = 0; + } + parentBranch.childrenCount = 4; + parentBranch.children.data = null; + this._insertRegion(parentBranch,"NW"); + this._insertRegion(parentBranch,"NE"); + this._insertRegion(parentBranch,"SW"); + this._insertRegion(parentBranch,"SE"); + if (containedNode != null) { + this._placeInTree(parentBranch,containedNode); + } + }; -/***/ }, -/* 129 */ -/***/ function(module, exports, __webpack_require__) { - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// moment.js language configuration - // language : uzbek - // author : Sardor Muminov : https://github.com/muminoff + /** + * This function subdivides the region into four new segments. + * Specifically, this inserts a single new segment. + * It fills the children section of the parentBranch + * + * @param parentBranch + * @param region + * @param parentRange + * @private + */ + exports._insertRegion = function(parentBranch, region) { + var minX,maxX,minY,maxY; + var childSize = 0.5 * parentBranch.size; + switch (region) { + case "NW": + minX = parentBranch.range.minX; + maxX = parentBranch.range.minX + childSize; + minY = parentBranch.range.minY; + maxY = parentBranch.range.minY + childSize; + break; + case "NE": + minX = parentBranch.range.minX + childSize; + maxX = parentBranch.range.maxX; + minY = parentBranch.range.minY; + maxY = parentBranch.range.minY + childSize; + break; + case "SW": + minX = parentBranch.range.minX; + maxX = parentBranch.range.minX + childSize; + minY = parentBranch.range.minY + childSize; + maxY = parentBranch.range.maxY; + break; + case "SE": + minX = parentBranch.range.minX + childSize; + maxX = parentBranch.range.maxX; + minY = parentBranch.range.minY + childSize; + maxY = parentBranch.range.maxY; + break; + } - (function (factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(53)], __WEBPACK_AMD_DEFINE_RESULT__ = (factory.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory(window.moment); // Browser global - } - }(function (moment) { - return moment.lang('uz', { - months : "январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_"), - monthsShort : "янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"), - weekdays : "Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба".split("_"), - weekdaysShort : "Якш_Душ_Сеш_Чор_Пай_Жум_Шан".split("_"), - weekdaysMin : "Як_Ду_Се_Чо_Па_Жу_Ша".split("_"), - longDateFormat : { - LT : "HH:mm", - L : "DD/MM/YYYY", - LL : "D MMMM YYYY", - LLL : "D MMMM YYYY LT", - LLLL : "D MMMM YYYY, dddd LT" - }, - calendar : { - sameDay : '[Бугун соат] LT [да]', - nextDay : '[Эртага] LT [да]', - nextWeek : 'dddd [куни соат] LT [да]', - lastDay : '[Кеча соат] LT [да]', - lastWeek : '[Утган] dddd [куни соат] LT [да]', - sameElse : 'L' - }, - relativeTime : { - future : "Якин %s ичида", - past : "Бир неча %s олдин", - s : "фурсат", - m : "бир дакика", - mm : "%d дакика", - h : "бир соат", - hh : "%d соат", - d : "бир кун", - dd : "%d кун", - M : "бир ой", - MM : "%d ой", - y : "бир йил", - yy : "%d йил" - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 4th is the first week of the year. - } - }); - })); + parentBranch.children[region] = { + centerOfMass:{x:0,y:0}, + mass:0, + range:{minX:minX,maxX:maxX,minY:minY,maxY:maxY}, + size: 0.5 * parentBranch.size, + calcSize: 2 * parentBranch.calcSize, + children: {data:null}, + maxWidth: 0, + level: parentBranch.level+1, + childrenCount: 0 + }; + }; -/***/ }, -/* 130 */ -/***/ function(module, exports, __webpack_require__) { - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// moment.js language configuration - // language : vietnamese (vi) - // author : Bang Nguyen : https://github.com/bangnk + /** + * This function is for debugging purposed, it draws the tree. + * + * @param ctx + * @param color + * @private + */ + exports._drawTree = function(ctx,color) { + if (this.barnesHutTree !== undefined) { - (function (factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(53)], __WEBPACK_AMD_DEFINE_RESULT__ = (factory.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory(window.moment); // Browser global - } - }(function (moment) { - return moment.lang('vi', { - months : "tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12".split("_"), - monthsShort : "Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12".split("_"), - weekdays : "chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy".split("_"), - weekdaysShort : "CN_T2_T3_T4_T5_T6_T7".split("_"), - weekdaysMin : "CN_T2_T3_T4_T5_T6_T7".split("_"), - longDateFormat : { - LT : "HH:mm", - L : "DD/MM/YYYY", - LL : "D MMMM [năm] YYYY", - LLL : "D MMMM [năm] YYYY LT", - LLLL : "dddd, D MMMM [năm] YYYY LT", - l : "DD/M/YYYY", - ll : "D MMM YYYY", - lll : "D MMM YYYY LT", - llll : "ddd, D MMM YYYY LT" - }, - calendar : { - sameDay: "[Hôm nay lúc] LT", - nextDay: '[Ngày mai lúc] LT', - nextWeek: 'dddd [tuần tới lúc] LT', - lastDay: '[Hôm qua lúc] LT', - lastWeek: 'dddd [tuần rồi lúc] LT', - sameElse: 'L' - }, - relativeTime : { - future : "%s tới", - past : "%s trước", - s : "vài giây", - m : "một phút", - mm : "%d phút", - h : "một giờ", - hh : "%d giờ", - d : "một ngày", - dd : "%d ngày", - M : "một tháng", - MM : "%d tháng", - y : "một năm", - yy : "%d năm" - }, - ordinal : function (number) { - return number; - }, - week : { - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - })); + ctx.lineWidth = 1; + this._drawBranch(this.barnesHutTree.root,ctx,color); + } + }; -/***/ }, -/* 131 */ -/***/ function(module, exports, __webpack_require__) { - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// moment.js language configuration - // language : chinese - // author : suupic : https://github.com/suupic - // author : Zeno Zeng : https://github.com/zenozeng + /** + * This function is for debugging purposes. It draws the branches recursively. + * + * @param branch + * @param ctx + * @param color + * @private + */ + exports._drawBranch = function(branch,ctx,color) { + if (color === undefined) { + color = "#FF0000"; + } - (function (factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(53)], __WEBPACK_AMD_DEFINE_RESULT__ = (factory.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory(window.moment); // Browser global - } - }(function (moment) { - return moment.lang('zh-cn', { - months : "一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"), - monthsShort : "1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"), - weekdays : "星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"), - weekdaysShort : "周日_周一_周二_周三_周四_周五_周六".split("_"), - weekdaysMin : "日_一_二_三_四_五_六".split("_"), - longDateFormat : { - LT : "Ah点mm", - L : "YYYY-MM-DD", - LL : "YYYY年MMMD日", - LLL : "YYYY年MMMD日LT", - LLLL : "YYYY年MMMD日ddddLT", - l : "YYYY-MM-DD", - ll : "YYYY年MMMD日", - lll : "YYYY年MMMD日LT", - llll : "YYYY年MMMD日ddddLT" - }, - meridiem : function (hour, minute, isLower) { - var hm = hour * 100 + minute; - if (hm < 600) { - return "凌晨"; - } else if (hm < 900) { - return "早上"; - } else if (hm < 1130) { - return "上午"; - } else if (hm < 1230) { - return "中午"; - } else if (hm < 1800) { - return "下午"; - } else { - return "晚上"; - } - }, - calendar : { - sameDay : function () { - return this.minutes() === 0 ? "[今天]Ah[点整]" : "[今天]LT"; - }, - nextDay : function () { - return this.minutes() === 0 ? "[明天]Ah[点整]" : "[明天]LT"; - }, - lastDay : function () { - return this.minutes() === 0 ? "[昨天]Ah[点整]" : "[昨天]LT"; - }, - nextWeek : function () { - var startOfWeek, prefix; - startOfWeek = moment().startOf('week'); - prefix = this.unix() - startOfWeek.unix() >= 7 * 24 * 3600 ? '[下]' : '[本]'; - return this.minutes() === 0 ? prefix + "dddAh点整" : prefix + "dddAh点mm"; - }, - lastWeek : function () { - var startOfWeek, prefix; - startOfWeek = moment().startOf('week'); - prefix = this.unix() < startOfWeek.unix() ? '[上]' : '[本]'; - return this.minutes() === 0 ? prefix + "dddAh点整" : prefix + "dddAh点mm"; - }, - sameElse : 'LL' - }, - ordinal : function (number, period) { - switch (period) { - case "d": - case "D": - case "DDD": - return number + "日"; - case "M": - return number + "月"; - case "w": - case "W": - return number + "周"; - default: - return number; - } - }, - relativeTime : { - future : "%s内", - past : "%s前", - s : "几秒", - m : "1分钟", - mm : "%d分钟", - h : "1小时", - hh : "%d小时", - d : "1天", - dd : "%d天", - M : "1个月", - MM : "%d个月", - y : "1年", - yy : "%d年" - }, - week : { - // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效 - dow : 1, // Monday is the first day of the week. - doy : 4 // The week that contains Jan 4th is the first week of the year. - } - }); - })); + if (branch.childrenCount == 4) { + this._drawBranch(branch.children.NW,ctx); + this._drawBranch(branch.children.NE,ctx); + this._drawBranch(branch.children.SE,ctx); + this._drawBranch(branch.children.SW,ctx); + } + ctx.strokeStyle = color; + ctx.beginPath(); + ctx.moveTo(branch.range.minX,branch.range.minY); + ctx.lineTo(branch.range.maxX,branch.range.minY); + ctx.stroke(); + ctx.beginPath(); + ctx.moveTo(branch.range.maxX,branch.range.minY); + ctx.lineTo(branch.range.maxX,branch.range.maxY); + ctx.stroke(); -/***/ }, -/* 132 */ -/***/ function(module, exports, __webpack_require__) { + ctx.beginPath(); + ctx.moveTo(branch.range.maxX,branch.range.maxY); + ctx.lineTo(branch.range.minX,branch.range.maxY); + ctx.stroke(); - var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// moment.js language configuration - // language : traditional chinese (zh-tw) - // author : Ben : https://github.com/ben-lin + ctx.beginPath(); + ctx.moveTo(branch.range.minX,branch.range.maxY); + ctx.lineTo(branch.range.minX,branch.range.minY); + ctx.stroke(); - (function (factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(53)], __WEBPACK_AMD_DEFINE_RESULT__ = (factory.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory(window.moment); // Browser global - } - }(function (moment) { - return moment.lang('zh-tw', { - months : "一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"), - monthsShort : "1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"), - weekdays : "星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"), - weekdaysShort : "週日_週一_週二_週三_週四_週五_週六".split("_"), - weekdaysMin : "日_一_二_三_四_五_六".split("_"), - longDateFormat : { - LT : "Ah點mm", - L : "YYYY年MMMD日", - LL : "YYYY年MMMD日", - LLL : "YYYY年MMMD日LT", - LLLL : "YYYY年MMMD日ddddLT", - l : "YYYY年MMMD日", - ll : "YYYY年MMMD日", - lll : "YYYY年MMMD日LT", - llll : "YYYY年MMMD日ddddLT" - }, - meridiem : function (hour, minute, isLower) { - var hm = hour * 100 + minute; - if (hm < 900) { - return "早上"; - } else if (hm < 1130) { - return "上午"; - } else if (hm < 1230) { - return "中午"; - } else if (hm < 1800) { - return "下午"; - } else { - return "晚上"; - } - }, - calendar : { - sameDay : '[今天]LT', - nextDay : '[明天]LT', - nextWeek : '[下]ddddLT', - lastDay : '[昨天]LT', - lastWeek : '[上]ddddLT', - sameElse : 'L' - }, - ordinal : function (number, period) { - switch (period) { - case "d" : - case "D" : - case "DDD" : - return number + "日"; - case "M" : - return number + "月"; - case "w" : - case "W" : - return number + "週"; - default : - return number; - } - }, - relativeTime : { - future : "%s內", - past : "%s前", - s : "幾秒", - m : "一分鐘", - mm : "%d分鐘", - h : "一小時", - hh : "%d小時", - d : "一天", - dd : "%d天", - M : "一個月", - MM : "%d個月", - y : "一年", - yy : "%d年" - } - }); - })); + /* + if (branch.mass > 0) { + ctx.circle(branch.centerOfMass.x, branch.centerOfMass.y, 3*branch.mass); + ctx.stroke(); + } + */ + }; /***/ }, -/* 133 */ +/* 59 */ /***/ function(module, exports, __webpack_require__) { module.exports = function(module) { diff --git a/dist/vis.map b/dist/vis.map index 14e5c3c1..afc0414a 100644 --- a/dist/vis.map +++ b/dist/vis.map @@ -1 +1 @@ -{"version":3,"file":"vis.map","sources":["./dist/vis.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","util","DOMutil","DataSet","DataView","Graph3d","graph3d","Camera","Filter","Point2d","Point3d","Slider","StepNumber","Timeline","Graph2d","timeline","DataStep","Range","stack","TimeStep","components","items","Item","ItemBox","ItemPoint","ItemRange","Component","CurrentTime","CustomTime","DataAxis","GraphGroup","Group","ItemSet","Legend","LineGraph","TimeAxis","Network","network","Edge","Groups","Images","Node","Popup","dotparser","Graph","Error","moment","isNumber","object","Number","isString","String","isDate","Date","match","ASPDateRegex","exec","isNaN","parse","isDataTable","google","visualization","DataTable","randomUUID","S4","Math","floor","random","toString","extend","a","i","len","arguments","length","other","prop","hasOwnProperty","selectiveExtend","props","Array","isArray","selectiveDeepExtend","b","TypeError","constructor","Object","undefined","deepExtend","equalArray","convert","type","Boolean","valueOf","isMoment","toDate","getType","toISOString","value","getAbsoluteLeft","elem","getBoundingClientRect","left","window","pageXOffset","getAbsoluteTop","top","pageYOffset","addClassName","className","classes","split","indexOf","push","join","removeClassName","index","splice","forEach","callback","toArray","array","updateProperty","key","addEventListener","element","action","listener","useCapture","navigator","userAgent","attachEvent","removeEventListener","detachEvent","preventDefault","event","returnValue","getTarget","target","srcElement","nodeType","parentNode","option","asBoolean","defaultValue","asNumber","asString","asSize","asElement","GiveDec","Hex","Value","eval","GiveHex","Dec","parseColor","color","isValidHex","hsv","hexToHSV","lighterColorHSV","h","s","v","min","darkerColorHSV","darkerColorHex","HSVToHex","lighterColorHex","background","border","highlight","hover","hexToRGB","hex","replace","toUpperCase","substring","d","e","f","r","g","RGBToHex","red","green","blue","RGBToHSV","minRGB","maxRGB","max","hue","saturation","HSVToRGB","q","t","rgb","isOk","test","selectiveBridgeObject","fields","referenceObject","objectTo","create","bridgeObject","mergeOptions","mergeTarget","options","enabled","binarySearch","orderedItems","range","field","field2","maxIterations","iteration","found","low","high","newLow","newHigh","guess","isVisible","start","console","log","binarySearchGeneric","sidePreference","newGuess","prevValue","nextValue","prepareElements","JSONcontainer","elementType","redundant","used","cleanupElements","removeChild","getSVGElement","svgContainer","shift","document","createElementNS","appendChild","getDOMElement","DOMContainer","createElement","drawPoint","x","y","group","point","drawPoints","style","setAttributeNS","size","drawBar","width","height","rect","data","_options","_data","_fieldId","fieldId","_type","_subscribers","add","prototype","on","subscribers","subscribe","off","filter","unsubscribe","_trigger","params","senderId","concat","subscriber","addedIds","me","_addItem","columns","_getColumnNames","row","rows","getNumberOfRows","item","col","cols","getValue","update","updatedIds","addOrUpdate","_updateItem","get","ids","firstType","returnType","allowedValues","itemId","_getItem","order","_sort","_filterFields","_appendRow","result","getIds","getDataSet","map","mappedItems","filteredItem","name","sort","av","bv","remove","removedId","removedIds","_remove","clear","keys","maxField","itemField","minField","distinct","values","fieldType","count","exists","types","raw","converted","JSON","stringify","dataTable","getNumberOfColumns","getColumnId","getColumnLabel","addRow","setValue","_ids","_onEvent","apply","setData","viewOptions","getArguments","defaultFilter","dataSet","added","updated","removed","container","SyntaxError","containerElement","margin","defaultXCenter","defaultYCenter","xLabel","yLabel","zLabel","filterLabel","legendLabel","STYLE","DOT","showPerspective","showGrid","keepAspectRatio","showShadow","showGrayBottom","showTooltip","verticalRatio","animationInterval","animationPreload","camera","eye","dataPoints","colX","colY","colZ","colValue","colFilter","xMin","xStep","xMax","yMin","yStep","yMax","zMin","zStep","zMax","valueMin","valueMax","xBarWidth","yBarWidth","colorAxis","colorGrid","colorDot","colorDotBorder","setOptions","Emitter","_setScale","scale","z","xCenter","yCenter","zCenter","setArmLocation","_convert3Dto2D","point3d","translation","_convertPointToTranslation","_convertTranslationToScreen","ax","ay","az","cx","getCameraLocation","cy","cz","sinTx","sin","getCameraRotation","cosTx","cos","sinTy","cosTy","sinTz","cosTz","dx","dy","dz","bx","by","ex","ey","ez","getArmLength","xcenter","frame","canvas","clientWidth","ycenter","_setBackgroundColor","backgroundColor","fill","stroke","strokeWidth","borderColor","borderWidth","borderStyle","BAR","BARCOLOR","BARSIZE","DOTLINE","DOTCOLOR","DOTSIZE","GRID","LINE","SURFACE","_getStyleNumber","styleName","_determineColumnIndexes","counter","column","getDistinctValues","distinctValues","getColumnRange","minMax","_dataInitialize","rawData","_onChange","dataFilter","setOnLoadCallback","redraw","withBars","defaultXBarWidth","dataX","defaultYBarWidth","dataY","xRange","defaultXMin","defaultXMax","defaultXStep","yRange","defaultYMin","defaultYMax","defaultYStep","zRange","defaultZMin","defaultZMax","defaultZStep","valueRange","defaultValueMin","defaultValueMax","_getDataPoints","sortNumber","obj","dataMatrix","xIndex","yIndex","trans","screen","bottom","pointRight","pointTop","pointCross","hasChildNodes","firstChild","position","overflow","noCanvas","fontWeight","padding","innerHTML","onmousedown","_onMouseDown","ontouchstart","_onTouchStart","onmousewheel","_onWheel","ontooltip","_onTooltip","onkeydown","setSize","_resizeCanvas","clientHeight","animationStart","slider","play","animationStop","stop","_resizeCenter","charAt","parseFloat","setCameraPosition","pos","horizontal","vertical","setArmRotation","distance","setArmLength","getCameraPosition","getArmRotation","_readData","_redrawFilter","animationAutoStart","cameraPosition","styleNumber","tooltip","showAnimationControls","_redrawSlider","_redrawClear","_redrawAxis","_redrawDataGrid","_redrawDataLine","_redrawDataBar","_redrawDataDot","_redrawInfo","_redrawLegend","ctx","getContext","clearRect","widthMin","widthMax","dotSize","right","lineWidth","font","ymin","ymax","_hsv2rgb","strokeStyle","beginPath","moveTo","lineTo","strokeRect","fillStyle","closePath","gridLineLen","step","getCurrent","next","end","textAlign","textBaseline","fillText","label","visible","setValues","setPlayInterval","onchange","getIndex","selectValue","setOnChangeCallback","lineStyle","getLabel","getSelectedValue","from","to","prettyStep","text","xText","yText","zText","offset","xOffset","yOffset","xMin2d","xMax2d","gridLenX","gridLenY","textMargin","armAngle","H","S","V","R","G","B","C","Hi","X","abs","parseInt","cross","topSideVisible","zAvg","transBottom","dist","sortDepth","aDiff","subtract","bDiff","crossproduct","crossProduct","radius","arc","PI","j","surface","corners","xWidth","yWidth","surfaces","center","avg","transCenter","diff","leftButtonDown","_onMouseUp","which","button","touchDown","startMouseX","getMouseX","startMouseY","getMouseY","startStart","startEnd","startArmRotation","cursor","onmousemove","_onMouseMove","onmouseup","diffX","diffY","horizontalNew","verticalNew","snapAngle","snapValue","round","parameters","emit","delay","mouseX","mouseY","tooltipTimeout","clearTimeout","_hideTooltip","dataPoint","_dataPointFromXY","_showTooltip","setTimeout","ontouchmove","_onTouchMove","ontouchend","_onTouchEnd","delta","wheelDelta","detail","oldLength","newLength","_insideTriangle","triangle","sign","as","bs","cs","distMax","closestDataPoint","closestDist","triangle1","triangle2","distX","distY","sqrt","content","line","dot","dom","borderRadius","boxShadow","borderLeft","contentWidth","offsetWidth","contentHeight","offsetHeight","lineHeight","dotWidth","dotHeight","clientX","targetTouches","clientY","armLocation","armRotation","armLength","cameraLocation","cameraRotation","calculateCameraOrientation","rot","graph","onLoadCallback","loadInBackground","isLoaded","getLoadedProgress","getColumn","getValues","dataView","progress","sub","sum","prev","bar","MozBorderRadius","slide","onclick","togglePlay","onChangeCallback","playTimeout","playInterval","playLoop","setIndex","playNext","interval","clearInterval","getPlayInterval","setPlayLoop","doLoop","onChange","indexToLeft","startClientX","startSlideX","leftToIndex","_start","_end","_step","precision","_current","setRange","setStep","calculatePrettyStep","log10","LN10","step1","pow","step2","step5","toPrecision","getStep","defaultOptions","autoResize","orientation","maxHeight","minHeight","_create","body","domProps","emitter","bind","snap","toScreen","_toScreen","toGlobalScreen","_toGlobalScreen","toTime","_toTime","toGlobalTime","_toGlobalTime","timeAxis","currentTime","customTime","itemSet","itemsData","groupsData","setItems","Hammer","backgroundVertical","backgroundHorizontal","centerContainer","leftContainer","rightContainer","shadowTop","shadowBottom","shadowTopLeft","shadowBottomLeft","shadowTopRight","shadowBottomRight","_onTouch","_onPinch","_onDragStart","_onDrag","hammer","prevent_default","listeners","events","args","slice","scrollTop","scrollTopMin","touch","destroy","_stopAutoResize","component","_initAutoResize","setCustomTime","time","getCustomTime","newDataSet","initialLoad","fit","setWindow","getVisibleItems","setGroups","groups","what","dataRange","getItemRange","dataset","minItem","maxStartItem","maxEndItem","setSelection","getSelection","getWindow","getRange","resized","borderRootHeight","borderRootWidth","autoHeight","containerHeight","centerWidth","_updateScrollTop","visibilityTop","visibilityBottom","visibility","repaint","conversion","_startAutoResize","_onResize","lastWidth","lastHeight","watchTimer","setInterval","allowDragging","initialScrollTop","gesture","deltaY","oldScrollTop","_getScrollTop","newScrollTop","_setScrollTop","linegraph","backgroundHorizontalContainer","minimumStep","forcedStepSize","current","autoScale","stepIndex","marginStart","marginEnd","majorSteps","minorSteps","setMinimumStep","setFirst","safeSize","minimumStepValue","orderOfMagnitude","minorStepIdx","magnitudefactor","solutionFound","stepSize","first","niceStart","niceEnd","roundToMinor","marginRange","rounded","hasNext","previous","isMajor","now","hours","minutes","seconds","milliseconds","clone","direction","moveable","zoomable","zoomMin","zoomMax","_onDragEnd","_onHold","_onMouseWheel","validateDirection","getPointer","pageX","pageY","hammerUtil","changed","_applyRange","newStart","newEnd","deltaX","diffRange","fakeGesture","pointer","pointerDate","_pointerToDate","zoom","touches","initDate","move","EPSILON","orderByStart","orderByEnd","aTime","bTime","force","iMax","axis","collidingItem","jj","collision","nostack","SCALE","DAY","MILLISECOND","SECOND","MINUTE","HOUR","WEEKDAY","MONTH","YEAR","setFullYear","getFullYear","setMonth","setDate","setHours","setMinutes","setSeconds","setMilliseconds","getMilliseconds","getSeconds","getMinutes","getHours","getDate","getMonth","setScale","newScale","newStep","setAutoScale","enable","stepYear","stepMonth","stepDay","stepHour","stepMinute","stepSecond","stepMillisecond","date","year","getLabelMinor","format","getLabelMajor","_isResized","_previousWidth","_previousHeight","showCurrentTime","parent","title","currentTimeTimer","showCustomTime","eventParams","drag","dragging","stopPropagation","svg","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","linegraphSVG","DOMelements","lines","labels","conversionFactor","minWidth","stepPixels","stepPixelsForced","lineOffset","master","svgElements","amountOfGroups","addGroup","graphOptions","updateGroup","removeGroup","hide","show","lineContainer","display","_redrawGroupIcons","iconHeight","iconOffset","groupId","drawIcon","changeCalled","_calculateCharSize","minorLabelHeight","minorCharHeight","majorLabelHeight","majorCharHeight","minorLineWidth","minorLineHeight","majorLineWidth","majorLineHeight","_redrawLabels","amountOfSteps","stepDifference","valueAtZero","marginStartPos","maxLabelSize","_redrawLabel","_redrawLine","characterHeight","largestWidth","majorCharWidth","minorCharWidth","convertValue","invertedValue","convertedValue","textMinor","createTextNode","measureCharMinor","textMajor","measureCharMajor","groupsUsingDefaultStyles","usingDefaultStyle","zeroPosition","setZeroPosition","catmullRom","parametrization","alpha","SVGcontainer","path","fillPath","fillHeight","outline","shaded","barWidth","bar1Height","bar2Height","visibleItems","byStart","byEnd","inner","foreground","marker","Element","getLabelWidth","restack","_updateVisibleItems","markerHeight","lastMarkerHeight","dirty","displayed","offsetTop","offsetLeft","ii","repositionY","labelSet","setParent","_checkIfVisible","removeFromDataSet","removeItem","_constructByEndArray","endArray","initialPosByStart","newVisibleItems","initialPosByEnd","_checkIfInvisible","repositionX","align","groupOrder","selectable","editable","updateTime","onAdd","onUpdate","onMove","onRemove","itemOptions","itemListeners","_onAdd","_onUpdate","_onRemove","groupListeners","_onAddGroups","_onUpdateGroups","_onRemoveGroups","groupIds","selection","stackDirty","touchParams","UNGROUPED","box","_updateUngrouped","_onSelectItem","_onMultiSelectItem","_onAddItem","addCallback","fn","Function","markDirty","unselect","select","rawVisibleItems","_deselect","_orderGroups","visibleInterval","zoomed","lastVisibleInterval","firstGroup","_firstGroup","firstMargin","nonFirstMargin","groupMargin","groupResized","firstGroupIndex","firstGroupId","ungrouped","getLabelSet","oldItemsData","getItems","_order","getGroups","itemData","_removeItem","groupData","groupOptions","oldGroupId","oldGroup","itemFromTarget","selected","dragLeftItem","dragRightItem","itemProps","groupFromTarget","changes","ctrlKey","srcEvent","shiftKey","oldSelection","newSelection","xAbs","newItem","itemSetFromTarget","side","iconSize","iconSpacing","textArea","drawLegendIcons","getComputedStyle","paddingTop","yAxisOrientation","defaultGroup","sampling","graphHeight","barChart","dataAxis","legend","lastStart","rangePerPixelInv","_updateGraph","yAxisLeft","yAxisRight","legendLeft","legendRight","_updateAllGroupData","_updateGroup","groupsContent","ungroupedCounter","preprocessedGroup","preprocessedGroupData","processedGroupData","groupRanges","minDate","maxDate","_preprocessData","_updateYAxis","_convertYvalues","_drawLineGraph","_drawBarGraph","minVal","maxVal","yAxisLeftUsed","yAxisRightUsed","minLeft","minRight","maxLeft","maxRight","_toggleAxisVisiblity","drawIcons","axisUsed","coreDistance","_drawPoints","svgHeight","_catmullRom","_linear","dFill","datapoints","xValue","yValue","extractedData","increment","amountOfPoints","xDistance","pointsPerPixel","ceil","_catmullRomUniform","p0","p1","p2","p3","bp1","bp2","normalization","d1","d2","d3","A","N","M","d3powA","d2powA","d3pow2A","d2pow2A","d1pow2A","d1powA","majorLines","majorTexts","minorLines","minorTexts","lineTop","parentChanged","foregroundNextSibling","nextSibling","backgroundNextSibling","_repaintLabels","insertBefore","xFirstMajorLabel","cur","_repaintMinorText","_repaintMajorText","_repaintMajorLine","_repaintMinorLine","leftTime","leftText","widthText","arr","pop","childNodes","nodeValue","_repaintDeleteButton","anchor","deleteButton","itemSetHeight","marginLeft","baseClassName","_repaintDragLeft","_repaintDragRight","contentLeft","parentWidth","boxWidth","dragLeft","dragRight","_initializeMixinLoaders","renderRefreshRate","renderTimestep","renderTime","maxPhysicsTicksPerRender","physicsDiscreteStepsize","stabilize","initializing","triggerFunctions","edit","editEdge","connect","del","constants","nodes","radiusMin","radiusMax","shape","image","fixed","fontColor","fontSize","fontFace","level","highlightColor","edges","widthSelectionMultiplier","hoverWidth","fontFill","arrowScaleFactor","dash","gap","altLength","inheritColor","configurePhysics","physics","barnesHut","theta","gravitationalConstant","centralGravity","springLength","springConstant","damping","repulsion","nodeDistance","hierarchicalRepulsion","clustering","initialMaxNodes","clusterThreshold","reduceToNodes","chainThreshold","clusterEdgeThreshold","sectorThreshold","screenSizeThreshold","fontSizeMultiplier","maxFontSize","forceAmplification","distanceAmplification","edgeGrowth","nodeScaling","maxNodeSizeIncrements","activeAreaBoxSize","clusterLevelDifference","navigation","keyboard","speed","dataManipulation","initiallyVisible","hierarchicalLayout","levelSeparation","nodeSpacing","freezeForStabilization","smoothCurves","dynamic","roundness","dynamicSmoothCurves","maxVelocity","minVelocity","stabilizationIterations","link","editNode","back","addDescription","linkDescription","editEdgeDescription","addError","linkError","editError","editBoundError","deleteError","deleteClusterError","dragNetwork","dragNodes","hideEdgesOnDrag","hideNodesOnDrag","hoverObj","controlNodesActive","images","setOnloadCallback","_redraw","xIncrement","yIncrement","zoomIncrement","_loadPhysicsSystem","_loadSectorSystem","_loadClusterSystem","_loadSelectionSystem","_loadHierarchySystem","_setTranslation","freezeSimulation","cachedFunctions","calculationNodes","calculationNodeIndices","nodeIndices","canvasTopLeft","canvasBottomRight","pointerPosition","areaCenter","previousScale","nodesData","edgesData","nodesListeners","_addNodes","_updateNodes","_removeNodes","edgesListeners","_addEdges","_updateEdges","_removeEdges","moving","timer","_setupHierarchicalLayout","zoomExtent","startWithClustering","mousetrap","MixinLoader","_getScriptPath","scripts","getElementsByTagName","src","_getRange","node","minY","maxY","minX","maxX","nodeId","_findCenter","_centerNetwork","initialZoom","disableStart","zoomLevel","numberOfNodes","factor","yDistance","xZoomLevel","yZoomLevel","_updateNodeIndexList","_clearNodeIndexList","idx","dotData","DOTToGraph","_setNodes","_setEdges","_putDataInSector","_stabilize","dragGraph","onEdit","onEditEdge","onConnect","onDelete","editMode","groupname","_loadNavigationControls","_loadManipulationSystem","_configureSmoothCurves","_createKeyBinds","pinch","_onTap","_onDoubleTap","_onRelease","_onMouseMoveTitle","reset","_moveUp","_yStopMoving","_moveDown","_moveLeft","_xStopMoving","_moveRight","_zoomIn","_stopZoom","_zoomOut","_createManipulatorBar","_deleteSelected","_getPointer","pinched","_getScale","_handleTouch","_handleDragStart","_getNodeAt","_getTranslation","isSelected","_selectObject","objectId","selectionObj","xFixed","yFixed","_handleOnDrag","_XconvertDOMtoCanvas","_XconvertCanvasToDOM","_YconvertDOMtoCanvas","_YconvertCanvasToDOM","_handleTap","_handleDoubleTap","_handleOnHold","_handleOnRelease","_zoom","scaleOld","preScaleDragPointer","DOMtoCanvas","scaleFrac","tx","ty","updateClustersDefault","postScaleDragPointer","canvasToDOM","popupObj","_checkHidePopup","checkShow","_checkShowPopup","popupTimer","edgeId","_getEdgeAt","_hoverObject","_blurObject","lastPopupNode","getTitle","isOverlappingWith","edge","connected","popup","setPosition","setText","manipulationDiv","navigationDivs","oldNodesData","_updateSelection","angle","_resetLevels","_updateCalculationNodes","_reconnectEdges","_updateValueRange","updateLabels","setProperties","properties","oldEdgesData","oldEdge","disconnect","showInternalIds","_createBezierNodes","via","sectors","setValueRange","w","save","translate","_doInAllSectors","restore","offsetX","offsetY","_drawNodes","alwaysShow","setScaleAndPos","inArea","draw","sMax","_drawEdges","_drawControlNodes","_freezeDefinedNodes","_physicsTick","_restoreFrozenNodes","iterations","fixedData","_isMoving","vmin","isMoving","_discreteStepNodes","nodesPresent","discreteStepLimited","discreteStep","vminCorrected","_doInAllActiveSectors","_doInSupportSector","_animationStep","_handleNavigation","calculationTime","maxSteps","timeRequired","requestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","ua","toLowerCase","requiresTimeout","toggleFreeze","smooth","mass","internalMultiplier","parentEdgeId","positionBezierNode","mixin","storePosition","dataArray","allowedToMoveX","allowedToMoveY","focusOnNode","nodePosition","requiredScale","canvasCenter","distanceFromCenter","fromId","toId","widthSelected","customLength","originalFromId","originalToId","widthFixed","lengthFixed","controlNodesEnabled","controlNodes","positions","connectedNode","_drawLine","_drawArrow","_drawArrowCenter","_drawDashLine","attachEdge","detachEdge","xFrom","yFrom","xTo","yTo","xObj","yObj","_getDistanceToEdge","_getColor","colorObj","_getLineWidth","_line","midpointX","midpointY","_pointOnLine","_label","resize","_circle","_pointOnCircle","networkScaleInv","_getViaCoordinates","xVia","yVia","quadraticCurveTo","measureText","fillRect","mozDash","setLineDash","pattern","lineDashOffset","mozDashOffset","lineCap","dashedLine","percentage","atan2","arrow","edgeSegmentLength","fromBorderDist","distanceToBorder","fromBorderPoint","toBorderDist","toBorderPoint","x1","y1","x2","y2","x3","y3","lastX","lastY","minDistance","_getDistanceToLine","px","py","something","u","nodeIdFrom","nodeIdTo","getControlNodePositions","_enableControlNodes","_disableControlNodes","_getSelectedControlNode","fromDistance","toDistance","_restoreControlNodes","defaultIndex","DEFAULT","load","url","img","Image","onload","imagelist","grouplist","dynamicEdges","reroutedEdges","fontDrawThreshold","horizontalAlignLeft","verticalAlignTop","baseRadiusValue","radiusFixed","preassignedLevel","borderWidthSelected","fx","fy","vx","vy","minForce","resetCluster","dynamicEdgesLength","clusterSession","clusterSizeWidthFactor","clusterSizeHeightFactor","clusterSizeRadiusFactor","growthIndicator","networkScale","formationScale","clusterSize","containedNodes","containedEdges","clusterSessions","originalLabel","triggerFunction","groupObj","imageObj","_drawDatabase","_resizeDatabase","_drawBox","_resizeBox","_drawCircle","_resizeCircle","_drawEllipse","_resizeEllipse","_drawImage","_resizeImage","_drawText","_resizeText","_drawDot","_resizeShape","_drawSquare","_drawTriangle","_drawTriangleDown","_drawStar","_reset","clearSizeCache","_setForce","_addForce","isFixed","getDistance","globalAlpha","drawImage","textSize","getTextSize","clusterLineWidth","selectionLineWidth","roundRect","database","diameter","circle","defaultSize","ellipse","_drawShape","radiusMultiplier","baseline","labelUnderNode","lineCount","yLine","inView","clearVelocity","updateVelocity","massBeforeClustering","energyBefore","styleAttr","fontFamily","WebkitBorderRadius","whiteSpace","maxWidth","parseDOT","parseGraph","nextPreview","isAlphaNumeric","regexAlphaNumeric","merge","o","addNode","graphs","attr","addEdge","createEdge","getToken","tokenType","TOKENTYPE","NULL","token","isComment","DELIMITER","c2","DELIMITERS","IDENTIFIER","newSyntaxError","UNKNOWN","chop","strict","parseStatements","parseStatement","subgraph","parseSubgraph","parseEdge","parseAttributeStatement","parseNodeStatement","subgraphs","parseAttributeList","message","maxLength","substr","forEach2","array1","array2","elem1","elem2","convertEdge","dotEdge","graphEdge","graphData","dotNode","graphNode","subEdge","{","}","[","]",";","=",",","->","--","eventType","getTouchList","collectEventData","CanvasRenderingContext2D","square","s2","ir","triangleDown","star","n","r2d","kappa","ox","oy","xe","ye","xm","ym","bezierCurveTo","wEllipse","hEllipse","ymb","yeb","xt","yt","xi","yi","xl","yl","xr","yr","dashArray","dashLength","dashCount","slope","distRemaining","dashIndex","PhysicsMixin","ClusterMixin","SectorsMixin","SelectionMixin","ManipulationMixin","NavigationMixin","HierarchicalLayoutMixin","_loadMixin","sourceVariable","mixinFunction","_clearMixin","_loadSelectedForceSolver","_loadPhysicsConfiguration","hubThreshold","activeSector","drawingNode","blockConnectingEdgeSelection","forceAppendSelection","editModeDiv","closeDiv","_cleanNavigation","_loadNavigationElements","_callbacks","once","self","removeListener","removeAllListeners","callbacks","cb","hasListeners","_addEvent","_characterFromEvent","fromCharCode","_MAP","_KEYCODE_MAP","_stop","tag_name","tagName","contentEditable","_modifiersMatch","modifiers1","modifiers2","_resetSequences","do_not_reset","active_sequences","_sequence_levels","_inside_sequence","_getMatches","character","modifiers","combination","matches","_isModifier","seq","combo","_eventModifiers","altKey","metaKey","_fireCallback","cancelBubble","_handleCharacter","processed_sequence_callback","_handleKey","keyCode","_ignore_next_keyup","_resetSequenceTimer","_reset_timer","_getReverseMap","_REVERSE_MAP","_pickBestAction","_bindSequence","_increaseSequence","_callbackAndReset","_bindSingle","sequence_name","sequence","_SPECIAL_ALIASES","_SHIFT_MAP","_bindMultiple","combinations",8,9,13,16,17,18,20,27,32,33,34,35,36,37,38,39,40,45,46,91,93,224,106,107,109,110,111,186,187,188,189,190,191,192,219,220,221,222,"~","!","@","#","$","%","^","&","*","(",")","_","+",":","\"","<",">","?","|","command","return","escape","_direct_map","unbind","trigger","clusterToFit","maxNumberOfNodes","reposition","maxLevels","forceAggregateHubs","normalizeClusterLevels","increaseClusterLevel","repositionNodes","openCluster","isMovingBeforeClustering","_nodeInActiveArea","_sector","_addSector","decreaseClusterLevel","_expandClusterNode","_updateDynamicEdges","updateClusters","zoomDirection","recursive","doNotStart","amountOfNodes","_collapseSector","_formClusters","_openClusters","_openClustersBySize","_aggregateHubs","handleChains","chainPercentage","_getChainFraction","_reduceAmountOfChains","_getHubSize","_formClustersByHub","openAll","containedNodeId","childNode","_expelChildFromParent","_unselectAll","_releaseContainedEdges","_connectEdgeBackToChild","_validateEdges","othersPresent","childNodeId","_repositionBezierNodes","_formClustersByZoom","_forceClustersByZoom","minLength","_addToCluster","_clusterToSmallestNeighbour","smallestNeighbour","smallestNeighbourNode","neighbour","onlyEqual","_formClusterFromHub","hubNode","absorptionSizeOffset","allowCluster","edgesIdarray","amountOfInitialEdges","_addToContainedEdges","_connectEdgeToCluster","_containCircularEdgesFromNode","massBefore","correction","edgeToId","edgeFromId","k","_addToReroutedEdges","maxLevel","minLevel","clusterLevel","targetLevel","average","averageSquared","hubCounter","largestHub","variance","standardDeviation","fraction","reduceAmount","chains","total","_switchToSector","sectorId","sectorType","_switchToActiveSector","_switchToFrozenSector","_switchToSupportSector","_loadLatestSector","_previousSector","_setActiveSector","newId","_forgetLastSector","_createNewSector","_deleteActiveSector","_deleteFrozenSector","_freezeSector","_activateSector","_mergeThisWithFrozen","_collapseThisToSingleCluster","sector","unqiueIdentifier","previousSector","runFunction","argument","_doInAllFrozenSectors","_drawSectorNodes","_drawAllSectorNodes","_getNodesOverlappingWith","overlappingNodes","_getAllNodesOverlappingWith","_pointerToPositionObject","positionObject","_getEdgesOverlappingWith","overlappingEdges","_getAllEdgesOverlappingWith","_addToSelection","_addToHover","_removeFromSelection","doNotTrigger","_unselectClusters","_getSelectedNodeCount","_getSelectedNode","_getSelectedEdge","_getSelectedEdgeCount","_getSelectedObjectCount","_selectionIsEmpty","_clusterInSelection","_selectConnectedEdges","_hoverConnectedEdges","_unselectConnectedEdges","append","highlightEdges","nodeIds","getSelectedNodes","edgeIds","getSelectedEdges","idArray","RangeError","selectNodes","selectEdges","_clearManipulatorBar","_restoreOverloadedFunctions","functionName","_toggleEditMode","toolbar","getElementById","boundFunction","edgeBeingEdited","selectedControlNode","addNodeButton","_createAddNodeToolbar","addEdgeButton","_createAddEdgeToolbar","editButton","_editNode","_createEditEdgeToolbar","editModeButton","backButton","_addNode","_handleConnect","_finishConnect","_selectControlNode","_controlNodeDrag","_releaseControlNode","newNode","_editEdge","alert","connectFromId","_createEdge","defaultData","finalizedData","sourceNodeId","targetNodeId","selectedNodes","selectedEdges","wrapper","navigationDivActions","_stopMovement","hubsize","definedLevel","undefinedLevel","_changeConstants","_determineLevels","distribution","_getDistribution","_placeNodesByHierarchy","minPos","_placeBranchNodes","amount","maxCount","_setLevel","parentId","parentLevel","nodeMoved","_restoreNodes","graphToggleSmoothCurves","graph_toggleSmooth","graphRepositionNodes","showValueOfRange","graphGenerateOptions","optionsSpecific","radioButton1","radioButton2","checked","backupConstants","optionsDiv","switchConfigurations","radioButton","querySelector","tableId","table","constantsVariableName","valueId","rangeValue","_overWriteGraphConstants","RepulsionMixin","HierarchialRepulsionMixin","BarnesHutMixin","_toggleBarnesHut","barnesHutTree","_initializeForceCalculation","_calculateForces","_calculateGravitationalForces","_calculateNodeForces","_calculateSpringForcesWithSupport","_calculateHierarchicalSpringForces","_calculateSpringForces","supportNodes","supportNodeId","gravity","gravityForce","edgeLength","springForce","combinedClusterSize","node1","node2","node3","_calculateSpringForce","physicsConfiguration","hierarchicalLayoutDirections","parentElement","rangeElement","radioButton3","graph_repositionNodes","graph_generateOptions","nameArray","__WEBPACK_AMD_DEFINE_RESULT__","global","dfl","defaultParsingFlags","empty","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","deprecate","msg","printMsg","suppressDeprecationWarnings","warn","firstTime","padToken","func","leftZeroFill","ordinalizeToken","period","lang","ordinal","Language","Moment","config","checkOverflow","Duration","duration","normalizedInput","normalizeObjectUnits","years","quarters","quarter","months","month","weeks","week","days","day","hour","minute","second","millisecond","_milliseconds","_days","_months","_bubble","cloneMoment","momentProperties","absRound","number","targetLength","forceSign","output","addOrSubtractDurationFromMoment","mom","isAdding","updateOffset","_d","setTime","rawSetter","rawGetter","rawMonthSetter","input","compareArrays","dontConvert","lengthDiff","diffs","toInt","normalizeUnits","units","lowered","unitAliases","camelFunctions","inputObject","normalizedProp","makeList","setter","getter","method","_lang","results","utc","set","argumentForCoercion","coercedNumber","isFinite","daysInMonth","UTC","getUTCDate","weeksInYear","dow","doy","weekOfYear","daysInYear","isLeapYear","_a","_pf","DATE","_overflowDayOfYear","isValid","_isValid","getTime","_strict","normalizeLanguage","makeAs","model","_isUTC","zone","_offset","local","loadLang","abbr","languages","unloadLang","getLangDefinition","hasModule","removeFormattingTokens","makeFormatFunction","formattingTokens","formatTokenFunctions","formatMoment","expandFormat","formatFunctions","invalidDate","replaceLongDateFormatTokens","longDateFormat","localFormattingTokens","lastIndex","getParseRegexForToken","parseTokenOneDigit","parseTokenThreeDigits","parseTokenFourDigits","parseTokenOneToFourDigits","parseTokenSignedNumber","parseTokenSixDigits","parseTokenOneToSixDigits","parseTokenTwoDigits","parseTokenOneToThreeDigits","parseTokenWord","_l","_meridiemParse","parseTokenTimestampMs","parseTokenTimezone","parseTokenT","parseTokenDigits","parseTokenOneOrTwoDigits","parseTokenOrdinal","RegExp","regexpEscape","unescapeFormat","timezoneMinutesFromString","string","possibleTzMatches","tzChunk","parts","parseTimezoneChunker","addTimeToArrayFromToken","datePartArray","monthsParse","_dayOfYear","parseTwoDigitYear","_isPm","isPM","_useUTC","_tzm","weekdaysParse","_w","invalidWeekday","dayOfYearFromWeekInfo","weekYear","weekday","temp","GG","W","E","_week","gg","dayOfYearFromWeeks","dayOfYear","dateFromConfig","currentDate","yearToUse","currentDateArray","makeUTCDate","getUTCMonth","makeDate","setUTCMinutes","getUTCMinutes","dateFromObject","_i","getUTCFullYear","makeDateFromStringAndFormat","_f","ISO_8601","parseISO","parsedInput","tokens","skipped","stringLength","totalParsedInputLength","matched","p4","makeDateFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","NaN","score","l","isoRegex","isoDates","isoTimes","makeDateFromString","createFromInputFallback","makeDateFromInput","aspNetJsonRegex","ms","setUTCFullYear","parseWeekday","language","substituteTimeAgo","withoutSuffix","isFuture","relativeTime","relativeTimeThresholds","dd","dm","firstDayOfWeek","firstDayOfWeekOfYear","adjustedMoment","daysToDayOfWeek","daysToAdd","getUTCDay","makeMoment","invalid","preparse","pickBy","moments","res","dayOfMonth","unit","makeAccessor","keepTime","makeDurationGetter","makeDurationAsGetter","makeGlobal","shouldDeprecate","ender","oldGlobalMoment","globalScope","VERSION","_isAMomentObject","aspNetTimeSpanJsonRegex","isoDurationRegex","isoFormat","unitMillisecondFactors","Milliseconds","Seconds","Minutes","Hours","Days","Months","Years","D","Q","DDD","dayofyear","isoweekday","isoweek","weekyear","isoweekyear","ordinalizeTokens","paddedTokens","MMM","monthsShort","MMMM","weekdaysMin","ddd","weekdaysShort","dddd","weekdays","isoWeek","YY","YYYY","YYYYY","YYYYYY","gggg","ggggg","isoWeekYear","GGGG","GGGGG","isoWeekday","meridiem","SS","SSS","SSSS","Z","ZZ","zoneAbbr","zz","zoneName","unix","lists","DDDD","_monthsShort","monthName","regex","_monthsParse","_weekdays","_weekdaysShort","_weekdaysMin","weekdayName","_weekdaysParse","_longDateFormat","LT","L","LL","LLL","LLLL","val","isLower","_calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","calendar","_relativeTime","future","past","mm","hh","MM","yy","pastFuture","_ordinal","postformat","_invalidDate","ret","parseIso","isDuration","inp","version","defaultFormat","relativeTimeThreshold","threshold","limit","_abbr","langData","flags","parseZone","isDSTShifted","parsingFlags","invalidAt","inputString","dur","asFloat","that","zoneDiff","startOf","humanize","fromNow","sod","isDST","getDay","endOf","isAfter","isBefore","isSame","getTimezoneOffset","_changeInProgress","hasAlignedHourOffset","isoWeeksInYear","weekInfo","dates","isoWeeks","toJSON","withSuffix","difference","toIsoString","asSeconds","asMonths","require","noGlobal","setup","READY","Event","determineEventTypes","Utils","each","gestures","Detection","register","onTouch","DOCUMENT","EVENT_MOVE","detect","EVENT_END","Instance","defaults","behavior","userSelect","touchAction","touchCallout","contentZooming","userDrag","tapHighlightColor","HAS_POINTEREVENTS","pointerEnabled","msPointerEnabled","HAS_TOUCHEVENTS","IS_MOBILE","NO_MOUSEEVENTS","CALCULATE_INTERVAL","EVENT_TYPES","DIRECTION_DOWN","DIRECTION_LEFT","DIRECTION_UP","DIRECTION_RIGHT","POINTER_MOUSE","POINTER_TOUCH","POINTER_PEN","EVENT_START","EVENT_RELEASE","EVENT_TOUCH","plugins","utils","dest","handler","iterator","context","inStr","find","inArray","hasParent","getCenter","getVelocity","deltaTime","getAngle","touch1","touch2","getDirection","getScale","getRotation","isVertical","setPrefixedCss","toggle","prefixes","toCamelCase","toggleBehavior","falseFn","onselectstart","ondragstart","str","preventMouseEvents","started","shouldDetect","hook","onTouchHandler","ev","triggerType","srcType","isPointer","isMouse","buttons","PointerEvent","matchType","updatePointer","doDetect","touchList","touchListLength","triggerChange","changedLength","changedTouches","evData","identifiers","identifier","pointerType","timeStamp","preventManipulation","stopDetect","pointers","touchlist","pointerEvent","pointerId","pt","MSPOINTER_TYPE_MOUSE","MSPOINTER_TYPE_TOUCH","MSPOINTER_TYPE_PEN","detection","stopped","startDetect","inst","eventData","startEvent","lastEvent","lastCalcEvent","futureCalcEvent","lastCalcData","extendEventData","instOptions","getCalculatedData","recalc","calcEv","calcData","velocity","velocityX","velocityY","interimAngle","interimDirection","startEv","lastEv","rotation","eventStartHandler","eventHandlers","createEvent","initEvent","dispatchEvent","state","dispose","eh","dragGesture","dragMaxTouches","triggered","dragMinDistance","startCenter","dragDistanceCorrection","dragLockToAxis","dragLockMinDistance","lastDirection","dragBlockVertical","dragBlockHorizontal","Drag","Gesture","holdGesture","holdTimeout","holdThreshold","Hold","Release","Infinity","Swipe","swipeMinTouches","swipeMaxTouches","swipeVelocityX","swipeVelocityY","tapGesture","sincePrev","didDoubleTap","hasMoved","tapMaxDistance","tapMaxTime","doubleTapInterval","doubleTapDistance","tapAlways","Tap","Touch","preventMouse","transformGesture","scaleThreshold","rotationThreshold","transformMinScale","transformMinRotation","Transform","repulsingForce","a_base","minimumDistance","steepness","springFx","springFy","totalFx","totalFy","correctionFx","correctionFy","nodeCount","_formBarnesHutTree","_getForceContribution","children","NW","NE","SW","SE","parentBranch","childrenCount","centerOfMass","calcSize","MAX_VALUE","sizeDiff","minimumTreeSize","rootSize","halfRootSize","centerX","centerY","_splitBranch","_placeInTree","_updateBranchMass","totalMass","totalMassInv","biggestSize","skipMassUpdate","_placeInRegion","region","containedNode","_insertRegion","childSize","_drawTree","_drawBranch","branch","webpackContext","req","webpackContextResolve","./ar","./ar-ma","./ar-ma.js","./ar-sa","./ar-sa.js","./ar.js","./az","./az.js","./bg","./bg.js","./bn","./bn.js","./br","./br.js","./bs","./bs.js","./ca","./ca.js","./cs","./cs.js","./cv","./cv.js","./cy","./cy.js","./da","./da.js","./de","./de-at","./de-at.js","./de.js","./el","./el.js","./en-au","./en-au.js","./en-ca","./en-ca.js","./en-gb","./en-gb.js","./eo","./eo.js","./es","./es.js","./et","./et.js","./eu","./eu.js","./fa","./fa.js","./fi","./fi.js","./fo","./fo.js","./fr","./fr-ca","./fr-ca.js","./fr.js","./gl","./gl.js","./he","./he.js","./hi","./hi.js","./hr","./hr.js","./hu","./hu.js","./hy-am","./hy-am.js","./id","./id.js","./is","./is.js","./it","./it.js","./ja","./ja.js","./ka","./ka.js","./km","./km.js","./ko","./ko.js","./lb","./lb.js","./lt","./lt.js","./lv","./lv.js","./mk","./mk.js","./ml","./ml.js","./mr","./mr.js","./ms-my","./ms-my.js","./nb","./nb.js","./ne","./ne.js","./nl","./nl.js","./nn","./nn.js","./pl","./pl.js","./pt","./pt-br","./pt-br.js","./pt.js","./ro","./ro.js","./ru","./ru.js","./sk","./sk.js","./sl","./sl.js","./sq","./sq.js","./sr","./sr-cyrl","./sr-cyrl.js","./sr.js","./sv","./sv.js","./ta","./ta.js","./th","./th.js","./tl-ph","./tl-ph.js","./tr","./tr.js","./tzm","./tzm-latn","./tzm-latn.js","./tzm.js","./uk","./uk.js","./uz","./uz.js","./vi","./vi.js","./zh-cn","./zh-cn.js","./zh-tw","./zh-tw.js","resolve","__WEBPACK_AMD_DEFINE_ARRAY__","symbolMap","1","2","3","4","5","6","7","0","numberMap","١","٢","٣","٤","٥","٦","٧","٨","٩","٠","suffixes",70,80,50,100,10,30,60,90,"lastDigit","last2Digits","১","২","৩","৪","৫","৬","৭","৮","৯","০","relativeTimeWithMutation","mutation","specialMutationForYears","lastNumber","softMutation","mutationTable","plural","affix","lookup","processRelativeTime","monthsNominativeEl","monthsGenitiveEl","momentToFormat","_monthsGenitiveEl","_monthsNominativeEl","calendarEl","_calendarEl","monthsShortDot","ll","lll","llll","۱","۲","۳","۴","۵","۶","۷","۸","۹","۰","verbalNumber","numbersFuture","numbersPast","१","२","३","४","५","६","७","८","९","०","num","weekEndings","monthsCaseReplace","nominative","accusative","nounCase","monthsShortCaseReplace","weekdaysCaseReplace","ss","meridiemParse","processFutureTime","eifelerRegelAppliesToNumber","processPastTime","processLastWeek","eifelerRegelAppliesToWeekday","firstDigit","translateSeconds","translateSingular","forms","special","relativeWeekDay","weekDay","weekDays","word","relativeTimeWithPlural","monthsShortWithDots","monthsShortWithoutDots","monthsNominative","monthsSubjective","separator","translator","words","correctGrammaticalCase","wordKey","lastWeekDays","genitive","processHoursFunction","hm","startOfWeek","prefix","webpackPolyfill","paths"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"vis.map","sources":["./dist/vis.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","util","DOMutil","DataSet","DataView","Graph3d","graph3d","Camera","Filter","Point2d","Point3d","Slider","StepNumber","Timeline","Graph2d","timeline","DataStep","Range","stack","TimeStep","components","items","Item","ItemBox","ItemPoint","ItemRange","Component","CurrentTime","CustomTime","DataAxis","GraphGroup","Group","ItemSet","Legend","LineGraph","TimeAxis","Network","network","Edge","Groups","Images","Node","Popup","dotparser","Graph","Error","moment","hammer","isNumber","object","Number","isString","String","isDate","Date","match","ASPDateRegex","exec","isNaN","parse","isDataTable","google","visualization","DataTable","randomUUID","S4","Math","floor","random","toString","extend","a","i","len","arguments","length","other","prop","hasOwnProperty","selectiveExtend","props","Array","isArray","selectiveDeepExtend","b","TypeError","constructor","Object","undefined","deepExtend","equalArray","convert","type","Boolean","valueOf","isMoment","toDate","getType","toISOString","value","getAbsoluteLeft","elem","getBoundingClientRect","left","window","pageXOffset","getAbsoluteTop","top","pageYOffset","addClassName","className","classes","split","indexOf","push","join","removeClassName","index","splice","forEach","callback","toArray","array","updateProperty","key","addEventListener","element","action","listener","useCapture","navigator","userAgent","attachEvent","removeEventListener","detachEvent","preventDefault","event","returnValue","getTarget","target","srcElement","nodeType","parentNode","option","asBoolean","defaultValue","asNumber","asString","asSize","asElement","GiveDec","Hex","Value","eval","GiveHex","Dec","parseColor","color","isValidHex","hsv","hexToHSV","lighterColorHSV","h","s","v","min","darkerColorHSV","darkerColorHex","HSVToHex","lighterColorHex","background","border","highlight","hover","hexToRGB","hex","replace","toUpperCase","substring","d","e","f","r","g","RGBToHex","red","green","blue","RGBToHSV","minRGB","maxRGB","max","hue","saturation","HSVToRGB","q","t","rgb","isOk","test","selectiveBridgeObject","fields","referenceObject","objectTo","create","bridgeObject","mergeOptions","mergeTarget","options","enabled","binarySearch","orderedItems","range","field","field2","maxIterations","iteration","found","low","high","newLow","newHigh","guess","isVisible","start","console","log","binarySearchGeneric","sidePreference","newGuess","prevValue","nextValue","prepareElements","JSONcontainer","elementType","redundant","used","cleanupElements","removeChild","getSVGElement","svgContainer","shift","document","createElementNS","appendChild","getDOMElement","DOMContainer","createElement","drawPoint","x","y","group","point","drawPoints","style","setAttributeNS","size","drawBar","width","height","rect","data","_options","_data","_fieldId","fieldId","_type","_subscribers","add","prototype","on","subscribers","subscribe","off","filter","unsubscribe","_trigger","params","senderId","concat","subscriber","addedIds","me","_addItem","columns","_getColumnNames","row","rows","getNumberOfRows","item","col","cols","getValue","update","updatedIds","addOrUpdate","_updateItem","get","ids","firstType","returnType","allowedValues","itemId","_getItem","order","_sort","_filterFields","_appendRow","result","getIds","getDataSet","map","mappedItems","filteredItem","name","sort","av","bv","remove","removedId","removedIds","_remove","clear","keys","maxField","itemField","minField","distinct","values","fieldType","count","exists","types","raw","converted","JSON","stringify","dataTable","getNumberOfColumns","getColumnId","getColumnLabel","addRow","setValue","_ids","_onEvent","apply","setData","viewOptions","getArguments","defaultFilter","dataSet","added","updated","removed","container","SyntaxError","containerElement","margin","defaultXCenter","defaultYCenter","xLabel","yLabel","zLabel","filterLabel","legendLabel","STYLE","DOT","showPerspective","showGrid","keepAspectRatio","showShadow","showGrayBottom","showTooltip","verticalRatio","animationInterval","animationPreload","camera","eye","dataPoints","colX","colY","colZ","colValue","colFilter","xMin","xStep","xMax","yMin","yStep","yMax","zMin","zStep","zMax","valueMin","valueMax","xBarWidth","yBarWidth","colorAxis","colorGrid","colorDot","colorDotBorder","setOptions","Emitter","_setScale","scale","z","xCenter","yCenter","zCenter","setArmLocation","_convert3Dto2D","point3d","translation","_convertPointToTranslation","_convertTranslationToScreen","ax","ay","az","cx","getCameraLocation","cy","cz","sinTx","sin","getCameraRotation","cosTx","cos","sinTy","cosTy","sinTz","cosTz","dx","dy","dz","bx","by","ex","ey","ez","getArmLength","xcenter","frame","canvas","clientWidth","ycenter","_setBackgroundColor","backgroundColor","fill","stroke","strokeWidth","borderColor","borderWidth","borderStyle","BAR","BARCOLOR","BARSIZE","DOTLINE","DOTCOLOR","DOTSIZE","GRID","LINE","SURFACE","_getStyleNumber","styleName","_determineColumnIndexes","counter","column","getDistinctValues","distinctValues","getColumnRange","minMax","_dataInitialize","rawData","_onChange","dataFilter","setOnLoadCallback","redraw","withBars","defaultXBarWidth","dataX","defaultYBarWidth","dataY","xRange","defaultXMin","defaultXMax","defaultXStep","yRange","defaultYMin","defaultYMax","defaultYStep","zRange","defaultZMin","defaultZMax","defaultZStep","valueRange","defaultValueMin","defaultValueMax","_getDataPoints","sortNumber","obj","dataMatrix","xIndex","yIndex","trans","screen","bottom","pointRight","pointTop","pointCross","hasChildNodes","firstChild","position","overflow","noCanvas","fontWeight","padding","innerHTML","onmousedown","_onMouseDown","ontouchstart","_onTouchStart","onmousewheel","_onWheel","ontooltip","_onTooltip","onkeydown","setSize","_resizeCanvas","clientHeight","animationStart","slider","play","animationStop","stop","_resizeCenter","charAt","parseFloat","setCameraPosition","pos","horizontal","vertical","setArmRotation","distance","setArmLength","getCameraPosition","getArmRotation","_readData","_redrawFilter","animationAutoStart","cameraPosition","styleNumber","tooltip","showAnimationControls","_redrawSlider","_redrawClear","_redrawAxis","_redrawDataGrid","_redrawDataLine","_redrawDataBar","_redrawDataDot","_redrawInfo","_redrawLegend","ctx","getContext","clearRect","widthMin","widthMax","dotSize","right","lineWidth","font","ymin","ymax","_hsv2rgb","strokeStyle","beginPath","moveTo","lineTo","strokeRect","fillStyle","closePath","gridLineLen","step","getCurrent","next","end","textAlign","textBaseline","fillText","label","visible","setValues","setPlayInterval","onchange","getIndex","selectValue","setOnChangeCallback","lineStyle","getLabel","getSelectedValue","from","to","prettyStep","text","xText","yText","zText","offset","xOffset","yOffset","xMin2d","xMax2d","gridLenX","gridLenY","textMargin","armAngle","H","S","V","R","G","B","C","Hi","X","abs","parseInt","cross","topSideVisible","zAvg","transBottom","dist","sortDepth","aDiff","subtract","bDiff","crossproduct","crossProduct","radius","arc","PI","j","surface","corners","xWidth","yWidth","surfaces","center","avg","transCenter","diff","leftButtonDown","_onMouseUp","which","button","touchDown","startMouseX","getMouseX","startMouseY","getMouseY","startStart","startEnd","startArmRotation","cursor","onmousemove","_onMouseMove","onmouseup","diffX","diffY","horizontalNew","verticalNew","snapAngle","snapValue","round","parameters","emit","delay","mouseX","mouseY","tooltipTimeout","clearTimeout","_hideTooltip","dataPoint","_dataPointFromXY","_showTooltip","setTimeout","ontouchmove","_onTouchMove","ontouchend","_onTouchEnd","delta","wheelDelta","detail","oldLength","newLength","_insideTriangle","triangle","sign","as","bs","cs","distMax","closestDataPoint","closestDist","triangle1","triangle2","distX","distY","sqrt","content","line","dot","dom","borderRadius","boxShadow","borderLeft","contentWidth","offsetWidth","contentHeight","offsetHeight","lineHeight","dotWidth","dotHeight","clientX","targetTouches","clientY","armLocation","armRotation","armLength","cameraLocation","cameraRotation","calculateCameraOrientation","rot","graph","onLoadCallback","loadInBackground","isLoaded","getLoadedProgress","getColumn","getValues","dataView","progress","sub","sum","prev","bar","MozBorderRadius","slide","onclick","togglePlay","onChangeCallback","playTimeout","playInterval","playLoop","setIndex","playNext","interval","clearInterval","getPlayInterval","setPlayLoop","doLoop","onChange","indexToLeft","startClientX","startSlideX","leftToIndex","_start","_end","_step","precision","_current","setRange","setStep","calculatePrettyStep","log10","LN10","step1","pow","step2","step5","toPrecision","getStep","defaultOptions","autoResize","orientation","maxHeight","minHeight","_create","body","domProps","emitter","bind","snap","toScreen","_toScreen","toGlobalScreen","_toGlobalScreen","toTime","_toTime","toGlobalTime","_toGlobalTime","timeAxis","currentTime","customTime","itemSet","itemsData","groupsData","setItems","Hammer","backgroundVertical","backgroundHorizontal","centerContainer","leftContainer","rightContainer","shadowTop","shadowBottom","shadowTopLeft","shadowBottomLeft","shadowTopRight","shadowBottomRight","_onTouch","_onPinch","_onDragStart","_onDrag","prevent_default","listeners","events","args","slice","scrollTop","scrollTopMin","touch","destroy","_stopAutoResize","component","_initAutoResize","setCustomTime","time","getCustomTime","newDataSet","initialLoad","fit","setWindow","getVisibleItems","setGroups","groups","what","dataRange","getItemRange","dataset","minItem","maxStartItem","maxEndItem","setSelection","getSelection","getWindow","getRange","resized","borderRootHeight","borderRootWidth","autoHeight","containerHeight","centerWidth","_updateScrollTop","visibilityTop","visibilityBottom","visibility","repaint","conversion","_startAutoResize","_onResize","lastWidth","lastHeight","watchTimer","setInterval","allowDragging","initialScrollTop","gesture","deltaY","oldScrollTop","_getScrollTop","newScrollTop","_setScrollTop","linegraph","backgroundHorizontalContainer","minimumStep","forcedStepSize","current","autoScale","stepIndex","marginStart","marginEnd","majorSteps","minorSteps","setMinimumStep","setFirst","safeSize","minimumStepValue","orderOfMagnitude","minorStepIdx","magnitudefactor","solutionFound","stepSize","first","niceStart","niceEnd","roundToMinor","marginRange","rounded","hasNext","previous","isMajor","now","hours","minutes","seconds","milliseconds","clone","direction","moveable","zoomable","zoomMin","zoomMax","_onDragEnd","_onHold","_onMouseWheel","validateDirection","getPointer","pageX","pageY","hammerUtil","changed","_applyRange","newStart","newEnd","deltaX","diffRange","fakeGesture","pointer","pointerDate","_pointerToDate","zoom","touches","initDate","move","EPSILON","orderByStart","orderByEnd","aTime","bTime","force","iMax","axis","collidingItem","jj","collision","nostack","SCALE","DAY","MILLISECOND","SECOND","MINUTE","HOUR","WEEKDAY","MONTH","YEAR","setFullYear","getFullYear","setMonth","setDate","setHours","setMinutes","setSeconds","setMilliseconds","getMilliseconds","getSeconds","getMinutes","getHours","getDate","getMonth","setScale","newScale","newStep","setAutoScale","enable","stepYear","stepMonth","stepDay","stepHour","stepMinute","stepSecond","stepMillisecond","date","year","getLabelMinor","format","getLabelMajor","_isResized","_previousWidth","_previousHeight","showCurrentTime","parent","title","currentTimeTimer","showCustomTime","eventParams","drag","dragging","stopPropagation","svg","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","linegraphSVG","DOMelements","lines","labels","conversionFactor","minWidth","stepPixels","stepPixelsForced","lineOffset","master","svgElements","amountOfGroups","addGroup","graphOptions","updateGroup","removeGroup","hide","show","lineContainer","display","_redrawGroupIcons","iconHeight","iconOffset","groupId","drawIcon","changeCalled","_calculateCharSize","minorLabelHeight","minorCharHeight","majorLabelHeight","majorCharHeight","minorLineWidth","minorLineHeight","majorLineWidth","majorLineHeight","_redrawLabels","amountOfSteps","stepDifference","valueAtZero","marginStartPos","maxLabelSize","_redrawLabel","_redrawLine","characterHeight","largestWidth","majorCharWidth","minorCharWidth","convertValue","invertedValue","convertedValue","textMinor","createTextNode","measureCharMinor","textMajor","measureCharMajor","groupsUsingDefaultStyles","usingDefaultStyle","zeroPosition","setZeroPosition","catmullRom","parametrization","alpha","SVGcontainer","path","fillPath","fillHeight","outline","shaded","barWidth","bar1Height","bar2Height","visibleItems","byStart","byEnd","inner","foreground","marker","Element","getLabelWidth","restack","_updateVisibleItems","markerHeight","lastMarkerHeight","dirty","displayed","offsetTop","offsetLeft","ii","repositionY","labelSet","setParent","_checkIfVisible","removeFromDataSet","removeItem","_constructByEndArray","endArray","initialPosByStart","newVisibleItems","initialPosByEnd","_checkIfInvisible","repositionX","align","groupOrder","selectable","editable","updateTime","onAdd","onUpdate","onMove","onRemove","itemOptions","itemListeners","_onAdd","_onUpdate","_onRemove","groupListeners","_onAddGroups","_onUpdateGroups","_onRemoveGroups","groupIds","selection","stackDirty","touchParams","UNGROUPED","box","_updateUngrouped","_onSelectItem","_onMultiSelectItem","_onAddItem","addCallback","fn","Function","markDirty","unselect","select","rawVisibleItems","_deselect","_orderGroups","visibleInterval","zoomed","lastVisibleInterval","firstGroup","_firstGroup","firstMargin","nonFirstMargin","groupMargin","groupResized","firstGroupIndex","firstGroupId","ungrouped","getLabelSet","oldItemsData","getItems","_order","getGroups","itemData","_removeItem","groupData","groupOptions","oldGroupId","oldGroup","itemFromTarget","selected","dragLeftItem","dragRightItem","itemProps","groupFromTarget","changes","ctrlKey","srcEvent","shiftKey","oldSelection","newSelection","xAbs","newItem","itemSetFromTarget","side","iconSize","iconSpacing","textArea","drawLegendIcons","getComputedStyle","paddingTop","yAxisOrientation","defaultGroup","sampling","graphHeight","barChart","dataAxis","legend","lastStart","rangePerPixelInv","_updateGraph","yAxisLeft","yAxisRight","legendLeft","legendRight","_updateAllGroupData","_updateGroup","groupsContent","ungroupedCounter","preprocessedGroup","preprocessedGroupData","processedGroupData","groupRanges","minDate","maxDate","_preprocessData","_updateYAxis","_convertYvalues","_drawLineGraph","_drawBarGraph","minVal","maxVal","yAxisLeftUsed","yAxisRightUsed","minLeft","minRight","maxLeft","maxRight","_toggleAxisVisiblity","drawIcons","axisUsed","coreDistance","_drawPoints","svgHeight","_catmullRom","_linear","dFill","datapoints","xValue","yValue","extractedData","increment","amountOfPoints","xDistance","pointsPerPixel","ceil","_catmullRomUniform","p0","p1","p2","p3","bp1","bp2","normalization","d1","d2","d3","A","N","M","d3powA","d2powA","d3pow2A","d2pow2A","d1pow2A","d1powA","majorLines","majorTexts","minorLines","minorTexts","lineTop","parentChanged","foregroundNextSibling","nextSibling","backgroundNextSibling","_repaintLabels","insertBefore","xFirstMajorLabel","cur","_repaintMinorText","_repaintMajorText","_repaintMajorLine","_repaintMinorLine","leftTime","leftText","widthText","arr","pop","childNodes","nodeValue","_repaintDeleteButton","anchor","deleteButton","itemSetHeight","marginLeft","baseClassName","_repaintDragLeft","_repaintDragRight","contentLeft","parentWidth","boxWidth","dragLeft","dragRight","_initializeMixinLoaders","renderRefreshRate","renderTimestep","renderTime","maxPhysicsTicksPerRender","physicsDiscreteStepsize","stabilize","initializing","triggerFunctions","edit","editEdge","connect","del","constants","nodes","radiusMin","radiusMax","shape","image","fixed","fontColor","fontSize","fontFace","level","highlightColor","edges","widthSelectionMultiplier","hoverWidth","fontFill","arrowScaleFactor","dash","gap","altLength","inheritColor","configurePhysics","physics","barnesHut","theta","gravitationalConstant","centralGravity","springLength","springConstant","damping","repulsion","nodeDistance","hierarchicalRepulsion","clustering","initialMaxNodes","clusterThreshold","reduceToNodes","chainThreshold","clusterEdgeThreshold","sectorThreshold","screenSizeThreshold","fontSizeMultiplier","maxFontSize","forceAmplification","distanceAmplification","edgeGrowth","nodeScaling","maxNodeSizeIncrements","activeAreaBoxSize","clusterLevelDifference","navigation","keyboard","speed","dataManipulation","initiallyVisible","hierarchicalLayout","levelSeparation","nodeSpacing","freezeForStabilization","smoothCurves","dynamic","roundness","dynamicSmoothCurves","maxVelocity","minVelocity","stabilizationIterations","link","editNode","back","addDescription","linkDescription","editEdgeDescription","addError","linkError","editError","editBoundError","deleteError","deleteClusterError","dragNetwork","dragNodes","hideEdgesOnDrag","hideNodesOnDrag","hoverObj","controlNodesActive","images","setOnloadCallback","_redraw","xIncrement","yIncrement","zoomIncrement","_loadPhysicsSystem","_loadSectorSystem","_loadClusterSystem","_loadSelectionSystem","_loadHierarchySystem","_setTranslation","freezeSimulation","cachedFunctions","calculationNodes","calculationNodeIndices","nodeIndices","canvasTopLeft","canvasBottomRight","pointerPosition","areaCenter","previousScale","nodesData","edgesData","nodesListeners","_addNodes","_updateNodes","_removeNodes","edgesListeners","_addEdges","_updateEdges","_removeEdges","moving","timer","_setupHierarchicalLayout","zoomExtent","startWithClustering","mousetrap","MixinLoader","_getScriptPath","scripts","getElementsByTagName","src","_getRange","node","minY","maxY","minX","maxX","nodeId","_findCenter","_centerNetwork","initialZoom","disableStart","zoomLevel","numberOfNodes","factor","yDistance","xZoomLevel","yZoomLevel","_updateNodeIndexList","_clearNodeIndexList","idx","dotData","DOTToGraph","_setNodes","_setEdges","_putDataInSector","_stabilize","dragGraph","onEdit","onEditEdge","onConnect","onDelete","editMode","groupname","_loadNavigationControls","_loadManipulationSystem","_configureSmoothCurves","_createKeyBinds","pinch","_onTap","_onDoubleTap","_onRelease","_onMouseMoveTitle","reset","_moveUp","_yStopMoving","_moveDown","_moveLeft","_xStopMoving","_moveRight","_zoomIn","_stopZoom","_zoomOut","_createManipulatorBar","_deleteSelected","_getPointer","pinched","_getScale","_handleTouch","_handleDragStart","_getNodeAt","_getTranslation","isSelected","_selectObject","objectId","selectionObj","xFixed","yFixed","_handleOnDrag","_XconvertDOMtoCanvas","_XconvertCanvasToDOM","_YconvertDOMtoCanvas","_YconvertCanvasToDOM","_handleTap","_handleDoubleTap","_handleOnHold","_handleOnRelease","_zoom","scaleOld","preScaleDragPointer","DOMtoCanvas","scaleFrac","tx","ty","updateClustersDefault","postScaleDragPointer","canvasToDOM","popupObj","_checkHidePopup","checkShow","_checkShowPopup","popupTimer","edgeId","_getEdgeAt","_hoverObject","_blurObject","lastPopupNode","getTitle","isOverlappingWith","edge","connected","popup","setPosition","setText","manipulationDiv","navigationDivs","oldNodesData","_updateSelection","angle","_resetLevels","_updateCalculationNodes","_reconnectEdges","_updateValueRange","updateLabels","setProperties","properties","oldEdgesData","oldEdge","disconnect","showInternalIds","_createBezierNodes","via","sectors","setValueRange","w","save","translate","_doInAllSectors","restore","offsetX","offsetY","_drawNodes","alwaysShow","setScaleAndPos","inArea","draw","sMax","_drawEdges","_drawControlNodes","_freezeDefinedNodes","_physicsTick","_restoreFrozenNodes","iterations","fixedData","_isMoving","vmin","isMoving","_discreteStepNodes","nodesPresent","discreteStepLimited","discreteStep","vminCorrected","_doInAllActiveSectors","_doInSupportSector","_animationStep","_handleNavigation","calculationTime","maxSteps","timeRequired","requestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","ua","toLowerCase","requiresTimeout","toggleFreeze","smooth","mass","internalMultiplier","parentEdgeId","positionBezierNode","mixin","storePosition","dataArray","allowedToMoveX","allowedToMoveY","focusOnNode","nodePosition","requiredScale","canvasCenter","distanceFromCenter","fromId","toId","widthSelected","customLength","originalFromId","originalToId","widthFixed","lengthFixed","controlNodesEnabled","controlNodes","positions","connectedNode","_drawLine","_drawArrow","_drawArrowCenter","_drawDashLine","attachEdge","detachEdge","xFrom","yFrom","xTo","yTo","xObj","yObj","_getDistanceToEdge","_getColor","colorObj","_getLineWidth","_line","midpointX","midpointY","_pointOnLine","_label","resize","_circle","_pointOnCircle","networkScaleInv","_getViaCoordinates","xVia","yVia","quadraticCurveTo","measureText","fillRect","mozDash","setLineDash","pattern","lineDashOffset","mozDashOffset","lineCap","dashedLine","percentage","atan2","arrow","edgeSegmentLength","fromBorderDist","distanceToBorder","fromBorderPoint","toBorderDist","toBorderPoint","x1","y1","x2","y2","x3","y3","lastX","lastY","minDistance","_getDistanceToLine","px","py","something","u","nodeIdFrom","nodeIdTo","getControlNodePositions","_enableControlNodes","_disableControlNodes","_getSelectedControlNode","fromDistance","toDistance","_restoreControlNodes","defaultIndex","DEFAULT","load","url","img","Image","onload","imagelist","grouplist","dynamicEdges","reroutedEdges","fontDrawThreshold","horizontalAlignLeft","verticalAlignTop","baseRadiusValue","radiusFixed","preassignedLevel","borderWidthSelected","fx","fy","vx","vy","minForce","resetCluster","dynamicEdgesLength","clusterSession","clusterSizeWidthFactor","clusterSizeHeightFactor","clusterSizeRadiusFactor","growthIndicator","networkScale","formationScale","clusterSize","containedNodes","containedEdges","clusterSessions","originalLabel","triggerFunction","groupObj","imageObj","_drawDatabase","_resizeDatabase","_drawBox","_resizeBox","_drawCircle","_resizeCircle","_drawEllipse","_resizeEllipse","_drawImage","_resizeImage","_drawText","_resizeText","_drawDot","_resizeShape","_drawSquare","_drawTriangle","_drawTriangleDown","_drawStar","_reset","clearSizeCache","_setForce","_addForce","isFixed","getDistance","globalAlpha","drawImage","textSize","getTextSize","clusterLineWidth","selectionLineWidth","roundRect","database","diameter","circle","defaultSize","ellipse","_drawShape","radiusMultiplier","baseline","labelUnderNode","lineCount","yLine","inView","clearVelocity","updateVelocity","massBeforeClustering","energyBefore","styleAttr","fontFamily","WebkitBorderRadius","whiteSpace","maxWidth","parseDOT","parseGraph","nextPreview","isAlphaNumeric","regexAlphaNumeric","merge","o","addNode","graphs","attr","addEdge","createEdge","getToken","tokenType","TOKENTYPE","NULL","token","isComment","DELIMITER","c2","DELIMITERS","IDENTIFIER","newSyntaxError","UNKNOWN","chop","strict","parseStatements","parseStatement","subgraph","parseSubgraph","parseEdge","parseAttributeStatement","parseNodeStatement","subgraphs","parseAttributeList","message","maxLength","substr","forEach2","array1","array2","elem1","elem2","convertEdge","dotEdge","graphEdge","graphData","dotNode","graphNode","subEdge","{","}","[","]",";","=",",","->","--","eventType","getTouchList","collectEventData","CanvasRenderingContext2D","square","s2","ir","triangleDown","star","n","r2d","kappa","ox","oy","xe","ye","xm","ym","bezierCurveTo","wEllipse","hEllipse","ymb","yeb","xt","yt","xi","yi","xl","yl","xr","yr","dashArray","dashLength","dashCount","slope","distRemaining","dashIndex","PhysicsMixin","ClusterMixin","SectorsMixin","SelectionMixin","ManipulationMixin","NavigationMixin","HierarchicalLayoutMixin","_loadMixin","sourceVariable","mixinFunction","_clearMixin","_loadSelectedForceSolver","_loadPhysicsConfiguration","hubThreshold","activeSector","drawingNode","blockConnectingEdgeSelection","forceAppendSelection","editModeDiv","closeDiv","_cleanNavigation","_loadNavigationElements","_callbacks","once","self","removeListener","removeAllListeners","callbacks","cb","hasListeners","_addEvent","_characterFromEvent","fromCharCode","_MAP","_KEYCODE_MAP","_stop","tag_name","tagName","contentEditable","_modifiersMatch","modifiers1","modifiers2","_resetSequences","do_not_reset","active_sequences","_sequence_levels","_inside_sequence","_getMatches","character","modifiers","combination","matches","_isModifier","seq","combo","_eventModifiers","altKey","metaKey","_fireCallback","cancelBubble","_handleCharacter","processed_sequence_callback","_handleKey","keyCode","_ignore_next_keyup","_resetSequenceTimer","_reset_timer","_getReverseMap","_REVERSE_MAP","_pickBestAction","_bindSequence","_increaseSequence","_callbackAndReset","_bindSingle","sequence_name","sequence","_SPECIAL_ALIASES","_SHIFT_MAP","_bindMultiple","combinations",8,9,13,16,17,18,20,27,32,33,34,35,36,37,38,39,40,45,46,91,93,224,106,107,109,110,111,186,187,188,189,190,191,192,219,220,221,222,"~","!","@","#","$","%","^","&","*","(",")","_","+",":","\"","<",">","?","|","command","return","escape","_direct_map","unbind","trigger","__WEBPACK_AMD_DEFINE_RESULT__","global","dfl","defaultParsingFlags","empty","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","deprecate","msg","printMsg","suppressDeprecationWarnings","warn","firstTime","padToken","func","leftZeroFill","ordinalizeToken","period","lang","ordinal","Language","Moment","config","checkOverflow","Duration","duration","normalizedInput","normalizeObjectUnits","years","quarters","quarter","months","month","weeks","week","days","day","hour","minute","second","millisecond","_milliseconds","_days","_months","_bubble","cloneMoment","momentProperties","absRound","number","targetLength","forceSign","output","addOrSubtractDurationFromMoment","mom","isAdding","updateOffset","_d","setTime","rawSetter","rawGetter","rawMonthSetter","input","compareArrays","dontConvert","lengthDiff","diffs","toInt","normalizeUnits","units","lowered","unitAliases","camelFunctions","inputObject","normalizedProp","makeList","setter","getter","method","_lang","results","utc","set","argumentForCoercion","coercedNumber","isFinite","daysInMonth","UTC","getUTCDate","weeksInYear","dow","doy","weekOfYear","daysInYear","isLeapYear","_a","_pf","DATE","_overflowDayOfYear","isValid","_isValid","getTime","_strict","normalizeLanguage","makeAs","model","_isUTC","zone","_offset","local","loadLang","abbr","languages","unloadLang","getLangDefinition","k","hasModule","removeFormattingTokens","makeFormatFunction","formattingTokens","formatTokenFunctions","formatMoment","expandFormat","formatFunctions","invalidDate","replaceLongDateFormatTokens","longDateFormat","localFormattingTokens","lastIndex","getParseRegexForToken","parseTokenOneDigit","parseTokenThreeDigits","parseTokenFourDigits","parseTokenOneToFourDigits","parseTokenSignedNumber","parseTokenSixDigits","parseTokenOneToSixDigits","parseTokenTwoDigits","parseTokenOneToThreeDigits","parseTokenWord","_l","_meridiemParse","parseTokenTimestampMs","parseTokenTimezone","parseTokenT","parseTokenDigits","parseTokenOneOrTwoDigits","parseTokenOrdinal","RegExp","regexpEscape","unescapeFormat","timezoneMinutesFromString","string","possibleTzMatches","tzChunk","parts","parseTimezoneChunker","addTimeToArrayFromToken","datePartArray","monthsParse","_dayOfYear","parseTwoDigitYear","_isPm","isPM","_useUTC","_tzm","weekdaysParse","_w","invalidWeekday","dayOfYearFromWeekInfo","weekYear","weekday","temp","GG","W","E","_week","gg","dayOfYearFromWeeks","dayOfYear","dateFromConfig","currentDate","yearToUse","currentDateArray","makeUTCDate","getUTCMonth","makeDate","setUTCMinutes","getUTCMinutes","dateFromObject","_i","getUTCFullYear","makeDateFromStringAndFormat","_f","ISO_8601","parseISO","parsedInput","tokens","skipped","stringLength","totalParsedInputLength","matched","p4","makeDateFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","NaN","score","l","isoRegex","isoDates","isoTimes","makeDateFromString","createFromInputFallback","makeDateFromInput","aspNetJsonRegex","ms","setUTCFullYear","parseWeekday","language","substituteTimeAgo","withoutSuffix","isFuture","relativeTime","relativeTimeThresholds","dd","dm","firstDayOfWeek","firstDayOfWeekOfYear","adjustedMoment","daysToDayOfWeek","daysToAdd","getUTCDay","makeMoment","invalid","preparse","pickBy","moments","res","dayOfMonth","unit","makeAccessor","keepTime","makeDurationGetter","makeDurationAsGetter","makeGlobal","shouldDeprecate","ender","oldGlobalMoment","globalScope","VERSION","_isAMomentObject","aspNetTimeSpanJsonRegex","isoDurationRegex","isoFormat","unitMillisecondFactors","Milliseconds","Seconds","Minutes","Hours","Days","Months","Years","D","Q","DDD","dayofyear","isoweekday","isoweek","weekyear","isoweekyear","ordinalizeTokens","paddedTokens","MMM","monthsShort","MMMM","weekdaysMin","ddd","weekdaysShort","dddd","weekdays","isoWeek","YY","YYYY","YYYYY","YYYYYY","gggg","ggggg","isoWeekYear","GGGG","GGGGG","isoWeekday","meridiem","SS","SSS","SSSS","Z","ZZ","zoneAbbr","zz","zoneName","unix","lists","DDDD","_monthsShort","monthName","regex","_monthsParse","_weekdays","_weekdaysShort","_weekdaysMin","weekdayName","_weekdaysParse","_longDateFormat","LT","L","LL","LLL","LLLL","val","isLower","_calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","calendar","_relativeTime","future","past","mm","hh","MM","yy","pastFuture","_ordinal","postformat","_invalidDate","ret","parseIso","isDuration","inp","version","defaultFormat","relativeTimeThreshold","threshold","limit","_abbr","langData","flags","parseZone","isDSTShifted","parsingFlags","invalidAt","inputString","dur","asFloat","that","zoneDiff","startOf","humanize","fromNow","sod","isDST","getDay","endOf","isAfter","isBefore","isSame","getTimezoneOffset","_changeInProgress","hasAlignedHourOffset","isoWeeksInYear","weekInfo","dates","isoWeeks","toJSON","withSuffix","difference","toIsoString","asSeconds","asMonths","require","noGlobal","setup","READY","Event","determineEventTypes","Utils","each","gestures","Detection","register","onTouch","DOCUMENT","EVENT_MOVE","detect","EVENT_END","Instance","defaults","behavior","userSelect","touchAction","touchCallout","contentZooming","userDrag","tapHighlightColor","HAS_POINTEREVENTS","pointerEnabled","msPointerEnabled","HAS_TOUCHEVENTS","IS_MOBILE","NO_MOUSEEVENTS","CALCULATE_INTERVAL","EVENT_TYPES","DIRECTION_DOWN","DIRECTION_LEFT","DIRECTION_UP","DIRECTION_RIGHT","POINTER_MOUSE","POINTER_TOUCH","POINTER_PEN","EVENT_START","EVENT_RELEASE","EVENT_TOUCH","plugins","utils","dest","handler","iterator","context","inStr","find","inArray","hasParent","getCenter","getVelocity","deltaTime","getAngle","touch1","touch2","getDirection","getScale","getRotation","isVertical","setPrefixedCss","toggle","prefixes","toCamelCase","toggleBehavior","falseFn","onselectstart","ondragstart","str","preventMouseEvents","started","shouldDetect","hook","onTouchHandler","ev","triggerType","srcType","isPointer","isMouse","buttons","PointerEvent","matchType","updatePointer","doDetect","touchList","touchListLength","triggerChange","changedLength","changedTouches","evData","identifiers","identifier","pointerType","timeStamp","preventManipulation","stopDetect","pointers","touchlist","pointerEvent","pointerId","pt","MSPOINTER_TYPE_MOUSE","MSPOINTER_TYPE_TOUCH","MSPOINTER_TYPE_PEN","detection","stopped","startDetect","inst","eventData","startEvent","lastEvent","lastCalcEvent","futureCalcEvent","lastCalcData","extendEventData","instOptions","getCalculatedData","recalc","calcEv","calcData","velocity","velocityX","velocityY","interimAngle","interimDirection","startEv","lastEv","rotation","eventStartHandler","eventHandlers","createEvent","initEvent","dispatchEvent","state","dispose","eh","dragGesture","dragMaxTouches","triggered","dragMinDistance","startCenter","dragDistanceCorrection","dragLockToAxis","dragLockMinDistance","lastDirection","dragBlockVertical","dragBlockHorizontal","Drag","Gesture","holdGesture","holdTimeout","holdThreshold","Hold","Release","Infinity","Swipe","swipeMinTouches","swipeMaxTouches","swipeVelocityX","swipeVelocityY","tapGesture","sincePrev","didDoubleTap","hasMoved","tapMaxDistance","tapMaxTime","doubleTapInterval","doubleTapDistance","tapAlways","Tap","Touch","preventMouse","transformGesture","scaleThreshold","rotationThreshold","transformMinScale","transformMinRotation","Transform","clusterToFit","maxNumberOfNodes","reposition","maxLevels","forceAggregateHubs","normalizeClusterLevels","increaseClusterLevel","repositionNodes","openCluster","isMovingBeforeClustering","_nodeInActiveArea","_sector","_addSector","decreaseClusterLevel","_expandClusterNode","_updateDynamicEdges","updateClusters","zoomDirection","recursive","doNotStart","amountOfNodes","_collapseSector","_formClusters","_openClusters","_openClustersBySize","_aggregateHubs","handleChains","chainPercentage","_getChainFraction","_reduceAmountOfChains","_getHubSize","_formClustersByHub","openAll","containedNodeId","childNode","_expelChildFromParent","_unselectAll","_releaseContainedEdges","_connectEdgeBackToChild","_validateEdges","othersPresent","childNodeId","_repositionBezierNodes","_formClustersByZoom","_forceClustersByZoom","minLength","_addToCluster","_clusterToSmallestNeighbour","smallestNeighbour","smallestNeighbourNode","neighbour","onlyEqual","_formClusterFromHub","hubNode","absorptionSizeOffset","allowCluster","edgesIdarray","amountOfInitialEdges","_addToContainedEdges","_connectEdgeToCluster","_containCircularEdgesFromNode","massBefore","correction","edgeToId","edgeFromId","_addToReroutedEdges","maxLevel","minLevel","clusterLevel","targetLevel","average","averageSquared","hubCounter","largestHub","variance","standardDeviation","fraction","reduceAmount","chains","total","_switchToSector","sectorId","sectorType","_switchToActiveSector","_switchToFrozenSector","_switchToSupportSector","_loadLatestSector","_previousSector","_setActiveSector","newId","_forgetLastSector","_createNewSector","_deleteActiveSector","_deleteFrozenSector","_freezeSector","_activateSector","_mergeThisWithFrozen","_collapseThisToSingleCluster","sector","unqiueIdentifier","previousSector","runFunction","argument","_doInAllFrozenSectors","_drawSectorNodes","_drawAllSectorNodes","_getNodesOverlappingWith","overlappingNodes","_getAllNodesOverlappingWith","_pointerToPositionObject","positionObject","_getEdgesOverlappingWith","overlappingEdges","_getAllEdgesOverlappingWith","_addToSelection","_addToHover","_removeFromSelection","doNotTrigger","_unselectClusters","_getSelectedNodeCount","_getSelectedNode","_getSelectedEdge","_getSelectedEdgeCount","_getSelectedObjectCount","_selectionIsEmpty","_clusterInSelection","_selectConnectedEdges","_hoverConnectedEdges","_unselectConnectedEdges","append","highlightEdges","nodeIds","getSelectedNodes","edgeIds","getSelectedEdges","idArray","RangeError","selectNodes","selectEdges","_clearManipulatorBar","_restoreOverloadedFunctions","functionName","_toggleEditMode","toolbar","getElementById","boundFunction","edgeBeingEdited","selectedControlNode","addNodeButton","_createAddNodeToolbar","addEdgeButton","_createAddEdgeToolbar","editButton","_editNode","_createEditEdgeToolbar","editModeButton","backButton","_addNode","_handleConnect","_finishConnect","_selectControlNode","_controlNodeDrag","_releaseControlNode","newNode","_editEdge","alert","connectFromId","_createEdge","defaultData","finalizedData","sourceNodeId","targetNodeId","selectedNodes","selectedEdges","wrapper","navigationDivActions","_stopMovement","hubsize","definedLevel","undefinedLevel","_changeConstants","_determineLevels","distribution","_getDistribution","_placeNodesByHierarchy","minPos","_placeBranchNodes","amount","maxCount","_setLevel","parentId","parentLevel","nodeMoved","_restoreNodes","graphToggleSmoothCurves","graph_toggleSmooth","graphRepositionNodes","showValueOfRange","graphGenerateOptions","optionsSpecific","radioButton1","radioButton2","checked","backupConstants","optionsDiv","switchConfigurations","radioButton","querySelector","tableId","table","constantsVariableName","valueId","rangeValue","_overWriteGraphConstants","RepulsionMixin","HierarchialRepulsionMixin","BarnesHutMixin","_toggleBarnesHut","barnesHutTree","_initializeForceCalculation","_calculateForces","_calculateGravitationalForces","_calculateNodeForces","_calculateSpringForcesWithSupport","_calculateHierarchicalSpringForces","_calculateSpringForces","supportNodes","supportNodeId","gravity","gravityForce","edgeLength","springForce","combinedClusterSize","node1","node2","node3","_calculateSpringForce","physicsConfiguration","hierarchicalLayoutDirections","parentElement","rangeElement","radioButton3","graph_repositionNodes","graph_generateOptions","nameArray","webpackContext","req","webpackContextResolve","resolve","repulsingForce","a_base","minimumDistance","steepness","springFx","springFy","totalFx","totalFy","correctionFx","correctionFy","nodeCount","_formBarnesHutTree","_getForceContribution","children","NW","NE","SW","SE","parentBranch","childrenCount","centerOfMass","calcSize","MAX_VALUE","sizeDiff","minimumTreeSize","rootSize","halfRootSize","centerX","centerY","_splitBranch","_placeInTree","_updateBranchMass","totalMass","totalMassInv","biggestSize","skipMassUpdate","_placeInRegion","region","containedNode","_insertRegion","childSize","_drawTree","_drawBranch","branch","webpackPolyfill","paths"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;CAyBA,SAA2CA,EAAMC,GAC1B,gBAAZC,UAA0C,gBAAXC,QACxCA,OAAOD,QAAUD,IACQ,kBAAXG,SAAyBA,OAAOC,IAC9CD,OAAOH,GACmB,gBAAZC,SACdA,QAAa,IAAID,IAEjBD,EAAU,IAAIC,KACbK,KAAM,WACT,MAAgB,UAAUC,GAKhB,QAASC,GAAoBC,GAG5B,GAAGC,EAAiBD,GACnB,MAAOC,GAAiBD,GAAUP,OAGnC,IAAIC,GAASO,EAAiBD,IAC7BP,WACAS,GAAIF,EACJG,QAAQ,EAUT,OANAL,GAAQE,GAAUI,KAAKV,EAAOD,QAASC,EAAQA,EAAOD,QAASM,GAG/DL,EAAOS,QAAS,EAGTT,EAAOD,QAvBf,GAAIQ,KAqCJ,OATAF,GAAoBM,EAAIP,EAGxBC,EAAoBO,EAAIL,EAGxBF,EAAoBQ,EAAI,GAGjBR,EAAoB,KAK/B,SAASL,EAAQD,EAASM,GAG9BN,EAAQe,KAAOT,EAAoB,GACnCN,EAAQgB,QAAUV,EAAoB,GAGtCN,EAAQiB,QAAUX,EAAoB,GACtCN,EAAQkB,SAAWZ,EAAoB,GAGvCN,EAAQmB,QAAUb,EAAoB,GACtCN,EAAQoB,SACNC,OAAQf,EAAoB,GAC5BgB,OAAQhB,EAAoB,GAC5BiB,QAASjB,EAAoB,GAC7BkB,QAASlB,EAAoB,GAC7BmB,OAAQnB,EAAoB,IAC5BoB,WAAYpB,EAAoB,KAIlCN,EAAQ2B,SAAWrB,EAAoB,IACvCN,EAAQ4B,QAAUtB,EAAoB,IACtCN,EAAQ6B,UACNC,SAAUxB,EAAoB,IAC9ByB,MAAOzB,EAAoB,IAC3B0B,MAAO1B,EAAoB,IAC3B2B,SAAU3B,EAAoB,IAE9B4B,YACEC,OACEC,KAAM9B,EAAoB,IAC1B+B,QAAS/B,EAAoB,IAC7BgC,UAAWhC,EAAoB,IAC/BiC,UAAWjC,EAAoB,KAGjCkC,UAAWlC,EAAoB,IAC/BmC,YAAanC,EAAoB,IACjCoC,WAAYpC,EAAoB,IAChCqC,SAAUrC,EAAoB,IAC9BsC,WAAYtC,EAAoB,IAChCuC,MAAOvC,EAAoB,IAC3BwC,QAASxC,EAAoB,IAC7ByC,OAAQzC,EAAoB,IAC5B0C,UAAW1C,EAAoB,IAC/B2C,SAAU3C,EAAoB,MAKlCN,EAAQkD,QAAU5C,EAAoB,IACtCN,EAAQmD,SACNC,KAAM9C,EAAoB,IAC1B+C,OAAQ/C,EAAoB,IAC5BgD,OAAQhD,EAAoB,IAC5BiD,KAAMjD,EAAoB,IAC1BkD,MAAOlD,EAAoB,IAC3BmD,UAAWnD,EAAoB,KAIjCN,EAAQ0D,MAAQ,WACd,KAAM,IAAIC,OAAM,+EAIlB3D,EAAQ4D,OAAStD,EAAoB,IACrCN,EAAQ6D,OAASvD,EAAoB,KAKjC,SAASL,OAAQD,QAASM,qBAM9B,GAAIsD,QAAStD,oBAAoB,GAOjCN,SAAQ8D,SAAW,SAASC,GAC1B,MAAQA,aAAkBC,SAA2B,gBAAVD,IAQ7C/D,QAAQiE,SAAW,SAASF,GAC1B,MAAQA,aAAkBG,SAA2B,gBAAVH,IAQ7C/D,QAAQmE,OAAS,SAASJ,GACxB,GAAIA,YAAkBK,MACpB,OAAO,CAEJ,IAAIpE,QAAQiE,SAASF,GAAS,CAEjC,GAAIM,GAAQC,aAAaC,KAAKR,EAC9B,IAAIM,EACF,OAAO,CAEJ,KAAKG,MAAMJ,KAAKK,MAAMV,IACzB,OAAO,EAIX,OAAO,GAQT/D,QAAQ0E,YAAc,SAASX,GAC7B,MAA4B,mBAAb,SACVY,OAAoB,eACpBA,OAAOC,cAAuB,WAC9Bb,YAAkBY,QAAOC,cAAcC,WAQ9C7E,QAAQ8E,WAAa,WACnB,GAAIC,GAAK,WACP,MAAOC,MAAKC,MACQ,MAAhBD,KAAKE,UACPC,SAAS,IAGb,OACIJ,KAAOA,IAAO,IACVA,IAAO,IACPA,IAAO,IACPA,IAAO,IACPA,IAAOA,IAAOA,KAWxB/E,QAAQoF,OAAS,SAAUC,GACzB,IAAK,GAAIC,GAAI,EAAGC,EAAMC,UAAUC,OAAYF,EAAJD,EAASA,IAAK,CACpD,GAAII,GAAQF,UAAUF,EACtB,KAAK,GAAIK,KAAQD,GACXA,EAAME,eAAeD,KACvBN,EAAEM,GAAQD,EAAMC,IAKtB,MAAON,IAWTrF,QAAQ6F,gBAAkB,SAAUC,EAAOT,GACzC,IAAKU,MAAMC,QAAQF,GACjB,KAAM,IAAInC,OAAM,uDAGlB,KAAK,GAAI2B,GAAI,EAAGA,EAAIE,UAAUC,OAAQH,IAGpC,IAAK,GAFDI,GAAQF,UAAUF,GAEbxE,EAAI,EAAGA,EAAIgF,EAAML,OAAQ3E,IAAK,CACrC,GAAI6E,GAAOG,EAAMhF,EACb4E,GAAME,eAAeD,KACvBN,EAAEM,GAAQD,EAAMC,IAItB,MAAON,IAWTrF,QAAQiG,oBAAsB,SAAUH,EAAOT,EAAGa,GAEhD,GAAIH,MAAMC,QAAQE,GAChB,KAAM,IAAIC,WAAU,yCAEtB,KAAK,GAAIb,GAAI,EAAGA,EAAIE,UAAUC,OAAQH,IAEpC,IAAK,GADDI,GAAQF,UAAUF,GACbxE,EAAI,EAAGA,EAAIgF,EAAML,OAAQ3E,IAAK,CACrC,GAAI6E,GAAOG,EAAMhF,EACjB,IAAI4E,EAAME,eAAeD,GACvB,GAAIO,EAAEP,IAASO,EAAEP,GAAMS,cAAgBC,OACrBC,SAAZjB,EAAEM,KACJN,EAAEM,OAEAN,EAAEM,GAAMS,cAAgBC,OAC1BrG,QAAQuG,WAAWlB,EAAEM,GAAOO,EAAEP,IAG9BN,EAAEM,GAAQO,EAAEP,OAET,CAAA,GAAII,MAAMC,QAAQE,EAAEP,IACzB,KAAM,IAAIQ,WAAU,yCAEpBd,GAAEM,GAAQO,EAAEP,IAMpB,MAAON,IASTrF,QAAQuG,WAAa,SAASlB,EAAGa,GAE/B,GAAIH,MAAMC,QAAQE,GAChB,KAAM,IAAIC,WAAU,yCAGtB,KAAK,GAAIR,KAAQO,GACf,GAAIA,EAAEN,eAAeD,GACnB,GAAIO,EAAEP,IAASO,EAAEP,GAAMS,cAAgBC,OACrBC,SAAZjB,EAAEM,KACJN,EAAEM,OAEAN,EAAEM,GAAMS,cAAgBC,OAC1BrG,QAAQuG,WAAWlB,EAAEM,GAAOO,EAAEP,IAG9BN,EAAEM,GAAQO,EAAEP,OAET,CAAA,GAAII,MAAMC,QAAQE,EAAEP,IACzB,KAAM,IAAIQ,WAAU,yCAEpBd,GAAEM,GAAQO,EAAEP,GAIlB,MAAON,IAUTrF,QAAQwG,WAAa,SAAUnB,EAAGa,GAChC,GAAIb,EAAEI,QAAUS,EAAET,OAAQ,OAAO,CAEjC,KAAK,GAAIH,GAAI,EAAGC,EAAMF,EAAEI,OAAYF,EAAJD,EAASA,IACvC,GAAID,EAAEC,IAAMY,EAAEZ,GAAI,OAAO,CAG3B,QAAO,GAYTtF,QAAQyG,QAAU,SAAS1C,EAAQ2C,GACjC,GAAIrC,EAEJ,IAAeiC,SAAXvC,EACF,MAAOuC,OAET,IAAe,OAAXvC,EACF,MAAO,KAGT,KAAK2C,EACH,MAAO3C,EAET,IAAsB,gBAAT2C,MAAwBA,YAAgBxC,SACnD,KAAM,IAAIP,OAAM,wBAIlB,QAAQ+C,GACN,IAAK,UACL,IAAK,UACH,MAAOC,SAAQ5C,EAEjB,KAAK,SACL,IAAK,SACH,MAAOC,QAAOD,EAAO6C,UAEvB,KAAK,SACL,IAAK,SACH,MAAO1C,QAAOH,EAEhB,KAAK,OACH,GAAI/D,QAAQ8D,SAASC,GACnB,MAAO,IAAIK,MAAKL,EAElB,IAAIA,YAAkBK,MACpB,MAAO,IAAIA,MAAKL,EAAO6C,UAEpB,IAAIhD,OAAOiD,SAAS9C,GACvB,MAAO,IAAIK,MAAKL,EAAO6C,UAEzB,IAAI5G,QAAQiE,SAASF,GAEnB,MADAM,GAAQC,aAAaC,KAAKR,GACtBM,EAEK,GAAID,MAAKJ,OAAOK,EAAM,KAGtBT,OAAOG,GAAQ+C,QAIxB,MAAM,IAAInD,OACN,iCAAmC3D,QAAQ+G,QAAQhD,GAC/C,gBAGZ,KAAK,SACH,GAAI/D,QAAQ8D,SAASC,GACnB,MAAOH,QAAOG,EAEhB,IAAIA,YAAkBK,MACpB,MAAOR,QAAOG,EAAO6C,UAElB,IAAIhD,OAAOiD,SAAS9C,GACvB,MAAOH,QAAOG,EAEhB,IAAI/D,QAAQiE,SAASF,GAEnB,MADAM,GAAQC,aAAaC,KAAKR,GAGjBH,OAFLS,EAEYL,OAAOK,EAAM,IAGbN,EAIhB,MAAM,IAAIJ,OACN,iCAAmC3D,QAAQ+G,QAAQhD,GAC/C,gBAGZ,KAAK,UACH,GAAI/D,QAAQ8D,SAASC,GACnB,MAAO,IAAIK,MAAKL,EAEb,IAAIA,YAAkBK,MACzB,MAAOL,GAAOiD,aAEX,IAAIpD,OAAOiD,SAAS9C,GACvB,MAAOA,GAAO+C,SAASE,aAEpB,IAAIhH,QAAQiE,SAASF,GAExB,MADAM,GAAQC,aAAaC,KAAKR,GACtBM,EAEK,GAAID,MAAKJ,OAAOK,EAAM,KAAK2C,cAG3B,GAAI5C,MAAKL,GAAQiD,aAI1B,MAAM,IAAIrD,OACN,iCAAmC3D,QAAQ+G,QAAQhD,GAC/C,mBAGZ,KAAK,UACH,GAAI/D,QAAQ8D,SAASC,GACnB,MAAO,SAAWA,EAAS,IAExB,IAAIA,YAAkBK,MACzB,MAAO,SAAWL,EAAO6C,UAAY,IAElC,IAAI5G,QAAQiE,SAASF,GAAS,CACjCM,EAAQC,aAAaC,KAAKR,EAC1B,IAAIkD,EAQJ,OALEA,GAFE5C,EAEM,GAAID,MAAKJ,OAAOK,EAAM,KAAKuC,UAG3B,GAAIxC,MAAKL,GAAQ6C,UAEpB,SAAWK,EAAQ,KAG1B,KAAM,IAAItD,OACN,iCAAmC3D,QAAQ+G,QAAQhD,GAC/C,mBAGZ,SACE,KAAM,IAAIJ,OAAM,iBAAmB+C,EAAO,MAOhD,IAAIpC,cAAe,qBAOnBtE,SAAQ+G,QAAU,SAAShD,GACzB,GAAI2C,SAAc3C,EAElB,OAAY,UAAR2C,EACY,MAAV3C,EACK,OAELA,YAAkB4C,SACb,UAEL5C,YAAkBC,QACb,SAELD,YAAkBG,QACb,SAELH,YAAkBgC,OACb,QAELhC,YAAkBK,MACb,OAEF,SAEQ,UAARsC,EACA,SAEQ,WAARA,EACA,UAEQ,UAARA,EACA,SAGFA,GAST1G,QAAQkH,gBAAkB,SAASC,GACjC,MAAOA,GAAKC,wBAAwBC,KAAOC,OAAOC,aASpDvH,QAAQwH,eAAiB,SAASL,GAChC,MAAOA,GAAKC,wBAAwBK,IAAMH,OAAOI,aAQnD1H,QAAQ2H,aAAe,SAASR,EAAMS,GACpC,GAAIC,GAAUV,EAAKS,UAAUE,MAAM,IACD,KAA9BD,EAAQE,QAAQH,KAClBC,EAAQG,KAAKJ,GACbT,EAAKS,UAAYC,EAAQI,KAAK,OASlCjI,QAAQkI,gBAAkB,SAASf,EAAMS,GACvC,GAAIC,GAAUV,EAAKS,UAAUE,MAAM,KAC/BK,EAAQN,EAAQE,QAAQH,EACf,KAATO,IACFN,EAAQO,OAAOD,EAAO,GACtBhB,EAAKS,UAAYC,EAAQI,KAAK,OAalCjI,QAAQqI,QAAU,SAAStE,EAAQuE,GACjC,GAAIhD,GACAC,CACJ,IAAIxB,YAAkBgC,OAEpB,IAAKT,EAAI,EAAGC,EAAMxB,EAAO0B,OAAYF,EAAJD,EAASA,IACxCgD,EAASvE,EAAOuB,GAAIA,EAAGvB,OAKzB,KAAKuB,IAAKvB,GACJA,EAAO6B,eAAeN,IACxBgD,EAASvE,EAAOuB,GAAIA,EAAGvB,IAY/B/D,QAAQuI,QAAU,SAASxE,GACzB,GAAIyE,KAEJ,KAAK,GAAI7C,KAAQ5B,GACXA,EAAO6B,eAAeD,IAAO6C,EAAMR,KAAKjE,EAAO4B,GAGrD,OAAO6C,IAUTxI,QAAQyI,eAAiB,SAAS1E,EAAQ2E,EAAKzB,GAC7C,MAAIlD,GAAO2E,KAASzB,GAClBlD,EAAO2E,GAAOzB,GACP,IAGA,GAYXjH,QAAQ2I,iBAAmB,SAASC,EAASC,EAAQC,EAAUC,GACzDH,EAAQD,kBACSrC,SAAfyC,IACFA,GAAa,GAEA,eAAXF,GAA2BG,UAAUC,UAAUlB,QAAQ,YAAc,IACvEc,EAAS,kBAGXD,EAAQD,iBAAiBE,EAAQC,EAAUC,IAE3CH,EAAQM,YAAY,KAAOL,EAAQC,IAWvC9I,QAAQmJ,oBAAsB,SAASP,EAASC,EAAQC,EAAUC,GAC5DH,EAAQO,qBAES7C,SAAfyC,IACFA,GAAa,GAEA,eAAXF,GAA2BG,UAAUC,UAAUlB,QAAQ,YAAc,IACvEc,EAAS,kBAGXD,EAAQO,oBAAoBN,EAAQC,EAAUC,IAG9CH,EAAQQ,YAAY,KAAOP,EAAQC,IAOvC9I,QAAQqJ,eAAiB,SAAUC,GAC5BA,IACHA,EAAQhC,OAAOgC,OAEbA,EAAMD,eACRC,EAAMD,iBAGNC,EAAMC,aAAc,GASxBvJ,QAAQwJ,UAAY,SAASF,GAEtBA,IACHA,EAAQhC,OAAOgC,MAGjB,IAAIG,EAcJ,OAZIH,GAAMG,OACRA,EAASH,EAAMG,OAERH,EAAMI,aACbD,EAASH,EAAMI,YAGMpD,QAAnBmD,EAAOE,UAA4C,GAAnBF,EAAOE,WAEzCF,EAASA,EAAOG,YAGXH,GAGTzJ,QAAQ6J,UAQR7J,QAAQ6J,OAAOC,UAAY,SAAU7C,EAAO8C,GAK1C,MAJoB,kBAAT9C,KACTA,EAAQA,KAGG,MAATA,EACe,GAATA,EAGH8C,GAAgB,MASzB/J,QAAQ6J,OAAOG,SAAW,SAAU/C,EAAO8C,GAKzC,MAJoB,kBAAT9C,KACTA,EAAQA,KAGG,MAATA,EACKjD,OAAOiD,IAAU8C,GAAgB,KAGnCA,GAAgB,MASzB/J,QAAQ6J,OAAOI,SAAW,SAAUhD,EAAO8C,GAKzC,MAJoB,kBAAT9C,KACTA,EAAQA,KAGG,MAATA,EACK/C,OAAO+C,GAGT8C,GAAgB,MASzB/J,QAAQ6J,OAAOK,OAAS,SAAUjD,EAAO8C,GAKvC,MAJoB,kBAAT9C,KACTA,EAAQA,KAGNjH,QAAQiE,SAASgD,GACZA,EAEAjH,QAAQ8D,SAASmD,GACjBA,EAAQ,KAGR8C,GAAgB,MAU3B/J,QAAQ6J,OAAOM,UAAY,SAAUlD,EAAO8C,GAK1C,MAJoB,kBAAT9C,KACTA,EAAQA,KAGHA,GAAS8C,GAAgB,MAKlC/J,QAAQoK,QAAU,SAASC,KACzB,GAAIC,MAiBJ,OAdEA,OADS,KAAPD,IACM,GACM,KAAPA,IACC,GACM,KAAPA,IACC,GACM,KAAPA,IACC,GACM,KAAPA,IACC,GACM,KAAPA,IACC,GAEAE,KAAKF,MAKjBrK,QAAQwK,QAAU,SAASC,GACzB,GAAIH,EAiBJ,OAdEA,GADQ,IAAPG,EACO,IACM,IAAPA,EACC,IACM,IAAPA,EACC,IACM,IAAPA,EACC,IACM,IAAPA,EACC,IACM,IAAPA,EACC,IAEA,GAAKA,GAWjBzK,QAAQ0K,WAAa,SAASC,GAC5B,GAAI9J,EACJ,IAAIb,QAAQiE,SAAS0G,GACnB,GAAI3K,QAAQ4K,WAAWD,GAAQ,CAC7B,GAAIE,GAAM7K,QAAQ8K,SAASH,GACvBI,GAAmBC,EAAEH,EAAIG,EAAEC,EAAU,IAARJ,EAAII,EAASC,EAAElG,KAAKmG,IAAI,EAAU,KAARN,EAAIK,IAC3DE,GAAmBJ,EAAEH,EAAIG,EAAEC,EAAEjG,KAAKmG,IAAI,EAAU,KAARN,EAAIK,GAAUA,EAAQ,GAANL,EAAIK,GAC5DG,EAAkBrL,QAAQsL,SAASF,EAAeJ,EAAGI,EAAeJ,EAAGI,EAAeF,GACtFK,EAAkBvL,QAAQsL,SAASP,EAAgBC,EAAED,EAAgBE,EAAEF,EAAgBG,EAE3FrK,IACE2K,WAAYb,EACZc,OAAOJ,EACPK,WACEF,WAAWD,EACXE,OAAOJ,GAETM,OACEH,WAAWD,EACXE,OAAOJ,QAKXxK,IACE2K,WAAWb,EACXc,OAAOd,EACPe,WACEF,WAAWb,EACXc,OAAOd,GAETgB,OACEH,WAAWb,EACXc,OAAOd,QAMb9J,MACAA,EAAE2K,WAAab,EAAMa,YAAc,QACnC3K,EAAE4K,OAASd,EAAMc,QAAU5K,EAAE2K,WAEzBxL,QAAQiE,SAAS0G,EAAMe,WACzB7K,EAAE6K,WACAD,OAAQd,EAAMe,UACdF,WAAYb,EAAMe,YAIpB7K,EAAE6K,aACF7K,EAAE6K,UAAUF,WAAab,EAAMe,WAAaf,EAAMe,UAAUF,YAAc3K,EAAE2K,WAC5E3K,EAAE6K,UAAUD,OAASd,EAAMe,WAAaf,EAAMe,UAAUD,QAAU5K,EAAE4K,QAGlEzL,QAAQiE,SAAS0G,EAAMgB,OACzB9K,EAAE8K,OACAF,OAAQd,EAAMgB,MACdH,WAAYb,EAAMgB,QAIpB9K,EAAE8K,SACF9K,EAAE8K,MAAMH,WAAab,EAAMgB,OAAShB,EAAMgB,MAAMH,YAAc3K,EAAE2K,WAChE3K,EAAE8K,MAAMF,OAASd,EAAMgB,OAAShB,EAAMgB,MAAMF,QAAU5K,EAAE4K,OAI5D,OAAO5K,IASTb,QAAQ4L,SAAW,SAASC,GAC1BA,EAAMA,EAAIC,QAAQ,IAAI,IAAIC,aAE1B,IAAI1G,GAAIrF,QAAQoK,QAAQyB,EAAIG,UAAU,EAAG,IACrC9F,EAAIlG,QAAQoK,QAAQyB,EAAIG,UAAU,EAAG,IACrCnL,EAAIb,QAAQoK,QAAQyB,EAAIG,UAAU,EAAG,IACrCC,EAAIjM,QAAQoK,QAAQyB,EAAIG,UAAU,EAAG,IACrCE,EAAIlM,QAAQoK,QAAQyB,EAAIG,UAAU,EAAG,IACrCG,EAAInM,QAAQoK,QAAQyB,EAAIG,UAAU,EAAG,IAErCI,EAAS,GAAJ/G,EAAUa,EACfmG,EAAS,GAAJxL,EAAUoL,EACf/F,EAAS,GAAJgG,EAAUC,CAEnB,QAAQC,EAAEA,EAAEC,EAAEA,EAAEnG,EAAEA,IAGpBlG,QAAQsM,SAAW,SAASC,EAAIC,EAAMC,GACpC,GAAIpH,GAAIrF,QAAQwK,QAAQxF,KAAKC,MAAMsH,EAAM,KACrCrG,EAAIlG,QAAQwK,QAAQ+B,EAAM,IAC1B1L,EAAIb,QAAQwK,QAAQxF,KAAKC,MAAMuH,EAAQ,KACvCP,EAAIjM,QAAQwK,QAAQgC,EAAQ,IAC5BN,EAAIlM,QAAQwK,QAAQxF,KAAKC,MAAMwH,EAAO,KACtCN,EAAInM,QAAQwK,QAAQiC,EAAO,IAE3BZ,EAAMxG,EAAIa,EAAIrF,EAAIoL,EAAIC,EAAIC,CAC9B,OAAO,IAAMN,GAaf7L,QAAQ0M,SAAW,SAASH,EAAIC,EAAMC,GACpCF,GAAQ,IAAKC,GAAY,IAAKC,GAAU,GACxC,IAAIE,GAAS3H,KAAKmG,IAAIoB,EAAIvH,KAAKmG,IAAIqB,EAAMC,IACrCG,EAAS5H,KAAK6H,IAAIN,EAAIvH,KAAK6H,IAAIL,EAAMC,GAGzC,IAAIE,GAAUC,EACZ,OAAQ5B,EAAE,EAAEC,EAAE,EAAEC,EAAEyB,EAIpB,IAAIV,GAAKM,GAAKI,EAAUH,EAAMC,EAASA,GAAME,EAAUJ,EAAIC,EAAQC,EAAKF,EACpEvB,EAAKuB,GAAKI,EAAU,EAAMF,GAAME,EAAU,EAAI,EAC9CG,EAAM,IAAI9B,EAAIiB,GAAGW,EAASD,IAAS,IACnCI,GAAcH,EAASD,GAAQC,EAC/B3F,EAAQ2F,CACZ,QAAQ5B,EAAE8B,EAAI7B,EAAE8B,EAAW7B,EAAEjE,IAY/BjH,QAAQgN,SAAW,SAAShC,EAAGC,EAAGC,GAChC,GAAIkB,GAAGC,EAAGnG,EAENZ,EAAIN,KAAKC,MAAU,EAAJ+F,GACfmB,EAAQ,EAAJnB,EAAQ1F,EACZxE,EAAIoK,GAAK,EAAID,GACbgC,EAAI/B,GAAK,EAAIiB,EAAIlB,GACjBiC,EAAIhC,GAAK,GAAK,EAAIiB,GAAKlB,EAE3B,QAAQ3F,EAAI,GACV,IAAK,GAAG8G,EAAIlB,EAAGmB,EAAIa,EAAGhH,EAAIpF,CAAG,MAC7B,KAAK,GAAGsL,EAAIa,EAAGZ,EAAInB,EAAGhF,EAAIpF,CAAG,MAC7B,KAAK,GAAGsL,EAAItL,EAAGuL,EAAInB,EAAGhF,EAAIgH,CAAG,MAC7B,KAAK,GAAGd,EAAItL,EAAGuL,EAAIY,EAAG/G,EAAIgF,CAAG,MAC7B,KAAK,GAAGkB,EAAIc,EAAGb,EAAIvL,EAAGoF,EAAIgF,CAAG,MAC7B,KAAK,GAAGkB,EAAIlB,EAAGmB,EAAIvL,EAAGoF,EAAI+G,EAG5B,OAAQb,EAAEpH,KAAKC,MAAU,IAAJmH,GAAUC,EAAErH,KAAKC,MAAU,IAAJoH,GAAUnG,EAAElB,KAAKC,MAAU,IAAJiB,KAGrElG,QAAQsL,SAAW,SAASN,EAAGC,EAAGC,GAChC,GAAIiC,GAAMnN,QAAQgN,SAAShC,EAAGC,EAAGC,EACjC,OAAOlL,SAAQsM,SAASa,EAAIf,EAAGe,EAAId,EAAGc,EAAIjH,IAG5ClG,QAAQ8K,SAAW,SAASe,GAC1B,GAAIsB,GAAMnN,QAAQ4L,SAASC,EAC3B,OAAO7L,SAAQ0M,SAASS,EAAIf,EAAGe,EAAId,EAAGc,EAAIjH,IAG5ClG,QAAQ4K,WAAa,SAASiB,GAC5B,GAAIuB,GAAO,qCAAqCC,KAAKxB,EACrD,OAAOuB,IAWTpN,QAAQsN,sBAAwB,SAASC,EAAQC,GAC/C,GAA8B,gBAAnBA,GAA6B,CAEtC,IAAK,GADDC,GAAWpH,OAAOqH,OAAOF,GACpBlI,EAAI,EAAGA,EAAIiI,EAAO9H,OAAQH,IAC7BkI,EAAgB5H,eAAe2H,EAAOjI,KACC,gBAA9BkI,GAAgBD,EAAOjI,MAChCmI,EAASF,EAAOjI,IAAMtF,QAAQ2N,aAAaH,EAAgBD,EAAOjI,KAIxE,OAAOmI,GAGP,MAAO,OAWXzN,QAAQ2N,aAAe,SAASH,GAC9B,GAA8B,gBAAnBA,GAA6B,CACtC,GAAIC,GAAWpH,OAAOqH,OAAOF,EAC7B,KAAK,GAAIlI,KAAKkI,GACRA,EAAgB5H,eAAeN,IACA,gBAAtBkI,GAAgBlI,KACzBmI,EAASnI,GAAKtF,QAAQ2N,aAAaH,EAAgBlI,IAIzD,OAAOmI,GAGP,MAAO,OAcXzN,QAAQ4N,aAAe,SAAUC,EAAaC,EAASjE,GACrD,GAAwBvD,SAApBwH,EAAQjE,GACV,GAA8B,iBAAnBiE,GAAQjE,GACjBgE,EAAYhE,GAAQkE,QAAUD,EAAQjE,OAEnC,CACHgE,EAAYhE,GAAQkE,SAAU,CAC9B,KAAKpI,OAAQmI,GAAQjE,GACfiE,EAAQjE,GAAQjE,eAAeD,QACjCkI,EAAYhE,GAAQlE,MAAQmI,EAAQjE,GAAQlE,SAiBtD3F,QAAQ4N,aAAe,SAAUC,EAAaC,EAASjE,GACrD,GAAwBvD,SAApBwH,EAAQjE,GACV,GAA8B,iBAAnBiE,GAAQjE,GACjBgE,EAAYhE,GAAQkE,QAAUD,EAAQjE,OAEnC,CACHgE,EAAYhE,GAAQkE,SAAU,CAC9B,KAAKpI,OAAQmI,GAAQjE,GACfiE,EAAQjE,GAAQjE,eAAeD,QACjCkI,EAAYhE,GAAQlE,MAAQmI,EAAQjE,GAAQlE,SA2BtD3F,QAAQgO,aAAe,SAASC,EAAcC,EAAOC,EAAOC,GAC1D,GAUInH,GAVAuB,EAAQyF,EAERI,EAAgB,IAChBC,EAAY,EACZC,GAAQ,EACRC,EAAM,EACNC,EAAOjG,EAAM/C,OACbiJ,EAASF,EACTG,EAAUF,EACVG,EAAQ5J,KAAKC,MAAM,IAAKwJ,EAAKD,GAGjC,IAAY,GAARC,EACFG,EAAQ,OAEL,IAAY,GAARH,EAELG,EADEpG,EAAMoG,GAAOC,UAAUX,GAChB,EAGD,OAGP,CAGH,IAFAO,GAAQ,EAEQ,GAATF,GAA8BF,EAAZC,GACvBrH,EAAmBX,SAAX8H,EAAuB5F,EAAMoG,GAAOT,GAAS3F,EAAMoG,GAAOT,GAAOC,GAErE5F,EAAMoG,GAAOC,UAAUX,GACzBK,GAAQ,GAGJtH,EAAQiH,EAAMY,MAChBJ,EAAS1J,KAAKC,MAAM,IAAKwJ,EAAKD,IAG9BG,EAAU3J,KAAKC,MAAM,IAAKwJ,EAAKD,IAG7BA,GAAOE,GAAUD,GAAQE,GAC3BC,EAAQ,GACRL,GAAQ,IAGRE,EAAOE,EAASH,EAAME,EACtBE,EAAQ5J,KAAKC,MAAM,IAAKwJ,EAAKD,MAGjCF,GAEEA,IAAaD,GACfU,QAAQC,IAAI,+CAGhB,MAAOJ,IAoBT5O,QAAQiP,oBAAsB,SAAShB,EAAcxE,EAAQ0E,EAAOe,GAClE,GASIC,GACAC,EAAWnI,EAAOoI,EAVlBhB,EAAgB,IAChBC,EAAY,EACZ9F,EAAQyF,EACRM,GAAQ,EACRC,EAAM,EACNC,EAAOjG,EAAM/C,OACbiJ,EAASF,EACTG,EAAUF,EACVG,EAAQ5J,KAAKC,MAAM,IAAKwJ,EAAKD,GAIjC,IAAY,GAARC,EAAYG,EAAQ,OACnB,IAAY,GAARH,EACPxH,EAAQuB,EAAMoG,GAAOT,GAEnBS,EADE3H,GAASwC,EACF,EAGD,OAGP,CAEH,IADAgF,GAAQ,EACQ,GAATF,GAA8BF,EAAZC,GACvBc,EAAY5G,EAAMxD,KAAK6H,IAAI,EAAE+B,EAAQ,IAAIT,GACzClH,EAAQuB,EAAMoG,GAAOT,GACrBkB,EAAY7G,EAAMxD,KAAKmG,IAAI3C,EAAM/C,OAAO,EAAEmJ,EAAQ,IAAIT,GAElDlH,GAASwC,GAAsBA,EAAZ2F,GAAsBnI,EAAQwC,GAAkBA,EAARxC,GAAkBoI,EAAY5F,GAC3F8E,GAAQ,EACJtH,GAASwC,IACW,UAAlByF,EACczF,EAAZ2F,GAAsBnI,EAAQwC,IAChCmF,EAAQ5J,KAAK6H,IAAI,EAAE+B,EAAQ,IAIjBnF,EAARxC,GAAkBoI,EAAY5F,IAChCmF,EAAQ5J,KAAKmG,IAAI3C,EAAM/C,OAAO,EAAEmJ,EAAQ,OAMlCnF,EAARxC,EACFyH,EAAS1J,KAAKC,MAAM,IAAKwJ,EAAKD,IAG9BG,EAAU3J,KAAKC,MAAM,IAAKwJ,EAAKD,IAEjCW,EAAWnK,KAAKC,MAAM,IAAKwJ,EAAKD,IAE5BA,GAAOE,GAAUD,GAAQE,GAC3BC,EAAQ,GACRL,GAAQ,IAGRE,EAAOE,EAASH,EAAME,EACtBE,EAAQ5J,KAAKC,MAAM,IAAKwJ,EAAKD,MAGjCF,GAEEA,IAAaD,GACfU,QAAQC,IAAI,+CAGhB,MAAOJ,KAKL,SAAS3O,EAAQD,GASrBA,EAAQsP,gBAAkB,SAASC,GAEjC,IAAK,GAAIC,KAAeD,GAClBA,EAAc3J,eAAe4J,KAC/BD,EAAcC,GAAaC,UAAYF,EAAcC,GAAaE,KAClEH,EAAcC,GAAaE,UAYjC1P,EAAQ2P,gBAAkB,SAASJ,GAEjC,IAAK,GAAIC,KAAeD,GACtB,GAAIA,EAAc3J,eAAe4J,IAC3BD,EAAcC,GAAaC,UAAW,CACxC,IAAK,GAAInK,GAAI,EAAGA,EAAIiK,EAAcC,GAAaC,UAAUhK,OAAQH,IAC/DiK,EAAcC,GAAaC,UAAUnK,GAAGsE,WAAWgG,YAAYL,EAAcC,GAAaC,UAAUnK,GAEtGiK,GAAcC,GAAaC,eAgBnCzP,EAAQ6P,cAAgB,SAAUL,EAAaD,EAAeO,GAC5D,GAAIlH,EAqBJ,OAnBI2G,GAAc3J,eAAe4J,GAE3BD,EAAcC,GAAaC,UAAUhK,OAAS,GAChDmD,EAAU2G,EAAcC,GAAaC,UAAU,GAC/CF,EAAcC,GAAaC,UAAUM,UAIrCnH,EAAUoH,SAASC,gBAAgB,6BAA8BT,GACjEM,EAAaI,YAAYtH,KAK3BA,EAAUoH,SAASC,gBAAgB,6BAA8BT,GACjED,EAAcC,IAAgBE,QAAUD,cACxCK,EAAaI,YAAYtH,IAE3B2G,EAAcC,GAAaE,KAAK1H,KAAKY,GAC9BA,GAcT5I,EAAQmQ,cAAgB,SAAUX,EAAaD,EAAea,GAC5D,GAAIxH,EAqBJ,OAnBI2G,GAAc3J,eAAe4J,GAE3BD,EAAcC,GAAaC,UAAUhK,OAAS,GAChDmD,EAAU2G,EAAcC,GAAaC,UAAU,GAC/CF,EAAcC,GAAaC,UAAUM,UAIrCnH,EAAUoH,SAASK,cAAcb,GACjCY,EAAaF,YAAYtH,KAK3BA,EAAUoH,SAASK,cAAcb,GACjCD,EAAcC,IAAgBE,QAAUD,cACxCW,EAAaF,YAAYtH,IAE3B2G,EAAcC,GAAaE,KAAK1H,KAAKY,GAC9BA,GAkBT5I,EAAQsQ,UAAY,SAASC,EAAGC,EAAGC,EAAOlB,EAAeO,GACvD,GAAIY,EAgBJ,OAfsC,UAAlCD,EAAM3C,QAAQ6C,WAAWC,OAC3BF,EAAQ1Q,EAAQ6P,cAAc,SAASN,EAAcO,GACrDY,EAAMG,eAAe,KAAM,KAAMN,GACjCG,EAAMG,eAAe,KAAM,KAAML,GACjCE,EAAMG,eAAe,KAAM,IAAK,GAAMJ,EAAM3C,QAAQ6C,WAAWG,MAC/DJ,EAAMG,eAAe,KAAM,QAASJ,EAAM7I,UAAY,YAGtD8I,EAAQ1Q,EAAQ6P,cAAc,OAAON,EAAcO,GACnDY,EAAMG,eAAe,KAAM,IAAKN,EAAI,GAAIE,EAAM3C,QAAQ6C,WAAWG,MACjEJ,EAAMG,eAAe,KAAM,IAAKL,EAAI,GAAIC,EAAM3C,QAAQ6C,WAAWG,MACjEJ,EAAMG,eAAe,KAAM,QAASJ,EAAM3C,QAAQ6C,WAAWG,MAC7DJ,EAAMG,eAAe,KAAM,SAAUJ,EAAM3C,QAAQ6C,WAAWG,MAC9DJ,EAAMG,eAAe,KAAM,QAASJ,EAAM7I,UAAY,WAEjD8I,GAUT1Q,EAAQ+Q,QAAU,SAAUR,EAAGC,EAAGQ,EAAOC,EAAQrJ,EAAW2H,EAAeO,GACzE,GAAIoB,GAAOlR,EAAQ6P,cAAc,OAAON,EAAeO,EACvDoB,GAAKL,eAAe,KAAM,IAAKN,EAAI,GAAMS,GACzCE,EAAKL,eAAe,KAAM,IAAKL,GAC/BU,EAAKL,eAAe,KAAM,QAASG,GACnCE,EAAKL,eAAe,KAAM,SAAUI,GACpCC,EAAKL,eAAe,KAAM,QAASjJ,KAKjC,SAAS3H,EAAQD,EAASM,GA0C9B,QAASW,GAASkQ,EAAMrD,GActB,IAZIqD,GAASpL,MAAMC,QAAQmL,IAAUpQ,EAAK2D,YAAYyM,KACpDrD,EAAUqD,EACVA,EAAO,MAGT/Q,KAAKgR,SAAWtD,MAChB1N,KAAKiR,SACLjR,KAAKkR,SAAWlR,KAAKgR,SAASG,SAAW,KACzCnR,KAAKoR,SAIDpR,KAAKgR,SAAS1K,KAChB,IAAK,GAAIyH,KAAS/N,MAAKgR,SAAS1K,KAC9B,GAAItG,KAAKgR,SAAS1K,KAAKd,eAAeuI,GAAQ,CAC5C,GAAIlH,GAAQ7G,KAAKgR,SAAS1K,KAAKyH,EAE7B/N,MAAKoR,MAAMrD,GADA,QAATlH,GAA4B,WAATA,GAA+B,WAATA,EACvB,OAGAA,EAO5B,GAAI7G,KAAKgR,SAAS3K,QAChB,KAAM,IAAI9C,OAAM,sDAGlBvD,MAAKqR,gBAGDN,GACF/Q,KAAKsR,IAAIP,GA7Eb,GAAIpQ,GAAOT,EAAoB,EA0F/BW,GAAQ0Q,UAAUC,GAAK,SAAStI,EAAOhB,GACrC,GAAIuJ,GAAczR,KAAKqR,aAAanI,EAC/BuI,KACHA,KACAzR,KAAKqR,aAAanI,GAASuI,GAG7BA,EAAY7J,MACVM,SAAUA,KAKdrH,EAAQ0Q,UAAUG,UAAY7Q,EAAQ0Q,UAAUC,GAOhD3Q,EAAQ0Q,UAAUI,IAAM,SAASzI,EAAOhB,GACtC,GAAIuJ,GAAczR,KAAKqR,aAAanI,EAChCuI,KACFzR,KAAKqR,aAAanI,GAASuI,EAAYG,OAAO,SAAUlJ,GACtD,MAAQA,GAASR,UAAYA,MAMnCrH,EAAQ0Q,UAAUM,YAAchR,EAAQ0Q,UAAUI,IASlD9Q,EAAQ0Q,UAAUO,SAAW,SAAU5I,EAAO6I,EAAQC,GACpD,GAAa,KAAT9I,EACF,KAAM,IAAI3F,OAAM,yBAGlB,IAAIkO,KACAvI,KAASlJ,MAAKqR,eAChBI,EAAcA,EAAYQ,OAAOjS,KAAKqR,aAAanI,KAEjD,KAAOlJ,MAAKqR,eACdI,EAAcA,EAAYQ,OAAOjS,KAAKqR,aAAa,MAGrD,KAAK,GAAInM,GAAI,EAAGA,EAAIuM,EAAYpM,OAAQH,IAAK,CAC3C,GAAIgN,GAAaT,EAAYvM,EACzBgN,GAAWhK,UACbgK,EAAWhK,SAASgB,EAAO6I,EAAQC,GAAY,QAYrDnR,EAAQ0Q,UAAUD,IAAM,SAAUP,EAAMiB,GACtC,GACI3R,GADA8R,KAEAC,EAAKpS,IAET,IAAI2F,MAAMC,QAAQmL,GAEhB,IAAK,GAAI7L,GAAI,EAAGC,EAAM4L,EAAK1L,OAAYF,EAAJD,EAASA,IAC1C7E,EAAK+R,EAAGC,SAAStB,EAAK7L,IACtBiN,EAASvK,KAAKvH,OAGb,IAAIM,EAAK2D,YAAYyM,GAGxB,IAAK,GADDuB,GAAUtS,KAAKuS,gBAAgBxB,GAC1ByB,EAAM,EAAGC,EAAO1B,EAAK2B,kBAAyBD,EAAND,EAAYA,IAAO,CAElE,IAAK,GADDG,MACKC,EAAM,EAAGC,EAAOP,EAAQjN,OAAcwN,EAAND,EAAYA,IAAO,CAC1D,GAAI7E,GAAQuE,EAAQM,EACpBD,GAAK5E,GAASgD,EAAK+B,SAASN,EAAKI,GAGnCvS,EAAK+R,EAAGC,SAASM,GACjBR,EAASvK,KAAKvH,OAGb,CAAA,KAAI0Q,YAAgB9K,SAMvB,KAAM,IAAI1C,OAAM,mBAJhBlD,GAAK+R,EAAGC,SAAStB,GACjBoB,EAASvK,KAAKvH,GAUhB,MAJI8R,GAAS9M,QACXrF,KAAK8R,SAAS,OAAQ/P,MAAOoQ,GAAWH,GAGnCG,GASTtR,EAAQ0Q,UAAUwB,OAAS,SAAUhC,EAAMiB,GACzC,GAAIG,MACAa,KACAZ,EAAKpS,KACLmR,EAAUiB,EAAGlB,SAEb+B,EAAc,SAAUN,GAC1B,GAAItS,GAAKsS,EAAKxB,EACViB,GAAGnB,MAAM5Q,IAEXA,EAAK+R,EAAGc,YAAYP,GACpBK,EAAWpL,KAAKvH,KAIhBA,EAAK+R,EAAGC,SAASM,GACjBR,EAASvK,KAAKvH,IAIlB,IAAIsF,MAAMC,QAAQmL,GAEhB,IAAK,GAAI7L,GAAI,EAAGC,EAAM4L,EAAK1L,OAAYF,EAAJD,EAASA,IAC1C+N,EAAYlC,EAAK7L,QAGhB,IAAIvE,EAAK2D,YAAYyM,GAGxB,IAAK,GADDuB,GAAUtS,KAAKuS,gBAAgBxB,GAC1ByB,EAAM,EAAGC,EAAO1B,EAAK2B,kBAAyBD,EAAND,EAAYA,IAAO,CAElE,IAAK,GADDG,MACKC,EAAM,EAAGC,EAAOP,EAAQjN,OAAcwN,EAAND,EAAYA,IAAO,CAC1D,GAAI7E,GAAQuE,EAAQM,EACpBD,GAAK5E,GAASgD,EAAK+B,SAASN,EAAKI,GAGnCK,EAAYN,OAGX,CAAA,KAAI5B,YAAgB9K,SAKvB,KAAM,IAAI1C,OAAM,mBAHhB0P,GAAYlC,GAad,MAPIoB,GAAS9M,QACXrF,KAAK8R,SAAS,OAAQ/P,MAAOoQ,GAAWH,GAEtCgB,EAAW3N,QACbrF,KAAK8R,SAAS,UAAW/P,MAAOiR,GAAahB,GAGxCG,EAASF,OAAOe,IAsCzBnS,EAAQ0Q,UAAU4B,IAAM,WACtB,GAGI9S,GAAI+S,EAAK1F,EAASqD,EAHlBqB,EAAKpS,KAILqT,EAAY1S,EAAKgG,QAAQvB,UAAU,GACtB,WAAbiO,GAAsC,UAAbA,GAE3BhT,EAAK+E,UAAU,GACfsI,EAAUtI,UAAU,GACpB2L,EAAO3L,UAAU,IAEG,SAAbiO,GAEPD,EAAMhO,UAAU,GAChBsI,EAAUtI,UAAU,GACpB2L,EAAO3L,UAAU,KAIjBsI,EAAUtI,UAAU,GACpB2L,EAAO3L,UAAU,GAInB,IAAIkO,EACJ,IAAI5F,GAAWA,EAAQ4F,WAAY,CACjC,GAAIC,IAAiB,YAAa,QAAS,SAG3C,IAFAD,EAA0D,IAA7CC,EAAc5L,QAAQ+F,EAAQ4F,YAAoB,QAAU5F,EAAQ4F,WAE7EvC,GAASuC,GAAc3S,EAAKgG,QAAQoK,GACtC,KAAM,IAAIxN,OAAM,6BAA+B5C,EAAKgG,QAAQoK,GAAQ,sDACVrD,EAAQpH,KAAO,IAE3E,IAAkB,aAAdgN,IAA8B3S,EAAK2D,YAAYyM,GACjD,KAAM,IAAIxN,OAAM,6EAKlB+P,GADOvC,GAC6B,aAAtBpQ,EAAKgG,QAAQoK,GAAwB,YAGtC,OAIf,IAEgB4B,GAAMa,EAAQtO,EAAGC,EAF7BmB,EAAOoH,GAAWA,EAAQpH,MAAQtG,KAAKgR,SAAS1K,KAChDsL,EAASlE,GAAWA,EAAQkE,OAC5B7P,IAGJ,IAAUmE,QAAN7F,EAEFsS,EAAOP,EAAGqB,SAASpT,EAAIiG,GACnBsL,IAAWA,EAAOe,KACpBA,EAAO,UAGN,IAAWzM,QAAPkN,EAEP,IAAKlO,EAAI,EAAGC,EAAMiO,EAAI/N,OAAYF,EAAJD,EAASA,IACrCyN,EAAOP,EAAGqB,SAASL,EAAIlO,GAAIoB,KACtBsL,GAAUA,EAAOe,KACpB5Q,EAAM6F,KAAK+K,OAMf,KAAKa,IAAUxT,MAAKiR,MACdjR,KAAKiR,MAAMzL,eAAegO,KAC5Bb,EAAOP,EAAGqB,SAASD,EAAQlN,KACtBsL,GAAUA,EAAOe,KACpB5Q,EAAM6F,KAAK+K,GAYnB,IALIjF,GAAWA,EAAQgG,OAAexN,QAAN7F,GAC9BL,KAAK2T,MAAM5R,EAAO2L,EAAQgG,OAIxBhG,GAAWA,EAAQP,OAAQ,CAC7B,GAAIA,GAASO,EAAQP,MACrB,IAAUjH,QAAN7F,EACFsS,EAAO3S,KAAK4T,cAAcjB,EAAMxF,OAGhC,KAAKjI,EAAI,EAAGC,EAAMpD,EAAMsD,OAAYF,EAAJD,EAASA,IACvCnD,EAAMmD,GAAKlF,KAAK4T,cAAc7R,EAAMmD,GAAIiI,GAM9C,GAAkB,aAAdmG,EAA2B,CAC7B,GAAIhB,GAAUtS,KAAKuS,gBAAgBxB,EACnC,IAAU7K,QAAN7F,EAEF+R,EAAGyB,WAAW9C,EAAMuB,EAASK,OAI7B,KAAKzN,EAAI,EAAGA,EAAInD,EAAMsD,OAAQH,IAC5BkN,EAAGyB,WAAW9C,EAAMuB,EAASvQ,EAAMmD,GAGvC,OAAO6L,GAEJ,GAAkB,UAAduC,EAAwB,CAC/B,GAAIQ,KACJ,KAAK5O,EAAI,EAAGA,EAAInD,EAAMsD,OAAQH,IAC5B4O,EAAO/R,EAAMmD,GAAG7E,IAAM0B,EAAMmD,EAE9B,OAAO4O,GAIP,GAAU5N,QAAN7F,EAEF,MAAOsS,EAIP,IAAI5B,EAAM,CAER,IAAK7L,EAAI,EAAGC,EAAMpD,EAAMsD,OAAYF,EAAJD,EAASA,IACvC6L,EAAKnJ,KAAK7F,EAAMmD,GAElB,OAAO6L,GAIP,MAAOhP,IAcflB,EAAQ0Q,UAAUwC,OAAS,SAAUrG,GACnC,GAIIxI,GACAC,EACA9E,EACAsS,EACA5Q,EARAgP,EAAO/Q,KAAKiR,MACZW,EAASlE,GAAWA,EAAQkE,OAC5B8B,EAAQhG,GAAWA,EAAQgG,MAC3BpN,EAAOoH,GAAWA,EAAQpH,MAAQtG,KAAKgR,SAAS1K,KAMhD8M,IAEJ,IAAIxB,EAEF,GAAI8B,EAAO,CAET3R,IACA,KAAK1B,IAAM0Q,GACLA,EAAKvL,eAAenF,KACtBsS,EAAO3S,KAAKyT,SAASpT,EAAIiG,GACrBsL,EAAOe,IACT5Q,EAAM6F,KAAK+K,GAOjB,KAFA3S,KAAK2T,MAAM5R,EAAO2R,GAEbxO,EAAI,EAAGC,EAAMpD,EAAMsD,OAAYF,EAAJD,EAASA,IACvCkO,EAAIlO,GAAKnD,EAAMmD,GAAGlF,KAAKkR,cAKzB,KAAK7Q,IAAM0Q,GACLA,EAAKvL,eAAenF,KACtBsS,EAAO3S,KAAKyT,SAASpT,EAAIiG,GACrBsL,EAAOe,IACTS,EAAIxL,KAAK+K,EAAK3S,KAAKkR,gBAQ3B,IAAIwC,EAAO,CAET3R,IACA,KAAK1B,IAAM0Q,GACLA,EAAKvL,eAAenF,IACtB0B,EAAM6F,KAAKmJ,EAAK1Q,GAMpB,KAFAL,KAAK2T,MAAM5R,EAAO2R,GAEbxO,EAAI,EAAGC,EAAMpD,EAAMsD,OAAYF,EAAJD,EAASA,IACvCkO,EAAIlO,GAAKnD,EAAMmD,GAAGlF,KAAKkR,cAKzB,KAAK7Q,IAAM0Q,GACLA,EAAKvL,eAAenF,KACtBsS,EAAO5B,EAAK1Q,GACZ+S,EAAIxL,KAAK+K,EAAK3S,KAAKkR,WAM3B,OAAOkC,IAOTvS,EAAQ0Q,UAAUyC,WAAa,WAC7B,MAAOhU,OAaTa,EAAQ0Q,UAAUtJ,QAAU,SAAUC,EAAUwF,GAC9C,GAGIiF,GACAtS,EAJAuR,EAASlE,GAAWA,EAAQkE,OAC5BtL,EAAOoH,GAAWA,EAAQpH,MAAQtG,KAAKgR,SAAS1K,KAChDyK,EAAO/Q,KAAKiR,KAIhB,IAAIvD,GAAWA,EAAQgG,MAIrB,IAAK,GAFD3R,GAAQ/B,KAAKmT,IAAIzF,GAEZxI,EAAI,EAAGC,EAAMpD,EAAMsD,OAAYF,EAAJD,EAASA,IAC3CyN,EAAO5Q,EAAMmD,GACb7E,EAAKsS,EAAK3S,KAAKkR,UACfhJ,EAASyK,EAAMtS,OAKjB,KAAKA,IAAM0Q,GACLA,EAAKvL,eAAenF,KACtBsS,EAAO3S,KAAKyT,SAASpT,EAAIiG,KACpBsL,GAAUA,EAAOe,KACpBzK,EAASyK,EAAMtS,KAkBzBQ,EAAQ0Q,UAAU0C,IAAM,SAAU/L,EAAUwF,GAC1C,GAIIiF,GAJAf,EAASlE,GAAWA,EAAQkE,OAC5BtL,EAAOoH,GAAWA,EAAQpH,MAAQtG,KAAKgR,SAAS1K,KAChD4N,KACAnD,EAAO/Q,KAAKiR,KAIhB,KAAK,GAAI5Q,KAAM0Q,GACTA,EAAKvL,eAAenF,KACtBsS,EAAO3S,KAAKyT,SAASpT,EAAIiG,KACpBsL,GAAUA,EAAOe,KACpBuB,EAAYtM,KAAKM,EAASyK,EAAMtS,IAUtC,OAJIqN,IAAWA,EAAQgG,OACrB1T,KAAK2T,MAAMO,EAAaxG,EAAQgG,OAG3BQ,GAUTrT,EAAQ0Q,UAAUqC,cAAgB,SAAUjB,EAAMxF,GAChD,GAAIgH,KAEJ,KAAK,GAAIpG,KAAS4E,GACZA,EAAKnN,eAAeuI,IAAoC,IAAzBZ,EAAOxF,QAAQoG,KAChDoG,EAAapG,GAAS4E,EAAK5E,GAI/B,OAAOoG,IASTtT,EAAQ0Q,UAAUoC,MAAQ,SAAU5R,EAAO2R,GACzC,GAAI/S,EAAKkD,SAAS6P,GAAQ,CAExB,GAAIU,GAAOV,CACX3R,GAAMsS,KAAK,SAAUpP,EAAGa,GACtB,GAAIwO,GAAKrP,EAAEmP,GACPG,EAAKzO,EAAEsO,EACX,OAAQE,GAAKC,EAAM,EAAWA,EAALD,EAAW,GAAK,QAGxC,CAAA,GAAqB,kBAAVZ,GAOd,KAAM,IAAI3N,WAAU,uCALpBhE,GAAMsS,KAAKX,KAgBf7S,EAAQ0Q,UAAUiD,OAAS,SAAUnU,EAAI2R,GACvC,GACI9M,GAAGC,EAAKsP,EADRC,IAGJ,IAAI/O,MAAMC,QAAQvF,GAChB,IAAK6E,EAAI,EAAGC,EAAM9E,EAAGgF,OAAYF,EAAJD,EAASA,IACpCuP,EAAYzU,KAAK2U,QAAQtU,EAAG6E,IACX,MAAbuP,GACFC,EAAW9M,KAAK6M,OAKpBA,GAAYzU,KAAK2U,QAAQtU,GACR,MAAboU,GACFC,EAAW9M,KAAK6M,EAQpB,OAJIC,GAAWrP,QACbrF,KAAK8R,SAAS,UAAW/P,MAAO2S,GAAa1C,GAGxC0C,GAST7T,EAAQ0Q,UAAUoD,QAAU,SAAUtU,GACpC,GAAIM,EAAK+C,SAASrD,IAAOM,EAAKkD,SAASxD,IACrC,GAAIL,KAAKiR,MAAM5Q,GAEb,aADOL,MAAKiR,MAAM5Q,GACXA,MAGN,IAAIA,YAAc4F,QAAQ,CAC7B,GAAIuN,GAASnT,EAAGL,KAAKkR,SACrB,IAAIsC,GAAUxT,KAAKiR,MAAMuC,GAEvB,aADOxT,MAAKiR,MAAMuC,GACXA,EAGX,MAAO,OAQT3S,EAAQ0Q,UAAUqD,MAAQ,SAAU5C,GAClC,GAAIoB,GAAMnN,OAAO4O,KAAK7U,KAAKiR,MAM3B,OAJAjR,MAAKiR,SAELjR,KAAK8R,SAAS,UAAW/P,MAAOqR,GAAMpB,GAE/BoB,GAQTvS,EAAQ0Q,UAAU9E,IAAM,SAAUsB,GAChC,GAAIgD,GAAO/Q,KAAKiR,MACZxE,EAAM,KACNqI,EAAW,IAEf,KAAK,GAAIzU,KAAM0Q,GACb,GAAIA,EAAKvL,eAAenF,GAAK,CAC3B,GAAIsS,GAAO5B,EAAK1Q,GACZ0U,EAAYpC,EAAK5E,EACJ,OAAbgH,KAAuBtI,GAAOsI,EAAYD,KAC5CrI,EAAMkG,EACNmC,EAAWC,GAKjB,MAAOtI,IAQT5L,EAAQ0Q,UAAUxG,IAAM,SAAUgD,GAChC,GAAIgD,GAAO/Q,KAAKiR,MACZlG,EAAM,KACNiK,EAAW,IAEf,KAAK,GAAI3U,KAAM0Q,GACb,GAAIA,EAAKvL,eAAenF,GAAK,CAC3B,GAAIsS,GAAO5B,EAAK1Q,GACZ0U,EAAYpC,EAAK5E,EACJ,OAAbgH,KAAuBhK,GAAmBiK,EAAZD,KAChChK,EAAM4H,EACNqC,EAAWD,GAKjB,MAAOhK,IAUTlK,EAAQ0Q,UAAU0D,SAAW,SAAUlH,GACrC,GAII7I,GAJA6L,EAAO/Q,KAAKiR,MACZiE,KACAC,EAAYnV,KAAKgR,SAAS1K,MAAQtG,KAAKgR,SAAS1K,KAAKyH,IAAU,KAC/DqH,EAAQ,CAGZ,KAAK,GAAI7P,KAAQwL,GACf,GAAIA,EAAKvL,eAAeD,GAAO,CAC7B,GAAIoN,GAAO5B,EAAKxL,GACZsB,EAAQ8L,EAAK5E,GACbsH,GAAS,CACb,KAAKnQ,EAAI,EAAOkQ,EAAJlQ,EAAWA,IACrB,GAAIgQ,EAAOhQ,IAAM2B,EAAO,CACtBwO,GAAS,CACT,OAGCA,GAAqBnP,SAAVW,IACdqO,EAAOE,GAASvO,EAChBuO,KAKN,GAAID,EACF,IAAKjQ,EAAI,EAAGA,EAAIgQ,EAAO7P,OAAQH,IAC7BgQ,EAAOhQ,GAAKvE,EAAK0F,QAAQ6O,EAAOhQ,GAAIiQ,EAIxC,OAAOD,IASTrU,EAAQ0Q,UAAUc,SAAW,SAAUM,GACrC,GAAItS,GAAKsS,EAAK3S,KAAKkR,SAEnB,IAAUhL,QAAN7F,GAEF,GAAIL,KAAKiR,MAAM5Q,GAEb,KAAM,IAAIkD,OAAM,iCAAmClD,EAAK,uBAK1DA,GAAKM,EAAK+D,aACViO,EAAK3S,KAAKkR,UAAY7Q,CAGxB,IAAIwL,KACJ,KAAK,GAAIkC,KAAS4E,GAChB,GAAIA,EAAKnN,eAAeuI,GAAQ,CAC9B,GAAIoH,GAAYnV,KAAKoR,MAAMrD,EAC3BlC,GAAEkC,GAASpN,EAAK0F,QAAQsM,EAAK5E,GAAQoH,GAKzC,MAFAnV,MAAKiR,MAAM5Q,GAAMwL,EAEVxL,GAUTQ,EAAQ0Q,UAAUkC,SAAW,SAAUpT,EAAIiV,GACzC,GAAIvH,GAAOlH,EAGP0O,EAAMvV,KAAKiR,MAAM5Q,EACrB,KAAKkV,EACH,MAAO,KAIT,IAAIC,KACJ,IAAIF,EACF,IAAKvH,IAASwH,GACRA,EAAI/P,eAAeuI,KACrBlH,EAAQ0O,EAAIxH,GACZyH,EAAUzH,GAASpN,EAAK0F,QAAQQ,EAAOyO,EAAMvH,SAMjD,KAAKA,IAASwH,GACRA,EAAI/P,eAAeuI,KACrBlH,EAAQ0O,EAAIxH,GACZyH,EAAUzH,GAASlH,EAIzB,OAAO2O,IAWT3U,EAAQ0Q,UAAU2B,YAAc,SAAUP,GACxC,GAAItS,GAAKsS,EAAK3S,KAAKkR,SACnB,IAAUhL,QAAN7F,EACF,KAAM,IAAIkD,OAAM,6CAA+CkS,KAAKC,UAAU/C,GAAQ,IAExF,IAAI9G,GAAI7L,KAAKiR,MAAM5Q,EACnB,KAAKwL,EAEH,KAAM,IAAItI,OAAM,uCAAyClD,EAAK,SAIhE,KAAK,GAAI0N,KAAS4E,GAChB,GAAIA,EAAKnN,eAAeuI,GAAQ,CAC9B,GAAIoH,GAAYnV,KAAKoR,MAAMrD,EAC3BlC,GAAEkC,GAASpN,EAAK0F,QAAQsM,EAAK5E,GAAQoH,GAIzC,MAAO9U,IASTQ,EAAQ0Q,UAAUgB,gBAAkB,SAAUoD,GAE5C,IAAK,GADDrD,MACKM,EAAM,EAAGC,EAAO8C,EAAUC,qBAA4B/C,EAAND,EAAYA,IACnEN,EAAQM,GAAO+C,EAAUE,YAAYjD,IAAQ+C,EAAUG,eAAelD,EAExE,OAAON,IAUTzR,EAAQ0Q,UAAUsC,WAAa,SAAU8B,EAAWrD,EAASK,GAG3D,IAAK,GAFDH,GAAMmD,EAAUI,SAEXnD,EAAM,EAAGC,EAAOP,EAAQjN,OAAcwN,EAAND,EAAYA,IAAO,CAC1D,GAAI7E,GAAQuE,EAAQM,EACpB+C,GAAUK,SAASxD,EAAKI,EAAKD,EAAK5E,MAItClO,EAAOD,QAAUiB,GAKb,SAAShB,EAAQD,EAASM,GAe9B,QAASY,GAAUiQ,EAAMrD,GACvB1N,KAAKiR,MAAQ,KACbjR,KAAKiW,QACLjW,KAAKgR,SAAWtD,MAChB1N,KAAKkR,SAAW,KAChBlR,KAAKqR,eAEL,IAAIe,GAAKpS,IACTA,MAAK0I,SAAW,WACd0J,EAAG8D,SAASC,MAAM/D,EAAIhN,YAGxBpF,KAAKoW,QAAQrF,GAzBf,GAAIpQ,GAAOT,EAAoB,GAC3BW,EAAUX,EAAoB,EAkClCY,GAASyQ,UAAU6E,QAAU,SAAUrF,GACrC,GAAIqC,GAAKlO,EAAGC,CAEZ,IAAInF,KAAKiR,MAAO,CAEVjR,KAAKiR,MAAMY,aACb7R,KAAKiR,MAAMY,YAAY,IAAK7R,KAAK0I,UAInC0K,IACA,KAAK,GAAI/S,KAAML,MAAKiW,KACdjW,KAAKiW,KAAKzQ,eAAenF,IAC3B+S,EAAIxL,KAAKvH,EAGbL,MAAKiW,QACLjW,KAAK8R,SAAS,UAAW/P,MAAOqR,IAKlC,GAFApT,KAAKiR,MAAQF,EAET/Q,KAAKiR,MAAO,CAQd,IANAjR,KAAKkR,SAAWlR,KAAKgR,SAASG,SACzBnR,KAAKiR,OAASjR,KAAKiR,MAAMvD,SAAW1N,KAAKiR,MAAMvD,QAAQyD,SACxD,KAGJiC,EAAMpT,KAAKiR,MAAM8C,QAAQnC,OAAQ5R,KAAKgR,UAAYhR,KAAKgR,SAASY,SAC3D1M,EAAI,EAAGC,EAAMiO,EAAI/N,OAAYF,EAAJD,EAASA,IACrC7E,EAAK+S,EAAIlO,GACTlF,KAAKiW,KAAK5V,IAAM,CAElBL,MAAK8R,SAAS,OAAQ/P,MAAOqR,IAGzBpT,KAAKiR,MAAMO,IACbxR,KAAKiR,MAAMO,GAAG,IAAKxR,KAAK0I,YAuC9B5H,EAASyQ,UAAU4B,IAAM,WACvB,GAGIC,GAAK1F,EAASqD,EAHdqB,EAAKpS,KAILqT,EAAY1S,EAAKgG,QAAQvB,UAAU,GACtB,WAAbiO,GAAsC,UAAbA,GAAsC,SAAbA,GAEpDD,EAAMhO,UAAU,GAChBsI,EAAUtI,UAAU,GACpB2L,EAAO3L,UAAU,KAIjBsI,EAAUtI,UAAU,GACpB2L,EAAO3L,UAAU,GAInB,IAAIiR,GAAc1V,EAAKqE,UAAWhF,KAAKgR,SAAUtD,EAG7C1N,MAAKgR,SAASY,QAAUlE,GAAWA,EAAQkE,SAC7CyE,EAAYzE,OAAS,SAAUe,GAC7B,MAAOP,GAAGpB,SAASY,OAAOe,IAASjF,EAAQkE,OAAOe,IAKtD,IAAI2D,KAOJ,OANWpQ,SAAPkN,GACFkD,EAAa1O,KAAKwL,GAEpBkD,EAAa1O,KAAKyO,GAClBC,EAAa1O,KAAKmJ,GAEX/Q,KAAKiR,OAASjR,KAAKiR,MAAMkC,IAAIgD,MAAMnW,KAAKiR,MAAOqF,IAWxDxV,EAASyQ,UAAUwC,OAAS,SAAUrG,GACpC,GAAI0F,EAEJ,IAAIpT,KAAKiR,MAAO,CACd,GACIW,GADA2E,EAAgBvW,KAAKgR,SAASY,MAK9BA,GAFAlE,GAAWA,EAAQkE,OACjB2E,EACO,SAAU5D,GACjB,MAAO4D,GAAc5D,IAASjF,EAAQkE,OAAOe,IAItCjF,EAAQkE,OAIV2E,EAGXnD,EAAMpT,KAAKiR,MAAM8C,QACfnC,OAAQA,EACR8B,MAAOhG,GAAWA,EAAQgG,YAI5BN,KAGF,OAAOA,IAQTtS,EAASyQ,UAAUyC,WAAa,WAE9B,IADA,GAAIwC,GAAUxW,KACPwW,YAAmB1V,IACxB0V,EAAUA,EAAQvF,KAEpB,OAAOuF,IAAW,MAYpB1V,EAASyQ,UAAU2E,SAAW,SAAUhN,EAAO6I,EAAQC,GACrD,GAAI9M,GAAGC,EAAK9E,EAAIsS,EACZS,EAAMrB,GAAUA,EAAOhQ,MACvBgP,EAAO/Q,KAAKiR,MACZwF,KACAC,KACAC,IAEJ,IAAIvD,GAAOrC,EAAM,CACf,OAAQ7H,GACN,IAAK,MAEH,IAAKhE,EAAI,EAAGC,EAAMiO,EAAI/N,OAAYF,EAAJD,EAASA,IACrC7E,EAAK+S,EAAIlO,GACTyN,EAAO3S,KAAKmT,IAAI9S,GACZsS,IACF3S,KAAKiW,KAAK5V,IAAM,EAChBoW,EAAM7O,KAAKvH,GAIf,MAEF,KAAK,SAGH,IAAK6E,EAAI,EAAGC,EAAMiO,EAAI/N,OAAYF,EAAJD,EAASA,IACrC7E,EAAK+S,EAAIlO,GACTyN,EAAO3S,KAAKmT,IAAI9S,GAEZsS,EACE3S,KAAKiW,KAAK5V,GACZqW,EAAQ9O,KAAKvH,IAGbL,KAAKiW,KAAK5V,IAAM,EAChBoW,EAAM7O,KAAKvH,IAITL,KAAKiW,KAAK5V,WACLL,MAAKiW,KAAK5V,GACjBsW,EAAQ/O,KAAKvH,GAQnB,MAEF,KAAK,SAEH,IAAK6E,EAAI,EAAGC,EAAMiO,EAAI/N,OAAYF,EAAJD,EAASA,IACrC7E,EAAK+S,EAAIlO,GACLlF,KAAKiW,KAAK5V,WACLL,MAAKiW,KAAK5V,GACjBsW,EAAQ/O,KAAKvH,IAOjBoW,EAAMpR,QACRrF,KAAK8R,SAAS,OAAQ/P,MAAO0U,GAAQzE,GAEnC0E,EAAQrR,QACVrF,KAAK8R,SAAS,UAAW/P,MAAO2U,GAAU1E,GAExC2E,EAAQtR,QACVrF,KAAK8R,SAAS,UAAW/P,MAAO4U,GAAU3E,KAMhDlR,EAASyQ,UAAUC,GAAK3Q,EAAQ0Q,UAAUC,GAC1C1Q,EAASyQ,UAAUI,IAAM9Q,EAAQ0Q,UAAUI,IAC3C7Q,EAASyQ,UAAUO,SAAWjR,EAAQ0Q,UAAUO,SAGhDhR,EAASyQ,UAAUG,UAAY5Q,EAASyQ,UAAUC,GAClD1Q,EAASyQ,UAAUM,YAAc/Q,EAASyQ,UAAUI,IAEpD9R,EAAOD,QAAUkB,GAIb,SAASjB,EAAQD,EAASM,GAwB9B,QAASa,GAAQ6V,EAAW7F,EAAMrD,GAChC,KAAM1N,eAAgBe,IACpB,KAAM,IAAI8V,aAAY,mDAIxB7W,MAAK8W,iBAAmBF,EACxB5W,KAAK4Q,MAAQ,QACb5Q,KAAK6Q,OAAS,QACd7Q,KAAK+W,OAAS,GACd/W,KAAKgX,eAAiB,MACtBhX,KAAKiX,eAAiB,MAEtBjX,KAAKkX,OAAS,IACdlX,KAAKmX,OAAS,IACdnX,KAAKoX,OAAS,IACdpX,KAAKqX,YAAc,OACnBrX,KAAKsX,YAAc,QAEnBtX,KAAKwQ,MAAQzP,EAAQwW,MAAMC,IAC3BxX,KAAKyX,iBAAkB,EACvBzX,KAAK0X,UAAW,EAChB1X,KAAK2X,iBAAkB,EACvB3X,KAAK4X,YAAa,EAClB5X,KAAK6X,gBAAiB,EACtB7X,KAAK8X,aAAc,EACnB9X,KAAK+X,cAAgB,GAErB/X,KAAKgY,kBAAoB,IACzBhY,KAAKiY,kBAAmB,EAExBjY,KAAKkY,OAAS,GAAIjX,GAClBjB,KAAKmY,IAAM,GAAI/W,GAAQ,EAAG,EAAG,IAE7BpB,KAAK2V,UAAY,KACjB3V,KAAKoY,WAAa,KAGlBpY,KAAKqY,KAAOnS,OACZlG,KAAKsY,KAAOpS,OACZlG,KAAKuY,KAAOrS,OACZlG,KAAKwY,SAAWtS,OAChBlG,KAAKyY,UAAYvS,OAEjBlG,KAAK0Y,KAAO,EACZ1Y,KAAK2Y,MAAQzS,OACblG,KAAK4Y,KAAO,EACZ5Y,KAAK6Y,KAAO,EACZ7Y,KAAK8Y,MAAQ5S,OACblG,KAAK+Y,KAAO,EACZ/Y,KAAKgZ,KAAO,EACZhZ,KAAKiZ,MAAQ/S,OACblG,KAAKkZ,KAAO,EACZlZ,KAAKmZ,SAAW,EAChBnZ,KAAKoZ,SAAW,EAChBpZ,KAAKqZ,UAAY,EACjBrZ,KAAKsZ,UAAY,EAIjBtZ,KAAKuZ,UAAY,UACjBvZ,KAAKwZ,UAAY,UACjBxZ,KAAKyZ,SAAW,UAChBzZ,KAAK0Z,eAAiB,UAGtB1Z,KAAKsN,SAGLtN,KAAK2Z,WAAWjM,GAGZqD,GACF/Q,KAAKoW,QAAQrF,GA/FjB,GAAI6I,GAAU1Z,EAAoB,IAC9BW,EAAUX,EAAoB,GAC9BY,EAAWZ,EAAoB,GAC/BS,EAAOT,EAAoB,GAC3BkB,EAAUlB,EAAoB,GAC9BiB,EAAUjB,EAAoB,GAC9Be,EAASf,EAAoB,GAC7BgB,EAAShB,EAAoB,GAC7BmB,EAASnB,EAAoB,IAC7BoB,EAAapB,EAAoB,GA2FrC0Z,GAAQ7Y,EAAQwQ,WAKhBxQ,EAAQwQ,UAAUsI,UAAY,WAC5B7Z,KAAK8Z,MAAQ,GAAI1Y,GAAQ,GAAKpB,KAAK4Y,KAAO5Y,KAAK0Y,MAC7C,GAAK1Y,KAAK+Y,KAAO/Y,KAAK6Y,MACtB,GAAK7Y,KAAKkZ,KAAOlZ,KAAKgZ,OAGpBhZ,KAAK2X,kBACH3X,KAAK8Z,MAAM3J,EAAInQ,KAAK8Z,MAAM1J,EAE5BpQ,KAAK8Z,MAAM1J,EAAIpQ,KAAK8Z,MAAM3J,EAI1BnQ,KAAK8Z,MAAM3J,EAAInQ,KAAK8Z,MAAM1J,GAK9BpQ,KAAK8Z,MAAMC,GAAK/Z,KAAK+X,cAIrB/X,KAAK8Z,MAAMjT,MAAQ,GAAK7G,KAAKoZ,SAAWpZ,KAAKmZ,SAG7C,IAAIa,IAAWha,KAAK4Y,KAAO5Y,KAAK0Y,MAAQ,EAAI1Y,KAAK8Z,MAAM3J,EACnD8J,GAAWja,KAAK+Y,KAAO/Y,KAAK6Y,MAAQ,EAAI7Y,KAAK8Z,MAAM1J,EACnD8J,GAAWla,KAAKkZ,KAAOlZ,KAAKgZ,MAAQ,EAAIhZ,KAAK8Z,MAAMC,CACvD/Z,MAAKkY,OAAOiC,eAAeH,EAASC,EAASC,IAU/CnZ,EAAQwQ,UAAU6I,eAAiB,SAASC,GAC1C,GAAIC,GAActa,KAAKua,2BAA2BF,EAClD,OAAOra,MAAKwa,4BAA4BF,IAW1CvZ,EAAQwQ,UAAUgJ,2BAA6B,SAASF,GACtD,GAAII,GAAKJ,EAAQlK,EAAInQ,KAAK8Z,MAAM3J,EAC9BuK,EAAKL,EAAQjK,EAAIpQ,KAAK8Z,MAAM1J,EAC5BuK,EAAKN,EAAQN,EAAI/Z,KAAK8Z,MAAMC,EAE5Ba,EAAK5a,KAAKkY,OAAO2C,oBAAoB1K,EACrC2K,EAAK9a,KAAKkY,OAAO2C,oBAAoBzK,EACrC2K,EAAK/a,KAAKkY,OAAO2C,oBAAoBd,EAGrCiB,EAAQpW,KAAKqW,IAAIjb,KAAKkY,OAAOgD,oBAAoB/K,GACjDgL,EAAQvW,KAAKwW,IAAIpb,KAAKkY,OAAOgD,oBAAoB/K,GACjDkL,EAAQzW,KAAKqW,IAAIjb,KAAKkY,OAAOgD,oBAAoB9K,GACjDkL,EAAQ1W,KAAKwW,IAAIpb,KAAKkY,OAAOgD,oBAAoB9K,GACjDmL,EAAQ3W,KAAKqW,IAAIjb,KAAKkY,OAAOgD,oBAAoBnB,GACjDyB,EAAQ5W,KAAKwW,IAAIpb,KAAKkY,OAAOgD,oBAAoBnB,GAGjD0B,EAAKH,GAASC,GAASb,EAAKI,GAAMU,GAASf,EAAKG,IAAOS,GAASV,EAAKI,GACrEW,EAAKV,GAASM,GAASX,EAAKI,GAAMM,GAASE,GAASb,EAAKI,GAAMU,GAASf,EAAKG,KAAQO,GAASK,GAASd,EAAKI,GAAMS,GAASd,EAAGG,IAC9He,EAAKR,GAASG,GAASX,EAAKI,GAAMM,GAASE,GAASb,EAAKI,GAAMU,GAASf,EAAKG,KAAQI,GAASQ,GAASd,EAAKI,GAAMS,GAASd,EAAGG,GAEhI,OAAO,IAAIxZ,GAAQqa,EAAIC,EAAIC,IAU7B5a,EAAQwQ,UAAUiJ,4BAA8B,SAASF,GACvD,GAQIsB,GACAC,EATAC,EAAK9b,KAAKmY,IAAIhI,EAChB4L,EAAK/b,KAAKmY,IAAI/H,EACd4L,EAAKhc,KAAKmY,IAAI4B,EACd0B,EAAKnB,EAAYnK,EACjBuL,EAAKpB,EAAYlK,EACjBuL,EAAKrB,EAAYP,CAgBnB,OAXI/Z,MAAKyX,iBACPmE,GAAMH,EAAKK,IAAOE,EAAKL,GACvBE,GAAMH,EAAKK,IAAOC,EAAKL,KAGvBC,EAAKH,IAAOO,EAAKhc,KAAKkY,OAAO+D,gBAC7BJ,EAAKH,IAAOM,EAAKhc,KAAKkY,OAAO+D,iBAKxB,GAAI9a,GACTnB,KAAKkc,QAAUN,EAAK5b,KAAKmc,MAAMC,OAAOC,YACtCrc,KAAKsc,QAAUT,EAAK7b,KAAKmc,MAAMC,OAAOC,cAO1Ctb,EAAQwQ,UAAUgL,oBAAsB,SAASC,GAC/C,GAAIC,GAAO,QACPC,EAAS,OACTC,EAAc,CAElB,IAAgC,gBAAtB,GACRF,EAAOD,EACPE,EAAS,OACTC,EAAc,MAEX,IAAgC,gBAAtB,GACgBzW,SAAzBsW,EAAgBC,OAAuBA,EAAOD,EAAgBC,MACnCvW,SAA3BsW,EAAgBE,SAAyBA,EAASF,EAAgBE,QAClCxW,SAAhCsW,EAAgBG,cAA2BA,EAAcH,EAAgBG,iBAE1E,IAAyBzW,SAApBsW,EAIR,KAAM,qCAGRxc,MAAKmc,MAAM3L,MAAMgM,gBAAkBC,EACnCzc,KAAKmc,MAAM3L,MAAMoM,YAAcF,EAC/B1c,KAAKmc,MAAM3L,MAAMqM,YAAcF,EAAc,KAC7C3c,KAAKmc,MAAM3L,MAAMsM,YAAc,SAKjC/b,EAAQwW,OACNwF,IAAK,EACLC,SAAU,EACVC,QAAS,EACTzF,IAAM,EACN0F,QAAU,EACVC,SAAU,EACVC,QAAS,EACTC,KAAO,EACPC,KAAM,EACNC,QAAU,GASZxc,EAAQwQ,UAAUiM,gBAAkB,SAASC,GAC3C,OAAQA,GACN,IAAK,MAAW,MAAO1c,GAAQwW,MAAMC,GACrC,KAAK,WAAa,MAAOzW,GAAQwW,MAAM2F,OACvC,KAAK,YAAe,MAAOnc,GAAQwW,MAAM4F,QACzC,KAAK,WAAa,MAAOpc,GAAQwW,MAAM6F,OACvC,KAAK,OAAW,MAAOrc,GAAQwW,MAAM+F,IACrC,KAAK,OAAW,MAAOvc,GAAQwW,MAAM8F,IACrC,KAAK,UAAa,MAAOtc,GAAQwW,MAAMgG,OACvC,KAAK,MAAW,MAAOxc,GAAQwW,MAAMwF,GACrC,KAAK,YAAe,MAAOhc,GAAQwW,MAAMyF,QACzC,KAAK,WAAa,MAAOjc,GAAQwW,MAAM0F,QAGzC,MAAO,IAQTlc,EAAQwQ,UAAUmM,wBAA0B,SAAS3M,GACnD,GAAI/Q,KAAKwQ,QAAUzP,EAAQwW,MAAMC,KAC/BxX,KAAKwQ,QAAUzP,EAAQwW,MAAM2F,SAC7Bld,KAAKwQ,QAAUzP,EAAQwW,MAAM+F,MAC7Btd,KAAKwQ,QAAUzP,EAAQwW,MAAM8F,MAC7Brd,KAAKwQ,QAAUzP,EAAQwW,MAAMgG,SAC7Bvd,KAAKwQ,QAAUzP,EAAQwW,MAAMwF,IAE7B/c,KAAKqY,KAAO,EACZrY,KAAKsY,KAAO,EACZtY,KAAKuY,KAAO,EACZvY,KAAKwY,SAAWtS,OAEZ6K,EAAK6E,qBAAuB,IAC9B5V,KAAKyY,UAAY,OAGhB,CAAA,GAAIzY,KAAKwQ,QAAUzP,EAAQwW,MAAM4F,UACpCnd,KAAKwQ,QAAUzP,EAAQwW,MAAM6F,SAC7Bpd,KAAKwQ,QAAUzP,EAAQwW,MAAMyF,UAC7Bhd,KAAKwQ,QAAUzP,EAAQwW,MAAM0F,QAY7B,KAAM,kBAAoBjd,KAAKwQ,MAAQ,GAVvCxQ,MAAKqY,KAAO,EACZrY,KAAKsY,KAAO,EACZtY,KAAKuY,KAAO,EACZvY,KAAKwY,SAAW,EAEZzH,EAAK6E,qBAAuB,IAC9B5V,KAAKyY,UAAY,KAQvB1X,EAAQwQ,UAAUmB,gBAAkB,SAAS3B,GAC3C,MAAOA,GAAK1L,QAIdtE,EAAQwQ,UAAUqE,mBAAqB,SAAS7E,GAC9C,GAAI4M,GAAU,CACd,KAAK,GAAIC,KAAU7M,GAAK,GAClBA,EAAK,GAAGvL,eAAeoY,IACzBD,GAGJ,OAAOA,IAIT5c,EAAQwQ,UAAUsM,kBAAoB,SAAS9M,EAAM6M,GAEnD,IAAK,GADDE,MACK5Y,EAAI,EAAGA,EAAI6L,EAAK1L,OAAQH,IACgB,IAA3C4Y,EAAenW,QAAQoJ,EAAK7L,GAAG0Y,KACjCE,EAAelW,KAAKmJ,EAAK7L,GAAG0Y,GAGhC,OAAOE,IAIT/c,EAAQwQ,UAAUwM,eAAiB,SAAShN,EAAK6M,GAE/C,IAAK,GADDI,IAAUjT,IAAIgG,EAAK,GAAG6M,GAAQnR,IAAIsE,EAAK,GAAG6M,IACrC1Y,EAAI,EAAGA,EAAI6L,EAAK1L,OAAQH,IAC3B8Y,EAAOjT,IAAMgG,EAAK7L,GAAG0Y,KAAWI,EAAOjT,IAAMgG,EAAK7L,GAAG0Y,IACrDI,EAAOvR,IAAMsE,EAAK7L,GAAG0Y,KAAWI,EAAOvR,IAAMsE,EAAK7L,GAAG0Y,GAE3D,OAAOI,IASTjd,EAAQwQ,UAAU0M,gBAAkB,SAAUC,GAC5C,GAAI9L,GAAKpS,IAOT,IAJIA,KAAKwW,SACPxW,KAAKwW,QAAQ7E,IAAI,IAAK3R,KAAKme,WAGbjY,SAAZgY,EAAJ,CAGIvY,MAAMC,QAAQsY,KAChBA,EAAU,GAAIrd,GAAQqd,GAGxB,IAAInN,EACJ,MAAImN,YAAmBrd,IAAWqd,YAAmBpd,IAInD,KAAM,IAAIyC,OAAM,uCAGlB,IANEwN,EAAOmN,EAAQ/K,MAME,GAAfpC,EAAK1L,OAAT,CAGArF,KAAKwW,QAAU0H,EACfle,KAAK2V,UAAY5E,EAGjB/Q,KAAKme,UAAY,WACf/L,EAAGgE,QAAQhE,EAAGoE,UAEhBxW,KAAKwW,QAAQhF,GAAG,IAAKxR,KAAKme,WAS1Bne,KAAKqY,KAAO,IACZrY,KAAKsY,KAAO,IACZtY,KAAKuY,KAAO,IACZvY,KAAKwY,SAAW,QAChBxY,KAAKyY,UAAY,SAKb1H,EAAK,GAAGvL,eAAe,WACDU,SAApBlG,KAAKoe,aACPpe,KAAKoe,WAAa,GAAIld,GAAOgd,EAASle,KAAKyY,UAAWzY,MACtDA,KAAKoe,WAAWC,kBAAkB,WAAYjM,EAAGkM,WAKrD,IAAIC,GAAWve,KAAKwQ,OAASzP,EAAQwW,MAAMwF,KACzC/c,KAAKwQ,OAASzP,EAAQwW,MAAMyF,UAC5Bhd,KAAKwQ,OAASzP,EAAQwW,MAAM0F,OAG9B,IAAIsB,EAAU,CACZ,GAA8BrY,SAA1BlG,KAAKwe,iBACPxe,KAAKqZ,UAAYrZ,KAAKwe,qBAEnB,CACH,GAAIC,GAAQze,KAAK6d,kBAAkB9M,EAAK/Q,KAAKqY,KAC7CrY,MAAKqZ,UAAaoF,EAAM,GAAKA,EAAM,IAAO,EAG5C,GAA8BvY,SAA1BlG,KAAK0e,iBACP1e,KAAKsZ,UAAYtZ,KAAK0e,qBAEnB,CACH,GAAIC,GAAQ3e,KAAK6d,kBAAkB9M,EAAK/Q,KAAKsY,KAC7CtY,MAAKsZ,UAAaqF,EAAM,GAAKA,EAAM,IAAO,GAK9C,GAAIC,GAAS5e,KAAK+d,eAAehN,EAAK/Q,KAAKqY,KACvCkG,KACFK,EAAO7T,KAAO/K,KAAKqZ,UAAY,EAC/BuF,EAAOnS,KAAOzM,KAAKqZ,UAAY,GAEjCrZ,KAAK0Y,KAA6BxS,SAArBlG,KAAK6e,YAA6B7e,KAAK6e,YAAcD,EAAO7T,IACzE/K,KAAK4Y,KAA6B1S,SAArBlG,KAAK8e,YAA6B9e,KAAK8e,YAAcF,EAAOnS,IACrEzM,KAAK4Y,MAAQ5Y,KAAK0Y,OAAM1Y,KAAK4Y,KAAO5Y,KAAK0Y,KAAO,GACpD1Y,KAAK2Y,MAA+BzS,SAAtBlG,KAAK+e,aAA8B/e,KAAK+e,cAAgB/e,KAAK4Y,KAAK5Y,KAAK0Y,MAAM,CAE3F,IAAIsG,GAAShf,KAAK+d,eAAehN,EAAK/Q,KAAKsY,KACvCiG,KACFS,EAAOjU,KAAO/K,KAAKsZ,UAAY,EAC/B0F,EAAOvS,KAAOzM,KAAKsZ,UAAY,GAEjCtZ,KAAK6Y,KAA6B3S,SAArBlG,KAAKif,YAA6Bjf,KAAKif,YAAcD,EAAOjU,IACzE/K,KAAK+Y,KAA6B7S,SAArBlG,KAAKkf,YAA6Blf,KAAKkf,YAAcF,EAAOvS,IACrEzM,KAAK+Y,MAAQ/Y,KAAK6Y,OAAM7Y,KAAK+Y,KAAO/Y,KAAK6Y,KAAO,GACpD7Y,KAAK8Y,MAA+B5S,SAAtBlG,KAAKmf,aAA8Bnf,KAAKmf,cAAgBnf,KAAK+Y,KAAK/Y,KAAK6Y,MAAM,CAE3F,IAAIuG,GAASpf,KAAK+d,eAAehN,EAAK/Q,KAAKuY,KAM3C,IALAvY,KAAKgZ,KAA6B9S,SAArBlG,KAAKqf,YAA6Brf,KAAKqf,YAAcD,EAAOrU,IACzE/K,KAAKkZ,KAA6BhT,SAArBlG,KAAKsf,YAA6Btf,KAAKsf,YAAcF,EAAO3S,IACrEzM,KAAKkZ,MAAQlZ,KAAKgZ,OAAMhZ,KAAKkZ,KAAOlZ,KAAKgZ,KAAO,GACpDhZ,KAAKiZ,MAA+B/S,SAAtBlG,KAAKuf,aAA8Bvf,KAAKuf,cAAgBvf,KAAKkZ,KAAKlZ,KAAKgZ,MAAM,EAErE9S,SAAlBlG,KAAKwY,SAAwB,CAC/B,GAAIgH,GAAaxf,KAAK+d,eAAehN,EAAK/Q,KAAKwY,SAC/CxY,MAAKmZ,SAAqCjT,SAAzBlG,KAAKyf,gBAAiCzf,KAAKyf,gBAAkBD,EAAWzU,IACzF/K,KAAKoZ,SAAqClT,SAAzBlG,KAAK0f,gBAAiC1f,KAAK0f,gBAAkBF,EAAW/S,IACrFzM,KAAKoZ,UAAYpZ,KAAKmZ,WAAUnZ,KAAKoZ,SAAWpZ,KAAKmZ,SAAW,GAItEnZ,KAAK6Z,eAUP9Y,EAAQwQ,UAAUoO,eAAiB,SAAU5O,GA0BzC,QAAS6O,GAAW3a,EAAGa,GACrB,MAAOb,GAAIa,EAzBf,GAAIqK,GAAGC,EAAGlL,EAAG6U,EAAG8F,EAAKvP,EAEjB8H,IAEJ,IAAIpY,KAAKwQ,QAAUzP,EAAQwW,MAAM8F,MAC/Brd,KAAKwQ,QAAUzP,EAAQwW,MAAMgG,QAAS,CAKtC,GAAIkB,MACAE,IACJ,KAAKzZ,EAAI,EAAGA,EAAIlF,KAAK0S,gBAAgB3B,GAAO7L,IAC1CiL,EAAIY,EAAK7L,GAAGlF,KAAKqY,OAAS,EAC1BjI,EAAIW,EAAK7L,GAAGlF,KAAKsY,OAAS,EAED,KAArBmG,EAAM9W,QAAQwI,IAChBsO,EAAM7W,KAAKuI,GAEY,KAArBwO,EAAMhX,QAAQyI,IAChBuO,EAAM/W,KAAKwI,EAOfqO,GAAMpK,KAAKuL,GACXjB,EAAMtK,KAAKuL,EAGX,IAAIE,KACJ,KAAK5a,EAAI,EAAGA,EAAI6L,EAAK1L,OAAQH,IAAK,CAChCiL,EAAIY,EAAK7L,GAAGlF,KAAKqY,OAAS,EAC1BjI,EAAIW,EAAK7L,GAAGlF,KAAKsY,OAAS,EAC1ByB,EAAIhJ,EAAK7L,GAAGlF,KAAKuY,OAAS,CAE1B,IAAIwH,GAAStB,EAAM9W,QAAQwI,GACvB6P,EAASrB,EAAMhX,QAAQyI,EAEAlK,UAAvB4Z,EAAWC,KACbD,EAAWC,MAGb,IAAI1F,GAAU,GAAIjZ,EAClBiZ,GAAQlK,EAAIA,EACZkK,EAAQjK,EAAIA,EACZiK,EAAQN,EAAIA,EAEZ8F,KACAA,EAAIvP,MAAQ+J,EACZwF,EAAII,MAAQ/Z,OACZ2Z,EAAIK,OAASha,OACb2Z,EAAIM,OAAS,GAAI/e,GAAQ+O,EAAGC,EAAGpQ,KAAKgZ,MAEpC8G,EAAWC,GAAQC,GAAUH,EAE7BzH,EAAWxQ,KAAKiY,GAIlB,IAAK1P,EAAI,EAAGA,EAAI2P,EAAWza,OAAQ8K,IACjC,IAAKC,EAAI,EAAGA,EAAI0P,EAAW3P,GAAG9K,OAAQ+K,IAChC0P,EAAW3P,GAAGC,KAChB0P,EAAW3P,GAAGC,GAAGgQ,WAAcjQ,EAAI2P,EAAWza,OAAO,EAAKya,EAAW3P,EAAE,GAAGC,GAAKlK,OAC/E4Z,EAAW3P,GAAGC,GAAGiQ,SAAcjQ,EAAI0P,EAAW3P,GAAG9K,OAAO,EAAKya,EAAW3P,GAAGC,EAAE,GAAKlK,OAClF4Z,EAAW3P,GAAGC,GAAGkQ,WACdnQ,EAAI2P,EAAWza,OAAO,GAAK+K,EAAI0P,EAAW3P,GAAG9K,OAAO,EACnDya,EAAW3P,EAAE,GAAGC,EAAE,GAClBlK,YAOV,KAAKhB,EAAI,EAAGA,EAAI6L,EAAK1L,OAAQH,IAC3BoL,EAAQ,GAAIlP,GACZkP,EAAMH,EAAIY,EAAK7L,GAAGlF,KAAKqY,OAAS,EAChC/H,EAAMF,EAAIW,EAAK7L,GAAGlF,KAAKsY,OAAS,EAChChI,EAAMyJ,EAAIhJ,EAAK7L,GAAGlF,KAAKuY,OAAS,EAEVrS,SAAlBlG,KAAKwY,WACPlI,EAAMzJ,MAAQkK,EAAK7L,GAAGlF,KAAKwY,WAAa,GAG1CqH,KACAA,EAAIvP,MAAQA,EACZuP,EAAIM,OAAS,GAAI/e,GAAQkP,EAAMH,EAAGG,EAAMF,EAAGpQ,KAAKgZ,MAChD6G,EAAII,MAAQ/Z,OACZ2Z,EAAIK,OAASha,OAEbkS,EAAWxQ,KAAKiY,EAIpB,OAAOzH,IASTrX,EAAQwQ,UAAUjE,OAAS,WAEzB,KAAOtN,KAAK8W,iBAAiByJ,iBAC3BvgB,KAAK8W,iBAAiBtH,YAAYxP,KAAK8W,iBAAiB0J,WAG1DxgB,MAAKmc,MAAQvM,SAASK,cAAc,OACpCjQ,KAAKmc,MAAM3L,MAAMiQ,SAAW,WAC5BzgB,KAAKmc,MAAM3L,MAAMkQ,SAAW,SAG5B1gB,KAAKmc,MAAMC,OAASxM,SAASK,cAAe,UAC5CjQ,KAAKmc,MAAMC,OAAO5L,MAAMiQ,SAAW,WACnCzgB,KAAKmc,MAAMrM,YAAY9P,KAAKmc,MAAMC,OAGhC,IAAIuE,GAAW/Q,SAASK,cAAe,MACvC0Q,GAASnQ,MAAMjG,MAAQ,MACvBoW,EAASnQ,MAAMoQ,WAAc,OAC7BD,EAASnQ,MAAMqQ,QAAW,OAC1BF,EAASG,UAAa,mDACtB9gB,KAAKmc,MAAMC,OAAOtM,YAAY6Q,GAGhC3gB,KAAKmc,MAAMvK,OAAShC,SAASK,cAAe,OAC5CjQ,KAAKmc,MAAMvK,OAAOpB,MAAMiQ,SAAW,WACnCzgB,KAAKmc,MAAMvK,OAAOpB,MAAM2P,OAAS,MACjCngB,KAAKmc,MAAMvK,OAAOpB,MAAMvJ,KAAO,MAC/BjH,KAAKmc,MAAMvK,OAAOpB,MAAMI,MAAQ,OAChC5Q,KAAKmc,MAAMrM,YAAY9P,KAAKmc,MAAMvK,OAGlC;GAAIQ,GAAKpS,KACL+gB,EAAc,SAAU7X,GAAQkJ,EAAG4O,aAAa9X,IAChD+X,EAAe,SAAU/X,GAAQkJ,EAAG8O,cAAchY,IAClDiY,EAAe,SAAUjY,GAAQkJ,EAAGgP,SAASlY,IAC7CmY,EAAY,SAAUnY,GAAQkJ,EAAGkP,WAAWpY,GAGhDvI,GAAK4H,iBAAiBvI,KAAKmc,MAAMC,OAAQ,UAAWmF,WACpD5gB,EAAK4H,iBAAiBvI,KAAKmc,MAAMC,OAAQ,YAAa2E,GACtDpgB,EAAK4H,iBAAiBvI,KAAKmc,MAAMC,OAAQ,aAAc6E,GACvDtgB,EAAK4H,iBAAiBvI,KAAKmc,MAAMC,OAAQ,aAAc+E,GACvDxgB,EAAK4H,iBAAiBvI,KAAKmc,MAAMC,OAAQ,YAAaiF,GAGtDrhB,KAAK8W,iBAAiBhH,YAAY9P,KAAKmc,QAWzCpb,EAAQwQ,UAAUiQ,QAAU,SAAS5Q,EAAOC,GAC1C7Q,KAAKmc,MAAM3L,MAAMI,MAAQA,EACzB5Q,KAAKmc,MAAM3L,MAAMK,OAASA,EAE1B7Q,KAAKyhB,iBAMP1gB,EAAQwQ,UAAUkQ,cAAgB,WAChCzhB,KAAKmc,MAAMC,OAAO5L,MAAMI,MAAQ,OAChC5Q,KAAKmc,MAAMC,OAAO5L,MAAMK,OAAS,OAEjC7Q,KAAKmc,MAAMC,OAAOxL,MAAQ5Q,KAAKmc,MAAMC,OAAOC,YAC5Crc,KAAKmc,MAAMC,OAAOvL,OAAS7Q,KAAKmc,MAAMC,OAAOsF,aAG7C1hB,KAAKmc,MAAMvK,OAAOpB,MAAMI,MAAS5Q,KAAKmc,MAAMC,OAAOC,YAAc,GAAU,MAM7Etb,EAAQwQ,UAAUoQ,eAAiB,WACjC,IAAK3hB,KAAKmc,MAAMvK,SAAW5R,KAAKmc,MAAMvK,OAAOgQ,OAC3C,KAAM,wBAER5hB,MAAKmc,MAAMvK,OAAOgQ,OAAOC,QAO3B9gB,EAAQwQ,UAAUuQ,cAAgB,WAC3B9hB,KAAKmc,MAAMvK,QAAW5R,KAAKmc,MAAMvK,OAAOgQ,QAE7C5hB,KAAKmc,MAAMvK,OAAOgQ,OAAOG,QAU3BhhB,EAAQwQ,UAAUyQ,cAAgB,WAG9BhiB,KAAKkc,QAD0D,MAA7Dlc,KAAKgX,eAAeiL,OAAOjiB,KAAKgX,eAAe3R,OAAO,GAEtD6c,WAAWliB,KAAKgX,gBAAkB,IAChChX,KAAKmc,MAAMC,OAAOC,YAGP6F,WAAWliB,KAAKgX,gBAK/BhX,KAAKsc,QAD0D,MAA7Dtc,KAAKiX,eAAegL,OAAOjiB,KAAKiX,eAAe5R,OAAO,GAEtD6c,WAAWliB,KAAKiX,gBAAkB,KAC/BjX,KAAKmc,MAAMC,OAAOsF,aAAe1hB,KAAKmc,MAAMvK,OAAO8P,cAGzCQ,WAAWliB,KAAKiX,iBAoBnClW,EAAQwQ,UAAU4Q,kBAAoB,SAASC,GACjClc,SAARkc,IAImBlc,SAAnBkc,EAAIC,YAA6Cnc,SAAjBkc,EAAIE,UACtCtiB,KAAKkY,OAAOqK,eAAeH,EAAIC,WAAYD,EAAIE,UAG5Bpc,SAAjBkc,EAAII,UACNxiB,KAAKkY,OAAOuK,aAAaL,EAAII,UAG/BxiB,KAAKse,WASPvd,EAAQwQ,UAAUmR,kBAAoB,WACpC,GAAIN,GAAMpiB,KAAKkY,OAAOyK,gBAEtB,OADAP,GAAII,SAAWxiB,KAAKkY,OAAO+D,eACpBmG,GAMTrhB,EAAQwQ,UAAUqR,UAAY,SAAS7R,GAErC/Q,KAAKie,gBAAgBlN,EAAM/Q,KAAKwQ,OAK9BxQ,KAAKoY,WAFHpY,KAAKoe,WAEWpe,KAAKoe,WAAWuB,iBAIhB3f,KAAK2f,eAAe3f,KAAK2V,WAI7C3V,KAAK6iB,iBAOP9hB,EAAQwQ,UAAU6E,QAAU,SAAUrF,GACpC/Q,KAAK4iB,UAAU7R,GACf/Q,KAAKse,SAGDte,KAAK8iB,oBAAsB9iB,KAAKoe,YAClCpe,KAAK2hB,kBAQT5gB,EAAQwQ,UAAUoI,WAAa,SAAUjM,GACvC,GAAIqV,GAAiB7c,MAIrB,IAFAlG,KAAK8hB,gBAEW5b,SAAZwH,EAAuB,CAczB,GAZsBxH,SAAlBwH,EAAQkD,QAA2B5Q,KAAK4Q,MAAQlD,EAAQkD,OACrC1K,SAAnBwH,EAAQmD,SAA2B7Q,KAAK6Q,OAASnD,EAAQmD,QAErC3K,SAApBwH,EAAQsM,UAA2Bha,KAAKgX,eAAiBtJ,EAAQsM,SAC7C9T,SAApBwH,EAAQuM,UAA2Bja,KAAKiX,eAAiBvJ,EAAQuM,SAEzC/T,SAAxBwH,EAAQ2J,cAA+BrX,KAAKqX,YAAc3J,EAAQ2J,aAC1CnR,SAAxBwH,EAAQ4J,cAA+BtX,KAAKsX,YAAc5J,EAAQ4J,aAC/CpR,SAAnBwH,EAAQwJ,SAA0BlX,KAAKkX,OAASxJ,EAAQwJ,QACrChR,SAAnBwH,EAAQyJ,SAA0BnX,KAAKmX,OAASzJ,EAAQyJ,QACrCjR,SAAnBwH,EAAQ0J,SAA0BpX,KAAKoX,OAAS1J,EAAQ0J,QAEtClR,SAAlBwH,EAAQ8C,MAAqB,CAC/B,GAAIwS,GAAchjB,KAAKwd,gBAAgB9P,EAAQ8C,MAC3B,MAAhBwS,IACFhjB,KAAKwQ,MAAQwS,GAGQ9c,SAArBwH,EAAQgK,WAA6B1X,KAAK0X,SAAWhK,EAAQgK,UACjCxR,SAA5BwH,EAAQ+J,kBAAiCzX,KAAKyX,gBAAkB/J,EAAQ+J,iBACjDvR,SAAvBwH,EAAQkK,aAA6B5X,KAAK4X,WAAalK,EAAQkK,YAC3C1R,SAApBwH,EAAQuV,UAA6BjjB,KAAK8X,YAAcpK,EAAQuV,SAC9B/c,SAAlCwH,EAAQwV,wBAAqCljB,KAAKkjB,sBAAwBxV,EAAQwV,uBACtDhd,SAA5BwH,EAAQiK,kBAAiC3X,KAAK2X,gBAAkBjK,EAAQiK,iBAC9CzR,SAA1BwH,EAAQqK,gBAA+B/X,KAAK+X,cAAgBrK,EAAQqK,eAEtC7R,SAA9BwH,EAAQsK,oBAAiChY,KAAKgY,kBAAoBtK,EAAQsK,mBAC7C9R,SAA7BwH,EAAQuK,mBAAiCjY,KAAKiY,iBAAmBvK,EAAQuK,kBAC1C/R,SAA/BwH,EAAQoV,qBAAiC9iB,KAAK8iB,mBAAqBpV,EAAQoV,oBAErD5c,SAAtBwH,EAAQ2L,YAAyBrZ,KAAKwe,iBAAmB9Q,EAAQ2L,WAC3CnT,SAAtBwH,EAAQ4L,YAAyBtZ,KAAK0e,iBAAmBhR,EAAQ4L,WAEhDpT,SAAjBwH,EAAQgL,OAAoB1Y,KAAK6e,YAAcnR,EAAQgL,MACrCxS,SAAlBwH,EAAQiL,QAAqB3Y,KAAK+e,aAAerR,EAAQiL,OACxCzS,SAAjBwH,EAAQkL,OAAoB5Y,KAAK8e,YAAcpR,EAAQkL,MACtC1S,SAAjBwH,EAAQmL,OAAoB7Y,KAAKif,YAAcvR,EAAQmL,MACrC3S,SAAlBwH,EAAQoL,QAAqB9Y,KAAKmf,aAAezR,EAAQoL,OACxC5S,SAAjBwH,EAAQqL,OAAoB/Y,KAAKkf,YAAcxR,EAAQqL,MACtC7S,SAAjBwH,EAAQsL,OAAoBhZ,KAAKqf,YAAc3R,EAAQsL,MACrC9S,SAAlBwH,EAAQuL,QAAqBjZ,KAAKuf,aAAe7R,EAAQuL,OACxC/S,SAAjBwH,EAAQwL,OAAoBlZ,KAAKsf,YAAc5R,EAAQwL,MAClChT,SAArBwH,EAAQyL,WAAwBnZ,KAAKyf,gBAAkB/R,EAAQyL,UAC1CjT,SAArBwH,EAAQ0L,WAAwBpZ,KAAK0f,gBAAkBhS,EAAQ0L,UAEpClT,SAA3BwH,EAAQqV,iBAA8BA,EAAiBrV,EAAQqV,gBAE5C7c,SAAnB6c,GACF/iB,KAAKkY,OAAOqK,eAAeQ,EAAeV,WAAYU,EAAeT,UACrEtiB,KAAKkY,OAAOuK,aAAaM,EAAeP,YAGxCxiB,KAAKkY,OAAOqK,eAAe,EAAK,IAChCviB,KAAKkY,OAAOuK,aAAa,MAI7BziB,KAAKuc,oBAAoB7O,GAAWA,EAAQ8O,iBAE5Cxc,KAAKwhB,QAAQxhB,KAAK4Q,MAAO5Q,KAAK6Q,QAG1B7Q,KAAK2V,WACP3V,KAAKoW,QAAQpW,KAAK2V,WAIhB3V,KAAK8iB,oBAAsB9iB,KAAKoe,YAClCpe,KAAK2hB,kBAOT5gB,EAAQwQ,UAAU+M,OAAS,WACzB,GAAwBpY,SAApBlG,KAAKoY,WACP,KAAM,mCAGRpY,MAAKyhB,gBACLzhB,KAAKgiB,gBACLhiB,KAAKmjB,gBACLnjB,KAAKojB,eACLpjB,KAAKqjB,cAEDrjB,KAAKwQ,QAAUzP,EAAQwW,MAAM8F,MAC/Brd,KAAKwQ,QAAUzP,EAAQwW,MAAMgG,QAC7Bvd,KAAKsjB,kBAEEtjB,KAAKwQ,QAAUzP,EAAQwW,MAAM+F,KACpCtd,KAAKujB,kBAEEvjB,KAAKwQ,QAAUzP,EAAQwW,MAAMwF,KACpC/c,KAAKwQ,QAAUzP,EAAQwW,MAAMyF,UAC7Bhd,KAAKwQ,QAAUzP,EAAQwW,MAAM0F,QAC7Bjd,KAAKwjB,iBAILxjB,KAAKyjB,iBAGPzjB,KAAK0jB,cACL1jB,KAAK2jB,iBAMP5iB,EAAQwQ,UAAU6R,aAAe,WAC/B,GAAIhH,GAASpc,KAAKmc,MAAMC,OACpBwH,EAAMxH,EAAOyH,WAAW,KAE5BD,GAAIE,UAAU,EAAG,EAAG1H,EAAOxL,MAAOwL,EAAOvL,SAO3C9P,EAAQwQ,UAAUoS,cAAgB,WAChC,GAAIvT,EAEJ,IAAIpQ,KAAKwQ,QAAUzP,EAAQwW,MAAM4F,UAC/Bnd,KAAKwQ,QAAUzP,EAAQwW,MAAM6F,QAAS,CAEtC,GAEI2G,GAAUC,EAFVC,EAAmC,IAAzBjkB,KAAKmc,MAAME,WAGrBrc,MAAKwQ,QAAUzP,EAAQwW,MAAM6F,SAC/B2G,EAAWE,EAAU,EACrBD,EAAWC,EAAU,EAAc,EAAVA,IAGzBF,EAAW,GACXC,EAAW,GAGb,IAAInT,GAASjM,KAAK6H,IAA8B,IAA1BzM,KAAKmc,MAAMuF,aAAqB,KAClDra,EAAMrH,KAAK+W,OACXmN,EAAQlkB,KAAKmc,MAAME,YAAcrc,KAAK+W,OACtC9P,EAAOid,EAAQF,EACf7D,EAAS9Y,EAAMwJ,EAGrB,GAAIuL,GAASpc,KAAKmc,MAAMC,OACpBwH,EAAMxH,EAAOyH,WAAW,KAI5B,IAHAD,EAAIO,UAAY,EAChBP,EAAIQ,KAAO,aAEPpkB,KAAKwQ,QAAUzP,EAAQwW,MAAM4F,SAAU,CAEzC,GAAIkH,GAAO,EACPC,EAAOzT,CACX,KAAKT,EAAIiU,EAAUC,EAAJlU,EAAUA,IAAK,CAC5B,GAAIrE,IAAKqE,EAAIiU,IAASC,EAAOD,GAGzB3X,EAAU,IAAJX,EACNxB,EAAQvK,KAAKukB,SAAS7X,EAAK,EAAG,EAElCkX,GAAIY,YAAcja,EAClBqZ,EAAIa,YACJb,EAAIc,OAAOzd,EAAMI,EAAM+I,GACvBwT,EAAIe,OAAOT,EAAO7c,EAAM+I,GACxBwT,EAAIlH,SAGNkH,EAAIY,YAAexkB,KAAKuZ,UACxBqK,EAAIgB,WAAW3d,EAAMI,EAAK2c,EAAUnT,GAiBtC,GAdI7Q,KAAKwQ,QAAUzP,EAAQwW,MAAM6F,UAE/BwG,EAAIY,YAAexkB,KAAKuZ,UACxBqK,EAAIiB,UAAa7kB,KAAKyZ,SACtBmK,EAAIa,YACJb,EAAIc,OAAOzd,EAAMI,GACjBuc,EAAIe,OAAOT,EAAO7c,GAClBuc,EAAIe,OAAOT,EAAQF,EAAWD,EAAU5D,GACxCyD,EAAIe,OAAO1d,EAAMkZ,GACjByD,EAAIkB,YACJlB,EAAInH,OACJmH,EAAIlH,UAGF1c,KAAKwQ,QAAUzP,EAAQwW,MAAM4F,UAC/Bnd,KAAKwQ,QAAUzP,EAAQwW,MAAM6F,QAAS,CAEtC,GAAI2H,GAAc,EACdC,EAAO,GAAI1jB,GAAWtB,KAAKmZ,SAAUnZ,KAAKoZ,UAAWpZ,KAAKoZ,SAASpZ,KAAKmZ,UAAU,GAAG,EAKzF,KAJA6L,EAAKtW,QACDsW,EAAKC,aAAejlB,KAAKmZ,UAC3B6L,EAAKE,QAECF,EAAKG,OACX/U,EAAI+P,GAAU6E,EAAKC,aAAejlB,KAAKmZ,WAAanZ,KAAKoZ,SAAWpZ,KAAKmZ,UAAYtI,EAErF+S,EAAIa,YACJb,EAAIc,OAAOzd,EAAO8d,EAAa3U,GAC/BwT,EAAIe,OAAO1d,EAAMmJ,GACjBwT,EAAIlH,SAEJkH,EAAIwB,UAAY,QAChBxB,EAAIyB,aAAe,SACnBzB,EAAIiB,UAAY7kB,KAAKuZ,UACrBqK,EAAI0B,SAASN,EAAKC,aAAche,EAAO,EAAI8d,EAAa3U,GAExD4U,EAAKE,MAGPtB,GAAIwB,UAAY,QAChBxB,EAAIyB,aAAe,KACnB,IAAIE,GAAQvlB,KAAKsX,WACjBsM,GAAI0B,SAASC,EAAOrB,EAAO/D,EAASngB,KAAK+W,UAO7ChW,EAAQwQ,UAAUsR,cAAgB,WAGhC,GAFA7iB,KAAKmc,MAAMvK,OAAOkP,UAAY,GAE1B9gB,KAAKoe,WAAY,CACnB,GAAI1Q,IACF8X,QAAWxlB,KAAKkjB,uBAEdtB,EAAS,GAAIvgB,GAAOrB,KAAKmc,MAAMvK,OAAQlE,EAC3C1N,MAAKmc,MAAMvK,OAAOgQ,OAASA,EAG3B5hB,KAAKmc,MAAMvK,OAAOpB,MAAMqQ,QAAU,OAGlCe,EAAO6D,UAAUzlB,KAAKoe,WAAWlJ,QACjC0M,EAAO8D,gBAAgB1lB,KAAKgY,kBAG5B,IAAI5F,GAAKpS,KACL2lB,EAAW,WACb,GAAI5d,GAAQ6Z,EAAOgE,UAEnBxT,GAAGgM,WAAWyH,YAAY9d,GAC1BqK,EAAGgG,WAAahG,EAAGgM,WAAWuB,iBAE9BvN,EAAGkM,SAELsD,GAAOkE,oBAAoBH,OAG3B3lB,MAAKmc,MAAMvK,OAAOgQ,OAAS1b,QAO/BnF,EAAQwQ,UAAU4R,cAAgB,WACEjd,SAA7BlG,KAAKmc,MAAMvK,OAAOgQ,QACrB5hB,KAAKmc,MAAMvK,OAAOgQ,OAAOtD,UAQ7Bvd,EAAQwQ,UAAUmS,YAAc,WAC9B,GAAI1jB,KAAKoe,WAAY,CACnB,GAAIhC,GAASpc,KAAKmc,MAAMC,OACpBwH,EAAMxH,EAAOyH,WAAW,KAE5BD,GAAIQ,KAAO,aACXR,EAAImC,UAAY,OAChBnC,EAAIiB,UAAY,OAChBjB,EAAIwB,UAAY,OAChBxB,EAAIyB,aAAe,KAEnB,IAAIlV,GAAInQ,KAAK+W,OACT3G,EAAIpQ,KAAK+W,MACb6M,GAAI0B,SAAStlB,KAAKoe,WAAW4H,WAAa,KAAOhmB,KAAKoe,WAAW6H,mBAAoB9V,EAAGC,KAQ5FrP,EAAQwQ,UAAU8R,YAAc,WAC9B,GAEE6C,GAAMC,EAAInB,EAAMoB,EAChBC,EAAMC,EAAOC,EAAOC,EACpBC,EAAQC,EAASC,EACjBC,EAAQC,EALNzK,EAASpc,KAAKmc,MAAMC,OACtBwH,EAAMxH,EAAOyH,WAAW,KAQ1BD,GAAIQ,KAAO,GAAKpkB,KAAKkY,OAAO+D,eAAiB,UAG7C,IAAI6K,GAAW,KAAQ9mB,KAAK8Z,MAAM3J,EAC9B4W,EAAW,KAAQ/mB,KAAK8Z,MAAM1J,EAC9B4W,EAAa,EAAIhnB,KAAKkY,OAAO+D,eAC7BgL,EAAWjnB,KAAKkY,OAAOyK,iBAAiBN,UAU5C,KAPAuB,EAAIO,UAAY,EAChBiC,EAAoClgB,SAAtBlG,KAAK+e,aACnBiG,EAAO,GAAI1jB,GAAWtB,KAAK0Y,KAAM1Y,KAAK4Y,KAAM5Y,KAAK2Y,MAAOyN,GACxDpB,EAAKtW,QACDsW,EAAKC,aAAejlB,KAAK0Y,MAC3BsM,EAAKE,QAECF,EAAKG,OAAO,CAClB,GAAIhV,GAAI6U,EAAKC,YAETjlB,MAAK0X,UACPwO,EAAOlmB,KAAKoa,eAAe,GAAIhZ,GAAQ+O,EAAGnQ,KAAK6Y,KAAM7Y,KAAKgZ,OAC1DmN,EAAKnmB,KAAKoa,eAAe,GAAIhZ,GAAQ+O,EAAGnQ,KAAK+Y,KAAM/Y,KAAKgZ,OACxD4K,EAAIY,YAAcxkB,KAAKwZ,UACvBoK,EAAIa,YACJb,EAAIc,OAAOwB,EAAK/V,EAAG+V,EAAK9V,GACxBwT,EAAIe,OAAOwB,EAAGhW,EAAGgW,EAAG/V,GACpBwT,EAAIlH,WAGJwJ,EAAOlmB,KAAKoa,eAAe,GAAIhZ,GAAQ+O,EAAGnQ,KAAK6Y,KAAM7Y,KAAKgZ,OAC1DmN,EAAKnmB,KAAKoa,eAAe,GAAIhZ,GAAQ+O,EAAGnQ,KAAK6Y,KAAKiO,EAAU9mB,KAAKgZ,OACjE4K,EAAIY,YAAcxkB,KAAKuZ,UACvBqK,EAAIa,YACJb,EAAIc,OAAOwB,EAAK/V,EAAG+V,EAAK9V,GACxBwT,EAAIe,OAAOwB,EAAGhW,EAAGgW,EAAG/V,GACpBwT,EAAIlH,SAEJwJ,EAAOlmB,KAAKoa,eAAe,GAAIhZ,GAAQ+O,EAAGnQ,KAAK+Y,KAAM/Y,KAAKgZ,OAC1DmN,EAAKnmB,KAAKoa,eAAe,GAAIhZ,GAAQ+O,EAAGnQ,KAAK+Y,KAAK+N,EAAU9mB,KAAKgZ,OACjE4K,EAAIY,YAAcxkB,KAAKuZ,UACvBqK,EAAIa,YACJb,EAAIc,OAAOwB,EAAK/V,EAAG+V,EAAK9V,GACxBwT,EAAIe,OAAOwB,EAAGhW,EAAGgW,EAAG/V,GACpBwT,EAAIlH,UAGN6J,EAAS3hB,KAAKwW,IAAI6L,GAAY,EAAKjnB,KAAK6Y,KAAO7Y,KAAK+Y,KACpDsN,EAAOrmB,KAAKoa,eAAe,GAAIhZ,GAAQ+O,EAAGoW,EAAOvmB,KAAKgZ,OAClDpU,KAAKwW,IAAe,EAAX6L,GAAgB,GAC3BrD,EAAIwB,UAAY,SAChBxB,EAAIyB,aAAe,MACnBgB,EAAKjW,GAAK4W,GAEHpiB,KAAKqW,IAAe,EAAXgM,GAAgB,GAChCrD,EAAIwB,UAAY,QAChBxB,EAAIyB,aAAe,WAGnBzB,EAAIwB,UAAY,OAChBxB,EAAIyB,aAAe,UAErBzB,EAAIiB,UAAY7kB,KAAKuZ,UACrBqK,EAAI0B,SAAS,KAAON,EAAKC,aAAe,KAAMoB,EAAKlW,EAAGkW,EAAKjW,GAE3D4U,EAAKE,OAWP,IAPAtB,EAAIO,UAAY,EAChBiC,EAAoClgB,SAAtBlG,KAAKmf,aACnB6F,EAAO,GAAI1jB,GAAWtB,KAAK6Y,KAAM7Y,KAAK+Y,KAAM/Y,KAAK8Y,MAAOsN,GACxDpB,EAAKtW,QACDsW,EAAKC,aAAejlB,KAAK6Y,MAC3BmM,EAAKE,QAECF,EAAKG,OACPnlB,KAAK0X,UACPwO,EAAOlmB,KAAKoa,eAAe,GAAIhZ,GAAQpB,KAAK0Y,KAAMsM,EAAKC,aAAcjlB,KAAKgZ,OAC1EmN,EAAKnmB,KAAKoa,eAAe,GAAIhZ,GAAQpB,KAAK4Y,KAAMoM,EAAKC,aAAcjlB,KAAKgZ,OACxE4K,EAAIY,YAAcxkB,KAAKwZ,UACvBoK,EAAIa,YACJb,EAAIc,OAAOwB,EAAK/V,EAAG+V,EAAK9V,GACxBwT,EAAIe,OAAOwB,EAAGhW,EAAGgW,EAAG/V,GACpBwT,EAAIlH,WAGJwJ,EAAOlmB,KAAKoa,eAAe,GAAIhZ,GAAQpB,KAAK0Y,KAAMsM,EAAKC,aAAcjlB,KAAKgZ,OAC1EmN,EAAKnmB,KAAKoa,eAAe,GAAIhZ,GAAQpB,KAAK0Y,KAAKqO,EAAU/B,EAAKC,aAAcjlB,KAAKgZ,OACjF4K,EAAIY,YAAcxkB,KAAKuZ,UACvBqK,EAAIa,YACJb,EAAIc,OAAOwB,EAAK/V,EAAG+V,EAAK9V,GACxBwT,EAAIe,OAAOwB,EAAGhW,EAAGgW,EAAG/V,GACpBwT,EAAIlH,SAEJwJ,EAAOlmB,KAAKoa,eAAe,GAAIhZ,GAAQpB,KAAK4Y,KAAMoM,EAAKC,aAAcjlB,KAAKgZ,OAC1EmN,EAAKnmB,KAAKoa,eAAe,GAAIhZ,GAAQpB,KAAK4Y,KAAKmO,EAAU/B,EAAKC,aAAcjlB,KAAKgZ,OACjF4K,EAAIY,YAAcxkB,KAAKuZ,UACvBqK,EAAIa,YACJb,EAAIc,OAAOwB,EAAK/V,EAAG+V,EAAK9V,GACxBwT,EAAIe,OAAOwB,EAAGhW,EAAGgW,EAAG/V,GACpBwT,EAAIlH,UAGN4J,EAAS1hB,KAAKqW,IAAIgM,GAAa,EAAKjnB,KAAK0Y,KAAO1Y,KAAK4Y,KACrDyN,EAAOrmB,KAAKoa,eAAe,GAAIhZ,GAAQklB,EAAOtB,EAAKC,aAAcjlB,KAAKgZ,OAClEpU,KAAKwW,IAAe,EAAX6L,GAAgB,GAC3BrD,EAAIwB,UAAY,SAChBxB,EAAIyB,aAAe,MACnBgB,EAAKjW,GAAK4W,GAEHpiB,KAAKqW,IAAe,EAAXgM,GAAgB,GAChCrD,EAAIwB,UAAY,QAChBxB,EAAIyB,aAAe,WAGnBzB,EAAIwB,UAAY,OAChBxB,EAAIyB,aAAe,UAErBzB,EAAIiB,UAAY7kB,KAAKuZ,UACrBqK,EAAI0B,SAAS,KAAON,EAAKC,aAAe,KAAMoB,EAAKlW,EAAGkW,EAAKjW,GAE3D4U,EAAKE,MAaP,KATAtB,EAAIO,UAAY,EAChBiC,EAAoClgB,SAAtBlG,KAAKuf,aACnByF,EAAO,GAAI1jB,GAAWtB,KAAKgZ,KAAMhZ,KAAKkZ,KAAMlZ,KAAKiZ,MAAOmN,GACxDpB,EAAKtW,QACDsW,EAAKC,aAAejlB,KAAKgZ,MAC3BgM,EAAKE,OAEPoB,EAAS1hB,KAAKwW,IAAI6L,GAAa,EAAKjnB,KAAK0Y,KAAO1Y,KAAK4Y,KACrD2N,EAAS3hB,KAAKqW,IAAIgM,GAAa,EAAKjnB,KAAK6Y,KAAO7Y,KAAK+Y,MAC7CiM,EAAKG,OAEXe,EAAOlmB,KAAKoa,eAAe,GAAIhZ,GAAQklB,EAAOC,EAAOvB,EAAKC,eAC1DrB,EAAIY,YAAcxkB,KAAKuZ,UACvBqK,EAAIa,YACJb,EAAIc,OAAOwB,EAAK/V,EAAG+V,EAAK9V,GACxBwT,EAAIe,OAAOuB,EAAK/V,EAAI6W,EAAYd,EAAK9V,GACrCwT,EAAIlH,SAEJkH,EAAIwB,UAAY,QAChBxB,EAAIyB,aAAe,SACnBzB,EAAIiB,UAAY7kB,KAAKuZ,UACrBqK,EAAI0B,SAASN,EAAKC,aAAe,IAAKiB,EAAK/V,EAAI,EAAG+V,EAAK9V,GAEvD4U,EAAKE,MAEPtB,GAAIO,UAAY,EAChB+B,EAAOlmB,KAAKoa,eAAe,GAAIhZ,GAAQklB,EAAOC,EAAOvmB,KAAKgZ,OAC1DmN,EAAKnmB,KAAKoa,eAAe,GAAIhZ,GAAQklB,EAAOC,EAAOvmB,KAAKkZ,OACxD0K,EAAIY,YAAcxkB,KAAKuZ,UACvBqK,EAAIa,YACJb,EAAIc,OAAOwB,EAAK/V,EAAG+V,EAAK9V,GACxBwT,EAAIe,OAAOwB,EAAGhW,EAAGgW,EAAG/V,GACpBwT,EAAIlH,SAGJkH,EAAIO,UAAY,EAEhByC,EAAS5mB,KAAKoa,eAAe,GAAIhZ,GAAQpB,KAAK0Y,KAAM1Y,KAAK6Y,KAAM7Y,KAAKgZ,OACpE6N,EAAS7mB,KAAKoa,eAAe,GAAIhZ,GAAQpB,KAAK4Y,KAAM5Y,KAAK6Y,KAAM7Y,KAAKgZ,OACpE4K,EAAIY,YAAcxkB,KAAKuZ,UACvBqK,EAAIa,YACJb,EAAIc,OAAOkC,EAAOzW,EAAGyW,EAAOxW,GAC5BwT,EAAIe,OAAOkC,EAAO1W,EAAG0W,EAAOzW,GAC5BwT,EAAIlH,SAEJkK,EAAS5mB,KAAKoa,eAAe,GAAIhZ,GAAQpB,KAAK0Y,KAAM1Y,KAAK+Y,KAAM/Y,KAAKgZ,OACpE6N,EAAS7mB,KAAKoa,eAAe,GAAIhZ,GAAQpB,KAAK4Y,KAAM5Y,KAAK+Y,KAAM/Y,KAAKgZ,OACpE4K,EAAIY,YAAcxkB,KAAKuZ,UACvBqK,EAAIa,YACJb,EAAIc,OAAOkC,EAAOzW,EAAGyW,EAAOxW,GAC5BwT,EAAIe,OAAOkC,EAAO1W,EAAG0W,EAAOzW,GAC5BwT,EAAIlH,SAGJkH,EAAIO,UAAY,EAEhB+B,EAAOlmB,KAAKoa,eAAe,GAAIhZ,GAAQpB,KAAK0Y,KAAM1Y,KAAK6Y,KAAM7Y,KAAKgZ,OAClEmN,EAAKnmB,KAAKoa,eAAe,GAAIhZ,GAAQpB,KAAK0Y,KAAM1Y,KAAK+Y,KAAM/Y,KAAKgZ,OAChE4K,EAAIY,YAAcxkB,KAAKuZ,UACvBqK,EAAIa,YACJb,EAAIc,OAAOwB,EAAK/V,EAAG+V,EAAK9V,GACxBwT,EAAIe,OAAOwB,EAAGhW,EAAGgW,EAAG/V,GACpBwT,EAAIlH,SAEJwJ,EAAOlmB,KAAKoa,eAAe,GAAIhZ,GAAQpB,KAAK4Y,KAAM5Y,KAAK6Y,KAAM7Y,KAAKgZ,OAClEmN,EAAKnmB,KAAKoa,eAAe,GAAIhZ,GAAQpB,KAAK4Y,KAAM5Y,KAAK+Y,KAAM/Y,KAAKgZ,OAChE4K,EAAIY,YAAcxkB,KAAKuZ,UACvBqK,EAAIa,YACJb,EAAIc,OAAOwB,EAAK/V,EAAG+V,EAAK9V,GACxBwT,EAAIe,OAAOwB,EAAGhW,EAAGgW,EAAG/V,GACpBwT,EAAIlH,QAGJ,IAAIxF,GAASlX,KAAKkX,MACdA,GAAO7R,OAAS,IAClBshB,EAAU,GAAM3mB,KAAK8Z,MAAM1J,EAC3BkW,GAAStmB,KAAK0Y,KAAO1Y,KAAK4Y,MAAQ,EAClC2N,EAAS3hB,KAAKwW,IAAI6L,GAAY,EAAKjnB,KAAK6Y,KAAO8N,EAAS3mB,KAAK+Y,KAAO4N,EACpEN,EAAOrmB,KAAKoa,eAAe,GAAIhZ,GAAQklB,EAAOC,EAAOvmB,KAAKgZ,OACtDpU,KAAKwW,IAAe,EAAX6L,GAAgB,GAC3BrD,EAAIwB,UAAY,SAChBxB,EAAIyB,aAAe,OAEZzgB,KAAKqW,IAAe,EAAXgM,GAAgB,GAChCrD,EAAIwB,UAAY,QAChBxB,EAAIyB,aAAe,WAGnBzB,EAAIwB,UAAY,OAChBxB,EAAIyB,aAAe,UAErBzB,EAAIiB,UAAY7kB,KAAKuZ,UACrBqK,EAAI0B,SAASpO,EAAQmP,EAAKlW,EAAGkW,EAAKjW,GAIpC,IAAI+G,GAASnX,KAAKmX,MACdA,GAAO9R,OAAS,IAClBqhB,EAAU,GAAM1mB,KAAK8Z,MAAM3J,EAC3BmW,EAAS1hB,KAAKqW,IAAIgM,GAAa,EAAKjnB,KAAK0Y,KAAOgO,EAAU1mB,KAAK4Y,KAAO8N,EACtEH,GAASvmB,KAAK6Y,KAAO7Y,KAAK+Y,MAAQ,EAClCsN,EAAOrmB,KAAKoa,eAAe,GAAIhZ,GAAQklB,EAAOC,EAAOvmB,KAAKgZ,OACtDpU,KAAKwW,IAAe,EAAX6L,GAAgB,GAC3BrD,EAAIwB,UAAY,SAChBxB,EAAIyB,aAAe,OAEZzgB,KAAKqW,IAAe,EAAXgM,GAAgB,GAChCrD,EAAIwB,UAAY,QAChBxB,EAAIyB,aAAe,WAGnBzB,EAAIwB,UAAY,OAChBxB,EAAIyB,aAAe,UAErBzB,EAAIiB,UAAY7kB,KAAKuZ,UACrBqK,EAAI0B,SAASnO,EAAQkP,EAAKlW,EAAGkW,EAAKjW,GAIpC,IAAIgH,GAASpX,KAAKoX,MACdA,GAAO/R,OAAS,IAClBohB,EAAS,GACTH,EAAS1hB,KAAKwW,IAAI6L,GAAa,EAAKjnB,KAAK0Y,KAAO1Y,KAAK4Y,KACrD2N,EAAS3hB,KAAKqW,IAAIgM,GAAa,EAAKjnB,KAAK6Y,KAAO7Y,KAAK+Y,KACrDyN,GAASxmB,KAAKgZ,KAAOhZ,KAAKkZ,MAAQ,EAClCmN,EAAOrmB,KAAKoa,eAAe,GAAIhZ,GAAQklB,EAAOC,EAAOC,IACrD5C,EAAIwB,UAAY,QAChBxB,EAAIyB,aAAe,SACnBzB,EAAIiB,UAAY7kB,KAAKuZ,UACrBqK,EAAI0B,SAASlO,EAAQiP,EAAKlW,EAAIsW,EAAQJ,EAAKjW,KAU/CrP,EAAQwQ,UAAUgT,SAAW,SAAS2C,EAAGC,EAAGC,GAC1C,GAAIC,GAAGC,EAAGC,EAAGC,EAAGC,EAAIC,CAMpB,QAJAF,EAAIJ,EAAID,EACRM,EAAK7iB,KAAKC,MAAMqiB,EAAE,IAClBQ,EAAIF,GAAK,EAAI5iB,KAAK+iB,IAAMT,EAAE,GAAM,EAAK,IAE7BO,GACN,IAAK,GAAGJ,EAAIG,EAAGF,EAAII,EAAGH,EAAI,CAAG,MAC7B,KAAK,GAAGF,EAAIK,EAAGJ,EAAIE,EAAGD,EAAI,CAAG,MAC7B,KAAK,GAAGF,EAAI,EAAGC,EAAIE,EAAGD,EAAIG,CAAG,MAC7B,KAAK,GAAGL,EAAI,EAAGC,EAAII,EAAGH,EAAIC,CAAG,MAC7B,KAAK,GAAGH,EAAIK,EAAGJ,EAAI,EAAGC,EAAIC,CAAG,MAC7B,KAAK,GAAGH,EAAIG,EAAGF,EAAI,EAAGC,EAAIG,CAAG,MAE7B,SAASL,EAAI,EAAGC,EAAI,EAAGC,EAAI,EAG7B,MAAO,OAASK,SAAW,IAAFP,GAAS,IAAMO,SAAW,IAAFN,GAAS,IAAMM,SAAW,IAAFL,GAAS,KAQpFxmB,EAAQwQ,UAAU+R,gBAAkB,WAClC,GAEEhT,GAAO4T,EAAO7c,EAAKwgB,EACnB3iB,EACA4iB,EAAgBjD,EAAWL,EAAaL,EACxCvZ,EAAGC,EAAGC,EAAGid,EALP3L,EAASpc,KAAKmc,MAAMC,OACtBwH,EAAMxH,EAAOyH,WAAW,KAO1B,MAAwB3d,SAApBlG,KAAKoY,YAA4BpY,KAAKoY,WAAW/S,QAAU,GAA/D,CAIA,IAAKH,EAAI,EAAGA,EAAIlF,KAAKoY,WAAW/S,OAAQH,IAAK,CAC3C,GAAI+a,GAAQjgB,KAAKua,2BAA2Bva,KAAKoY,WAAWlT,GAAGoL,OAC3D4P,EAASlgB,KAAKwa,4BAA4ByF,EAE9CjgB,MAAKoY,WAAWlT,GAAG+a,MAAQA,EAC3BjgB,KAAKoY,WAAWlT,GAAGgb,OAASA,CAG5B,IAAI8H,GAAchoB,KAAKua,2BAA2Bva,KAAKoY,WAAWlT,GAAGib,OACrEngB,MAAKoY,WAAWlT,GAAG+iB,KAAOjoB,KAAKyX,gBAAkBuQ,EAAY3iB,UAAY2iB,EAAYjO,EAIvF,GAAImO,GAAY,SAAUjjB,EAAGa,GAC3B,MAAOA,GAAEmiB,KAAOhjB,EAAEgjB,KAIpB,IAFAjoB,KAAKoY,WAAW/D,KAAK6T,GAEjBloB,KAAKwQ,QAAUzP,EAAQwW,MAAMgG,SAC/B,IAAKrY,EAAI,EAAGA,EAAIlF,KAAKoY,WAAW/S,OAAQH,IAMtC,GALAoL,EAAQtQ,KAAKoY,WAAWlT,GACxBgf,EAAQlkB,KAAKoY,WAAWlT,GAAGkb,WAC3B/Y,EAAQrH,KAAKoY,WAAWlT,GAAGmb,SAC3BwH,EAAQ7nB,KAAKoY,WAAWlT,GAAGob,WAEbpa,SAAVoK,GAAiCpK,SAAVge,GAA+Bhe,SAARmB,GAA+BnB,SAAV2hB,EAAqB,CAE1F,GAAI7nB,KAAK6X,gBAAkB7X,KAAK4X,WAAY,CAK1C,GAAIuQ,GAAQ/mB,EAAQgnB,SAASP,EAAM5H,MAAO3P,EAAM2P,OAC5CoI,EAAQjnB,EAAQgnB,SAAS/gB,EAAI4Y,MAAOiE,EAAMjE,OAC1CqI,EAAelnB,EAAQmnB,aAAaJ,EAAOE,GAC3CljB,EAAMmjB,EAAajjB,QAGvByiB,GAAkBQ,EAAavO,EAAI,MAGnC+N,IAAiB,CAGfA,IAEFC,GAAQzX,EAAMA,MAAMyJ,EAAImK,EAAM5T,MAAMyJ,EAAI1S,EAAIiJ,MAAMyJ,EAAI8N,EAAMvX,MAAMyJ,GAAK,EACvEnP,EAAoE,KAA/D,GAAKmd,EAAO/nB,KAAKgZ,MAAQhZ,KAAK8Z,MAAMC,EAAK/Z,KAAK+X,eACnDlN,EAAI,EAEA7K,KAAK4X,YACP9M,EAAIlG,KAAKmG,IAAI,EAAKud,EAAanY,EAAIhL,EAAO,EAAG,GAC7C0f,EAAY7kB,KAAKukB,SAAS3Z,EAAGC,EAAGC,GAChC0Z,EAAcK,IAGd/Z,EAAI,EACJ+Z,EAAY7kB,KAAKukB,SAAS3Z,EAAGC,EAAGC,GAChC0Z,EAAcxkB,KAAKuZ,aAIrBsL,EAAY,OACZL,EAAcxkB,KAAKuZ,WAErB4K,EAAY,GAEZP,EAAIO,UAAYA,EAChBP,EAAIiB,UAAYA,EAChBjB,EAAIY,YAAcA,EAClBZ,EAAIa,YACJb,EAAIc,OAAOpU,EAAM4P,OAAO/P,EAAGG,EAAM4P,OAAO9P,GACxCwT,EAAIe,OAAOT,EAAMhE,OAAO/P,EAAG+T,EAAMhE,OAAO9P,GACxCwT,EAAIe,OAAOkD,EAAM3H,OAAO/P,EAAG0X,EAAM3H,OAAO9P,GACxCwT,EAAIe,OAAOtd,EAAI6Y,OAAO/P,EAAG9I,EAAI6Y,OAAO9P,GACpCwT,EAAIkB,YACJlB,EAAInH,OACJmH,EAAIlH,cAKR,KAAKxX,EAAI,EAAGA,EAAIlF,KAAKoY,WAAW/S,OAAQH,IACtCoL,EAAQtQ,KAAKoY,WAAWlT,GACxBgf,EAAQlkB,KAAKoY,WAAWlT,GAAGkb,WAC3B/Y,EAAQrH,KAAKoY,WAAWlT,GAAGmb,SAEbna,SAAVoK,IAEA6T,EADEnkB,KAAKyX,gBACK,GAAKnH,EAAM2P,MAAMlG,EAGjB,IAAM/Z,KAAKmY,IAAI4B,EAAI/Z,KAAKkY,OAAO+D,iBAIjC/V,SAAVoK,GAAiCpK,SAAVge,IAEzB6D,GAAQzX,EAAMA,MAAMyJ,EAAImK,EAAM5T,MAAMyJ,GAAK,EACzCnP,EAAoE,KAA/D,GAAKmd,EAAO/nB,KAAKgZ,MAAQhZ,KAAK8Z,MAAMC,EAAK/Z,KAAK+X,eAEnD6L,EAAIO,UAAYA,EAChBP,EAAIY,YAAcxkB,KAAKukB,SAAS3Z,EAAG,EAAG,GACtCgZ,EAAIa,YACJb,EAAIc,OAAOpU,EAAM4P,OAAO/P,EAAGG,EAAM4P,OAAO9P,GACxCwT,EAAIe,OAAOT,EAAMhE,OAAO/P,EAAG+T,EAAMhE,OAAO9P,GACxCwT,EAAIlH,UAGQxW,SAAVoK,GAA+BpK,SAARmB,IAEzB0gB,GAAQzX,EAAMA,MAAMyJ,EAAI1S,EAAIiJ,MAAMyJ,GAAK,EACvCnP,EAAoE,KAA/D,GAAKmd,EAAO/nB,KAAKgZ,MAAQhZ,KAAK8Z,MAAMC,EAAK/Z,KAAK+X,eAEnD6L,EAAIO,UAAYA,EAChBP,EAAIY,YAAcxkB,KAAKukB,SAAS3Z,EAAG,EAAG,GACtCgZ,EAAIa,YACJb,EAAIc,OAAOpU,EAAM4P,OAAO/P,EAAGG,EAAM4P,OAAO9P,GACxCwT,EAAIe,OAAOtd,EAAI6Y,OAAO/P,EAAG9I,EAAI6Y,OAAO9P,GACpCwT,EAAIlH,YAWZ3b,EAAQwQ,UAAUkS,eAAiB,WACjC,GAEIve,GAFAkX,EAASpc,KAAKmc,MAAMC,OACpBwH,EAAMxH,EAAOyH,WAAW,KAG5B,MAAwB3d,SAApBlG,KAAKoY,YAA4BpY,KAAKoY,WAAW/S,QAAU,GAA/D,CAIA,IAAKH,EAAI,EAAGA,EAAIlF,KAAKoY,WAAW/S,OAAQH,IAAK,CAC3C,GAAI+a,GAAQjgB,KAAKua,2BAA2Bva,KAAKoY,WAAWlT,GAAGoL,OAC3D4P,EAASlgB,KAAKwa,4BAA4ByF,EAC9CjgB,MAAKoY,WAAWlT,GAAG+a,MAAQA,EAC3BjgB,KAAKoY,WAAWlT,GAAGgb,OAASA,CAG5B,IAAI8H,GAAchoB,KAAKua,2BAA2Bva,KAAKoY,WAAWlT,GAAGib,OACrEngB,MAAKoY,WAAWlT,GAAG+iB,KAAOjoB,KAAKyX,gBAAkBuQ,EAAY3iB,UAAY2iB,EAAYjO,EAIvF,GAAImO,GAAY,SAAUjjB,EAAGa,GAC3B,MAAOA,GAAEmiB,KAAOhjB,EAAEgjB,KAEpBjoB,MAAKoY,WAAW/D,KAAK6T,EAGrB,IAAIjE,GAAmC,IAAzBjkB,KAAKmc,MAAME,WACzB,KAAKnX,EAAI,EAAGA,EAAIlF,KAAKoY,WAAW/S,OAAQH,IAAK,CAC3C,GAAIoL,GAAQtQ,KAAKoY,WAAWlT,EAE5B,IAAIlF,KAAKwQ,QAAUzP,EAAQwW,MAAM2F,QAAS,CAGxC,GAAIgJ,GAAOlmB,KAAKoa,eAAe9J,EAAM6P,OACrCyD,GAAIO,UAAY,EAChBP,EAAIY,YAAcxkB,KAAKwZ,UACvBoK,EAAIa,YACJb,EAAIc,OAAOwB,EAAK/V,EAAG+V,EAAK9V,GACxBwT,EAAIe,OAAOrU,EAAM4P,OAAO/P,EAAGG,EAAM4P,OAAO9P,GACxCwT,EAAIlH,SAIN,GAAIhM,EAEFA,GADE1Q,KAAKwQ,QAAUzP,EAAQwW,MAAM6F,QACxB6G,EAAQ,EAAI,EAAEA,GAAW3T,EAAMA,MAAMzJ,MAAQ7G,KAAKmZ,WAAanZ,KAAKoZ,SAAWpZ,KAAKmZ,UAGpF8K,CAGT,IAAIuE,EAEFA,GADExoB,KAAKyX,gBACE/G,GAAQJ,EAAM2P,MAAMlG,EAGpBrJ,IAAS1Q,KAAKmY,IAAI4B,EAAI/Z,KAAKkY,OAAO+D,gBAEhC,EAATuM,IACFA,EAAS,EAGX,IAAI9b,GAAKnC,EAAOqS,CACZ5c,MAAKwQ,QAAUzP,EAAQwW,MAAM4F,UAE/BzQ,EAAqE,KAA9D,GAAK4D,EAAMA,MAAMzJ,MAAQ7G,KAAKmZ,UAAYnZ,KAAK8Z,MAAMjT,OAC5D0D,EAAQvK,KAAKukB,SAAS7X,EAAK,EAAG,GAC9BkQ,EAAc5c,KAAKukB,SAAS7X,EAAK,EAAG,KAE7B1M,KAAKwQ,QAAUzP,EAAQwW,MAAM6F,SACpC7S,EAAQvK,KAAKyZ,SACbmD,EAAc5c,KAAK0Z,iBAInBhN,EAA+E,KAAxE,GAAK4D,EAAMA,MAAMyJ,EAAI/Z,KAAKgZ,MAAQhZ,KAAK8Z,MAAMC,EAAK/Z,KAAK+X,eAC9DxN,EAAQvK,KAAKukB,SAAS7X,EAAK,EAAG,GAC9BkQ,EAAc5c,KAAKukB,SAAS7X,EAAK,EAAG,KAItCkX,EAAIO,UAAY,EAChBP,EAAIY,YAAc5H,EAClBgH,EAAIiB,UAAYta,EAChBqZ,EAAIa,YACJb,EAAI6E,IAAInY,EAAM4P,OAAO/P,EAAGG,EAAM4P,OAAO9P,EAAGoY,EAAQ,EAAW,EAAR5jB,KAAK8jB,IAAM,GAC9D9E,EAAInH,OACJmH,EAAIlH,YAQR3b,EAAQwQ,UAAUiS,eAAiB,WACjC,GAEIte,GAAGyjB,EAAGC,EAASC,EAFfzM,EAASpc,KAAKmc,MAAMC,OACpBwH,EAAMxH,EAAOyH,WAAW,KAG5B,MAAwB3d,SAApBlG,KAAKoY,YAA4BpY,KAAKoY,WAAW/S,QAAU,GAA/D,CAIA,IAAKH,EAAI,EAAGA,EAAIlF,KAAKoY,WAAW/S,OAAQH,IAAK,CAC3C,GAAI+a,GAAQjgB,KAAKua,2BAA2Bva,KAAKoY,WAAWlT,GAAGoL,OAC3D4P,EAASlgB,KAAKwa,4BAA4ByF,EAC9CjgB,MAAKoY,WAAWlT,GAAG+a,MAAQA,EAC3BjgB,KAAKoY,WAAWlT,GAAGgb,OAASA,CAG5B,IAAI8H,GAAchoB,KAAKua,2BAA2Bva,KAAKoY,WAAWlT,GAAGib,OACrEngB,MAAKoY,WAAWlT,GAAG+iB,KAAOjoB,KAAKyX,gBAAkBuQ,EAAY3iB,UAAY2iB,EAAYjO,EAIvF,GAAImO,GAAY,SAAUjjB,EAAGa,GAC3B,MAAOA,GAAEmiB,KAAOhjB,EAAEgjB,KAEpBjoB,MAAKoY,WAAW/D,KAAK6T,EAGrB,IAAIY,GAAS9oB,KAAKqZ,UAAY,EAC1B0P,EAAS/oB,KAAKsZ,UAAY,CAC9B,KAAKpU,EAAI,EAAGA,EAAIlF,KAAKoY,WAAW/S,OAAQH,IAAK,CAC3C,GAGIwH,GAAKnC,EAAOqS,EAHZtM,EAAQtQ,KAAKoY,WAAWlT,EAIxBlF,MAAKwQ,QAAUzP,EAAQwW,MAAMyF,UAE/BtQ,EAAqE,KAA9D,GAAK4D,EAAMA,MAAMzJ,MAAQ7G,KAAKmZ,UAAYnZ,KAAK8Z,MAAMjT,OAC5D0D,EAAQvK,KAAKukB,SAAS7X,EAAK,EAAG,GAC9BkQ,EAAc5c,KAAKukB,SAAS7X,EAAK,EAAG,KAE7B1M,KAAKwQ,QAAUzP,EAAQwW,MAAM0F,SACpC1S,EAAQvK,KAAKyZ,SACbmD,EAAc5c,KAAK0Z,iBAInBhN,EAA+E,KAAxE,GAAK4D,EAAMA,MAAMyJ,EAAI/Z,KAAKgZ,MAAQhZ,KAAK8Z,MAAMC,EAAK/Z,KAAK+X,eAC9DxN,EAAQvK,KAAKukB,SAAS7X,EAAK,EAAG,GAC9BkQ,EAAc5c,KAAKukB,SAAS7X,EAAK,EAAG,KAIlC1M,KAAKwQ,QAAUzP,EAAQwW,MAAM0F,UAC/B6L,EAAU9oB,KAAKqZ,UAAY,IAAO/I,EAAMA,MAAMzJ,MAAQ7G,KAAKmZ,WAAanZ,KAAKoZ,SAAWpZ,KAAKmZ,UAAY,GAAM,IAC/G4P,EAAU/oB,KAAKsZ,UAAY,IAAOhJ,EAAMA,MAAMzJ,MAAQ7G,KAAKmZ,WAAanZ,KAAKoZ,SAAWpZ,KAAKmZ,UAAY,GAAM,IAIjH,IAAI/G,GAAKpS,KACLqa,EAAU/J,EAAMA,MAChBjJ,IACDiJ,MAAO,GAAIlP,GAAQiZ,EAAQlK,EAAI2Y,EAAQzO,EAAQjK,EAAI2Y,EAAQ1O,EAAQN,KACnEzJ,MAAO,GAAIlP,GAAQiZ,EAAQlK,EAAI2Y,EAAQzO,EAAQjK,EAAI2Y,EAAQ1O,EAAQN,KACnEzJ,MAAO,GAAIlP,GAAQiZ,EAAQlK,EAAI2Y,EAAQzO,EAAQjK,EAAI2Y,EAAQ1O,EAAQN,KACnEzJ,MAAO,GAAIlP,GAAQiZ,EAAQlK,EAAI2Y,EAAQzO,EAAQjK,EAAI2Y,EAAQ1O,EAAQN,KAElEoG,IACD7P,MAAO,GAAIlP,GAAQiZ,EAAQlK,EAAI2Y,EAAQzO,EAAQjK,EAAI2Y,EAAQ/oB,KAAKgZ,QAChE1I,MAAO,GAAIlP,GAAQiZ,EAAQlK,EAAI2Y,EAAQzO,EAAQjK,EAAI2Y,EAAQ/oB,KAAKgZ,QAChE1I,MAAO,GAAIlP,GAAQiZ,EAAQlK,EAAI2Y,EAAQzO,EAAQjK,EAAI2Y,EAAQ/oB,KAAKgZ,QAChE1I,MAAO,GAAIlP,GAAQiZ,EAAQlK,EAAI2Y,EAAQzO,EAAQjK,EAAI2Y,EAAQ/oB,KAAKgZ,OAInE3R,GAAIY,QAAQ,SAAU4X,GACpBA,EAAIK,OAAS9N,EAAGgI,eAAeyF,EAAIvP,SAErC6P,EAAOlY,QAAQ,SAAU4X,GACvBA,EAAIK,OAAS9N,EAAGgI,eAAeyF,EAAIvP,QAIrC,IAAI0Y,KACDH,QAASxhB,EAAK4hB,OAAQ7nB,EAAQ8nB,IAAI/I,EAAO,GAAG7P,MAAO6P,EAAO,GAAG7P,SAC7DuY,SAAUxhB,EAAI,GAAIA,EAAI,GAAI8Y,EAAO,GAAIA,EAAO,IAAK8I,OAAQ7nB,EAAQ8nB,IAAI/I,EAAO,GAAG7P,MAAO6P,EAAO,GAAG7P,SAChGuY,SAAUxhB,EAAI,GAAIA,EAAI,GAAI8Y,EAAO,GAAIA,EAAO,IAAK8I,OAAQ7nB,EAAQ8nB,IAAI/I,EAAO,GAAG7P,MAAO6P,EAAO,GAAG7P,SAChGuY,SAAUxhB,EAAI,GAAIA,EAAI,GAAI8Y,EAAO,GAAIA,EAAO,IAAK8I,OAAQ7nB,EAAQ8nB,IAAI/I,EAAO,GAAG7P,MAAO6P,EAAO,GAAG7P,SAChGuY,SAAUxhB,EAAI,GAAIA,EAAI,GAAI8Y,EAAO,GAAIA,EAAO,IAAK8I,OAAQ7nB,EAAQ8nB,IAAI/I,EAAO,GAAG7P,MAAO6P,EAAO,GAAG7P,QAKnG,KAHAA,EAAM0Y,SAAWA,EAGZL,EAAI,EAAGA,EAAIK,EAAS3jB,OAAQsjB,IAAK,CACpCC,EAAUI,EAASL,EACnB,IAAIQ,GAAcnpB,KAAKua,2BAA2BqO,EAAQK,OAC1DL,GAAQX,KAAOjoB,KAAKyX,gBAAkB0R,EAAY9jB,UAAY8jB,EAAYpP,EAwB5E,IAjBAiP,EAAS3U,KAAK,SAAUpP,EAAGa,GACzB,GAAIsjB,GAAOtjB,EAAEmiB,KAAOhjB,EAAEgjB,IACtB,OAAImB,GAAaA,EAGbnkB,EAAE4jB,UAAYxhB,EAAY,EAC1BvB,EAAE+iB,UAAYxhB,EAAY,GAGvB,IAITuc,EAAIO,UAAY,EAChBP,EAAIY,YAAc5H,EAClBgH,EAAIiB,UAAYta,EAEXoe,EAAI,EAAGA,EAAIK,EAAS3jB,OAAQsjB,IAC/BC,EAAUI,EAASL,GACnBE,EAAUD,EAAQC,QAClBjF,EAAIa,YACJb,EAAIc,OAAOmE,EAAQ,GAAG3I,OAAO/P,EAAG0Y,EAAQ,GAAG3I,OAAO9P,GAClDwT,EAAIe,OAAOkE,EAAQ,GAAG3I,OAAO/P,EAAG0Y,EAAQ,GAAG3I,OAAO9P,GAClDwT,EAAIe,OAAOkE,EAAQ,GAAG3I,OAAO/P,EAAG0Y,EAAQ,GAAG3I,OAAO9P,GAClDwT,EAAIe,OAAOkE,EAAQ,GAAG3I,OAAO/P,EAAG0Y,EAAQ,GAAG3I,OAAO9P,GAClDwT,EAAIe,OAAOkE,EAAQ,GAAG3I,OAAO/P,EAAG0Y,EAAQ,GAAG3I,OAAO9P,GAClDwT,EAAInH,OACJmH,EAAIlH,YAUV3b,EAAQwQ,UAAUgS,gBAAkB,WAClC,GAEEjT,GAAOpL,EAFLkX,EAASpc,KAAKmc,MAAMC,OACtBwH,EAAMxH,EAAOyH,WAAW,KAG1B,MAAwB3d,SAApBlG,KAAKoY,YAA4BpY,KAAKoY,WAAW/S,QAAU,GAA/D,CAIA,IAAKH,EAAI,EAAGA,EAAIlF,KAAKoY,WAAW/S,OAAQH,IAAK,CAC3C,GAAI+a,GAAQjgB,KAAKua,2BAA2Bva,KAAKoY,WAAWlT,GAAGoL,OAC3D4P,EAASlgB,KAAKwa,4BAA4ByF,EAE9CjgB,MAAKoY,WAAWlT,GAAG+a,MAAQA,EAC3BjgB,KAAKoY,WAAWlT,GAAGgb,OAASA,EAc9B,IAVIlgB,KAAKoY,WAAW/S,OAAS,IAC3BiL,EAAQtQ,KAAKoY,WAAW,GAExBwL,EAAIO,UAAY,EAChBP,EAAIY,YAAc,OAClBZ,EAAIa,YACJb,EAAIc,OAAOpU,EAAM4P,OAAO/P,EAAGG,EAAM4P,OAAO9P,IAIrClL,EAAI,EAAGA,EAAIlF,KAAKoY,WAAW/S,OAAQH,IACtCoL,EAAQtQ,KAAKoY,WAAWlT,GACxB0e,EAAIe,OAAOrU,EAAM4P,OAAO/P,EAAGG,EAAM4P,OAAO9P,EAItCpQ,MAAKoY,WAAW/S,OAAS,GAC3Bue,EAAIlH,WASR3b,EAAQwQ,UAAUyP,aAAe,SAAS9X,GAWxC,GAVAA,EAAQA,GAAShC,OAAOgC,MAIpBlJ,KAAKqpB,gBACPrpB,KAAKspB,WAAWpgB,GAIlBlJ,KAAKqpB,eAAiBngB,EAAMqgB,MAAyB,IAAhBrgB,EAAMqgB,MAAiC,IAAjBrgB,EAAMsgB,OAC5DxpB,KAAKqpB,gBAAmBrpB,KAAKypB,UAAlC,CAGAzpB,KAAK0pB,YAAcC,UAAUzgB,GAC7BlJ,KAAK4pB,YAAcC,UAAU3gB,GAE7BlJ,KAAK8pB,WAAa,GAAI9lB,MAAKhE,KAAK0O,OAChC1O,KAAK+pB,SAAW,GAAI/lB,MAAKhE,KAAKmlB,KAC9BnlB,KAAKgqB,iBAAmBhqB,KAAKkY,OAAOyK,iBAEpC3iB,KAAKmc,MAAM3L,MAAMyZ,OAAS,MAK1B,IAAI7X,GAAKpS,IACTA,MAAKkqB,YAAc,SAAUhhB,GAAQkJ,EAAG+X,aAAajhB,IACrDlJ,KAAKoqB,UAAc,SAAUlhB,GAAQkJ,EAAGkX,WAAWpgB,IACnDvI,EAAK4H,iBAAiBqH,SAAU,YAAawC,EAAG8X,aAChDvpB,EAAK4H,iBAAiBqH,SAAU,UAAWwC,EAAGgY,WAC9CzpB,EAAKsI,eAAeC,KAStBnI,EAAQwQ,UAAU4Y,aAAe,SAAUjhB,GACzCA,EAAQA,GAAShC,OAAOgC,KAGxB,IAAImhB,GAAQnI,WAAWyH,UAAUzgB,IAAUlJ,KAAK0pB,YAC5CY,EAAQpI,WAAW2H,UAAU3gB,IAAUlJ,KAAK4pB,YAE5CW,EAAgBvqB,KAAKgqB,iBAAiB3H,WAAagI,EAAQ,IAC3DG,EAAcxqB,KAAKgqB,iBAAiB1H,SAAWgI,EAAQ,IAEvDG,EAAY,EACZC,EAAY9lB,KAAKqW,IAAIwP,EAAY,IAAM,EAAI7lB,KAAK8jB,GAIhD9jB,MAAK+iB,IAAI/iB,KAAKqW,IAAIsP,IAAkBG,IACtCH,EAAgB3lB,KAAK+lB,MAAOJ,EAAgB3lB,KAAK8jB,IAAO9jB,KAAK8jB,GAAK,MAEhE9jB,KAAK+iB,IAAI/iB,KAAKwW,IAAImP,IAAkBG,IACtCH,GAAiB3lB,KAAK+lB,MAAOJ,EAAe3lB,KAAK8jB,GAAK,IAAQ,IAAO9jB,KAAK8jB,GAAK,MAI7E9jB,KAAK+iB,IAAI/iB,KAAKqW,IAAIuP,IAAgBE,IACpCF,EAAc5lB,KAAK+lB,MAAOH,EAAc5lB,KAAK8jB,IAAO9jB,KAAK8jB,IAEvD9jB,KAAK+iB,IAAI/iB,KAAKwW,IAAIoP,IAAgBE,IACpCF,GAAe5lB,KAAK+lB,MAAOH,EAAa5lB,KAAK8jB,GAAK,IAAQ,IAAO9jB,KAAK8jB,IAGxE1oB,KAAKkY,OAAOqK,eAAegI,EAAeC,GAC1CxqB,KAAKse,QAGL,IAAIsM,GAAa5qB,KAAK0iB,mBACtB1iB,MAAK6qB,KAAK,uBAAwBD,GAElCjqB,EAAKsI,eAAeC,IAStBnI,EAAQwQ,UAAU+X,WAAa,SAAUpgB,GACvClJ,KAAKmc,MAAM3L,MAAMyZ,OAAS,OAC1BjqB,KAAKqpB,gBAAiB,EAGtB1oB,EAAKoI,oBAAoB6G,SAAU,YAAa5P,KAAKkqB,aACrDvpB,EAAKoI,oBAAoB6G,SAAU,UAAa5P,KAAKoqB,WACrDzpB,EAAKsI,eAAeC,IAOtBnI,EAAQwQ,UAAU+P,WAAa,SAAUpY,GACvC,GAAI4hB,GAAQ,IACRC,EAASpB,UAAUzgB,GAASvI,EAAKmG,gBAAgB9G,KAAKmc,OACtD6O,EAASnB,UAAU3gB,GAASvI,EAAKyG,eAAepH,KAAKmc,MAEzD,IAAKnc,KAAK8X,YAAV,CASA,GALI9X,KAAKirB,gBACPC,aAAalrB,KAAKirB,gBAIhBjrB,KAAKqpB,eAEP,WADArpB,MAAKmrB,cAIP,IAAInrB,KAAKijB,SAAWjjB,KAAKijB,QAAQmI,UAAW,CAE1C,GAAIA,GAAYprB,KAAKqrB,iBAAiBN,EAAQC,EAC1CI,KAAcprB,KAAKijB,QAAQmI,YAEzBA,EACFprB,KAAKsrB,aAAaF,GAGlBprB,KAAKmrB,oBAIN,CAEH,GAAI/Y,GAAKpS,IACTA,MAAKirB,eAAiBM,WAAW,WAC/BnZ,EAAG6Y,eAAiB,IAGpB,IAAIG,GAAYhZ,EAAGiZ,iBAAiBN,EAAQC,EACxCI,IACFhZ,EAAGkZ,aAAaF,IAEjBN,MAOP/pB,EAAQwQ,UAAU2P,cAAgB,SAAShY,GACzClJ,KAAKypB,WAAY,CAEjB,IAAIrX,GAAKpS,IACTA,MAAKwrB,YAAc,SAAUtiB,GAAQkJ,EAAGqZ,aAAaviB,IACrDlJ,KAAK0rB,WAAc,SAAUxiB,GAAQkJ,EAAGuZ,YAAYziB,IACpDvI,EAAK4H,iBAAiBqH,SAAU,YAAawC,EAAGoZ,aAChD7qB,EAAK4H,iBAAiBqH,SAAU,WAAYwC,EAAGsZ,YAE/C1rB,KAAKghB,aAAa9X,IAMpBnI,EAAQwQ,UAAUka,aAAe,SAASviB,GACxClJ,KAAKmqB,aAAajhB,IAMpBnI,EAAQwQ,UAAUoa,YAAc,SAASziB,GACvClJ,KAAKypB,WAAY,EAEjB9oB,EAAKoI,oBAAoB6G,SAAU,YAAa5P,KAAKwrB,aACrD7qB,EAAKoI,oBAAoB6G,SAAU,WAAc5P,KAAK0rB,YAEtD1rB,KAAKspB,WAAWpgB,IASlBnI,EAAQwQ,UAAU6P,SAAW,SAASlY,GAC/BA,IACHA,EAAQhC,OAAOgC,MAGjB,IAAI0iB,GAAQ,CAYZ,IAXI1iB,EAAM2iB,WACRD,EAAQ1iB,EAAM2iB,WAAW,IAChB3iB,EAAM4iB,SAGfF,GAAS1iB,EAAM4iB,OAAO,GAMpBF,EAAO,CACT,GAAIG,GAAY/rB,KAAKkY,OAAO+D,eACxB+P,EAAYD,GAAa,EAAIH,EAAQ,GAEzC5rB,MAAKkY,OAAOuK,aAAauJ,GACzBhsB,KAAKse,SAELte,KAAKmrB,eAIP,GAAIP,GAAa5qB,KAAK0iB,mBACtB1iB,MAAK6qB,KAAK,uBAAwBD,GAKlCjqB,EAAKsI,eAAeC,IAUtBnI,EAAQwQ,UAAU0a,gBAAkB,SAAU3b,EAAO4b,GAKnD,QAASC,GAAMhc,GACb,MAAOA,GAAI,EAAI,EAAQ,EAAJA,EAAQ,GAAK,EALlC,GAAIlL,GAAIinB,EAAS,GACfpmB,EAAIomB,EAAS,GACbzrB,EAAIyrB,EAAS,GAMXE,EAAKD,GAAMrmB,EAAEqK,EAAIlL,EAAEkL,IAAMG,EAAMF,EAAInL,EAAEmL,IAAMtK,EAAEsK,EAAInL,EAAEmL,IAAME,EAAMH,EAAIlL,EAAEkL,IACrEkc,EAAKF,GAAM1rB,EAAE0P,EAAIrK,EAAEqK,IAAMG,EAAMF,EAAItK,EAAEsK,IAAM3P,EAAE2P,EAAItK,EAAEsK,IAAME,EAAMH,EAAIrK,EAAEqK,IACrEmc,EAAKH,GAAMlnB,EAAEkL,EAAI1P,EAAE0P,IAAMG,EAAMF,EAAI3P,EAAE2P,IAAMnL,EAAEmL,EAAI3P,EAAE2P,IAAME,EAAMH,EAAI1P,EAAE0P,GAGzE,SAAc,GAANic,GAAiB,GAANC,GAAWD,GAAMC,GAC3B,GAANA,GAAiB,GAANC,GAAWD,GAAMC,GACtB,GAANF,GAAiB,GAANE,GAAWF,GAAME,IAUjCvrB,EAAQwQ,UAAU8Z,iBAAmB,SAAUlb,EAAGC,GAChD,GAAIlL,GACFqnB,EAAU,IACVnB,EAAY,KACZoB,EAAmB,KACnBC,EAAc,KACdxD,EAAS,GAAI9nB,GAAQgP,EAAGC,EAE1B,IAAIpQ,KAAKwQ,QAAUzP,EAAQwW,MAAMwF,KAC/B/c,KAAKwQ,QAAUzP,EAAQwW,MAAMyF,UAC7Bhd,KAAKwQ,QAAUzP,EAAQwW,MAAM0F,QAE7B,IAAK/X,EAAIlF,KAAKoY,WAAW/S,OAAS,EAAGH,GAAK,EAAGA,IAAK,CAChDkmB,EAAYprB,KAAKoY,WAAWlT,EAC5B,IAAI8jB,GAAYoC,EAAUpC,QAC1B,IAAIA,EACF,IAAK,GAAIne,GAAIme,EAAS3jB,OAAS,EAAGwF,GAAK,EAAGA,IAAK,CAE7C,GAAI+d,GAAUI,EAASne,GACnBge,EAAUD,EAAQC,QAClB6D,GAAa7D,EAAQ,GAAG3I,OAAQ2I,EAAQ,GAAG3I,OAAQ2I,EAAQ,GAAG3I,QAC9DyM,GAAa9D,EAAQ,GAAG3I,OAAQ2I,EAAQ,GAAG3I,OAAQ2I,EAAQ,GAAG3I,OAClE,IAAIlgB,KAAKisB,gBAAgBhD,EAAQyD,IAC/B1sB,KAAKisB,gBAAgBhD,EAAQ0D,GAE7B,MAAOvB,QAQf,KAAKlmB,EAAI,EAAGA,EAAIlF,KAAKoY,WAAW/S,OAAQH,IAAK,CAC3CkmB,EAAYprB,KAAKoY,WAAWlT,EAC5B,IAAIoL,GAAQ8a,EAAUlL,MACtB,IAAI5P,EAAO,CACT,GAAIsc,GAAQhoB,KAAK+iB,IAAIxX,EAAIG,EAAMH,GAC3B0c,EAAQjoB,KAAK+iB,IAAIvX,EAAIE,EAAMF,GAC3B6X,EAAQrjB,KAAKkoB,KAAKF,EAAQA,EAAQC,EAAQA,IAEzB,OAAhBJ,GAA+BA,EAAPxE,IAA8BsE,EAAPtE,IAClDwE,EAAcxE,EACduE,EAAmBpB,IAO3B,MAAOoB,IAQTzrB,EAAQwQ,UAAU+Z,aAAe,SAAUF,GACzC,GAAI2B,GAASC,EAAMC,CAEdjtB,MAAKijB,SAiCR8J,EAAU/sB,KAAKijB,QAAQiK,IAAIH,QAC3BC,EAAQhtB,KAAKijB,QAAQiK,IAAIF,KACzBC,EAAQjtB,KAAKijB,QAAQiK,IAAID,MAlCzBF,EAAUnd,SAASK,cAAc,OACjC8c,EAAQvc,MAAMiQ,SAAW,WACzBsM,EAAQvc,MAAMqQ,QAAU,OACxBkM,EAAQvc,MAAMnF,OAAS,oBACvB0hB,EAAQvc,MAAMjG,MAAQ,UACtBwiB,EAAQvc,MAAMpF,WAAa,wBAC3B2hB,EAAQvc,MAAM2c,aAAe,MAC7BJ,EAAQvc,MAAM4c,UAAY,qCAE1BJ,EAAOpd,SAASK,cAAc,OAC9B+c,EAAKxc,MAAMiQ,SAAW,WACtBuM,EAAKxc,MAAMK,OAAS,OACpBmc,EAAKxc,MAAMI,MAAQ,IACnBoc,EAAKxc,MAAM6c,WAAa,oBAExBJ,EAAMrd,SAASK,cAAc,OAC7Bgd,EAAIzc,MAAMiQ,SAAW,WACrBwM,EAAIzc,MAAMK,OAAS,IACnBoc,EAAIzc,MAAMI,MAAQ,IAClBqc,EAAIzc,MAAMnF,OAAS,oBACnB4hB,EAAIzc,MAAM2c,aAAe,MAEzBntB,KAAKijB,SACHmI,UAAW,KACX8B,KACEH,QAASA,EACTC,KAAMA,EACNC,IAAKA,KAUXjtB,KAAKmrB,eAELnrB,KAAKijB,QAAQmI,UAAYA,EAEvB2B,EAAQjM,UADsB,kBAArB9gB,MAAK8X,YACM9X,KAAK8X,YAAYsT,EAAU9a,OAG3B,6BACM8a,EAAU9a,MAAMH,EAAI,gCACpBib,EAAU9a,MAAMF,EAAI,gCACpBgb,EAAU9a,MAAMyJ,EAAI,qBAIhDgT,EAAQvc,MAAMvJ,KAAQ,IACtB8lB,EAAQvc,MAAMnJ,IAAQ,IACtBrH,KAAKmc,MAAMrM,YAAYid,GACvB/sB,KAAKmc,MAAMrM,YAAYkd,GACvBhtB,KAAKmc,MAAMrM,YAAYmd,EAGvB,IAAIK,GAAgBP,EAAQQ,YACxBC,EAAkBT,EAAQU,aAC1BC,EAAgBV,EAAKS,aACrBE,EAAcV,EAAIM,YAClBK,EAAgBX,EAAIQ,aAEpBxmB,EAAOmkB,EAAUlL,OAAO/P,EAAImd,EAAe,CAC/CrmB,GAAOrC,KAAKmG,IAAInG,KAAK6H,IAAIxF,EAAM,IAAKjH,KAAKmc,MAAME,YAAc,GAAKiR,GAElEN,EAAKxc,MAAMvJ,KAASmkB,EAAUlL,OAAO/P,EAAI,KACzC6c,EAAKxc,MAAMnJ,IAAU+jB,EAAUlL,OAAO9P,EAAIsd,EAAc,KACxDX,EAAQvc,MAAMvJ,KAAQA,EAAO,KAC7B8lB,EAAQvc,MAAMnJ,IAAS+jB,EAAUlL,OAAO9P,EAAIsd,EAAaF,EAAiB,KAC1EP,EAAIzc,MAAMvJ,KAAWmkB,EAAUlL,OAAO/P,EAAIwd,EAAW,EAAK,KAC1DV,EAAIzc,MAAMnJ,IAAW+jB,EAAUlL,OAAO9P,EAAIwd,EAAY,EAAK,MAO7D7sB,EAAQwQ,UAAU4Z,aAAe,WAC/B,GAAInrB,KAAKijB,QAAS,CAChBjjB,KAAKijB,QAAQmI,UAAY,IAEzB,KAAK,GAAI7lB,KAAQvF,MAAKijB,QAAQiK,IAC5B,GAAIltB,KAAKijB,QAAQiK,IAAI1nB,eAAeD,GAAO,CACzC,GAAIwB,GAAO/G,KAAKijB,QAAQiK,IAAI3nB,EACxBwB,IAAQA,EAAKyC,YACfzC,EAAKyC,WAAWgG,YAAYzI,MAetC4iB,UAAY,SAASzgB,GACnB,MAAI,WAAaA,GAAcA,EAAM2kB,QAC9B3kB,EAAM4kB,cAAc,IAAM5kB,EAAM4kB,cAAc,GAAGD,SAAW,GAQrEhE,UAAY,SAAS3gB,GACnB,MAAI,WAAaA,GAAcA,EAAM6kB,QAC9B7kB,EAAM4kB,cAAc,IAAM5kB,EAAM4kB,cAAc,GAAGC,SAAW,GAGrEluB,EAAOD,QAAUmB,GAKb,SAASlB,EAAQD,EAASM,GAE9B,GAAIkB,GAAUlB,EAAoB,EAYlCe,QAAS,WACPjB,KAAKguB,YAAc,GAAI5sB,GACvBpB,KAAKiuB,eACLjuB,KAAKiuB,YAAY5L,WAAa,EAC9BriB,KAAKiuB,YAAY3L,SAAW,EAC5BtiB,KAAKkuB,UAAY,IAEjBluB,KAAKmuB,eAAiB,GAAI/sB,GAC1BpB,KAAKouB,eAAkB,GAAIhtB,GAAQ,GAAIwD,KAAK8jB,GAAI,EAAG,GAEnD1oB,KAAKquB,8BASPptB,OAAOsQ,UAAU4I,eAAiB,SAAShK,EAAGC,EAAG2J,GAC/C/Z,KAAKguB,YAAY7d,EAAIA,EACrBnQ,KAAKguB,YAAY5d,EAAIA,EACrBpQ,KAAKguB,YAAYjU,EAAIA,EAErB/Z,KAAKquB,8BAWPptB,OAAOsQ,UAAUgR,eAAiB,SAASF,EAAYC,GAClCpc,SAAfmc,IACFriB,KAAKiuB,YAAY5L,WAAaA,GAGfnc,SAAboc,IACFtiB,KAAKiuB,YAAY3L,SAAWA,EACxBtiB,KAAKiuB,YAAY3L,SAAW,IAAGtiB,KAAKiuB,YAAY3L,SAAW,GAC3DtiB,KAAKiuB,YAAY3L,SAAW,GAAI1d,KAAK8jB,KAAI1oB,KAAKiuB,YAAY3L,SAAW,GAAI1d,KAAK8jB,MAGjExiB,SAAfmc,GAAyCnc,SAAboc,IAC9BtiB,KAAKquB,8BAQTptB,OAAOsQ,UAAUoR,eAAiB,WAChC,GAAI2L,KAIJ,OAHAA,GAAIjM,WAAariB,KAAKiuB,YAAY5L,WAClCiM,EAAIhM,SAAWtiB,KAAKiuB,YAAY3L,SAEzBgM,GAOTrtB,OAAOsQ,UAAUkR,aAAe,SAASpd,GACxBa,SAAXb,IAGJrF,KAAKkuB,UAAY7oB,EAKbrF,KAAKkuB,UAAY,MAAMluB,KAAKkuB,UAAY,KACxCluB,KAAKkuB,UAAY,IAAKluB,KAAKkuB,UAAY,GAE3CluB,KAAKquB,+BAOPptB,OAAOsQ,UAAU0K,aAAe,WAC9B,MAAOjc,MAAKkuB,WAOdjtB,OAAOsQ,UAAUsJ,kBAAoB,WACnC,MAAO7a,MAAKmuB,gBAOdltB,OAAOsQ,UAAU2J,kBAAoB,WACnC,MAAOlb,MAAKouB,gBAOdntB,OAAOsQ,UAAU8c,2BAA6B,WAE5CruB,KAAKmuB,eAAehe,EAAInQ,KAAKguB,YAAY7d,EAAInQ,KAAKkuB,UAAYtpB,KAAKqW,IAAIjb,KAAKiuB,YAAY5L,YAAczd,KAAKwW,IAAIpb,KAAKiuB,YAAY3L,UAChItiB,KAAKmuB,eAAe/d,EAAIpQ,KAAKguB,YAAY5d,EAAIpQ,KAAKkuB,UAAYtpB,KAAKwW,IAAIpb,KAAKiuB,YAAY5L,YAAczd,KAAKwW,IAAIpb,KAAKiuB,YAAY3L,UAChItiB,KAAKmuB,eAAepU,EAAI/Z,KAAKguB,YAAYjU,EAAI/Z,KAAKkuB,UAAYtpB,KAAKqW,IAAIjb,KAAKiuB,YAAY3L,UAGxFtiB,KAAKouB,eAAeje,EAAIvL,KAAK8jB,GAAG,EAAI1oB,KAAKiuB,YAAY3L,SACrDtiB,KAAKouB,eAAehe,EAAI,EACxBpQ,KAAKouB,eAAerU,GAAK/Z,KAAKiuB,YAAY5L,YAG5CxiB,EAAOD,QAAUqB,QAIb,SAASpB,EAAQD,EAASM,GAW9B,QAASgB,GAAQ6P,EAAM6M,EAAQ2Q,GAC7BvuB,KAAK+Q,KAAOA,EACZ/Q,KAAK4d,OAASA,EACd5d,KAAKuuB,MAAQA,EAEbvuB,KAAK+H,MAAQ7B,OACblG,KAAK6G,MAAQX,OAGblG,KAAKkV,OAASqZ,EAAM1Q,kBAAkB9M,EAAKoC,MAAOnT,KAAK4d,QAGvD5d,KAAKkV,OAAOb,KAAK,SAAUpP,EAAGa,GAC5B,MAAOb,GAAIa,EAAI,EAAQA,EAAJb,EAAQ,GAAK,IAG9BjF,KAAKkV,OAAO7P,OAAS,GACvBrF,KAAK6lB,YAAY,GAInB7lB,KAAKoY,cAELpY,KAAKM,QAAS,EACdN,KAAKwuB,eAAiBtoB,OAElBqoB,EAAMtW,kBACRjY,KAAKM,QAAS,EACdN,KAAKyuB,oBAGLzuB,KAAKM,QAAS,EAxClB,GAAIQ,GAAWZ,EAAoB,EAiDnCgB,GAAOqQ,UAAUmd,SAAW,WAC1B,MAAO1uB,MAAKM,QAQdY,EAAOqQ,UAAUod,kBAAoB,WAInC,IAHA,GAAIxpB,GAAMnF,KAAKkV,OAAO7P,OAElBH,EAAI,EACDlF,KAAKoY,WAAWlT,IACrBA,GAGF,OAAON,MAAK+lB,MAAMzlB,EAAIC,EAAM,MAQ9BjE,EAAOqQ,UAAUyU,SAAW,WAC1B,MAAOhmB,MAAKuuB,MAAMlX,aAQpBnW,EAAOqQ,UAAUqd,UAAY,WAC3B,MAAO5uB,MAAK4d,QAOd1c,EAAOqQ,UAAU0U,iBAAmB,WAClC,MAAmB/f,UAAflG,KAAK+H,MACA7B,OAEFlG,KAAKkV,OAAOlV,KAAK+H,QAO1B7G,EAAOqQ,UAAUsd,UAAY,WAC3B,MAAO7uB,MAAKkV,QAQdhU,EAAOqQ,UAAUuB,SAAW,SAAS/K,GACnC,GAAIA,GAAS/H,KAAKkV,OAAO7P,OACvB,KAAM,2BAER,OAAOrF,MAAKkV,OAAOnN,IASrB7G,EAAOqQ,UAAUoO,eAAiB,SAAS5X,GAIzC,GAHc7B,SAAV6B,IACFA,EAAQ/H,KAAK+H,OAED7B,SAAV6B,EACF,QAEF,IAAIqQ,EACJ,IAAIpY,KAAKoY,WAAWrQ,GAClBqQ,EAAapY,KAAKoY,WAAWrQ,OAE1B,CACH,GAAIgE,KACJA,GAAE6R,OAAS5d,KAAK4d,OAChB7R,EAAElF,MAAQ7G,KAAKkV,OAAOnN,EAEtB,IAAI+mB,GAAW,GAAIhuB,GAASd,KAAK+Q,MAAMa,OAAQ,SAAUe,GAAO,MAAQA,GAAK5G,EAAE6R,SAAW7R,EAAElF,SAAWsM,KACvGiF,GAAapY,KAAKuuB,MAAM5O,eAAemP,GAEvC9uB,KAAKoY,WAAWrQ,GAASqQ,EAG3B,MAAOA,IAQTlX,EAAOqQ,UAAU8M,kBAAoB,SAASnW,GAC5ClI,KAAKwuB,eAAiBtmB,GASxBhH,EAAOqQ,UAAUsU,YAAc,SAAS9d,GACtC,GAAIA,GAAS/H,KAAKkV,OAAO7P,OACvB,KAAM,2BAERrF,MAAK+H,MAAQA,EACb/H,KAAK6G,MAAQ7G,KAAKkV,OAAOnN,IAO3B7G,EAAOqQ,UAAUkd,iBAAmB,SAAS1mB,GAC7B7B,SAAV6B,IACFA,EAAQ,EAEV,IAAIoU,GAAQnc,KAAKuuB,MAAMpS,KAEvB,IAAIpU,EAAQ/H,KAAKkV,OAAO7P,OAAQ,CAC9B,CAAqBrF,KAAK2f,eAAe5X,GAIlB7B,SAAnBiW,EAAM4S,WACR5S,EAAM4S,SAAWnf,SAASK,cAAc,OACxCkM,EAAM4S,SAASve,MAAMiQ,SAAW,WAChCtE,EAAM4S,SAASve,MAAMjG,MAAQ,OAC7B4R,EAAMrM,YAAYqM,EAAM4S,UAE1B,IAAIA,GAAW/uB,KAAK2uB,mBACpBxS,GAAM4S,SAASjO,UAAY,wBAA0BiO,EAAW,IAEhE5S,EAAM4S,SAASve,MAAM2P,OAAS,OAC9BhE,EAAM4S,SAASve,MAAMvJ,KAAO,MAE5B,IAAImL,GAAKpS,IACTurB,YAAW,WAAYnZ,EAAGqc,iBAAiB1mB,EAAM,IAAM,IACvD/H,KAAKM,QAAS,MAGdN,MAAKM,QAAS,EAGS4F,SAAnBiW,EAAM4S,WACR5S,EAAM3M,YAAY2M,EAAM4S,UACxB5S,EAAM4S,SAAW7oB,QAGflG,KAAKwuB,gBACPxuB,KAAKwuB,kBAIX3uB,EAAOD,QAAUsB,GAKb,SAASrB,GAObsB,QAAU,SAAUgP,EAAGC,GACrBpQ,KAAKmQ,EAAUjK,SAANiK,EAAkBA,EAAI,EAC/BnQ,KAAKoQ,EAAUlK,SAANkK,EAAkBA,EAAI,GAGjCvQ,EAAOD,QAAUuB,SAKb,SAAStB,GAQb,QAASuB,GAAQ+O,EAAGC,EAAG2J,GACrB/Z,KAAKmQ,EAAUjK,SAANiK,EAAkBA,EAAI,EAC/BnQ,KAAKoQ,EAAUlK,SAANkK,EAAkBA,EAAI,EAC/BpQ,KAAK+Z,EAAU7T,SAAN6T,EAAkBA,EAAI,EASjC3Y,EAAQgnB,SAAW,SAASnjB,EAAGa,GAC7B,GAAIkpB,GAAM,GAAI5tB,EAId,OAHA4tB,GAAI7e,EAAIlL,EAAEkL,EAAIrK,EAAEqK,EAChB6e,EAAI5e,EAAInL,EAAEmL,EAAItK,EAAEsK,EAChB4e,EAAIjV,EAAI9U,EAAE8U,EAAIjU,EAAEiU,EACTiV,GAST5tB,EAAQkQ,IAAM,SAASrM,EAAGa,GACxB,GAAImpB,GAAM,GAAI7tB,EAId,OAHA6tB,GAAI9e,EAAIlL,EAAEkL,EAAIrK,EAAEqK,EAChB8e,EAAI7e,EAAInL,EAAEmL,EAAItK,EAAEsK,EAChB6e,EAAIlV,EAAI9U,EAAE8U,EAAIjU,EAAEiU,EACTkV,GAST7tB,EAAQ8nB,IAAM,SAASjkB,EAAGa,GACxB,MAAO,IAAI1E,IACF6D,EAAEkL,EAAIrK,EAAEqK,GAAK,GACblL,EAAEmL,EAAItK,EAAEsK,GAAK,GACbnL,EAAE8U,EAAIjU,EAAEiU,GAAK,IAWxB3Y,EAAQmnB,aAAe,SAAStjB,EAAGa,GACjC,GAAIwiB,GAAe,GAAIlnB,EAMvB,OAJAknB,GAAanY,EAAIlL,EAAEmL,EAAItK,EAAEiU,EAAI9U,EAAE8U,EAAIjU,EAAEsK,EACrCkY,EAAalY,EAAInL,EAAE8U,EAAIjU,EAAEqK,EAAIlL,EAAEkL,EAAIrK,EAAEiU,EACrCuO,EAAavO,EAAI9U,EAAEkL,EAAIrK,EAAEsK,EAAInL,EAAEmL,EAAItK,EAAEqK,EAE9BmY,GAQTlnB,EAAQmQ,UAAUlM,OAAS,WACzB,MAAOT,MAAKkoB,KACJ9sB,KAAKmQ,EAAInQ,KAAKmQ,EACdnQ,KAAKoQ,EAAIpQ,KAAKoQ,EACdpQ,KAAK+Z,EAAI/Z,KAAK+Z,IAIxBla,EAAOD,QAAUwB,GAKb,SAASvB,EAAQD,EAASM,GAa9B,QAASmB,GAAOuV,EAAWlJ,GACzB,GAAkBxH,SAAd0Q,EACF,KAAM,qCAKR,IAHA5W,KAAK4W,UAAYA,EACjB5W,KAAKwlB,QAAW9X,GAA8BxH,QAAnBwH,EAAQ8X,QAAwB9X,EAAQ8X,SAAU,EAEzExlB,KAAKwlB,QAAS,CAChBxlB,KAAKmc,MAAQvM,SAASK,cAAc,OAEpCjQ,KAAKmc,MAAM3L,MAAMI,MAAQ,OACzB5Q,KAAKmc,MAAM3L,MAAMiQ,SAAW,WAC5BzgB,KAAK4W,UAAU9G,YAAY9P,KAAKmc,OAEhCnc,KAAKmc,MAAM+S,KAAOtf,SAASK,cAAc,SACzCjQ,KAAKmc,MAAM+S,KAAK5oB,KAAO,SACvBtG,KAAKmc,MAAM+S,KAAKroB,MAAQ,OACxB7G,KAAKmc,MAAMrM,YAAY9P,KAAKmc,MAAM+S,MAElClvB,KAAKmc,MAAM0F,KAAOjS,SAASK,cAAc,SACzCjQ,KAAKmc,MAAM0F,KAAKvb,KAAO,SACvBtG,KAAKmc,MAAM0F,KAAKhb,MAAQ,OACxB7G,KAAKmc,MAAMrM,YAAY9P,KAAKmc,MAAM0F,MAElC7hB,KAAKmc,MAAM+I,KAAOtV,SAASK,cAAc,SACzCjQ,KAAKmc,MAAM+I,KAAK5e,KAAO,SACvBtG,KAAKmc,MAAM+I,KAAKre,MAAQ,OACxB7G,KAAKmc,MAAMrM,YAAY9P,KAAKmc,MAAM+I,MAElCllB,KAAKmc,MAAMgT,IAAMvf,SAASK,cAAc,SACxCjQ,KAAKmc,MAAMgT,IAAI7oB,KAAO,SACtBtG,KAAKmc,MAAMgT,IAAI3e,MAAMiQ,SAAW,WAChCzgB,KAAKmc,MAAMgT,IAAI3e,MAAMnF,OAAS,gBAC9BrL,KAAKmc,MAAMgT,IAAI3e,MAAMI,MAAQ,QAC7B5Q,KAAKmc,MAAMgT,IAAI3e,MAAMK,OAAS,MAC9B7Q,KAAKmc,MAAMgT,IAAI3e,MAAM2c,aAAe,MACpCntB,KAAKmc,MAAMgT,IAAI3e,MAAM4e,gBAAkB,MACvCpvB,KAAKmc,MAAMgT,IAAI3e,MAAMnF,OAAS,oBAC9BrL,KAAKmc,MAAMgT,IAAI3e,MAAMgM,gBAAkB,UACvCxc,KAAKmc,MAAMrM,YAAY9P,KAAKmc,MAAMgT,KAElCnvB,KAAKmc,MAAMkT,MAAQzf,SAASK,cAAc,SAC1CjQ,KAAKmc,MAAMkT,MAAM/oB,KAAO,SACxBtG,KAAKmc,MAAMkT,MAAM7e,MAAMuG,OAAS,MAChC/W,KAAKmc,MAAMkT,MAAMxoB,MAAQ,IACzB7G,KAAKmc,MAAMkT,MAAM7e,MAAMiQ,SAAW,WAClCzgB,KAAKmc,MAAMkT,MAAM7e,MAAMvJ,KAAO,SAC9BjH,KAAKmc,MAAMrM,YAAY9P,KAAKmc,MAAMkT,MAGlC,IAAIjd,GAAKpS,IACTA,MAAKmc,MAAMkT,MAAMtO,YAAc,SAAU7X,GAAQkJ,EAAG4O,aAAa9X,IACjElJ,KAAKmc,MAAM+S,KAAKI,QAAU,SAAUpmB,GAAQkJ,EAAG8c,KAAKhmB,IACpDlJ,KAAKmc,MAAM0F,KAAKyN,QAAU,SAAUpmB,GAAQkJ,EAAGmd,WAAWrmB,IAC1DlJ,KAAKmc,MAAM+I,KAAKoK,QAAU,SAAUpmB,GAAQkJ,EAAG8S,KAAKhc,IAGtDlJ,KAAKwvB,iBAAmBtpB,OAExBlG,KAAKkV,UACLlV,KAAK+H,MAAQ7B,OAEblG,KAAKyvB,YAAcvpB,OACnBlG,KAAK0vB,aAAe,IACpB1vB,KAAK2vB,UAAW,EA3ElB,GAAIhvB,GAAOT,EAAoB,EAiF/BmB,GAAOkQ,UAAU2d,KAAO,WACtB,GAAInnB,GAAQ/H,KAAK4lB,UACb7d,GAAQ,IACVA,IACA/H,KAAK4vB,SAAS7nB,KAOlB1G,EAAOkQ,UAAU2T,KAAO,WACtB,GAAInd,GAAQ/H,KAAK4lB,UACb7d,GAAQ/H,KAAKkV,OAAO7P,OAAS,IAC/B0C,IACA/H,KAAK4vB,SAAS7nB,KAOlB1G,EAAOkQ,UAAUse,SAAW,WAC1B,GAAInhB,GAAQ,GAAI1K,MAEZ+D,EAAQ/H,KAAK4lB,UACb7d;EAAQ/H,KAAKkV,OAAO7P,OAAS,GAC/B0C,IACA/H,KAAK4vB,SAAS7nB,IAEP/H,KAAK2vB,WAEZ5nB,EAAQ,EACR/H,KAAK4vB,SAAS7nB,GAGhB,IAAIod,GAAM,GAAInhB,MACVolB,EAAQjE,EAAMzW,EAIdohB,EAAWlrB,KAAK6H,IAAIzM,KAAK0vB,aAAetG,EAAM,GAG9ChX,EAAKpS,IACTA,MAAKyvB,YAAclE,WAAW,WAAYnZ,EAAGyd,YAAcC,IAM7DzuB,EAAOkQ,UAAUge,WAAa,WACHrpB,SAArBlG,KAAKyvB,YACPzvB,KAAK6hB,OAEL7hB,KAAK+hB,QAOT1gB,EAAOkQ,UAAUsQ,KAAO,WAElB7hB,KAAKyvB,cAETzvB,KAAK6vB,WAED7vB,KAAKmc,QACPnc,KAAKmc,MAAM0F,KAAKhb,MAAQ,UAO5BxF,EAAOkQ,UAAUwQ,KAAO,WACtBgO,cAAc/vB,KAAKyvB,aACnBzvB,KAAKyvB,YAAcvpB,OAEflG,KAAKmc,QACPnc,KAAKmc,MAAM0F,KAAKhb,MAAQ,SAQ5BxF,EAAOkQ,UAAUuU,oBAAsB,SAAS5d,GAC9ClI,KAAKwvB,iBAAmBtnB,GAO1B7G,EAAOkQ,UAAUmU,gBAAkB,SAASoK,GAC1C9vB,KAAK0vB,aAAeI,GAOtBzuB,EAAOkQ,UAAUye,gBAAkB,WACjC,MAAOhwB,MAAK0vB,cASdruB,EAAOkQ,UAAU0e,YAAc,SAASC,GACtClwB,KAAK2vB,SAAWO,GAOlB7uB,EAAOkQ,UAAU4e,SAAW,WACIjqB,SAA1BlG,KAAKwvB,kBACPxvB,KAAKwvB,oBAOTnuB,EAAOkQ,UAAU+M,OAAS,WACxB,GAAIte,KAAKmc,MAAO,CAEdnc,KAAKmc,MAAMgT,IAAI3e,MAAMnJ,IAAOrH,KAAKmc,MAAMuF,aAAa,EAChD1hB,KAAKmc,MAAMgT,IAAI1B,aAAa,EAAK,KACrCztB,KAAKmc,MAAMgT,IAAI3e,MAAMI,MAAS5Q,KAAKmc,MAAME,YACrCrc,KAAKmc,MAAM+S,KAAK7S,YAChBrc,KAAKmc,MAAM0F,KAAKxF,YAChBrc,KAAKmc,MAAM+I,KAAK7I,YAAc,GAAO,IAGzC,IAAIpV,GAAOjH,KAAKowB,YAAYpwB,KAAK+H,MACjC/H,MAAKmc,MAAMkT,MAAM7e,MAAMvJ,KAAO,EAAS,OAS3C5F,EAAOkQ,UAAUkU,UAAY,SAASvQ,GACpClV,KAAKkV,OAASA,EAEVlV,KAAKkV,OAAO7P,OAAS,EACvBrF,KAAK4vB,SAAS,GAEd5vB,KAAK+H,MAAQ7B,QAOjB7E,EAAOkQ,UAAUqe,SAAW,SAAS7nB,GACnC,KAAIA,EAAQ/H,KAAKkV,OAAO7P,QAOtB,KAAM,2BANNrF,MAAK+H,MAAQA,EAEb/H,KAAKse,SACLte,KAAKmwB,YAWT9uB,EAAOkQ,UAAUqU,SAAW,WAC1B,MAAO5lB,MAAK+H,OAQd1G,EAAOkQ,UAAU4B,IAAM,WACrB,MAAOnT,MAAKkV,OAAOlV,KAAK+H,QAI1B1G,EAAOkQ,UAAUyP,aAAe,SAAS9X,GAEvC,GAAImgB,GAAiBngB,EAAMqgB,MAAyB,IAAhBrgB,EAAMqgB,MAAiC,IAAjBrgB,EAAMsgB,MAChE,IAAKH,EAAL,CAEArpB,KAAKqwB,aAAennB,EAAM2kB,QAC1B7tB,KAAKswB,YAAcpO,WAAWliB,KAAKmc,MAAMkT,MAAM7e,MAAMvJ,MAErDjH,KAAKmc,MAAM3L,MAAMyZ,OAAS,MAK1B,IAAI7X,GAAKpS,IACTA,MAAKkqB,YAAc,SAAUhhB,GAAQkJ,EAAG+X,aAAajhB,IACrDlJ,KAAKoqB,UAAc,SAAUlhB,GAAQkJ,EAAGkX,WAAWpgB,IACnDvI,EAAK4H,iBAAiBqH,SAAU,YAAa5P,KAAKkqB,aAClDvpB,EAAK4H,iBAAiBqH,SAAU,UAAa5P,KAAKoqB,WAClDzpB,EAAKsI,eAAeC,KAItB7H,EAAOkQ,UAAUgf,YAAc,SAAUtpB,GACvC,GAAI2J,GAAQsR,WAAWliB,KAAKmc,MAAMgT,IAAI3e,MAAMI,OACxC5Q,KAAKmc,MAAMkT,MAAMhT,YAAc,GAC/BlM,EAAIlJ,EAAO,EAEXc,EAAQnD,KAAK+lB,MAAMxa,EAAIS,GAAS5Q,KAAKkV,OAAO7P,OAAO,GAIvD,OAHY,GAAR0C,IAAWA,EAAQ,GACnBA,EAAQ/H,KAAKkV,OAAO7P,OAAO,IAAG0C,EAAQ/H,KAAKkV,OAAO7P,OAAO,GAEtD0C,GAGT1G,EAAOkQ,UAAU6e,YAAc,SAAUroB,GACvC,GAAI6I,GAAQsR,WAAWliB,KAAKmc,MAAMgT,IAAI3e,MAAMI,OACxC5Q,KAAKmc,MAAMkT,MAAMhT,YAAc,GAE/BlM,EAAIpI,GAAS/H,KAAKkV,OAAO7P,OAAO,GAAKuL,EACrC3J,EAAOkJ,EAAI,CAEf,OAAOlJ,IAKT5F,EAAOkQ,UAAU4Y,aAAe,SAAUjhB,GACxC,GAAIkgB,GAAOlgB,EAAM2kB,QAAU7tB,KAAKqwB,aAC5BlgB,EAAInQ,KAAKswB,YAAclH,EAEvBrhB,EAAQ/H,KAAKuwB,YAAYpgB,EAE7BnQ,MAAK4vB,SAAS7nB,GAEdpH,EAAKsI,kBAIP5H,EAAOkQ,UAAU+X,WAAa,WAC5BtpB,KAAKmc,MAAM3L,MAAMyZ,OAAS,OAG1BtpB,EAAKoI,oBAAoB6G,SAAU,YAAa5P,KAAKkqB,aACrDvpB,EAAKoI,oBAAoB6G,SAAU,UAAW5P,KAAKoqB,WAEnDzpB,EAAKsI,kBAGPpJ,EAAOD,QAAUyB,GAKb,SAASxB,GA2Bb,QAASyB,GAAWoN,EAAOyW,EAAKH,EAAMoB,GAEpCpmB,KAAKwwB,OAAS,EACdxwB,KAAKywB,KAAO,EACZzwB,KAAK0wB,MAAQ,EACb1wB,KAAKomB,YAAa,EAClBpmB,KAAK2wB,UAAY,EAEjB3wB,KAAK4wB,SAAW,EAChB5wB,KAAK6wB,SAASniB,EAAOyW,EAAKH,EAAMoB,GAYlC9kB,EAAWiQ,UAAUsf,SAAW,SAASniB,EAAOyW,EAAKH,EAAMoB,GACzDpmB,KAAKwwB,OAAS9hB,EAAQA,EAAQ,EAC9B1O,KAAKywB,KAAOtL,EAAMA,EAAM,EAExBnlB,KAAK8wB,QAAQ9L,EAAMoB,IASrB9kB,EAAWiQ,UAAUuf,QAAU,SAAS9L,EAAMoB,GAC/BlgB,SAAT8e,GAA8B,GAARA,IAGP9e,SAAfkgB,IACFpmB,KAAKomB,WAAaA,GAGlBpmB,KAAK0wB,MADH1wB,KAAKomB,cAAe,EACT9kB,EAAWyvB,oBAAoB/L,GAE/BA,IAUjB1jB,EAAWyvB,oBAAsB,SAAU/L,GACzC,GAAIgM,GAAQ,SAAU7gB,GAAI,MAAOvL,MAAKgK,IAAIuB,GAAKvL,KAAKqsB,MAGhDC,EAAQtsB,KAAKusB,IAAI,GAAIvsB,KAAK+lB,MAAMqG,EAAMhM,KACtCoM,EAAQ,EAAIxsB,KAAKusB,IAAI,GAAIvsB,KAAK+lB,MAAMqG,EAAMhM,EAAO,KACjDqM,EAAQ,EAAIzsB,KAAKusB,IAAI,GAAIvsB,KAAK+lB,MAAMqG,EAAMhM,EAAO,KAGjDoB,EAAa8K,CASjB,OARItsB,MAAK+iB,IAAIyJ,EAAQpM,IAASpgB,KAAK+iB,IAAIvB,EAAapB,KAAOoB,EAAagL,GACpExsB,KAAK+iB,IAAI0J,EAAQrM,IAASpgB,KAAK+iB,IAAIvB,EAAapB,KAAOoB,EAAaiL,GAGtD,GAAdjL,IACFA,EAAa,GAGRA,GAOT9kB,EAAWiQ,UAAU0T,WAAa,WAChC,MAAO/C,YAAWliB,KAAK4wB,SAASU,YAAYtxB,KAAK2wB,aAOnDrvB,EAAWiQ,UAAUggB,QAAU,WAC7B,MAAOvxB,MAAK0wB,OAOdpvB,EAAWiQ,UAAU7C,MAAQ,WAC3B1O,KAAK4wB,SAAW5wB,KAAKwwB,OAASxwB,KAAKwwB,OAASxwB,KAAK0wB,OAMnDpvB,EAAWiQ,UAAU2T,KAAO,WAC1BllB,KAAK4wB,UAAY5wB,KAAK0wB,OAOxBpvB,EAAWiQ,UAAU4T,IAAM,WACzB,MAAQnlB,MAAK4wB,SAAW5wB,KAAKywB,MAG/B5wB,EAAOD,QAAU0B,GAKb,SAASzB,EAAQD,EAASM,GAoB9B,QAASqB,GAAUqV,EAAW7U,EAAO2L,GACnC,KAAM1N,eAAgBuB,IACpB,KAAM,IAAIsV,aAAY,mDAGxB,IAAIzE,GAAKpS,IACTA,MAAKwxB,gBACH9iB,MAAO,KACPyW,IAAO,KAEPsM,YAAY,EAEZC,YAAa,SACb9gB,MAAO,KACPC,OAAQ,KACR8gB,UAAW,KACXC,UAAW,MAEb5xB,KAAK0N,QAAU/M,EAAKwF,cAAenG,KAAKwxB,gBAGxCxxB,KAAK6xB,QAAQjb,GAGb5W,KAAK8B,cAEL9B,KAAK8xB,MACH5E,IAAKltB,KAAKktB,IACV6E,SAAU/xB,KAAK0F,MACfssB,SACExgB,GAAIxR,KAAKwR,GAAGygB,KAAKjyB,MACjB2R,IAAK3R,KAAK2R,IAAIsgB,KAAKjyB,MACnB6qB,KAAM7qB,KAAK6qB,KAAKoH,KAAKjyB,OAEvBW,MACEuxB,KAAM,KACNC,SAAU/f,EAAGggB,UAAUH,KAAK7f,GAC5BigB,eAAgBjgB,EAAGkgB,gBAAgBL,KAAK7f,GACxCmgB,OAAQngB,EAAGogB,QAAQP,KAAK7f,GACxBqgB,aAAergB,EAAGsgB,cAAcT,KAAK7f,KAKzCpS,KAAK8N,MAAQ,GAAInM,GAAM3B,KAAK8xB,MAC5B9xB,KAAK8B,WAAW8F,KAAK5H,KAAK8N,OAC1B9N,KAAK8xB,KAAKhkB,MAAQ9N,KAAK8N,MAGvB9N,KAAK2yB,SAAW,GAAI9vB,GAAS7C,KAAK8xB,MAClC9xB,KAAK8B,WAAW8F,KAAK5H,KAAK2yB,UAC1B3yB,KAAK8xB,KAAKnxB,KAAKuxB,KAAOlyB,KAAK2yB,SAAST,KAAKD,KAAKjyB,KAAK2yB,UAGnD3yB,KAAK4yB,YAAc,GAAIvwB,GAAYrC,KAAK8xB,MACxC9xB,KAAK8B,WAAW8F,KAAK5H,KAAK4yB,aAI1B5yB,KAAK6yB,WAAa,GAAIvwB,GAAWtC,KAAK8xB,MACtC9xB,KAAK8B,WAAW8F,KAAK5H,KAAK6yB,YAG1B7yB,KAAK8yB,QAAU,GAAIpwB,GAAQ1C,KAAK8xB,MAChC9xB,KAAK8B,WAAW8F,KAAK5H,KAAK8yB,SAE1B9yB,KAAK+yB,UAAY,KACjB/yB,KAAKgzB,WAAa,KAGdtlB,GACF1N,KAAK2Z,WAAWjM,GAId3L,EACF/B,KAAKizB,SAASlxB,GAGd/B,KAAKse,SAjGT,GAAI1E,GAAU1Z,EAAoB,IAC9BgzB,EAAShzB,EAAoB,IAC7BS,EAAOT,EAAoB,GAC3BW,EAAUX,EAAoB,GAC9BY,EAAWZ,EAAoB,GAC/ByB,EAAQzB,EAAoB,IAC5B2C,EAAW3C,EAAoB,IAC/BmC,EAAcnC,EAAoB,IAClCoC,EAAapC,EAAoB,IACjCwC,EAAUxC,EAAoB,GA6FlC0Z,GAAQrY,EAASgQ,WASjBhQ,EAASgQ,UAAUsgB,QAAU,SAAUjb,GACrC5W,KAAKktB,OAELltB,KAAKktB,IAAIxtB,KAAuBkQ,SAASK,cAAc,OACvDjQ,KAAKktB,IAAI9hB,WAAuBwE,SAASK,cAAc,OACvDjQ,KAAKktB,IAAIiG,mBAAuBvjB,SAASK,cAAc,OACvDjQ,KAAKktB,IAAIkG,qBAAuBxjB,SAASK,cAAc,OACvDjQ,KAAKktB,IAAImG,gBAAuBzjB,SAASK,cAAc,OACvDjQ,KAAKktB,IAAIoG,cAAuB1jB,SAASK,cAAc,OACvDjQ,KAAKktB,IAAIqG,eAAuB3jB,SAASK,cAAc,OACvDjQ,KAAKktB,IAAIjE,OAAuBrZ,SAASK,cAAc,OACvDjQ,KAAKktB,IAAIjmB,KAAuB2I,SAASK,cAAc,OACvDjQ,KAAKktB,IAAIhJ,MAAuBtU,SAASK,cAAc,OACvDjQ,KAAKktB,IAAI7lB,IAAuBuI,SAASK,cAAc,OACvDjQ,KAAKktB,IAAI/M,OAAuBvQ,SAASK,cAAc,OACvDjQ,KAAKktB,IAAIsG,UAAuB5jB,SAASK,cAAc,OACvDjQ,KAAKktB,IAAIuG,aAAuB7jB,SAASK,cAAc,OACvDjQ,KAAKktB,IAAIwG,cAAuB9jB,SAASK,cAAc,OACvDjQ,KAAKktB,IAAIyG,iBAAuB/jB,SAASK,cAAc,OACvDjQ,KAAKktB,IAAI0G,eAAuBhkB,SAASK,cAAc,OACvDjQ,KAAKktB,IAAI2G,kBAAuBjkB,SAASK,cAAc,OAEvDjQ,KAAKktB,IAAI9hB,WAAW5D,UAAsB,sBAC1CxH,KAAKktB,IAAIiG,mBAAmB3rB,UAAc,+BAC1CxH,KAAKktB,IAAIkG,qBAAqB5rB,UAAY,iCAC1CxH,KAAKktB,IAAImG,gBAAgB7rB,UAAiB,kBAC1CxH,KAAKktB,IAAIoG,cAAc9rB,UAAmB,gBAC1CxH,KAAKktB,IAAIqG,eAAe/rB,UAAkB,iBAC1CxH,KAAKktB,IAAI7lB,IAAIG,UAA6B,eAC1CxH,KAAKktB,IAAI/M,OAAO3Y,UAA0B,kBAC1CxH,KAAKktB,IAAIjmB,KAAKO,UAA4B,UAC1CxH,KAAKktB,IAAIjE,OAAOzhB,UAA0B,UAC1CxH,KAAKktB,IAAIhJ,MAAM1c,UAA2B,UAC1CxH,KAAKktB,IAAIsG,UAAUhsB,UAAuB,aAC1CxH,KAAKktB,IAAIuG,aAAajsB,UAAoB,gBAC1CxH,KAAKktB,IAAIwG,cAAclsB,UAAmB,aAC1CxH,KAAKktB,IAAIyG,iBAAiBnsB,UAAgB,gBAC1CxH,KAAKktB,IAAI0G,eAAepsB,UAAkB,aAC1CxH,KAAKktB,IAAI2G,kBAAkBrsB,UAAe,gBAE1CxH,KAAKktB,IAAIxtB,KAAKoQ,YAAY9P,KAAKktB,IAAI9hB,YACnCpL,KAAKktB,IAAIxtB,KAAKoQ,YAAY9P,KAAKktB,IAAIiG,oBACnCnzB,KAAKktB,IAAIxtB,KAAKoQ,YAAY9P,KAAKktB,IAAIkG,sBACnCpzB,KAAKktB,IAAIxtB,KAAKoQ,YAAY9P,KAAKktB,IAAImG,iBACnCrzB,KAAKktB,IAAIxtB,KAAKoQ,YAAY9P,KAAKktB,IAAIoG,eACnCtzB,KAAKktB,IAAIxtB,KAAKoQ,YAAY9P,KAAKktB,IAAIqG,gBACnCvzB,KAAKktB,IAAIxtB,KAAKoQ,YAAY9P,KAAKktB,IAAI7lB,KACnCrH,KAAKktB,IAAIxtB,KAAKoQ,YAAY9P,KAAKktB,IAAI/M,QAEnCngB,KAAKktB,IAAImG,gBAAgBvjB,YAAY9P,KAAKktB,IAAIjE,QAC9CjpB,KAAKktB,IAAIoG,cAAcxjB,YAAY9P,KAAKktB,IAAIjmB,MAC5CjH,KAAKktB,IAAIqG,eAAezjB,YAAY9P,KAAKktB,IAAIhJ,OAE7ClkB,KAAKktB,IAAImG,gBAAgBvjB,YAAY9P,KAAKktB,IAAIsG,WAC9CxzB,KAAKktB,IAAImG,gBAAgBvjB,YAAY9P,KAAKktB,IAAIuG,cAC9CzzB,KAAKktB,IAAIoG,cAAcxjB,YAAY9P,KAAKktB,IAAIwG,eAC5C1zB,KAAKktB,IAAIoG,cAAcxjB,YAAY9P,KAAKktB,IAAIyG,kBAC5C3zB,KAAKktB,IAAIqG,eAAezjB,YAAY9P,KAAKktB,IAAI0G,gBAC7C5zB,KAAKktB,IAAIqG,eAAezjB,YAAY9P,KAAKktB,IAAI2G,mBAE7C7zB,KAAKwR,GAAG,cAAexR,KAAKse,OAAO2T,KAAKjyB,OACxCA,KAAKwR,GAAG,SAAUxR,KAAKse,OAAO2T,KAAKjyB,OACnCA,KAAKwR,GAAG,QAASxR,KAAK8zB,SAAS7B,KAAKjyB,OACpCA,KAAKwR,GAAG,QAASxR,KAAK+zB,SAAS9B,KAAKjyB,OACpCA,KAAKwR,GAAG,YAAaxR,KAAKg0B,aAAa/B,KAAKjyB,OAC5CA,KAAKwR,GAAG,OAAQxR,KAAKi0B,QAAQhC,KAAKjyB,OAIlCA,KAAKyD,OAASyvB,EAAOlzB,KAAKktB,IAAIxtB,MAC5Bw0B,iBAAiB,IAEnBl0B,KAAKm0B,YAEL,IAAI/hB,GAAKpS,KACLo0B,GACF,QAAS,QACT,MAAO,YAAa,OACpB,YAAa,OAAQ,UACrB,aAAc,iBA8BhB,IA5BAA,EAAOnsB,QAAQ,SAAUiB,GACvB,GAAIR,GAAW,WACb,GAAI2rB,IAAQnrB,GAAO+I,OAAOtM,MAAM4L,UAAU+iB,MAAM/zB,KAAK6E,UAAW,GAChEgN,GAAGyY,KAAK1U,MAAM/D,EAAIiiB,GAEpBjiB,GAAG3O,OAAO+N,GAAGtI,EAAOR,GACpB0J,EAAG+hB,UAAUjrB,GAASR,IAIxB1I,KAAK0F,OACHhG,QACA0L,cACAioB,mBACAC,iBACAC,kBACAtK,UACAhiB,QACAid,SACA7c,OACA8Y,UACA9U,UACAkpB,UAAW,EACXC,aAAc,GAEhBx0B,KAAKy0B,UAGA7d,EAAW,KAAM,IAAIrT,OAAM,wBAChCqT,GAAU9G,YAAY9P,KAAKktB,IAAIxtB,OAMjC6B,EAASgQ,UAAUmjB,QAAU,WAE3B10B,KAAK4U,QAGL5U,KAAK2R,MAGL3R,KAAK20B,kBAGD30B,KAAKktB,IAAIxtB,KAAK8J,YAChBxJ,KAAKktB,IAAIxtB,KAAK8J,WAAWgG,YAAYxP,KAAKktB,IAAIxtB,MAEhDM,KAAKktB,IAAM,IAGX,KAAK,GAAIhkB,KAASlJ,MAAKm0B,UACjBn0B,KAAKm0B,UAAU3uB,eAAe0D,UACzBlJ,MAAKm0B,UAAUjrB,EAG1BlJ,MAAKm0B,UAAY,KACjBn0B,KAAKyD,OAAS,KAGdzD,KAAK8B,WAAWmG,QAAQ,SAAU2sB,GAChCA,EAAUF,YAGZ10B,KAAK8xB,KAAO,MA4BdvwB,EAASgQ,UAAUoI,WAAa,SAAUjM,GACxC,GAAIA,EAAS,CAEX,GAAIP,IAAU,QAAS,SAAU,YAAa,YAAa,aAAc,QAAS,MAAO,cACzFxM,GAAK8E,gBAAgB0H,EAAQnN,KAAK0N,QAASA,GAG3C1N,KAAK60B,kBASP,GALA70B,KAAK8B,WAAWmG,QAAQ,SAAU2sB,GAChCA,EAAUjb,WAAWjM,KAInBA,GAAWA,EAAQgG,MACrB,KAAM,IAAInQ,OAAM,wEAIlBvD,MAAKse,UAOP/c,EAASgQ,UAAUujB,cAAgB,SAAUC,GAC3C,IAAK/0B,KAAK6yB,WACR,KAAM,IAAItvB,OAAM,yDAGlBvD,MAAK6yB,WAAWiC,cAAcC,IAOhCxzB,EAASgQ,UAAUyjB,cAAgB,WACjC,IAAKh1B,KAAK6yB,WACR,KAAM,IAAItvB,OAAM,yDAGlB,OAAOvD,MAAK6yB,WAAWmC,iBAOzBzzB,EAASgQ,UAAU0hB,SAAW,SAASlxB,GACrC,GAGIkzB,GAHAC,EAAiC,MAAlBl1B,KAAK+yB,SAwBxB,IAhBEkC,EAJGlzB,EAGIA,YAAiBlB,IAAWkB,YAAiBjB,GACvCiB,EAIA,GAAIlB,GAAQkB,GACvBuE,MACEoI,MAAO,OACPyW,IAAK,UAVI,KAgBfnlB,KAAK+yB,UAAYkC,EACjBj1B,KAAK8yB,SAAW9yB,KAAK8yB,QAAQG,SAASgC,GAElCC,IAAgB,SAAWl1B,MAAK0N,SAAW,OAAS1N,MAAK0N,SAAU,CACrE1N,KAAKm1B,KAEL,IAAIzmB,GAAS,SAAW1O,MAAK0N,QAAW/M,EAAK0F,QAAQrG,KAAK0N,QAAQgB,MAAO,QAAU,KAC/EyW,EAAS,OAASnlB,MAAK0N,QAAa/M,EAAK0F,QAAQrG,KAAK0N,QAAQyX,IAAK,QAAU,IAEjFnlB,MAAKo1B,UAAU1mB,EAAOyW,KAQ1B5jB,EAASgQ,UAAU8jB,gBAAkB,WACnC,MAAOr1B,MAAK8yB,SAAW9yB,KAAK8yB,QAAQuC,uBAQtC9zB,EAASgQ,UAAU+jB,UAAY,SAASC,GAEtC,GAAIN,EAKFA,GAJGM,EAGIA,YAAkB10B,IAAW00B,YAAkBz0B,GACzCy0B,EAIA,GAAI10B,GAAQ00B,GAPZ,KAUfv1B,KAAKgzB,WAAaiC,EAClBj1B,KAAK8yB,QAAQwC,UAAUL,IAazB1zB,EAASgQ,UAAUqD,MAAQ,SAAS4gB,KAE7BA,GAAQA,EAAKzzB,QAChB/B,KAAKizB,SAAS,QAIXuC,GAAQA,EAAKD,SAChBv1B,KAAKs1B,UAAU,QAIZE,GAAQA,EAAK9nB,WAChB1N,KAAK8B,WAAWmG,QAAQ,SAAU2sB,GAChCA,EAAUjb,WAAWib,EAAUpD,kBAGjCxxB,KAAK2Z,WAAW3Z,KAAKwxB,kBAOzBjwB,EAASgQ,UAAU4jB,IAAM,WAEvB,GAAIM,GAAYz1B,KAAK01B,eAGjBhnB,EAAQ+mB,EAAU1qB,IAClBoa,EAAMsQ,EAAUhpB,GACpB,IAAa,MAATiC,GAAwB,MAAPyW,EAAa,CAChC,GAAI2K,GAAY3K,EAAI3e,UAAYkI,EAAMlI,SACtB,IAAZspB,IAEFA,EAAW,OAEbphB,EAAQ,GAAI1K,MAAK0K,EAAMlI,UAAuB,IAAXspB,GACnC3K,EAAM,GAAInhB,MAAKmhB,EAAI3e,UAAuB,IAAXspB,IAInB,OAAVphB,GAA0B,OAARyW,IAItBnlB,KAAK8N,MAAM+iB,SAASniB,EAAOyW,IAS7B5jB,EAASgQ,UAAUmkB,aAAe,WAEhC,GAAIC,GAAU31B,KAAK+yB,UAAU/e,aACzBjJ,EAAM,KACN0B,EAAM,IAEV,IAAIkpB,EAAS,CAEX,GAAIC,GAAUD,EAAQ5qB,IAAI,QAC1BA,GAAM6qB,EAAUj1B,EAAK0F,QAAQuvB,EAAQlnB,MAAO,QAAQlI,UAAY,IAKhE,IAAIqvB,GAAeF,EAAQlpB,IAAI,QAC3BopB,KACFppB,EAAM9L,EAAK0F,QAAQwvB,EAAannB,MAAO,QAAQlI,UAEjD,IAAIsvB,GAAaH,EAAQlpB,IAAI,MACzBqpB,KAEArpB,EADS,MAAPA,EACI9L,EAAK0F,QAAQyvB,EAAW3Q,IAAK,QAAQ3e,UAGrC5B,KAAK6H,IAAIA,EAAK9L,EAAK0F,QAAQyvB,EAAW3Q,IAAK,QAAQ3e,YAK/D,OACEuE,IAAa,MAAPA,EAAe,GAAI/G,MAAK+G,GAAO,KACrC0B,IAAa,MAAPA,EAAe,GAAIzI,MAAKyI,GAAO,OAWzClL,EAASgQ,UAAUwkB,aAAe,SAAS3iB,GACzCpT,KAAK8yB,SAAW9yB,KAAK8yB,QAAQiD,aAAa3iB,IAO5C7R,EAASgQ,UAAUykB,aAAe,WAChC,MAAOh2B,MAAK8yB,SAAW9yB,KAAK8yB,QAAQkD,oBAgBtCz0B,EAASgQ,UAAU6jB,UAAY,SAAS1mB,EAAOyW,GAC7C,GAAwB,GAApB/f,UAAUC,OAAa,CACzB,GAAIyI,GAAQ1I,UAAU,EACtBpF,MAAK8N,MAAM+iB,SAAS/iB,EAAMY,MAAOZ,EAAMqX,SAGvCnlB,MAAK8N,MAAM+iB,SAASniB,EAAOyW,IAQ/B5jB,EAASgQ,UAAU0kB,UAAY,WAC7B,GAAInoB,GAAQ9N,KAAK8N,MAAMooB,UACvB,QACExnB,MAAO,GAAI1K,MAAK8J,EAAMY,OACtByW,IAAK,GAAInhB,MAAK8J,EAAMqX,OAQxB5jB,EAASgQ,UAAU+M,OAAS,WAC1B,GAAI6X,IAAU,EACVzoB,EAAU1N,KAAK0N,QACfhI,EAAQ1F,KAAK0F,MACbwnB,EAAMltB,KAAKktB,GAEf,IAAKA,EAAL,CAGAA,EAAIxtB,KAAK8H,UAAY,qBAAuBkG,EAAQgkB,YAGpDxE,EAAIxtB,KAAK8Q,MAAMmhB,UAAYhxB,EAAK8I,OAAOK,OAAO4D,EAAQikB,UAAW,IACjEzE,EAAIxtB,KAAK8Q,MAAMohB,UAAYjxB,EAAK8I,OAAOK,OAAO4D,EAAQkkB,UAAW,IACjE1E,EAAIxtB,KAAK8Q,MAAMI,MAAQjQ,EAAK8I,OAAOK,OAAO4D,EAAQkD,MAAO,IAGzDlL,EAAM2F,OAAOpE,MAAUimB,EAAImG,gBAAgB9F,YAAcL,EAAImG,gBAAgBhX,aAAe,EAC5F3W,EAAM2F,OAAO6Y,MAASxe,EAAM2F,OAAOpE,KACnCvB,EAAM2F,OAAOhE,KAAU6lB,EAAImG,gBAAgB5F,aAAeP,EAAImG,gBAAgB3R,cAAgB,EAC9Fhc,EAAM2F,OAAO8U,OAASza,EAAM2F,OAAOhE,GACnC,IAAI+uB,GAAkBlJ,EAAIxtB,KAAK+tB,aAAeP,EAAIxtB,KAAKgiB,aACnD2U,EAAkBnJ,EAAIxtB,KAAK6tB,YAAcL,EAAIxtB,KAAK2c,WAItD3W,GAAMujB,OAAOpY,OAASqc,EAAIjE,OAAOwE,aACjC/nB,EAAMuB,KAAK4J,OAAWqc,EAAIjmB,KAAKwmB,aAC/B/nB,EAAMwe,MAAMrT,OAAUqc,EAAIhJ,MAAMuJ,aAChC/nB,EAAM2B,IAAIwJ,OAAYqc,EAAI7lB,IAAIqa,eAAoBhc,EAAM2F,OAAOhE,IAC/D3B,EAAMya,OAAOtP,OAASqc,EAAI/M,OAAOuB,eAAiBhc,EAAM2F,OAAO8U,MAM/D,IAAIqN,GAAgB5oB,KAAK6H,IAAI/G,EAAMuB,KAAK4J,OAAQnL,EAAMujB,OAAOpY,OAAQnL,EAAMwe,MAAMrT,QAC7EylB,EAAa5wB,EAAM2B,IAAIwJ,OAAS2c,EAAgB9nB,EAAMya,OAAOtP,OAC7DulB,EAAmB1wB,EAAM2F,OAAOhE,IAAM3B,EAAM2F,OAAO8U,MACvD+M,GAAIxtB,KAAK8Q,MAAMK,OAASlQ,EAAK8I,OAAOK,OAAO4D,EAAQmD,OAAQylB,EAAa,MAGxE5wB,EAAMhG,KAAKmR,OAASqc,EAAIxtB,KAAK+tB,aAC7B/nB,EAAM0F,WAAWyF,OAASnL,EAAMhG,KAAKmR,OAASulB,CAC9C,IAAIG,GAAkB7wB,EAAMhG,KAAKmR,OAASnL,EAAM2B,IAAIwJ,OAASnL,EAAMya,OAAOtP,OACtEulB,CACJ1wB,GAAM2tB,gBAAgBxiB,OAAU0lB,EAChC7wB,EAAM4tB,cAAcziB,OAAY0lB,EAChC7wB,EAAM6tB,eAAe1iB,OAAWnL,EAAM4tB,cAAcziB,OAGpDnL,EAAMhG,KAAKkR,MAAQsc,EAAIxtB,KAAK6tB,YAC5B7nB,EAAM0F,WAAWwF,MAAQlL,EAAMhG,KAAKkR,MAAQylB,EAC5C3wB,EAAMuB,KAAK2J,MAAQsc,EAAIoG,cAAcjX,cAAkB3W,EAAM2F,OAAOpE,KACpEvB,EAAM4tB,cAAc1iB,MAAQlL,EAAMuB,KAAK2J,MACvClL,EAAMwe,MAAMtT,MAAQsc,EAAIqG,eAAelX,cAAgB3W,EAAM2F,OAAO6Y,MACpExe,EAAM6tB,eAAe3iB,MAAQlL,EAAMwe,MAAMtT,KACzC,IAAI4lB,GAAc9wB,EAAMhG,KAAKkR,MAAQlL,EAAMuB,KAAK2J,MAAQlL,EAAMwe,MAAMtT,MAAQylB,CAC5E3wB,GAAMujB,OAAOrY,MAAiB4lB,EAC9B9wB,EAAM2tB,gBAAgBziB,MAAQ4lB,EAC9B9wB,EAAM2B,IAAIuJ,MAAoB4lB,EAC9B9wB,EAAMya,OAAOvP,MAAiB4lB,EAG9BtJ,EAAI9hB,WAAWoF,MAAMK,OAAmBnL,EAAM0F,WAAWyF,OAAS,KAClEqc,EAAIiG,mBAAmB3iB,MAAMK,OAAWnL,EAAM0F,WAAWyF,OAAS,KAClEqc,EAAIkG,qBAAqB5iB,MAAMK,OAASnL,EAAM2tB,gBAAgBxiB,OAAS,KACvEqc,EAAImG,gBAAgB7iB,MAAMK,OAAcnL,EAAM2tB,gBAAgBxiB,OAAS,KACvEqc,EAAIoG,cAAc9iB,MAAMK,OAAgBnL,EAAM4tB,cAAcziB,OAAS,KACrEqc,EAAIqG,eAAe/iB,MAAMK,OAAenL,EAAM6tB,eAAe1iB,OAAS,KAEtEqc,EAAI9hB,WAAWoF,MAAMI,MAAmBlL,EAAM0F,WAAWwF,MAAQ,KACjEsc,EAAIiG,mBAAmB3iB,MAAMI,MAAWlL,EAAM2tB,gBAAgBziB,MAAQ,KACtEsc,EAAIkG,qBAAqB5iB,MAAMI,MAASlL,EAAM0F,WAAWwF,MAAQ,KACjEsc,EAAImG,gBAAgB7iB,MAAMI,MAAclL,EAAMujB,OAAOrY,MAAQ,KAC7Dsc,EAAI7lB,IAAImJ,MAAMI,MAA0BlL,EAAM2B,IAAIuJ,MAAQ,KAC1Dsc,EAAI/M,OAAO3P,MAAMI,MAAuBlL,EAAMya,OAAOvP,MAAQ,KAG7Dsc,EAAI9hB,WAAWoF,MAAMvJ,KAAiB,IACtCimB,EAAI9hB,WAAWoF,MAAMnJ,IAAiB,IACtC6lB,EAAIiG,mBAAmB3iB,MAAMvJ,KAASvB,EAAMuB,KAAK2J,MAAQ,KACzDsc,EAAIiG,mBAAmB3iB,MAAMnJ,IAAS,IACtC6lB,EAAIkG,qBAAqB5iB,MAAMvJ,KAAO,IACtCimB,EAAIkG,qBAAqB5iB,MAAMnJ,IAAO3B,EAAM2B,IAAIwJ,OAAS,KACzDqc,EAAImG,gBAAgB7iB,MAAMvJ,KAAYvB,EAAMuB,KAAK2J,MAAQ,KACzDsc,EAAImG,gBAAgB7iB,MAAMnJ,IAAY3B,EAAM2B,IAAIwJ,OAAS,KACzDqc,EAAIoG,cAAc9iB,MAAMvJ,KAAc,IACtCimB,EAAIoG,cAAc9iB,MAAMnJ,IAAc3B,EAAM2B,IAAIwJ,OAAS,KACzDqc,EAAIqG,eAAe/iB,MAAMvJ,KAAcvB,EAAMuB,KAAK2J,MAAQlL,EAAMujB,OAAOrY,MAAS,KAChFsc,EAAIqG,eAAe/iB,MAAMnJ,IAAa3B,EAAM2B,IAAIwJ,OAAS,KACzDqc,EAAI7lB,IAAImJ,MAAMvJ,KAAwBvB,EAAMuB,KAAK2J,MAAQ,KACzDsc,EAAI7lB,IAAImJ,MAAMnJ,IAAwB,IACtC6lB,EAAI/M,OAAO3P,MAAMvJ,KAAqBvB,EAAMuB,KAAK2J,MAAQ,KACzDsc,EAAI/M,OAAO3P,MAAMnJ,IAAsB3B,EAAM2B,IAAIwJ,OAASnL,EAAM2tB,gBAAgBxiB,OAAU,KAI1F7Q,KAAKy2B,kBAGL,IAAIhQ,GAASzmB,KAAK0F,MAAM6uB,SACG,WAAvB7mB,EAAQgkB,cACVjL,GAAU7hB,KAAK6H,IAAIzM,KAAK0F,MAAM2tB,gBAAgBxiB,OAAS7Q,KAAK0F,MAAMujB,OAAOpY,OACrE7Q,KAAK0F,MAAM2F,OAAOhE,IAAMrH,KAAK0F,MAAM2F,OAAO8U,OAAQ,IAExD+M,EAAIjE,OAAOzY,MAAMvJ,KAAO,IACxBimB,EAAIjE,OAAOzY,MAAMnJ,IAAOof,EAAS,KACjCyG,EAAIjmB,KAAKuJ,MAAMvJ,KAAS,IACxBimB,EAAIjmB,KAAKuJ,MAAMnJ,IAASof,EAAS,KACjCyG,EAAIhJ,MAAM1T,MAAMvJ,KAAQ,IACxBimB,EAAIhJ,MAAM1T,MAAMnJ,IAAQof,EAAS,IAGjC,IAAIiQ,GAAwC,GAAxB12B,KAAK0F,MAAM6uB,UAAiB,SAAW,GACvDoC,EAAmB32B,KAAK0F,MAAM6uB,WAAav0B,KAAK0F,MAAM8uB,aAAe,SAAW,EACpFtH,GAAIsG,UAAUhjB,MAAMomB,WAAsBF,EAC1CxJ,EAAIuG,aAAajjB,MAAMomB,WAAmBD,EAC1CzJ,EAAIwG,cAAcljB,MAAMomB,WAAkBF,EAC1CxJ,EAAIyG,iBAAiBnjB,MAAMomB,WAAeD,EAC1CzJ,EAAI0G,eAAepjB,MAAMomB,WAAiBF,EAC1CxJ,EAAI2G,kBAAkBrjB,MAAMomB,WAAcD,EAG1C32B,KAAK8B,WAAWmG,QAAQ,SAAU2sB,GAChCuB,EAAUvB,EAAUtW,UAAY6X,IAE9BA,GAEFn2B,KAAKse,WAKT/c,EAASgQ,UAAUslB,QAAU,WACzB,KAAM,IAAItzB,OAAM,wDAUpBhC,EAASgQ,UAAUihB,QAAU,SAASriB,GACpC,GAAI2mB,GAAa92B,KAAK8N,MAAMgpB,WAAW92B,KAAK0F,MAAMujB,OAAOrY,MACzD,OAAO,IAAI5M,MAAKmM,EAAI2mB,EAAWhd,MAAQgd,EAAWrQ,SAWpDllB,EAASgQ,UAAUmhB,cAAgB,SAASviB,GAC1C,GAAI2mB,GAAa92B,KAAK8N,MAAMgpB,WAAW92B,KAAK0F,MAAMhG,KAAKkR,MACvD,OAAO,IAAI5M,MAAKmM,EAAI2mB,EAAWhd,MAAQgd,EAAWrQ,SAWpDllB,EAASgQ,UAAU6gB,UAAY,SAAS2C,GACtC,GAAI+B,GAAa92B,KAAK8N,MAAMgpB,WAAW92B,KAAK0F,MAAMujB,OAAOrY,MACzD,QAAQmkB,EAAKvuB,UAAYswB,EAAWrQ,QAAUqQ,EAAWhd,OAa3DvY,EAASgQ,UAAU+gB,gBAAkB,SAASyC,GAC5C,GAAI+B,GAAa92B,KAAK8N,MAAMgpB,WAAW92B,KAAK0F,MAAMhG,KAAKkR,MACvD,QAAQmkB,EAAKvuB,UAAYswB,EAAWrQ,QAAUqQ,EAAWhd,OAQ3DvY,EAASgQ,UAAUsjB,gBAAkB,WACJ,GAA3B70B,KAAK0N,QAAQ+jB,WACfzxB,KAAK+2B,mBAGL/2B,KAAK20B,mBASTpzB,EAASgQ,UAAUwlB,iBAAmB,WACpC,GAAI3kB,GAAKpS,IAETA,MAAK20B,kBAEL30B,KAAKg3B,UAAY,WACf,MAA6B,IAAzB5kB,EAAG1E,QAAQ+jB,eAEbrf,GAAGuiB,uBAIDviB,EAAG8a,IAAIxtB,OAEJ0S,EAAG8a,IAAIxtB,KAAK2c,aAAejK,EAAG1M,MAAMuxB,WACpC7kB,EAAG8a,IAAIxtB,KAAKgiB,cAAgBtP,EAAG1M,MAAMwxB,cACxC9kB,EAAG1M,MAAMuxB,UAAY7kB,EAAG8a,IAAIxtB,KAAK2c,YACjCjK,EAAG1M,MAAMwxB,WAAa9kB,EAAG8a,IAAIxtB,KAAKgiB,aAElCtP,EAAGyY,KAAK,aAMdlqB,EAAK4H,iBAAiBrB,OAAQ,SAAUlH,KAAKg3B,WAE7Ch3B,KAAKm3B,WAAaC,YAAYp3B,KAAKg3B,UAAW,MAOhDz1B,EAASgQ,UAAUojB,gBAAkB,WAC/B30B,KAAKm3B,aACPpH,cAAc/vB,KAAKm3B,YACnBn3B,KAAKm3B,WAAajxB,QAIpBvF,EAAKoI,oBAAoB7B,OAAQ,SAAUlH,KAAKg3B,WAChDh3B,KAAKg3B,UAAY,MAQnBz1B,EAASgQ,UAAUuiB,SAAW,WAC5B9zB,KAAKy0B,MAAM4C,eAAgB,GAQ7B91B,EAASgQ,UAAUwiB,SAAW,WAC5B/zB,KAAKy0B,MAAM4C,eAAgB,GAQ7B91B,EAASgQ,UAAUyiB,aAAe,WAChCh0B,KAAKy0B,MAAM6C,iBAAmBt3B,KAAK0F,MAAM6uB,WAQ3ChzB,EAASgQ,UAAU0iB,QAAU,SAAU/qB,GAGrC,GAAKlJ,KAAKy0B,MAAM4C,cAAhB,CAEA,GAAIzL,GAAQ1iB,EAAMquB,QAAQC,OAEtBC,EAAez3B,KAAK03B,gBACpBC,EAAe33B,KAAK43B,cAAc53B,KAAKy0B,MAAM6C,iBAAmB1L,EAEhE+L,IAAgBF,GAClBz3B,KAAKse,WAUT/c,EAASgQ,UAAUqmB,cAAgB,SAAUrD,GAG3C,MAFAv0B,MAAK0F,MAAM6uB,UAAYA,EACvBv0B,KAAKy2B,mBACEz2B,KAAK0F,MAAM6uB,WAQpBhzB,EAASgQ,UAAUklB,iBAAmB,WAEpC,GAAIjC,GAAe5vB,KAAKmG,IAAI/K,KAAK0F,MAAM2tB,gBAAgBxiB,OAAS7Q,KAAK0F,MAAMujB,OAAOpY,OAAQ,EAc1F,OAbI2jB,IAAgBx0B,KAAK0F,MAAM8uB,eAGG,UAA5Bx0B,KAAK0N,QAAQgkB,cACf1xB,KAAK0F,MAAM6uB,WAAcC,EAAex0B,KAAK0F,MAAM8uB,cAErDx0B,KAAK0F,MAAM8uB,aAAeA,GAIxBx0B,KAAK0F,MAAM6uB,UAAY,IAAGv0B,KAAK0F,MAAM6uB,UAAY,GACjDv0B,KAAK0F,MAAM6uB,UAAYC,IAAcx0B,KAAK0F,MAAM6uB,UAAYC,GAEzDx0B,KAAK0F,MAAM6uB,WAQpBhzB,EAASgQ,UAAUmmB,cAAgB,WACjC,MAAO13B,MAAK0F,MAAM6uB,WAGpB10B,EAAOD,QAAU2B,GAKb,SAAS1B,EAAQD,EAASM,GAoB9B,QAASsB,GAASoV,EAAW7U,EAAO2L,EAAS6nB,GAC3C,GAAInjB,GAAKpS,IACTA,MAAKwxB,gBACH9iB,MAAO,KACPyW,IAAO,KAEPsM,YAAY,EAEZC,YAAa,SACb9gB,MAAO,KACPC,OAAQ,KACR8gB,UAAW,KACXC,UAAW,MAEb5xB,KAAK0N,QAAU/M,EAAKwF,cAAenG,KAAKwxB,gBAGxCxxB,KAAK6xB,QAAQjb,GAGb5W,KAAK8B,cAEL9B,KAAK8xB,MACH5E,IAAKltB,KAAKktB,IACV6E,SAAU/xB,KAAK0F,MACfssB,SACExgB,GAAIxR,KAAKwR,GAAGygB,KAAKjyB,MACjB2R,IAAK3R,KAAK2R,IAAIsgB,KAAKjyB,MACnB6qB,KAAM7qB,KAAK6qB,KAAKoH,KAAKjyB,OAEvBW,MACEuxB,KAAM,KACNC,SAAU/f,EAAGggB,UAAUH,KAAK7f,GAC5BigB,eAAgBjgB,EAAGkgB,gBAAgBL,KAAK7f,GACxCmgB,OAAQngB,EAAGogB,QAAQP,KAAK7f,GACxBqgB,aAAergB,EAAGsgB,cAAcT,KAAK7f,KAKzCpS,KAAK8N,MAAQ,GAAInM,GAAM3B,KAAK8xB,MAC5B9xB,KAAK8B,WAAW8F,KAAK5H,KAAK8N,OAC1B9N,KAAK8xB,KAAKhkB,MAAQ9N,KAAK8N,MAGvB9N,KAAK2yB,SAAW,GAAI9vB,GAAS7C,KAAK8xB,MAClC9xB,KAAK8B,WAAW8F,KAAK5H,KAAK2yB,UAC1B3yB,KAAK8xB,KAAKnxB,KAAKuxB,KAAOlyB,KAAK2yB,SAAST,KAAKD,KAAKjyB,KAAK2yB,UAGnD3yB,KAAK4yB,YAAc,GAAIvwB,GAAYrC,KAAK8xB,MACxC9xB,KAAK8B,WAAW8F,KAAK5H,KAAK4yB,aAI1B5yB,KAAK6yB,WAAa,GAAIvwB,GAAWtC,KAAK8xB,MACtC9xB,KAAK8B,WAAW8F,KAAK5H,KAAK6yB,YAG1B7yB,KAAK63B,UAAY,GAAIj1B,GAAU5C,KAAK8xB,MACpC9xB,KAAK8B,WAAW8F,KAAK5H,KAAK63B,WAE1B73B,KAAK+yB,UAAY,KACjB/yB,KAAKgzB,WAAa,KAGdtlB,GACF1N,KAAK2Z,WAAWjM,GAId6nB,GACFv1B,KAAKs1B,UAAUC,GAIbxzB,EACF/B,KAAKizB,SAASlxB,GAGd/B,KAAKse,SAlGT,GAAI1E,GAAU1Z,EAAoB,IAC9BgzB,EAAShzB,EAAoB,IAC7BS,EAAOT,EAAoB,GAC3BW,EAAUX,EAAoB,GAC9BY,EAAWZ,EAAoB,GAC/ByB,EAAQzB,EAAoB,IAC5B2C,EAAW3C,EAAoB,IAC/BmC,EAAcnC,EAAoB,IAClCoC,EAAapC,EAAoB,IACjC0C,EAAY1C,EAAoB,GA8FpC0Z,GAAQpY,EAAQ+P,WAShB/P,EAAQ+P,UAAUsgB,QAAU,SAAUjb,GACpC5W,KAAKktB,OAELltB,KAAKktB,IAAIxtB,KAAuBkQ,SAASK,cAAc,OACvDjQ,KAAKktB,IAAI9hB,WAAuBwE,SAASK,cAAc,OACvDjQ,KAAKktB,IAAIiG,mBAAuBvjB,SAASK,cAAc,OACvDjQ,KAAKktB,IAAI4K,8BAAgCloB,SAASK,cAAc,OAChEjQ,KAAKktB,IAAImG,gBAAuBzjB,SAASK,cAAc,OACvDjQ,KAAKktB,IAAIoG,cAAuB1jB,SAASK,cAAc,OACvDjQ,KAAKktB,IAAIqG,eAAuB3jB,SAASK,cAAc,OACvDjQ,KAAKktB,IAAIkG,qBAAuBxjB,SAASK,cAAc,OACvDjQ,KAAKktB,IAAIjE,OAAuBrZ,SAASK,cAAc,OACvDjQ,KAAKktB,IAAIjmB,KAAuB2I,SAASK,cAAc,OACvDjQ,KAAKktB,IAAIhJ,MAAuBtU,SAASK,cAAc,OACvDjQ,KAAKktB,IAAI7lB,IAAuBuI,SAASK,cAAc,OACvDjQ,KAAKktB,IAAI/M,OAAuBvQ,SAASK,cAAc,OACvDjQ,KAAKktB,IAAIsG,UAAuB5jB,SAASK,cAAc,OACvDjQ,KAAKktB,IAAIuG,aAAuB7jB,SAASK,cAAc,OACvDjQ,KAAKktB,IAAIwG,cAAuB9jB,SAASK,cAAc,OACvDjQ,KAAKktB,IAAIyG,iBAAuB/jB,SAASK,cAAc,OACvDjQ,KAAKktB,IAAI0G,eAAuBhkB,SAASK,cAAc,OACvDjQ,KAAKktB,IAAI2G,kBAAuBjkB,SAASK,cAAc,OAEvDjQ,KAAKktB,IAAI9hB,WAAW5D,UAAsB,sBAC1CxH,KAAKktB,IAAIiG,mBAAmB3rB,UAAc,+BAC1CxH,KAAKktB,IAAI4K,8BAA8BtwB,UAAY,iCACnDxH,KAAKktB,IAAIkG,qBAAqB5rB,UAAY,iCAC1CxH,KAAKktB,IAAImG,gBAAgB7rB,UAAiB,kBAC1CxH,KAAKktB,IAAIoG,cAAc9rB,UAAmB,gBAC1CxH,KAAKktB,IAAIqG,eAAe/rB,UAAkB,iBAC1CxH,KAAKktB,IAAI7lB,IAAIG,UAA6B,eAC1CxH,KAAKktB,IAAI/M,OAAO3Y,UAA0B,kBAC1CxH,KAAKktB,IAAIjmB,KAAKO,UAA4B,UAC1CxH,KAAKktB,IAAIjE,OAAOzhB,UAA0B,UAC1CxH,KAAKktB,IAAIhJ,MAAM1c,UAA2B,UAC1CxH,KAAKktB,IAAIsG,UAAUhsB,UAAuB,aAC1CxH,KAAKktB,IAAIuG,aAAajsB,UAAoB,gBAC1CxH,KAAKktB,IAAIwG,cAAclsB,UAAmB,aAC1CxH,KAAKktB,IAAIyG,iBAAiBnsB,UAAgB,gBAC1CxH,KAAKktB,IAAI0G,eAAepsB,UAAkB,aAC1CxH,KAAKktB,IAAI2G,kBAAkBrsB,UAAe,gBAE1CxH,KAAKktB,IAAIxtB,KAAKoQ,YAAY9P,KAAKktB,IAAI9hB,YACnCpL,KAAKktB,IAAIxtB,KAAKoQ,YAAY9P,KAAKktB,IAAIiG,oBACnCnzB,KAAKktB,IAAIxtB,KAAKoQ,YAAY9P,KAAKktB,IAAI4K,+BACnC93B,KAAKktB,IAAIxtB,KAAKoQ,YAAY9P,KAAKktB,IAAImG,iBACnCrzB,KAAKktB,IAAIxtB,KAAKoQ,YAAY9P,KAAKktB,IAAIoG,eACnCtzB,KAAKktB,IAAIxtB,KAAKoQ,YAAY9P,KAAKktB,IAAIqG,gBACnCvzB,KAAKktB,IAAIxtB,KAAKoQ,YAAY9P,KAAKktB,IAAI7lB,KACnCrH,KAAKktB,IAAIxtB,KAAKoQ,YAAY9P,KAAKktB,IAAI/M,QAEnCngB,KAAKktB,IAAI4K,8BAA8BhoB,YAAY9P,KAAKktB,IAAIkG,sBAC5DpzB,KAAKktB,IAAImG,gBAAgBvjB,YAAY9P,KAAKktB,IAAIjE,QAC9CjpB,KAAKktB,IAAIoG,cAAcxjB,YAAY9P,KAAKktB,IAAIjmB,MAC5CjH,KAAKktB,IAAIqG,eAAezjB,YAAY9P,KAAKktB,IAAIhJ,OAE7ClkB,KAAKktB,IAAImG,gBAAgBvjB,YAAY9P,KAAKktB,IAAIsG,WAC9CxzB,KAAKktB,IAAImG,gBAAgBvjB,YAAY9P,KAAKktB,IAAIuG,cAC9CzzB,KAAKktB,IAAIoG,cAAcxjB,YAAY9P,KAAKktB,IAAIwG,eAC5C1zB,KAAKktB,IAAIoG,cAAcxjB,YAAY9P,KAAKktB,IAAIyG,kBAC5C3zB,KAAKktB,IAAIqG,eAAezjB,YAAY9P,KAAKktB,IAAI0G,gBAC7C5zB,KAAKktB,IAAIqG,eAAezjB,YAAY9P,KAAKktB,IAAI2G,mBAE7C7zB,KAAKwR,GAAG,cAAexR,KAAKse,OAAO2T,KAAKjyB,OACxCA,KAAKwR,GAAG,SAAUxR,KAAKse,OAAO2T,KAAKjyB,OACnCA,KAAKwR,GAAG,QAASxR,KAAK8zB,SAAS7B,KAAKjyB,OACpCA,KAAKwR,GAAG,QAASxR,KAAK+zB,SAAS9B,KAAKjyB,OACpCA,KAAKwR,GAAG,YAAaxR,KAAKg0B,aAAa/B,KAAKjyB,OAC5CA,KAAKwR,GAAG,OAAQxR,KAAKi0B,QAAQhC,KAAKjyB,OAIlCA,KAAKyD,OAASyvB,EAAOlzB,KAAKktB,IAAIxtB,MAC5Bw0B,iBAAiB,IAEnBl0B,KAAKm0B,YAEL,IAAI/hB,GAAKpS,KACLo0B,GACF,QAAS,QACT,MAAO,YAAa,OACpB,YAAa,OAAQ,UACrB,aAAc,iBA8BhB,IA5BAA,EAAOnsB,QAAQ,SAAUiB,GACvB,GAAIR,GAAW,WACb,GAAI2rB,IAAQnrB,GAAO+I,OAAOtM,MAAM4L,UAAU+iB,MAAM/zB,KAAK6E,UAAW,GAChEgN,GAAGyY,KAAK1U,MAAM/D,EAAIiiB,GAEpBjiB,GAAG3O,OAAO+N,GAAGtI,EAAOR,GACpB0J,EAAG+hB,UAAUjrB,GAASR,IAIxB1I,KAAK0F,OACHhG,QACA0L,cACAioB,mBACAC,iBACAC,kBACAtK,UACAhiB,QACAid,SACA7c,OACA8Y,UACA9U,UACAkpB,UAAW,EACXC,aAAc,GAEhBx0B,KAAKy0B,UAGA7d,EAAW,KAAM,IAAIrT,OAAM,wBAChCqT,GAAU9G,YAAY9P,KAAKktB,IAAIxtB,OAMjC8B,EAAQ+P,UAAUmjB,QAAU,WAE1B10B,KAAK4U,QAGL5U,KAAK2R,MAGL3R,KAAK20B,kBAGD30B,KAAKktB,IAAIxtB,KAAK8J,YAChBxJ,KAAKktB,IAAIxtB,KAAK8J,WAAWgG,YAAYxP,KAAKktB,IAAIxtB,MAEhDM,KAAKktB,IAAM,IAGX,KAAK,GAAIhkB,KAASlJ,MAAKm0B,UACjBn0B,KAAKm0B,UAAU3uB,eAAe0D,UACzBlJ,MAAKm0B,UAAUjrB,EAG1BlJ,MAAKm0B,UAAY,KACjBn0B,KAAKyD,OAAS,KAGdzD,KAAK8B,WAAWmG,QAAQ,SAAU2sB,GAChCA,EAAUF,YAGZ10B,KAAK8xB,KAAO,MA4BdtwB,EAAQ+P,UAAUoI,WAAa,SAAUjM,GACvC,GAAIA,EAAS,CAEX,GAAIP,IAAU,QAAS,SAAU,YAAa,YAAa,aAAc,QAAS,MAAO,cACzFxM,GAAK8E,gBAAgB0H,EAAQnN,KAAK0N,QAASA,GAG3C1N,KAAK60B,kBASP,GALA70B,KAAK8B,WAAWmG,QAAQ,SAAU2sB,GAChCA,EAAUjb,WAAWjM,KAInBA,GAAWA,EAAQgG,MACrB,KAAM,IAAInQ,OAAM,wEAIlBvD,MAAKse,UAOP9c,EAAQ+P,UAAUujB,cAAgB,SAAUC,GAC1C,IAAK/0B,KAAK6yB,WACR,KAAM,IAAItvB,OAAM,yDAGlBvD,MAAK6yB,WAAWiC,cAAcC,IAOhCvzB,EAAQ+P,UAAUyjB,cAAgB,WAChC,IAAKh1B,KAAK6yB,WACR,KAAM,IAAItvB,OAAM,yDAGlB,OAAOvD,MAAK6yB,WAAWmC,iBAOzBxzB,EAAQ+P,UAAU0hB,SAAW,SAASlxB,GACpC,GAGIkzB,GAHAC,EAAiC,MAAlBl1B,KAAK+yB,SAwBxB,IAhBEkC,EAJGlzB,EAGIA,YAAiBlB,IAAWkB,YAAiBjB,GACvCiB,EAIA,GAAIlB,GAAQkB,GACvBuE,MACEoI,MAAO,OACPyW,IAAK,UAVI,KAgBfnlB,KAAK+yB,UAAYkC,EACjBj1B,KAAK63B,WAAa73B,KAAK63B,UAAU5E,SAASgC,GAEtCC,IAAgB,SAAWl1B,MAAK0N,SAAW,OAAS1N,MAAK0N,SAAU,CACrE1N,KAAKm1B,KAEL,IAAIzmB,GAAS,SAAW1O,MAAK0N,QAAW/M,EAAK0F,QAAQrG,KAAK0N,QAAQgB,MAAO,QAAU,KAC/EyW,EAAS,OAASnlB,MAAK0N,QAAa/M,EAAK0F,QAAQrG,KAAK0N,QAAQyX,IAAK,QAAU,IAEjFnlB,MAAKo1B,UAAU1mB,EAAOyW,KAQ1B3jB,EAAQ+P,UAAU+jB,UAAY,SAASC,GAErC,GAAIN,EAKFA,GAJGM,EAGIA,YAAkB10B,IAAW00B,YAAkBz0B,GACzCy0B,EAIA,GAAI10B,GAAQ00B,GAPZ,KAUfv1B,KAAKgzB,WAAaiC,EAClBj1B,KAAK63B,UAAUvC,UAAUL,IAa3BzzB,EAAQ+P,UAAUqD,MAAQ,SAAS4gB,KAE5BA,GAAQA,EAAKzzB,QAChB/B,KAAKizB,SAAS,QAIXuC,GAAQA,EAAKD,SAChBv1B,KAAKs1B,UAAU,QAIZE,GAAQA,EAAK9nB,WAChB1N,KAAK8B,WAAWmG,QAAQ,SAAU2sB,GAChCA,EAAUjb,WAAWib,EAAUpD,kBAGjCxxB,KAAK2Z,WAAW3Z,KAAKwxB,kBAOzBhwB,EAAQ+P,UAAU4jB,IAAM,WAEtB,GAAIM,GAAYz1B,KAAK01B,eAGjBhnB,EAAQ+mB,EAAU1qB,IAClBoa,EAAMsQ,EAAUhpB,GACpB,IAAa,MAATiC,GAAwB,MAAPyW,EAAa,CAChC,GAAI2K,GAAY3K,EAAI3e,UAAYkI,EAAMlI,SACtB,IAAZspB,IAEFA,EAAW,OAEbphB,EAAQ,GAAI1K,MAAK0K,EAAMlI,UAAuB,IAAXspB,GACnC3K,EAAM,GAAInhB,MAAKmhB,EAAI3e,UAAuB,IAAXspB,IAInB,OAAVphB,GAA0B,OAARyW,IAItBnlB,KAAK8N,MAAM+iB,SAASniB,EAAOyW,IAS7B3jB,EAAQ+P,UAAUmkB,aAAe,WAE/B,GAAI3C,GAAY/yB,KAAK+yB,UACnBhoB,EAAM,KACN0B,EAAM,IAER,IAAIsmB,EAAW,CAEb,GAAI6C,GAAU7C,EAAUhoB,IAAI,QAC5BA,GAAM6qB,EAAUj1B,EAAK0F,QAAQuvB,EAAQlnB,MAAO,QAAQlI,UAAY,IAKhE,IAAIqvB,GAAe9C,EAAUtmB,IAAI,QAC7BopB,KACFppB,EAAM9L,EAAK0F,QAAQwvB,EAAannB,MAAO,QAAQlI,UAEjD,IAAIsvB,GAAa/C,EAAUtmB,IAAI,MAC3BqpB,KAEArpB,EADS,MAAPA,EACI9L,EAAK0F,QAAQyvB,EAAW3Q,IAAK,QAAQ3e,UAGrC5B,KAAK6H,IAAIA,EAAK9L,EAAK0F,QAAQyvB,EAAW3Q,IAAK,QAAQ3e,YAK/D,OACEuE,IAAa,MAAPA,EAAe,GAAI/G,MAAK+G,GAAO,KACrC0B,IAAa,MAAPA,EAAe,GAAIzI,MAAKyI,GAAO,OAiBzCjL,EAAQ+P,UAAU6jB,UAAY,SAAS1mB,EAAOyW,GAC5C,GAAwB,GAApB/f,UAAUC,OAAa,CACzB,GAAIyI,GAAQ1I,UAAU,EACtBpF,MAAK8N,MAAM+iB,SAAS/iB,EAAMY,MAAOZ,EAAMqX,SAGvCnlB,MAAK8N,MAAM+iB,SAASniB,EAAOyW,IAQ/B3jB,EAAQ+P,UAAU0kB,UAAY,WAC5B,GAAInoB,GAAQ9N,KAAK8N,MAAMooB,UACvB,QACExnB,MAAO,GAAI1K,MAAK8J,EAAMY,OACtByW,IAAK,GAAInhB,MAAK8J,EAAMqX,OAQxB3jB,EAAQ+P,UAAU+M,OAAS,WACzB,GAAI6X,IAAU,EACZzoB,EAAU1N,KAAK0N,QACfhI,EAAQ1F,KAAK0F,MACbwnB,EAAMltB,KAAKktB,GAEb,IAAKA,EAAL,CAGAA,EAAIxtB,KAAK8H,UAAY,qBAAuBkG,EAAQgkB,YAGpDxE,EAAIxtB,KAAK8Q,MAAMmhB,UAAYhxB,EAAK8I,OAAOK,OAAO4D,EAAQikB,UAAW,IACjEzE,EAAIxtB,KAAK8Q,MAAMohB,UAAYjxB,EAAK8I,OAAOK,OAAO4D,EAAQkkB,UAAW,IACjE1E,EAAIxtB,KAAK8Q,MAAMI,MAAQjQ,EAAK8I,OAAOK,OAAO4D,EAAQkD,MAAO,IAGzDlL,EAAM2F,OAAOpE,MAAUimB,EAAImG,gBAAgB9F,YAAcL,EAAImG,gBAAgBhX,aAAe,EAC5F3W,EAAM2F,OAAO6Y,MAASxe,EAAM2F,OAAOpE,KACnCvB,EAAM2F,OAAOhE,KAAU6lB,EAAImG,gBAAgB5F,aAAeP,EAAImG,gBAAgB3R,cAAgB,EAC9Fhc,EAAM2F,OAAO8U,OAASza,EAAM2F,OAAOhE,GACnC,IAAI+uB,GAAkBlJ,EAAIxtB,KAAK+tB,aAAeP,EAAIxtB,KAAKgiB,aACnD2U,EAAkBnJ,EAAIxtB,KAAK6tB,YAAcL,EAAIxtB,KAAK2c,WAItD3W,GAAMujB,OAAOpY,OAASqc,EAAIjE,OAAOwE,aACjC/nB,EAAMuB,KAAK4J,OAAWqc,EAAIjmB,KAAKwmB,aAC/B/nB,EAAMwe,MAAMrT,OAAUqc,EAAIhJ,MAAMuJ,aAChC/nB,EAAM2B,IAAIwJ,OAAYqc,EAAI7lB,IAAIqa,eAAoBhc,EAAM2F,OAAOhE,IAC/D3B,EAAMya,OAAOtP,OAASqc,EAAI/M,OAAOuB,eAAiBhc,EAAM2F,OAAO8U,MAM/D,IAAIqN,GAAgB5oB,KAAK6H,IAAI/G,EAAMuB,KAAK4J,OAAQnL,EAAMujB,OAAOpY,OAAQnL,EAAMwe,MAAMrT,QAC7EylB,EAAa5wB,EAAM2B,IAAIwJ,OAAS2c,EAAgB9nB,EAAMya,OAAOtP,OAC/DulB,EAAmB1wB,EAAM2F,OAAOhE,IAAM3B,EAAM2F,OAAO8U,MACrD+M,GAAIxtB,KAAK8Q,MAAMK,OAASlQ,EAAK8I,OAAOK,OAAO4D,EAAQmD,OAAQylB,EAAa,MAGxE5wB,EAAMhG,KAAKmR,OAASqc,EAAIxtB,KAAK+tB,aAC7B/nB,EAAM0F,WAAWyF,OAASnL,EAAMhG,KAAKmR,OAASulB,CAC9C,IAAIG,GAAkB7wB,EAAMhG,KAAKmR,OAASnL,EAAM2B,IAAIwJ,OAASnL,EAAMya,OAAOtP,OACxEulB,CACF1wB,GAAM2tB,gBAAgBxiB,OAAU0lB,EAChC7wB,EAAM4tB,cAAcziB,OAAY0lB,EAChC7wB,EAAM6tB,eAAe1iB,OAAWnL,EAAM4tB,cAAcziB,OAGpDnL,EAAMhG,KAAKkR,MAAQsc,EAAIxtB,KAAK6tB,YAC5B7nB,EAAM0F,WAAWwF,MAAQlL,EAAMhG,KAAKkR,MAAQylB,EAC5C3wB,EAAMuB,KAAK2J,MAAQsc,EAAIoG,cAAcjX,cAAkB3W,EAAM2F,OAAOpE,KACpEvB,EAAM4tB,cAAc1iB,MAAQlL,EAAMuB,KAAK2J,MACvClL,EAAMwe,MAAMtT,MAAQsc,EAAIqG,eAAelX,cAAgB3W,EAAM2F,OAAO6Y,MACpExe,EAAM6tB,eAAe3iB,MAAQlL,EAAMwe,MAAMtT,KACzC,IAAI4lB,GAAc9wB,EAAMhG,KAAKkR,MAAQlL,EAAMuB,KAAK2J,MAAQlL,EAAMwe,MAAMtT,MAAQylB,CAC5E3wB,GAAMujB,OAAOrY,MAAiB4lB,EAC9B9wB,EAAM2tB,gBAAgBziB,MAAQ4lB,EAC9B9wB,EAAM2B,IAAIuJ,MAAoB4lB,EAC9B9wB,EAAMya,OAAOvP,MAAiB4lB,EAG9BtJ,EAAI9hB,WAAWoF,MAAMK,OAAmBnL,EAAM0F,WAAWyF,OAAS,KAClEqc,EAAIiG,mBAAmB3iB,MAAMK,OAAWnL,EAAM0F,WAAWyF,OAAS,KAClEqc,EAAI4K,8BAA8BtnB,MAAMK,OAASnL,EAAM2tB,gBAAgBxiB,OAAS,KAChFqc,EAAImG,gBAAgB7iB,MAAMK,OAAcnL,EAAM2tB,gBAAgBxiB,OAAS,KACvEqc,EAAIoG,cAAc9iB,MAAMK,OAAgBnL,EAAM4tB,cAAcziB,OAAS,KACrEqc,EAAIqG,eAAe/iB,MAAMK,OAAenL,EAAM6tB,eAAe1iB,OAAS,KAEtEqc,EAAI9hB,WAAWoF,MAAMI,MAAmBlL,EAAM0F,WAAWwF,MAAQ,KACjEsc,EAAIiG,mBAAmB3iB,MAAMI,MAAWlL,EAAM2tB,gBAAgBziB,MAAQ,KACtEsc,EAAI4K,8BAA8BtnB,MAAMI,MAASlL,EAAM0F,WAAWwF,MAAQ,KAC1Esc,EAAIkG,qBAAqB5iB,MAAMI,MAASlL,EAAM0F,WAAWwF,MAAQ,KACjEsc,EAAImG,gBAAgB7iB,MAAMI,MAAclL,EAAMujB,OAAOrY,MAAQ,KAC7Dsc,EAAI7lB,IAAImJ,MAAMI,MAA0BlL,EAAM2B,IAAIuJ,MAAQ,KAC1Dsc,EAAI/M,OAAO3P,MAAMI,MAAuBlL,EAAMya,OAAOvP,MAAQ,KAG7Dsc,EAAI9hB,WAAWoF,MAAMvJ,KAAiB,IACtCimB,EAAI9hB,WAAWoF,MAAMnJ,IAAiB,IACtC6lB,EAAIiG,mBAAmB3iB,MAAMvJ,KAASvB,EAAMuB,KAAK2J,MAAQ,KACzDsc,EAAIiG,mBAAmB3iB,MAAMnJ,IAAS,IACtC6lB,EAAI4K,8BAA8BtnB,MAAMvJ,KAAO,IAC/CimB,EAAI4K,8BAA8BtnB,MAAMnJ,IAAO3B,EAAM2B,IAAIwJ,OAAS,KAClEqc,EAAImG,gBAAgB7iB,MAAMvJ,KAAYvB,EAAMuB,KAAK2J,MAAQ,KACzDsc,EAAImG,gBAAgB7iB,MAAMnJ,IAAY3B,EAAM2B,IAAIwJ,OAAS,KACzDqc,EAAIoG,cAAc9iB,MAAMvJ,KAAc,IACtCimB,EAAIoG,cAAc9iB,MAAMnJ,IAAc3B,EAAM2B,IAAIwJ,OAAS,KACzDqc,EAAIqG,eAAe/iB,MAAMvJ,KAAcvB,EAAMuB,KAAK2J,MAAQlL,EAAMujB,OAAOrY,MAAS,KAChFsc,EAAIqG,eAAe/iB,MAAMnJ,IAAa3B,EAAM2B,IAAIwJ,OAAS,KACzDqc,EAAI7lB,IAAImJ,MAAMvJ,KAAwBvB,EAAMuB,KAAK2J,MAAQ,KACzDsc,EAAI7lB,IAAImJ,MAAMnJ,IAAwB,IACtC6lB,EAAI/M,OAAO3P,MAAMvJ,KAAqBvB,EAAMuB,KAAK2J,MAAQ,KACzDsc,EAAI/M,OAAO3P,MAAMnJ,IAAsB3B,EAAM2B,IAAIwJ,OAASnL,EAAM2tB,gBAAgBxiB,OAAU,KAI1F7Q,KAAKy2B,kBAGL,IAAIhQ,GAASzmB,KAAK0F,MAAM6uB,SACG,WAAvB7mB,EAAQgkB,cACVjL,GAAU7hB,KAAK6H,IAAIzM,KAAK0F,MAAM2tB,gBAAgBxiB,OAAS7Q,KAAK0F,MAAMujB,OAAOpY,OACrE7Q,KAAK0F,MAAM2F,OAAOhE,IAAMrH,KAAK0F,MAAM2F,OAAO8U,OAAQ,IAExD+M,EAAIjE,OAAOzY,MAAMvJ,KAAO,IACxBimB,EAAIjE,OAAOzY,MAAMnJ,IAAOof,EAAS,KACjCyG,EAAIkG,qBAAqB5iB,MAAMvJ,KAAO,IACtCimB,EAAIkG,qBAAqB5iB,MAAMnJ,IAAOof,EAAS,KAC/CyG,EAAIjmB,KAAKuJ,MAAMvJ,KAAS,IACxBimB,EAAIjmB,KAAKuJ,MAAMnJ,IAASof,EAAS,KACjCyG,EAAIhJ,MAAM1T,MAAMvJ,KAAQ,IACxBimB,EAAIhJ,MAAM1T,MAAMnJ,IAAQof,EAAS,IAGjC,IAAIiQ,GAAwC,GAAxB12B,KAAK0F,MAAM6uB,UAAiB,SAAW,GACvDoC,EAAmB32B,KAAK0F,MAAM6uB,WAAav0B,KAAK0F,MAAM8uB,aAAe,SAAW,EACpFtH,GAAIsG,UAAUhjB,MAAMomB,WAAsBF,EAC1CxJ,EAAIuG,aAAajjB,MAAMomB,WAAmBD,EAC1CzJ,EAAIwG,cAAcljB,MAAMomB,WAAkBF,EAC1CxJ,EAAIyG,iBAAiBnjB,MAAMomB,WAAeD,EAC1CzJ,EAAI0G,eAAepjB,MAAMomB,WAAiBF,EAC1CxJ,EAAI2G,kBAAkBrjB,MAAMomB,WAAcD,EAG1C32B,KAAK8B,WAAWmG,QAAQ,SAAU2sB,GAChCuB,EAAUvB,EAAUtW,UAAY6X,IAE9BA,GAEFn2B,KAAKse,WAWT9c,EAAQ+P,UAAUihB,QAAU,SAASriB,GACnC,GAAI2mB,GAAa92B,KAAK8N,MAAMgpB,WAAW92B,KAAK0F,MAAMujB,OAAOrY,MACzD,OAAO,IAAI5M,MAAKmM,EAAI2mB,EAAWhd,MAAQgd,EAAWrQ,SAYpDjlB,EAAQ+P,UAAUmhB,cAAgB,SAASviB,GACzC,GAAI2mB,GAAa92B,KAAK8N,MAAMgpB,WAAW92B,KAAK0F,MAAMhG,KAAKkR,MACvD,OAAO,IAAI5M,MAAKmM,EAAI2mB,EAAWhd,MAAQgd,EAAWrQ,SAWpDjlB,EAAQ+P,UAAU6gB,UAAY,SAAS2C,GACrC,GAAI+B,GAAa92B,KAAK8N,MAAMgpB,WAAW92B,KAAK0F,MAAMujB,OAAOrY,MACzD,QAAQmkB,EAAKvuB,UAAYswB,EAAWrQ,QAAUqQ,EAAWhd,OAa3DtY,EAAQ+P,UAAU+gB,gBAAkB,SAASyC,GAC3C,GAAI+B,GAAa92B,KAAK8N,MAAMgpB,WAAW92B,KAAK0F,MAAMhG,KAAKkR,MACvD,QAAQmkB,EAAKvuB,UAAYswB,EAAWrQ,QAAUqQ,EAAWhd,OAO3DtY,EAAQ+P,UAAUsjB,gBAAkB,WACH,GAA3B70B,KAAK0N,QAAQ+jB,WACfzxB,KAAK+2B,mBAGL/2B,KAAK20B,mBASTnzB,EAAQ+P,UAAUwlB,iBAAmB,WACnC,GAAI3kB,GAAKpS,IAETA,MAAK20B,kBAEL30B,KAAKg3B,UAAY,WACf,MAA6B,IAAzB5kB,EAAG1E,QAAQ+jB,eAEbrf,GAAGuiB,uBAIDviB,EAAG8a,IAAIxtB,OAEJ0S,EAAG8a,IAAIxtB,KAAK2c,aAAejK,EAAG1M,MAAMuxB,WACtC7kB,EAAG8a,IAAIxtB,KAAKgiB,cAAgBtP,EAAG1M,MAAMwxB,cACtC9kB,EAAG1M,MAAMuxB,UAAY7kB,EAAG8a,IAAIxtB,KAAK2c,YACjCjK,EAAG1M,MAAMwxB,WAAa9kB,EAAG8a,IAAIxtB,KAAKgiB,aAElCtP,EAAGyY,KAAK,aAMdlqB,EAAK4H,iBAAiBrB,OAAQ,SAAUlH,KAAKg3B,WAE7Ch3B,KAAKm3B,WAAaC,YAAYp3B,KAAKg3B,UAAW,MAOhDx1B,EAAQ+P,UAAUojB,gBAAkB,WAC9B30B,KAAKm3B,aACPpH,cAAc/vB,KAAKm3B,YACnBn3B,KAAKm3B,WAAajxB,QAIpBvF,EAAKoI,oBAAoB7B,OAAQ,SAAUlH,KAAKg3B,WAChDh3B,KAAKg3B,UAAY,MAQnBx1B,EAAQ+P,UAAUuiB,SAAW,WAC3B9zB,KAAKy0B,MAAM4C,eAAgB,GAQ7B71B,EAAQ+P,UAAUwiB,SAAW,WAC3B/zB,KAAKy0B,MAAM4C,eAAgB,GAQ7B71B,EAAQ+P,UAAUyiB,aAAe,WAC/Bh0B,KAAKy0B,MAAM6C,iBAAmBt3B,KAAK0F,MAAM6uB,WAQ3C/yB,EAAQ+P,UAAU0iB,QAAU,SAAU/qB,GAGpC,GAAKlJ,KAAKy0B,MAAM4C,cAAhB,CAEA,GAAIzL,GAAQ1iB,EAAMquB,QAAQC,OAEtBC,EAAez3B,KAAK03B,gBACpBC,EAAe33B,KAAK43B,cAAc53B,KAAKy0B,MAAM6C,iBAAmB1L,EAEhE+L,IAAgBF,GAClBz3B,KAAKse,WAUT9c,EAAQ+P,UAAUqmB,cAAgB,SAAUrD,GAG1C,MAFAv0B,MAAK0F,MAAM6uB,UAAYA,EACvBv0B,KAAKy2B,mBACEz2B,KAAK0F,MAAM6uB,WAQpB/yB,EAAQ+P,UAAUklB,iBAAmB,WAEnC,GAAIjC,GAAe5vB,KAAKmG,IAAI/K,KAAK0F,MAAM2tB,gBAAgBxiB,OAAS7Q,KAAK0F,MAAMujB,OAAOpY,OAAQ,EAc1F,OAbI2jB,IAAgBx0B,KAAK0F,MAAM8uB,eAGG,UAA5Bx0B,KAAK0N,QAAQgkB,cACf1xB,KAAK0F,MAAM6uB,WAAcC,EAAex0B,KAAK0F,MAAM8uB,cAErDx0B,KAAK0F,MAAM8uB,aAAeA,GAIxBx0B,KAAK0F,MAAM6uB,UAAY,IAAGv0B,KAAK0F,MAAM6uB,UAAY,GACjDv0B,KAAK0F,MAAM6uB,UAAYC,IAAcx0B,KAAK0F,MAAM6uB,UAAYC,GAEzDx0B,KAAK0F,MAAM6uB,WAQpB/yB,EAAQ+P,UAAUmmB,cAAgB,WAChC,MAAO13B,MAAK0F,MAAM6uB,WAGpB10B,EAAOD,QAAU4B,GAKb,SAAS3B,GA4Bb,QAAS6B,GAASgN,EAAOyW,EAAK4S,EAAaxB,EAAiByB,GAE1Dh4B,KAAKi4B,QAAU,EAEfj4B,KAAKk4B,WAAY,EACjBl4B,KAAKm4B,UAAY,EACjBn4B,KAAKglB,KAAO,EACZhlB,KAAK8Z,MAAQ,EAEb9Z,KAAKo4B,YACLp4B,KAAKq4B,UAELr4B,KAAKs4B,YAAc,EAAO,EAAM,EAAI,IACpCt4B,KAAKu4B,YAAc,IAAO,GAAM,EAAI,GAEpCv4B,KAAK6wB,SAASniB,EAAOyW,EAAK4S,EAAaxB,EAAiByB,GAe1Dt2B,EAAS6P,UAAUsf,SAAW,SAASniB,EAAOyW,EAAK4S,EAAaxB,EAAiByB,GAC/Eh4B,KAAKwwB,OAAS9hB,EACd1O,KAAKywB,KAAOtL,EAERzW,GAASyW,IACXnlB,KAAKwwB,OAAS9hB,EAAQ,IACtB1O,KAAKywB,KAAOtL,EAAM,GAGhBnlB,KAAKk4B,WACPl4B,KAAKw4B,eAAeT,EAAaxB,EAAiByB,GAEpDh4B,KAAKy4B,YAOP/2B,EAAS6P,UAAUinB,eAAiB,SAAST,EAAaxB,GAExD,GAAI7lB,GAAO1Q,KAAKywB,KAAOzwB,KAAKwwB,OACxBkI,EAAkB,IAAPhoB,EACXioB,EAAmBZ,GAAeW,EAAWnC,GAC7CqC,EAAmBh0B,KAAK+lB,MAAM/lB,KAAKgK,IAAI8pB,GAAU9zB,KAAKqsB,MAEtD4H,EAAe,GACfC,EAAkBl0B,KAAKusB,IAAI,GAAGyH,GAE9BlqB,EAAQ,CACW,GAAnBkqB,IACFlqB,EAAQkqB,EAIV,KAAK,GADDG,IAAgB,EACX7zB,EAAIwJ,EAAO9J,KAAK+iB,IAAIziB,IAAMN,KAAK+iB,IAAIiR,GAAmB1zB,IAAK,CAClE4zB,EAAkBl0B,KAAKusB,IAAI,GAAGjsB,EAC9B,KAAK,GAAIyjB,GAAI,EAAGA,EAAI3oB,KAAKu4B,WAAWlzB,OAAQsjB,IAAK,CAC/C,GAAIqQ,GAAWF,EAAkB94B,KAAKu4B,WAAW5P,EACjD,IAAIqQ,GAAYL,EAAkB,CAChCI,GAAgB,EAChBF,EAAelQ,CACf;EAGJ,GAAqB,GAAjBoQ,EACF,MAGJ/4B,KAAKm4B,UAAYU,EACjB74B,KAAK8Z,MAAQgf,EACb94B,KAAKglB,KAAO8T,EAAkB94B,KAAKu4B,WAAWM,IAOhDn3B,EAAS6P,UAAU0nB,MAAQ,WACzBj5B,KAAKy4B,YAOP/2B,EAAS6P,UAAUknB,SAAW,WAC5B,GAAIS,GAAYl5B,KAAKwwB,OAAUxwB,KAAK8Z,MAAQ9Z,KAAKu4B,WAAWv4B,KAAKm4B,WAC7DgB,EAAUn5B,KAAKywB,KAAQzwB,KAAK8Z,MAAQ9Z,KAAKu4B,WAAWv4B,KAAKm4B,UAE7Dn4B,MAAKq4B,UAAYr4B,KAAKo5B,aAAaD,GACnCn5B,KAAKo4B,YAAcp4B,KAAKo5B,aAAaF,GACrCl5B,KAAKq5B,YAAcr5B,KAAKq4B,UAAYr4B,KAAKo4B,YAEzCp4B,KAAKi4B,QAAUj4B,KAAKq4B,WAItB32B,EAAS6P,UAAU6nB,aAAe,SAASvyB,GACzC,GAAIyyB,GAAUzyB,EAASA,GAAS7G,KAAK8Z,MAAQ9Z,KAAKu4B,WAAWv4B,KAAKm4B,WAClE,OAAItxB,IAAS7G,KAAK8Z,MAAQ9Z,KAAKu4B,WAAWv4B,KAAKm4B,YAAc,GAAOn4B,KAAK8Z,MAAQ9Z,KAAKu4B,WAAWv4B,KAAKm4B,WAC7FmB,EAAWt5B,KAAK8Z,MAAQ9Z,KAAKu4B,WAAWv4B,KAAKm4B,WAG7CmB,GASX53B,EAAS6P,UAAUgoB,QAAU,WAC3B,MAAQv5B,MAAKi4B,SAAWj4B,KAAKo4B,aAM/B12B,EAAS6P,UAAU2T,KAAO,WACxB,GAAIgK,GAAOlvB,KAAKi4B,OAChBj4B,MAAKi4B,SAAWj4B,KAAKglB,KAGjBhlB,KAAKi4B,SAAW/I,IAClBlvB,KAAKi4B,QAAUj4B,KAAKywB,OAOxB/uB,EAAS6P,UAAUioB,SAAW,WAC5Bx5B,KAAKi4B,SAAWj4B,KAAKglB,KACrBhlB,KAAKq4B,WAAar4B,KAAKglB,KACvBhlB,KAAKq5B,YAAcr5B,KAAKq4B,UAAYr4B,KAAKo4B,aAS3C12B,EAAS6P,UAAU0T,WAAa,WAE9B,IAAK,GADDqM,GAAc,GAAK1tB,OAAO5D,KAAKi4B,SAAS3G,YAAY,GAC/CpsB,EAAIosB,EAAYjsB,OAAO,EAAGH,EAAI,EAAGA,IAAK,CAC7C,GAAsB,KAAlBosB,EAAYpsB,GAGX,CAAA,GAAsB,KAAlBosB,EAAYpsB,IAA+B,KAAlBosB,EAAYpsB,GAAW,CACvDosB,EAAcA,EAAYgD,MAAM,EAAEpvB,EAClC,OAGA,MAPAosB,EAAcA,EAAYgD,MAAM,EAAEpvB,GAWtC,MAAOosB,IAWT5vB,EAAS6P,UAAU2gB,KAAO,aAS1BxwB,EAAS6P,UAAUkoB,QAAU,WAC3B,MAAQz5B,MAAKi4B,SAAWj4B,KAAK8Z,MAAQ9Z,KAAKs4B,WAAWt4B,KAAKm4B,aAAe,GAG3Et4B,EAAOD,QAAU8B,GAKb,SAAS7B,EAAQD,EAASM,GAe9B,QAASyB,GAAMmwB,EAAMpkB,GACnB,GAAIgsB,GAAMl2B,IAASm2B,MAAM,GAAGC,QAAQ,GAAGC,QAAQ,GAAGC,aAAa,EAC/D95B,MAAK0O,MAAQgrB,EAAIK,QAAQzoB,IAAI,OAAQ,IAAI9K,UACzCxG,KAAKmlB,IAAMuU,EAAIK,QAAQzoB,IAAI,OAAQ,GAAG9K,UAEtCxG,KAAK8xB,KAAOA,EAGZ9xB,KAAKwxB,gBACH9iB,MAAO,KACPyW,IAAK,KACL6U,UAAW,aACXC,UAAU,EACVC,UAAU,EACVnvB,IAAK,KACL0B,IAAK,KACL0tB,QAAS,GACTC,QAAS,UAEXp6B,KAAK0N,QAAU/M,EAAKqE,UAAWhF,KAAKwxB,gBAEpCxxB,KAAK0F,OACH+uB,UAIFz0B,KAAK8xB,KAAKE,QAAQxgB,GAAG,YAAaxR,KAAKg0B,aAAa/B,KAAKjyB,OACzDA,KAAK8xB,KAAKE,QAAQxgB,GAAG,OAAaxR,KAAKi0B,QAAQhC,KAAKjyB,OACpDA,KAAK8xB,KAAKE,QAAQxgB,GAAG,UAAaxR,KAAKq6B,WAAWpI,KAAKjyB,OAGvDA,KAAK8xB,KAAKE,QAAQxgB,GAAG,OAAQxR,KAAKs6B,QAAQrI,KAAKjyB,OAG/CA,KAAK8xB,KAAKE,QAAQxgB,GAAG,aAAmBxR,KAAKu6B,cAActI,KAAKjyB,OAChEA,KAAK8xB,KAAKE,QAAQxgB,GAAG,iBAAmBxR,KAAKu6B,cAActI,KAAKjyB,OAGhEA,KAAK8xB,KAAKE,QAAQxgB,GAAG,QAASxR,KAAK8zB,SAAS7B,KAAKjyB,OACjDA,KAAK8xB,KAAKE,QAAQxgB,GAAG,QAASxR,KAAK+zB,SAAS9B,KAAKjyB,OAEjDA,KAAK2Z,WAAWjM,GAsClB,QAAS8sB,GAAmBR,GAC1B,GAAiB,cAAbA,GAA0C,YAAbA,EAC/B,KAAM,IAAIj0B,WAAU,sBAAwBi0B,EAAY,yCAqX5D,QAASS,GAAYhG,EAAOjsB,GAC1B,OACE2H,EAAGskB,EAAMiG,MAAQ/5B,EAAKmG,gBAAgB0B,GACtC4H,EAAGqkB,EAAMkG,MAAQh6B,EAAKyG,eAAeoB,IAtdzC,GAAI7H,GAAOT,EAAoB,GAC3B06B,EAAa16B,EAAoB,IACjCsD,EAAStD,EAAoB,IAC7BkC,EAAYlC,EAAoB,GAsDpCyB,GAAM4P,UAAY,GAAInP,GAkBtBT,EAAM4P,UAAUoI,WAAa,SAAUjM,GACrC,GAAIA,EAAS,CAEX,GAAIP,IAAU,YAAa,MAAO,MAAO,UAAW,UAAW,WAAY,WAC3ExM,GAAK8E,gBAAgB0H,EAAQnN,KAAK0N,QAASA,IAEvC,SAAWA,IAAW,OAASA,KAEjC1N,KAAK6wB,SAASnjB,EAAQgB,MAAOhB,EAAQyX,OAqB3CxjB,EAAM4P,UAAUsf,SAAW,SAASniB,EAAOyW,GACzC,GAAI0V,GAAU76B,KAAK86B,YAAYpsB,EAAOyW,EACtC,IAAI0V,EAAS,CACX,GAAI9oB,IACFrD,MAAO,GAAI1K,MAAKhE,KAAK0O,OACrByW,IAAK,GAAInhB,MAAKhE,KAAKmlB,KAErBnlB,MAAK8xB,KAAKE,QAAQnH,KAAK,cAAe9Y,GACtC/R,KAAK8xB,KAAKE,QAAQnH,KAAK,eAAgB9Y,KAa3CpQ,EAAM4P,UAAUupB,YAAc,SAASpsB,EAAOyW,GAC5C,GAIIiE,GAJA2R,EAAqB,MAATrsB,EAAiB/N,EAAK0F,QAAQqI,EAAO,QAAQlI,UAAYxG,KAAK0O,MAC1EssB,EAAmB,MAAP7V,EAAiBxkB,EAAK0F,QAAQ8e,EAAK,QAAQ3e,UAAcxG,KAAKmlB,IAC1E1Y,EAA2B,MAApBzM,KAAK0N,QAAQjB,IAAe9L,EAAK0F,QAAQrG,KAAK0N,QAAQjB,IAAK,QAAQjG,UAAY,KACtFuE,EAA2B,MAApB/K,KAAK0N,QAAQ3C,IAAepK,EAAK0F,QAAQrG,KAAK0N,QAAQ3C,IAAK,QAAQvE,UAAY,IAI1F,IAAIpC,MAAM22B,IAA0B,OAAbA,EACrB,KAAM,IAAIx3B,OAAM,kBAAoBmL,EAAQ,IAE9C,IAAItK,MAAM42B,IAAsB,OAAXA,EACnB,KAAM,IAAIz3B,OAAM,gBAAkB4hB,EAAM,IAyC1C,IArCa4V,EAATC,IACFA,EAASD,GAIC,OAARhwB,GACaA,EAAXgwB,IACF3R,EAAQre,EAAMgwB,EACdA,GAAY3R,EACZ4R,GAAU5R,EAGC,MAAP3c,GACEuuB,EAASvuB,IACXuuB,EAASvuB,IAOL,OAARA,GACEuuB,EAASvuB,IACX2c,EAAQ4R,EAASvuB,EACjBsuB,GAAY3R,EACZ4R,GAAU5R,EAGC,MAAPre,GACaA,EAAXgwB,IACFA,EAAWhwB,IAOU,OAAzB/K,KAAK0N,QAAQysB,QAAkB,CACjC,GAAIA,GAAUjY,WAAWliB,KAAK0N,QAAQysB,QACxB,GAAVA,IACFA,EAAU,GAEcA,EAArBa,EAASD,IACP/6B,KAAKmlB,IAAMnlB,KAAK0O,QAAWyrB,GAE9BY,EAAW/6B,KAAK0O,MAChBssB,EAASh7B,KAAKmlB,MAIdiE,EAAQ+Q,GAAWa,EAASD,GAC5BA,GAAY3R,EAAO,EACnB4R,GAAU5R,EAAO,IAMvB,GAA6B,OAAzBppB,KAAK0N,QAAQ0sB,QAAkB,CACjC,GAAIA,GAAUlY,WAAWliB,KAAK0N,QAAQ0sB,QACxB,GAAVA,IACFA,EAAU,GAEPY,EAASD,EAAYX,IACnBp6B,KAAKmlB,IAAMnlB,KAAK0O,QAAW0rB,GAE9BW,EAAW/6B,KAAK0O,MAChBssB,EAASh7B,KAAKmlB,MAIdiE,EAAS4R,EAASD,EAAYX,EAC9BW,GAAY3R,EAAO,EACnB4R,GAAU5R,EAAO,IAKvB,GAAIyR,GAAW76B,KAAK0O,OAASqsB,GAAY/6B,KAAKmlB,KAAO6V,CAKrD,OAHAh7B,MAAK0O,MAAQqsB,EACb/6B,KAAKmlB,IAAM6V,EAEJH,GAOTl5B,EAAM4P,UAAU2kB,SAAW,WACzB,OACExnB,MAAO1O,KAAK0O,MACZyW,IAAKnlB,KAAKmlB,MAUdxjB,EAAM4P,UAAUulB,WAAa,SAAUlmB,GACrC,MAAOjP,GAAMm1B,WAAW92B,KAAK0O,MAAO1O,KAAKmlB,IAAKvU,IAWhDjP,EAAMm1B,WAAa,SAAUpoB,EAAOyW,EAAKvU,GACvC,MAAa,IAATA,GAAeuU,EAAMzW,GAAS,GAE9B+X,OAAQ/X,EACRoL,MAAOlJ,GAASuU,EAAMzW,KAKtB+X,OAAQ,EACR3M,MAAO,IAUbnY,EAAM4P,UAAUyiB,aAAe,WAExBh0B,KAAK0N,QAAQusB,UAIbj6B,KAAK0F,MAAM+uB,MAAM4C,gBAEtBr3B,KAAK0F,MAAM+uB,MAAM/lB,MAAQ1O,KAAK0O,MAC9B1O,KAAK0F,MAAM+uB,MAAMtP,IAAMnlB,KAAKmlB,IAExBnlB,KAAK8xB,KAAK5E,IAAIxtB,OAChBM,KAAK8xB,KAAK5E,IAAIxtB,KAAK8Q,MAAMyZ,OAAS,UAStCtoB,EAAM4P,UAAU0iB,QAAU,SAAU/qB,GAElC,GAAKlJ,KAAK0N,QAAQusB,SAAlB,CACA,GAAID,GAAYh6B,KAAK0N,QAAQssB,SAI7B,IAHAQ,EAAkBR,GAGbh6B,KAAK0F,MAAM+uB,MAAM4C,cAAtB,CACA,GAAIzL,GAAsB,cAAboO,EAA6B9wB,EAAMquB,QAAQ0D,OAAS/xB,EAAMquB,QAAQC,OAC3E1H,EAAY9vB,KAAK0F,MAAM+uB,MAAMtP,IAAMnlB,KAAK0F,MAAM+uB,MAAM/lB,MACpDkC,EAAsB,cAAbopB,EAA6Bh6B,KAAK8xB,KAAKC,SAAS9I,OAAOrY,MAAQ5Q,KAAK8xB,KAAKC,SAAS9I,OAAOpY,OAClGqqB,GAAatP,EAAQhb,EAAQkf,CACjC9vB,MAAK86B,YAAY96B,KAAK0F,MAAM+uB,MAAM/lB,MAAQwsB,EAAWl7B,KAAK0F,MAAM+uB,MAAMtP,IAAM+V,GAC5El7B,KAAK8xB,KAAKE,QAAQnH,KAAK,eACrBnc,MAAO,GAAI1K,MAAKhE,KAAK0O,OACrByW,IAAO,GAAInhB,MAAKhE,KAAKmlB,UASzBxjB,EAAM4P,UAAU8oB,WAAa,WAEtBr6B,KAAK0N,QAAQusB,UAIbj6B,KAAK0F,MAAM+uB,MAAM4C,gBAElBr3B,KAAK8xB,KAAK5E,IAAIxtB,OAChBM,KAAK8xB,KAAK5E,IAAIxtB,KAAK8Q,MAAMyZ,OAAS,QAIpCjqB,KAAK8xB,KAAKE,QAAQnH,KAAK,gBACrBnc,MAAO,GAAI1K,MAAKhE,KAAK0O,OACrByW,IAAO,GAAInhB,MAAKhE,KAAKmlB,SAUzBxjB,EAAM4P,UAAUgpB,cAAgB,SAASrxB,GAEvC,GAAMlJ,KAAK0N,QAAQwsB,UAAYl6B,KAAK0N,QAAQusB,SAA5C,CAGA,GAAIrO,GAAQ,CAYZ,IAXI1iB,EAAM2iB,WACRD,EAAQ1iB,EAAM2iB,WAAa,IAClB3iB,EAAM4iB,SAGfF,GAAS1iB,EAAM4iB,OAAS,GAMtBF,EAAO,CAKT,GAAI9R,EAEFA,GADU,EAAR8R,EACM,EAAKA,EAAQ,EAGb,GAAK,EAAKA,EAAQ,EAI5B,IAAI2L,GAAUqD,EAAWO,YAAYn7B,KAAMkJ,GACvCkyB,EAAUX,EAAWlD,EAAQtO,OAAQjpB,KAAK8xB,KAAK5E,IAAIjE,QACnDoS,EAAcr7B,KAAKs7B,eAAeF,EAEtCp7B,MAAKu7B,KAAKzhB,EAAOuhB,GAKnBnyB,EAAMD,mBAORtH,EAAM4P,UAAUuiB,SAAW,WACzB9zB,KAAK0F,MAAM+uB,MAAM/lB,MAAQ1O,KAAK0O,MAC9B1O,KAAK0F,MAAM+uB,MAAMtP,IAAMnlB,KAAKmlB,IAC5BnlB,KAAK0F,MAAM+uB,MAAM4C,eAAgB,EACjCr3B,KAAK0F,MAAM+uB,MAAMxL,OAAS,MAO5BtnB,EAAM4P,UAAU+oB,QAAU,WACxBt6B,KAAK0F,MAAM+uB,MAAM4C,eAAgB,GAQnC11B,EAAM4P,UAAUwiB,SAAW,SAAU7qB,GAEnC,GAAMlJ,KAAK0N,QAAQwsB,UAAYl6B,KAAK0N,QAAQusB,WAE5Cj6B,KAAK0F,MAAM+uB,MAAM4C,eAAgB,EAE7BnuB,EAAMquB,QAAQiE,QAAQn2B,OAAS,GAAG,CAC/BrF,KAAK0F,MAAM+uB,MAAMxL,SACpBjpB,KAAK0F,MAAM+uB,MAAMxL,OAASwR,EAAWvxB,EAAMquB,QAAQtO,OAAQjpB,KAAK8xB,KAAK5E,IAAIjE,QAG3E,IAAInP,GAAQ,EAAI5Q,EAAMquB,QAAQzd,MAC1B2hB,EAAWz7B,KAAKs7B,eAAet7B,KAAK0F,MAAM+uB,MAAMxL,QAGhD8R,EAAWnT,SAAS6T,GAAYz7B,KAAK0F,MAAM+uB,MAAM/lB,MAAQ+sB,GAAY3hB,GACrEkhB,EAASpT,SAAS6T,GAAYz7B,KAAK0F,MAAM+uB,MAAMtP,IAAMsW,GAAY3hB,EAGrE9Z,MAAK6wB,SAASkK,EAAUC,KAU5Br5B,EAAM4P,UAAU+pB,eAAiB,SAAUF,GACzC,GAAItE,GACAkD,EAAYh6B,KAAK0N,QAAQssB,SAI7B,IAFAQ,EAAkBR,GAED,cAAbA,EAA2B,CAC7B,GAAIppB,GAAQ5Q,KAAK8xB,KAAKC,SAAS9I,OAAOrY,KAEtC,OADAkmB,GAAa92B,KAAK82B,WAAWlmB,GACtBwqB,EAAQjrB,EAAI2mB,EAAWhd,MAAQgd,EAAWrQ,OAGjD,GAAI5V,GAAS7Q,KAAK8xB,KAAKC,SAAS9I,OAAOpY,MAEvC,OADAimB,GAAa92B,KAAK82B,WAAWjmB,GACtBuqB,EAAQhrB,EAAI0mB,EAAWhd,MAAQgd,EAAWrQ,QA4BrD9kB,EAAM4P,UAAUgqB,KAAO,SAASzhB,EAAOmP,GAEvB,MAAVA,IACFA,GAAUjpB,KAAK0O,MAAQ1O,KAAKmlB,KAAO,EAIrC,IAAI4V,GAAW9R,GAAUjpB,KAAK0O,MAAQua,GAAUnP,EAC5CkhB,EAAS/R,GAAUjpB,KAAKmlB,IAAM8D,GAAUnP,CAE5C9Z,MAAK6wB,SAASkK,EAAUC,IAS1Br5B,EAAM4P,UAAUmqB,KAAO,SAAS9P,GAE9B,GAAIxC,GAAQppB,KAAKmlB,IAAMnlB,KAAK0O,MAGxBqsB,EAAW/6B,KAAK0O,MAAQ0a,EAAOwC,EAC/BoP,EAASh7B,KAAKmlB,IAAMiE,EAAOwC,CAI/B5rB,MAAK0O,MAAQqsB,EACb/6B,KAAKmlB,IAAM6V,GAObr5B,EAAM4P,UAAUmT,OAAS,SAASA,GAChC,GAAIuE,IAAUjpB,KAAK0O,MAAQ1O,KAAKmlB,KAAO,EAEnCiE,EAAOH,EAASvE,EAGhBqW,EAAW/6B,KAAK0O,MAAQ0a,EACxB4R,EAASh7B,KAAKmlB,IAAMiE,CAExBppB,MAAK6wB,SAASkK,EAAUC,IAG1Bn7B,EAAOD,QAAU+B,GAKb,SAAS9B,EAAQD,GAGrB,GAAI+7B,GAAU,IAMd/7B,GAAQg8B,aAAe,SAAS75B,GAC9BA,EAAMsS,KAAK,SAAUpP,EAAGa,GACtB,MAAOb,GAAE8L,KAAKrC,MAAQ5I,EAAEiL,KAAKrC,SASjC9O,EAAQi8B,WAAa,SAAS95B,GAC5BA,EAAMsS,KAAK,SAAUpP,EAAGa,GACtB,GAAIg2B,GAAS,OAAS72B,GAAE8L,KAAQ9L,EAAE8L,KAAKoU,IAAMlgB,EAAE8L,KAAKrC,MAChDqtB,EAAS,OAASj2B,GAAEiL,KAAQjL,EAAEiL,KAAKoU,IAAMrf,EAAEiL,KAAKrC,KAEpD,OAAOotB,GAAQC,KAenBn8B,EAAQgC,MAAQ,SAASG,EAAOgV,EAAQilB,GACtC,GAAI92B,GAAG+2B,CAEP,IAAID,EAEF,IAAK92B,EAAI,EAAG+2B,EAAOl6B,EAAMsD,OAAY42B,EAAJ/2B,EAAUA,IACzCnD,EAAMmD,GAAGmC,IAAM,IAKnB,KAAKnC,EAAI,EAAG+2B,EAAOl6B,EAAMsD,OAAY42B,EAAJ/2B,EAAUA,IAAK,CAC9C,GAAIyN,GAAO5Q,EAAMmD,EACjB,IAAiB,OAAbyN,EAAKtL,IAAc,CAErBsL,EAAKtL,IAAM0P,EAAOmlB,IAElB,GAAG,CAID,IAAK,GADDC,GAAgB,KACXxT,EAAI,EAAGyT,EAAKr6B,EAAMsD,OAAY+2B,EAAJzT,EAAQA,IAAK,CAC9C,GAAIrjB,GAAQvD,EAAM4mB,EAClB,IAAkB,OAAdrjB,EAAM+B,KAAgB/B,IAAUqN,GAAQ/S,EAAQy8B,UAAU1pB,EAAMrN,EAAOyR,EAAOpE,MAAO,CACvFwpB,EAAgB72B,CAChB,QAIiB,MAAjB62B,IAEFxpB,EAAKtL,IAAM80B,EAAc90B,IAAM80B,EAActrB,OAASkG,EAAOpE,KAAK2P,gBAE7D6Z,MAYfv8B,EAAQ08B,QAAU,SAASv6B,EAAOgV,GAChC,GAAI7R,GAAG+2B,CAGP,KAAK/2B,EAAI,EAAG+2B,EAAOl6B,EAAMsD,OAAY42B,EAAJ/2B,EAAUA,IACzCnD,EAAMmD,GAAGmC,IAAM0P,EAAOmlB,MAc1Bt8B,EAAQy8B,UAAY,SAASp3B,EAAGa,EAAGiR,GACjC,MAAS9R,GAAEgC,KAAO8P,EAAOsL,WAAasZ,EAAkB71B,EAAEmB,KAAOnB,EAAE8K,OAC9D3L,EAAEgC,KAAOhC,EAAE2L,MAAQmG,EAAOsL,WAAasZ,EAAW71B,EAAEmB,MACpDhC,EAAEoC,IAAM0P,EAAOuL,SAAWqZ,EAAyB71B,EAAEuB,IAAMvB,EAAE+K,QAC7D5L,EAAEoC,IAAMpC,EAAE4L,OAASkG,EAAOuL,SAAWqZ,EAAa71B,EAAEuB,MAMvD,SAASxH,EAAQD,EAASM,GA8B9B,QAAS2B,GAAS6M,EAAOyW,EAAK4S,GAE5B/3B,KAAKi4B,QAAU,GAAIj0B,MACnBhE,KAAKwwB,OAAS,GAAIxsB,MAClBhE,KAAKywB,KAAO,GAAIzsB,MAEhBhE,KAAKk4B,WAAa,EAClBl4B,KAAK8Z,MAAQjY,EAAS06B,MAAMC,IAC5Bx8B,KAAKglB,KAAO,EAGZhlB,KAAK6wB,SAASniB,EAAOyW,EAAK4S,GAvC5B,GAAIv0B,GAAStD,EAAoB,GA2CjC2B,GAAS06B,OACPE,YAAa,EACbC,OAAQ,EACRC,OAAQ,EACRC,KAAM,EACNJ,IAAK,EACLK,QAAS,EACTC,MAAO,EACPC,KAAM,GAcRl7B,EAAS0P,UAAUsf,SAAW,SAASniB,EAAOyW,EAAK4S,GACjD,KAAMrpB,YAAiB1K,OAAWmhB,YAAenhB,OAC/C,KAAO,+CAGThE,MAAKwwB,OAAmBtqB,QAATwI,EAAsB,GAAI1K,MAAK0K,EAAMlI,WAAa,GAAIxC,MACrEhE,KAAKywB,KAAevqB,QAAPif,EAAoB,GAAInhB,MAAKmhB,EAAI3e,WAAa,GAAIxC,MAE3DhE,KAAKk4B,WACPl4B,KAAKw4B,eAAeT,IAOxBl2B,EAAS0P,UAAU0nB,MAAQ,WACzBj5B,KAAKi4B,QAAU,GAAIj0B,MAAKhE,KAAKwwB,OAAOhqB,WACpCxG,KAAKo5B,gBAOPv3B,EAAS0P,UAAU6nB,aAAe,WAIhC,OAAQp5B,KAAK8Z,OACX,IAAKjY,GAAS06B,MAAMQ,KAClB/8B,KAAKi4B,QAAQ+E,YAAYh9B,KAAKglB,KAAOpgB,KAAKC,MAAM7E,KAAKi4B,QAAQgF,cAAgBj9B,KAAKglB,OAClFhlB,KAAKi4B,QAAQiF,SAAS,EACxB,KAAKr7B,GAAS06B,MAAMO,MAAc98B,KAAKi4B,QAAQkF,QAAQ,EACvD,KAAKt7B,GAAS06B,MAAMC,IACpB,IAAK36B,GAAS06B,MAAMM,QAAc78B,KAAKi4B,QAAQmF,SAAS,EACxD,KAAKv7B,GAAS06B,MAAMK,KAAc58B,KAAKi4B,QAAQoF,WAAW,EAC1D,KAAKx7B,GAAS06B,MAAMI,OAAc38B,KAAKi4B,QAAQqF,WAAW,EAC1D,KAAKz7B,GAAS06B,MAAMG,OAAc18B,KAAKi4B,QAAQsF,gBAAgB,GAIjE,GAAiB,GAAbv9B,KAAKglB,KAEP,OAAQhlB,KAAK8Z,OACX,IAAKjY,GAAS06B,MAAME,YAAcz8B,KAAKi4B,QAAQsF,gBAAgBv9B,KAAKi4B,QAAQuF,kBAAoBx9B,KAAKi4B,QAAQuF,kBAAoBx9B,KAAKglB,KAAQ,MAC9I,KAAKnjB,GAAS06B,MAAMG,OAAc18B,KAAKi4B,QAAQqF,WAAWt9B,KAAKi4B,QAAQwF,aAAez9B,KAAKi4B,QAAQwF,aAAez9B,KAAKglB,KAAO,MAC9H,KAAKnjB,GAAS06B,MAAMI,OAAc38B,KAAKi4B,QAAQoF,WAAWr9B,KAAKi4B,QAAQyF,aAAe19B,KAAKi4B,QAAQyF,aAAe19B,KAAKglB,KAAO,MAC9H,KAAKnjB,GAAS06B,MAAMK,KAAc58B,KAAKi4B,QAAQmF,SAASp9B,KAAKi4B,QAAQ0F,WAAa39B,KAAKi4B,QAAQ0F,WAAa39B,KAAKglB,KAAO,MACxH,KAAKnjB,GAAS06B,MAAMM,QACpB,IAAKh7B,GAAS06B,MAAMC,IAAcx8B,KAAKi4B,QAAQkF,QAASn9B,KAAKi4B,QAAQ2F,UAAU,GAAM59B,KAAKi4B,QAAQ2F,UAAU,GAAK59B,KAAKglB,KAAO,EAAI,MACjI,KAAKnjB,GAAS06B,MAAMO,MAAc98B,KAAKi4B,QAAQiF,SAASl9B,KAAKi4B,QAAQ4F,WAAa79B,KAAKi4B,QAAQ4F,WAAa79B,KAAKglB,KAAQ,MACzH,KAAKnjB,GAAS06B,MAAMQ,KAAc/8B,KAAKi4B,QAAQ+E,YAAYh9B,KAAKi4B,QAAQgF,cAAgBj9B,KAAKi4B,QAAQgF,cAAgBj9B,KAAKglB,QAUhInjB,EAAS0P,UAAUgoB,QAAU,WAC3B,MAAQv5B,MAAKi4B,QAAQzxB,WAAaxG,KAAKywB,KAAKjqB,WAM9C3E,EAAS0P,UAAU2T,KAAO,WACxB,GAAIgK,GAAOlvB,KAAKi4B,QAAQzxB,SAIxB,IAAIxG,KAAKi4B,QAAQ4F,WAAa,EAC5B,OAAQ79B,KAAK8Z,OACX,IAAKjY,GAAS06B,MAAME,YAElBz8B,KAAKi4B,QAAU,GAAIj0B,MAAKhE,KAAKi4B,QAAQzxB,UAAYxG,KAAKglB,KAAO,MAC/D,KAAKnjB,GAAS06B,MAAMG,OAAc18B,KAAKi4B,QAAU,GAAIj0B,MAAKhE,KAAKi4B,QAAQzxB,UAAwB,IAAZxG,KAAKglB,KAAc,MACtG,KAAKnjB,GAAS06B,MAAMI,OAAc38B,KAAKi4B,QAAU,GAAIj0B,MAAKhE,KAAKi4B,QAAQzxB,UAAwB,IAAZxG,KAAKglB,KAAc,GAAK,MAC3G,KAAKnjB,GAAS06B,MAAMK,KAClB58B,KAAKi4B,QAAU,GAAIj0B,MAAKhE,KAAKi4B,QAAQzxB,UAAwB,IAAZxG,KAAKglB,KAAc,GAAK,GAEzE,IAAIpa,GAAI5K,KAAKi4B,QAAQ0F,UACrB39B,MAAKi4B,QAAQmF,SAASxyB,EAAKA,EAAI5K,KAAKglB,KACpC,MACF,KAAKnjB,GAAS06B,MAAMM,QACpB,IAAKh7B,GAAS06B,MAAMC,IAAcx8B,KAAKi4B,QAAQkF,QAAQn9B,KAAKi4B,QAAQ2F,UAAY59B,KAAKglB,KAAO,MAC5F,KAAKnjB,GAAS06B,MAAMO,MAAc98B,KAAKi4B,QAAQiF,SAASl9B,KAAKi4B,QAAQ4F,WAAa79B,KAAKglB,KAAO,MAC9F,KAAKnjB,GAAS06B,MAAMQ,KAAc/8B,KAAKi4B,QAAQ+E,YAAYh9B,KAAKi4B,QAAQgF,cAAgBj9B,KAAKglB,UAK/F,QAAQhlB,KAAK8Z,OACX,IAAKjY,GAAS06B,MAAME,YAAcz8B,KAAKi4B,QAAU,GAAIj0B,MAAKhE,KAAKi4B,QAAQzxB,UAAYxG,KAAKglB,KAAO,MAC/F,KAAKnjB,GAAS06B,MAAMG,OAAc18B,KAAKi4B,QAAQqF,WAAWt9B,KAAKi4B,QAAQwF,aAAez9B,KAAKglB,KAAO,MAClG,KAAKnjB,GAAS06B,MAAMI,OAAc38B,KAAKi4B,QAAQoF,WAAWr9B,KAAKi4B,QAAQyF,aAAe19B,KAAKglB,KAAO,MAClG,KAAKnjB,GAAS06B,MAAMK,KAAc58B,KAAKi4B,QAAQmF,SAASp9B,KAAKi4B,QAAQ0F,WAAa39B,KAAKglB,KAAO,MAC9F,KAAKnjB,GAAS06B,MAAMM,QACpB,IAAKh7B,GAAS06B,MAAMC,IAAcx8B,KAAKi4B,QAAQkF,QAAQn9B,KAAKi4B,QAAQ2F,UAAY59B,KAAKglB,KAAO,MAC5F,KAAKnjB,GAAS06B,MAAMO,MAAc98B,KAAKi4B,QAAQiF,SAASl9B,KAAKi4B,QAAQ4F,WAAa79B,KAAKglB,KAAO,MAC9F,KAAKnjB,GAAS06B,MAAMQ,KAAc/8B,KAAKi4B,QAAQ+E,YAAYh9B,KAAKi4B,QAAQgF,cAAgBj9B,KAAKglB,MAKjG,GAAiB,GAAbhlB,KAAKglB,KAEP,OAAQhlB,KAAK8Z,OACX,IAAKjY,GAAS06B,MAAME,YAAiBz8B,KAAKi4B,QAAQuF,kBAAoBx9B,KAAKglB,MAAMhlB,KAAKi4B,QAAQsF,gBAAgB,EAAK,MACnH,KAAK17B,GAAS06B,MAAMG,OAAiB18B,KAAKi4B,QAAQwF,aAAez9B,KAAKglB,MAAMhlB,KAAKi4B,QAAQqF,WAAW,EAAK,MACzG,KAAKz7B,GAAS06B,MAAMI,OAAiB38B,KAAKi4B,QAAQyF,aAAe19B,KAAKglB,MAAMhlB,KAAKi4B,QAAQoF,WAAW,EAAK,MACzG,KAAKx7B,GAAS06B,MAAMK,KAAiB58B,KAAKi4B,QAAQ0F,WAAa39B,KAAKglB,MAAMhlB,KAAKi4B,QAAQmF,SAAS,EAAK,MACrG,KAAKv7B,GAAS06B,MAAMM,QACpB,IAAKh7B,GAAS06B,MAAMC,IAAiBx8B,KAAKi4B,QAAQ2F,UAAY59B,KAAKglB,KAAK,GAAGhlB,KAAKi4B,QAAQkF,QAAQ,EAAI,MACpG,KAAKt7B,GAAS06B,MAAMO,MAAiB98B,KAAKi4B,QAAQ4F,WAAa79B,KAAKglB,MAAMhlB,KAAKi4B,QAAQiF,SAAS,EAAK,MACrG,KAAKr7B,GAAS06B,MAAMQ,MAMpB/8B,KAAKi4B,QAAQzxB,WAAa0oB,IAC5BlvB,KAAKi4B,QAAU,GAAIj0B,MAAKhE,KAAKywB,KAAKjqB,aAStC3E,EAAS0P,UAAU0T,WAAa,WAC9B,MAAOjlB,MAAKi4B,SAgBdp2B,EAAS0P,UAAUusB,SAAW,SAASC,EAAUC,GAC/Ch+B,KAAK8Z,MAAQikB,EAETC,EAAU,IACZh+B,KAAKglB,KAAOgZ,GAGdh+B,KAAKk4B,WAAY,GAOnBr2B,EAAS0P,UAAU0sB,aAAe,SAAUC,GAC1Cl+B,KAAKk4B,UAAYgG,GAQnBr8B,EAAS0P,UAAUinB,eAAiB,SAAST,GAC3C,GAAmB7xB,QAAf6xB,EAAJ,CAIA,GAAIoG,GAAiB,QACjBC,EAAiB,OACjBC,EAAiB,MACjBC,EAAiB,KACjBC,EAAiB,IACjBC,EAAiB,IACjBC,EAAiB,CAGR,KAATN,EAAgBpG,IAAqB/3B,KAAK8Z,MAAQjY,EAAS06B,MAAMQ,KAAa/8B,KAAKglB,KAAO,KACjF,IAATmZ,EAAepG,IAAsB/3B,KAAK8Z,MAAQjY,EAAS06B,MAAMQ,KAAa/8B,KAAKglB,KAAO,KACjF,IAATmZ,EAAepG,IAAsB/3B,KAAK8Z,MAAQjY,EAAS06B,MAAMQ,KAAa/8B,KAAKglB,KAAO,KACjF,GAATmZ,EAAcpG,IAAuB/3B,KAAK8Z,MAAQjY,EAAS06B,MAAMQ,KAAa/8B,KAAKglB,KAAO,IACjF,GAATmZ,EAAcpG,IAAuB/3B,KAAK8Z,MAAQjY,EAAS06B,MAAMQ,KAAa/8B,KAAKglB,KAAO,IACjF,EAATmZ,EAAapG,IAAwB/3B,KAAK8Z,MAAQjY,EAAS06B,MAAMQ,KAAa/8B,KAAKglB,KAAO,GAC1FmZ,EAAWpG,IAA0B/3B,KAAK8Z,MAAQjY,EAAS06B,MAAMQ,KAAa/8B,KAAKglB,KAAO,GAChF,EAAVoZ,EAAcrG,IAAuB/3B,KAAK8Z,MAAQjY,EAAS06B,MAAMO,MAAa98B,KAAKglB,KAAO,GAC1FoZ,EAAYrG,IAAyB/3B,KAAK8Z,MAAQjY,EAAS06B,MAAMO,MAAa98B,KAAKglB,KAAO,GAClF,EAARqZ,EAAYtG,IAAyB/3B,KAAK8Z,MAAQjY,EAAS06B,MAAMC,IAAax8B,KAAKglB,KAAO,GAClF,EAARqZ,EAAYtG,IAAyB/3B,KAAK8Z,MAAQjY,EAAS06B,MAAMC,IAAax8B,KAAKglB,KAAO,GAC1FqZ,EAAUtG,IAA2B/3B,KAAK8Z,MAAQjY,EAAS06B,MAAMC,IAAax8B,KAAKglB,KAAO,GAC1FqZ,EAAQ,EAAItG,IAAyB/3B,KAAK8Z,MAAQjY,EAAS06B,MAAMM,QAAa78B,KAAKglB,KAAO,GACjF,EAATsZ,EAAavG,IAAwB/3B,KAAK8Z,MAAQjY,EAAS06B,MAAMK,KAAa58B,KAAKglB,KAAO,GAC1FsZ,EAAWvG,IAA0B/3B,KAAK8Z,MAAQjY,EAAS06B,MAAMK,KAAa58B,KAAKglB,KAAO,GAC/E,GAAXuZ,EAAgBxG,IAAqB/3B,KAAK8Z,MAAQjY,EAAS06B,MAAMI,OAAa38B,KAAKglB,KAAO,IAC/E,GAAXuZ,EAAgBxG,IAAqB/3B,KAAK8Z,MAAQjY,EAAS06B,MAAMI,OAAa38B,KAAKglB,KAAO,IAC/E,EAAXuZ,EAAexG,IAAsB/3B,KAAK8Z,MAAQjY,EAAS06B,MAAMI,OAAa38B,KAAKglB,KAAO,GAC1FuZ,EAAaxG,IAAwB/3B,KAAK8Z,MAAQjY,EAAS06B,MAAMI,OAAa38B,KAAKglB,KAAO,GAC/E,GAAXwZ,EAAgBzG,IAAqB/3B,KAAK8Z,MAAQjY,EAAS06B,MAAMG,OAAa18B,KAAKglB,KAAO,IAC/E,GAAXwZ,EAAgBzG,IAAqB/3B,KAAK8Z,MAAQjY,EAAS06B,MAAMG,OAAa18B,KAAKglB,KAAO,IAC/E,EAAXwZ,EAAezG,IAAsB/3B,KAAK8Z,MAAQjY,EAAS06B,MAAMG,OAAa18B,KAAKglB,KAAO,GAC1FwZ,EAAazG,IAAwB/3B,KAAK8Z,MAAQjY,EAAS06B,MAAMG,OAAa18B,KAAKglB,KAAO,GAC1E,IAAhByZ,EAAsB1G,IAAe/3B,KAAK8Z,MAAQjY,EAAS06B,MAAME,YAAaz8B,KAAKglB,KAAO,KAC1E,IAAhByZ,EAAsB1G,IAAe/3B,KAAK8Z,MAAQjY,EAAS06B,MAAME,YAAaz8B,KAAKglB,KAAO,KAC1E,GAAhByZ,EAAqB1G,IAAgB/3B,KAAK8Z,MAAQjY,EAAS06B,MAAME,YAAaz8B,KAAKglB,KAAO,IAC1E,GAAhByZ,EAAqB1G,IAAgB/3B,KAAK8Z,MAAQjY,EAAS06B,MAAME,YAAaz8B,KAAKglB,KAAO,IAC1E,EAAhByZ,EAAoB1G,IAAiB/3B,KAAK8Z,MAAQjY,EAAS06B,MAAME,YAAaz8B,KAAKglB,KAAO,GAC1FyZ,EAAkB1G,IAAmB/3B,KAAK8Z,MAAQjY,EAAS06B,MAAME,YAAaz8B,KAAKglB,KAAO,KAShGnjB,EAAS0P,UAAU2gB,KAAO,SAASwM,GACjC,GAAI3E,GAAQ,GAAI/1B,MAAK06B,EAAKl4B,UAE1B,IAAIxG,KAAK8Z,OAASjY,EAAS06B,MAAMQ,KAAM,CACrC,GAAI4B,GAAO5E,EAAMkD,cAAgBr4B,KAAK+lB,MAAMoP,EAAM8D,WAAa,GAC/D9D,GAAMiD,YAAYp4B,KAAK+lB,MAAMgU,EAAO3+B,KAAKglB,MAAQhlB,KAAKglB,MACtD+U,EAAMmD,SAAS,GACfnD,EAAMoD,QAAQ,GACdpD,EAAMqD,SAAS,GACfrD,EAAMsD,WAAW,GACjBtD,EAAMuD,WAAW,GACjBvD,EAAMwD,gBAAgB,OAEnB,IAAIv9B,KAAK8Z,OAASjY,EAAS06B,MAAMO,MAChC/C,EAAM6D,UAAY,IACpB7D,EAAMoD,QAAQ,GACdpD,EAAMmD,SAASnD,EAAM8D,WAAa,IAIlC9D,EAAMoD,QAAQ,GAGhBpD,EAAMqD,SAAS,GACfrD,EAAMsD,WAAW,GACjBtD,EAAMuD,WAAW,GACjBvD,EAAMwD,gBAAgB,OAEnB,IAAIv9B,KAAK8Z,OAASjY,EAAS06B,MAAMC,IAAK,CAEzC,OAAQx8B,KAAKglB,MACX,IAAK,GACL,IAAK,GACH+U,EAAMqD,SAA6C,GAApCx4B,KAAK+lB,MAAMoP,EAAM4D,WAAa,IAAW,MAC1D,SACE5D,EAAMqD,SAA6C,GAApCx4B,KAAK+lB,MAAMoP,EAAM4D,WAAa,KAEjD5D,EAAMsD,WAAW,GACjBtD,EAAMuD,WAAW,GACjBvD,EAAMwD,gBAAgB,OAEnB,IAAIv9B,KAAK8Z,OAASjY,EAAS06B,MAAMM,QAAS,CAE7C,OAAQ78B,KAAKglB,MACX,IAAK,GACL,IAAK,GACH+U,EAAMqD,SAA6C,GAApCx4B,KAAK+lB,MAAMoP,EAAM4D,WAAa,IAAW,MAC1D,SACE5D,EAAMqD,SAA4C,EAAnCx4B,KAAK+lB,MAAMoP,EAAM4D,WAAa,IAEjD5D,EAAMsD,WAAW,GACjBtD,EAAMuD,WAAW,GACjBvD,EAAMwD,gBAAgB,OAEnB,IAAIv9B,KAAK8Z,OAASjY,EAAS06B,MAAMK,KAAM,CAC1C,OAAQ58B,KAAKglB,MACX,IAAK,GACH+U,EAAMsD,WAAiD,GAAtCz4B,KAAK+lB,MAAMoP,EAAM2D,aAAe,IAAW,MAC9D,SACE3D,EAAMsD,WAAiD,GAAtCz4B,KAAK+lB,MAAMoP,EAAM2D,aAAe,KAErD3D,EAAMuD,WAAW,GACjBvD,EAAMwD,gBAAgB,OACjB,IAAIv9B,KAAK8Z,OAASjY,EAAS06B,MAAMI,OAAQ,CAE9C,OAAQ38B,KAAKglB,MACX,IAAK,IACL,IAAK,IACH+U,EAAMsD,WAAgD,EAArCz4B,KAAK+lB,MAAMoP,EAAM2D,aAAe,IACjD3D,EAAMuD,WAAW,EACjB,MACF,KAAK,GACHvD,EAAMuD,WAAiD,GAAtC14B,KAAK+lB,MAAMoP,EAAM0D,aAAe,IAAW,MAC9D,SACE1D,EAAMuD,WAAiD,GAAtC14B,KAAK+lB,MAAMoP,EAAM0D,aAAe,KAErD1D,EAAMwD,gBAAgB,OAEnB,IAAIv9B,KAAK8Z,OAASjY,EAAS06B,MAAMG,OAEpC,OAAQ18B,KAAKglB,MACX,IAAK,IACL,IAAK,IACH+U,EAAMuD,WAAgD,EAArC14B,KAAK+lB,MAAMoP,EAAM0D,aAAe,IACjD1D,EAAMwD,gBAAgB,EACtB,MACF,KAAK,GACHxD,EAAMwD,gBAA6D,IAA7C34B,KAAK+lB,MAAMoP,EAAMyD,kBAAoB,KAAe,MAC5E,SACEzD,EAAMwD,gBAA4D,IAA5C34B,KAAK+lB,MAAMoP,EAAMyD,kBAAoB,UAG5D,IAAIx9B,KAAK8Z,OAASjY,EAAS06B,MAAME,YAAa,CACjD,GAAIzX,GAAOhlB,KAAKglB,KAAO,EAAIhlB,KAAKglB,KAAO,EAAI,CAC3C+U,GAAMwD,gBAAgB34B,KAAK+lB,MAAMoP,EAAMyD,kBAAoBxY,GAAQA,GAGrE,MAAO+U,IAQTl4B,EAAS0P,UAAUkoB,QAAU,WAC3B,OAAQz5B,KAAK8Z,OACX,IAAKjY,GAAS06B,MAAME,YAClB,MAA0C,IAAlCz8B,KAAKi4B,QAAQuF,iBACvB,KAAK37B,GAAS06B,MAAMG,OAClB,MAAqC,IAA7B18B,KAAKi4B,QAAQwF,YACvB,KAAK57B,GAAS06B,MAAMI,OAClB,MAAmC,IAA3B38B,KAAKi4B,QAAQ0F,YAAkD,GAA7B39B,KAAKi4B,QAAQyF,YAEzD,KAAK77B,GAAS06B,MAAMK,KAClB,MAAmC,IAA3B58B,KAAKi4B,QAAQ0F,UACvB,KAAK97B,GAAS06B,MAAMM,QACpB,IAAKh7B,GAAS06B,MAAMC,IAClB,MAAkC,IAA1Bx8B,KAAKi4B,QAAQ2F,SACvB,KAAK/7B,GAAS06B,MAAMO,MAClB,MAAmC,IAA3B98B,KAAKi4B,QAAQ4F,UACvB,KAAKh8B,GAAS06B,MAAMQ,KAClB,OAAO,CACT,SACE,OAAO,IAWbl7B,EAAS0P,UAAUqtB,cAAgB,SAASF,GAK1C,OAJYx4B,QAARw4B,IACFA,EAAO1+B,KAAKi4B,SAGNj4B,KAAK8Z,OACX,IAAKjY,GAAS06B,MAAME,YAAc,MAAOj5B,GAAOk7B,GAAMG,OAAO,MAC7D,KAAKh9B,GAAS06B,MAAMG,OAAc,MAAOl5B,GAAOk7B,GAAMG,OAAO,IAC7D,KAAKh9B,GAAS06B,MAAMI,OAAc,MAAOn5B,GAAOk7B,GAAMG,OAAO,QAC7D,KAAKh9B,GAAS06B,MAAMK,KAAc,MAAOp5B,GAAOk7B,GAAMG,OAAO,QAC7D,KAAKh9B,GAAS06B,MAAMM,QAAc,MAAOr5B,GAAOk7B,GAAMG,OAAO,QAC7D,KAAKh9B,GAAS06B,MAAMC,IAAc,MAAOh5B,GAAOk7B,GAAMG,OAAO,IAC7D,KAAKh9B,GAAS06B,MAAMO,MAAc,MAAOt5B,GAAOk7B,GAAMG,OAAO,MAC7D,KAAKh9B,GAAS06B,MAAMQ,KAAc,MAAOv5B,GAAOk7B,GAAMG,OAAO,OAC7D,SAAkC,MAAO,KAW7Ch9B,EAAS0P,UAAUutB,cAAgB,SAASJ,GAM1C,OALYx4B,QAARw4B,IACFA,EAAO1+B,KAAKi4B,SAINj4B,KAAK8Z,OACX,IAAKjY,GAAS06B,MAAME,YAAY,MAAOj5B,GAAOk7B,GAAMG,OAAO,WAC3D,KAAKh9B,GAAS06B,MAAMG,OAAY,MAAOl5B,GAAOk7B,GAAMG,OAAO,eAC3D,KAAKh9B,GAAS06B,MAAMI,OACpB,IAAK96B,GAAS06B,MAAMK,KAAY,MAAOp5B,GAAOk7B,GAAMG,OAAO,aAC3D,KAAKh9B,GAAS06B,MAAMM,QACpB,IAAKh7B,GAAS06B,MAAMC,IAAY,MAAOh5B,GAAOk7B,GAAMG,OAAO,YAC3D,KAAKh9B,GAAS06B,MAAMO,MAAY,MAAOt5B,GAAOk7B,GAAMG,OAAO,OAC3D,KAAKh9B,GAAS06B,MAAMQ,KAAY,MAAO,EACvC,SAAgC,MAAO,KAI3Cl9B,EAAOD,QAAUiC,GAKb,SAAShC,GAOb,QAASuC,KACPpC,KAAK0N,QAAU,KACf1N,KAAK0F,MAAQ,KAQftD,EAAUmP,UAAUoI,WAAa,SAASjM,GACpCA,GACF/M,KAAKqE,OAAOhF,KAAK0N,QAASA,IAQ9BtL,EAAUmP,UAAU+M,OAAS,WAE3B,OAAO,GAMTlc,EAAUmP,UAAUmjB,QAAU,aAU9BtyB,EAAUmP,UAAUwtB,WAAa,WAC/B,GAAI5I,GAAWn2B,KAAK0F,MAAMs5B,iBAAmBh/B,KAAK0F,MAAMkL,OACpD5Q,KAAK0F,MAAMu5B,kBAAoBj/B,KAAK0F,MAAMmL,MAK9C,OAHA7Q,MAAK0F,MAAMs5B,eAAiBh/B,KAAK0F,MAAMkL,MACvC5Q,KAAK0F,MAAMu5B,gBAAkBj/B,KAAK0F,MAAMmL,OAEjCslB,GAGTt2B,EAAOD,QAAUwC,GAKb,SAASvC,EAAQD,EAASM,GAa9B,QAASmC,GAAayvB,EAAMpkB,GAC1B1N,KAAK8xB,KAAOA,EAGZ9xB,KAAKwxB,gBACH0N,iBAAiB,GAEnBl/B,KAAK0N,QAAU/M,EAAKqE,UAAWhF,KAAKwxB,gBAEpCxxB,KAAK6xB,UAEL7xB,KAAK2Z,WAAWjM,GAtBlB,GAAI/M,GAAOT,EAAoB,GAC3BkC,EAAYlC,EAAoB,GAwBpCmC,GAAYkP,UAAY,GAAInP,GAM5BC,EAAYkP,UAAUsgB,QAAU,WAC9B,GAAI1C,GAAMvf,SAASK,cAAc,MACjCkf,GAAI3nB,UAAY,cAChB2nB,EAAI3e,MAAMiQ,SAAW,WACrB0O,EAAI3e,MAAMnJ,IAAM,MAChB8nB,EAAI3e,MAAMK,OAAS,OAEnB7Q,KAAKmvB,IAAMA,GAMb9sB,EAAYkP,UAAUmjB,QAAU,WAC9B10B,KAAK0N,QAAQwxB,iBAAkB,EAC/Bl/B,KAAKse,SAELte,KAAK8xB,KAAO,MAQdzvB,EAAYkP,UAAUoI,WAAa,SAASjM,GACtCA,GAEF/M,EAAK8E,iBAAiB,mBAAoBzF,KAAK0N,QAASA,IAQ5DrL,EAAYkP,UAAU+M,OAAS,WAC7B,GAAIte,KAAK0N,QAAQwxB,gBAAiB,CAChC,GAAIC,GAASn/B,KAAK8xB,KAAK5E,IAAIiG,kBACvBnzB,MAAKmvB,IAAI3lB,YAAc21B,IAErBn/B,KAAKmvB,IAAI3lB,YACXxJ,KAAKmvB,IAAI3lB,WAAWgG,YAAYxP,KAAKmvB,KAEvCgQ,EAAOrvB,YAAY9P,KAAKmvB,KAExBnvB,KAAK0O,QAGP,IAAIgrB,GAAM,GAAI11B,MACVmM,EAAInQ,KAAK8xB,KAAKnxB,KAAKwxB,SAASuH,EAEhC15B,MAAKmvB,IAAI3e,MAAMvJ,KAAOkJ,EAAI,KAC1BnQ,KAAKmvB,IAAIiQ,MAAQ,iBAAmB1F,MAIhC15B,MAAKmvB,IAAI3lB,YACXxJ,KAAKmvB,IAAI3lB,WAAWgG,YAAYxP,KAAKmvB,KAEvCnvB,KAAK+hB,MAGP,QAAO,GAMT1f,EAAYkP,UAAU7C,MAAQ,WAG5B,QAASqE,KACPX,EAAG2P,MAGH,IAAIjI,GAAQ1H,EAAG0f,KAAKhkB,MAAMgpB,WAAW1kB,EAAG0f,KAAKC,SAAS9I,OAAOrY,OAAOkJ,MAChEgW,EAAW,EAAIhW,EAAQ,EACZ,IAAXgW,IAAiBA,EAAW,IAC5BA,EAAW,MAAMA,EAAW,KAEhC1d,EAAGkM,SAGHlM,EAAGitB,iBAAmB9T,WAAWxY,EAAQ+c,GAd3C,GAAI1d,GAAKpS,IAiBT+S,MAMF1Q,EAAYkP,UAAUwQ,KAAO,WACG7b,SAA1BlG,KAAKq/B,mBACPnU,aAAalrB,KAAKq/B,wBACXr/B,MAAKq/B,mBAIhBx/B,EAAOD,QAAUyC,GAKb,SAASxC,EAAQD,EAASM,GAe9B,QAASoC,GAAYwvB,EAAMpkB,GACzB1N,KAAK8xB,KAAOA,EAGZ9xB,KAAKwxB,gBACH8N,gBAAgB,GAElBt/B,KAAK0N,QAAU/M,EAAKqE,UAAWhF,KAAKwxB,gBAEpCxxB,KAAK6yB,WAAa,GAAI7uB,MACtBhE,KAAKu/B,eAGLv/B,KAAK6xB,UAEL7xB,KAAK2Z,WAAWjM,GA5BlB,GAAIwlB,GAAShzB,EAAoB,IAC7BS,EAAOT,EAAoB,GAC3BkC,EAAYlC,EAAoB,GA6BpCoC,GAAWiP,UAAY,GAAInP,GAO3BE,EAAWiP,UAAUoI,WAAa,SAASjM,GACrCA,GAEF/M,EAAK8E,iBAAiB,kBAAmBzF,KAAK0N,QAASA,IAQ3DpL,EAAWiP,UAAUsgB,QAAU,WAC7B,GAAI1C,GAAMvf,SAASK,cAAc,MACjCkf,GAAI3nB,UAAY,aAChB2nB,EAAI3e,MAAMiQ,SAAW,WACrB0O,EAAI3e,MAAMnJ,IAAM,MAChB8nB,EAAI3e,MAAMK,OAAS,OACnB7Q,KAAKmvB,IAAMA,CAEX,IAAIqQ,GAAO5vB,SAASK,cAAc,MAClCuvB,GAAKhvB,MAAMiQ,SAAW,WACtB+e,EAAKhvB,MAAMnJ,IAAM,MACjBm4B,EAAKhvB,MAAMvJ,KAAO,QAClBu4B,EAAKhvB,MAAMK,OAAS,OACpB2uB,EAAKhvB,MAAMI,MAAQ,OACnBue,EAAIrf,YAAY0vB,GAGhBx/B,KAAKyD,OAASyvB,EAAO/D,GACnB+E,iBAAiB,IAEnBl0B,KAAKyD,OAAO+N,GAAG,YAAaxR,KAAKg0B,aAAa/B,KAAKjyB,OACnDA,KAAKyD,OAAO+N,GAAG,OAAaxR,KAAKi0B,QAAQhC,KAAKjyB,OAC9CA,KAAKyD,OAAO+N,GAAG,UAAaxR,KAAKq6B,WAAWpI,KAAKjyB,QAMnDsC,EAAWiP,UAAUmjB,QAAU,WAC7B10B,KAAK0N,QAAQ4xB,gBAAiB,EAC9Bt/B,KAAKse,SAELte,KAAKyD,OAAOy6B,QAAO,GACnBl+B,KAAKyD,OAAS,KAEdzD,KAAK8xB,KAAO,MAOdxvB,EAAWiP,UAAU+M,OAAS,WAC5B,GAAIte,KAAK0N,QAAQ4xB,eAAgB,CAC/B,GAAIH,GAASn/B,KAAK8xB,KAAK5E,IAAIiG,kBACvBnzB,MAAKmvB,IAAI3lB,YAAc21B,IAErBn/B,KAAKmvB,IAAI3lB,YACXxJ,KAAKmvB,IAAI3lB,WAAWgG,YAAYxP,KAAKmvB,KAEvCgQ,EAAOrvB,YAAY9P,KAAKmvB,KAG1B,IAAIhf,GAAInQ,KAAK8xB,KAAKnxB,KAAKwxB,SAASnyB,KAAK6yB,WAErC7yB,MAAKmvB,IAAI3e,MAAMvJ,KAAOkJ,EAAI,KAC1BnQ,KAAKmvB,IAAIiQ,MAAQ,SAAWp/B,KAAK6yB,eAI7B7yB,MAAKmvB,IAAI3lB,YACXxJ,KAAKmvB,IAAI3lB,WAAWgG,YAAYxP,KAAKmvB,IAIzC,QAAO,GAOT7sB,EAAWiP,UAAUujB,cAAgB,SAASC,GAC5C/0B,KAAK6yB,WAAa,GAAI7uB,MAAK+wB,EAAKvuB,WAChCxG,KAAKse,UAOPhc,EAAWiP,UAAUyjB,cAAgB,WACnC,MAAO,IAAIhxB,MAAKhE,KAAK6yB,WAAWrsB,YAQlClE,EAAWiP,UAAUyiB,aAAe,SAAS9qB,GAC3ClJ,KAAKu/B,YAAYE,UAAW,EAC5Bz/B,KAAKu/B,YAAY1M,WAAa7yB,KAAK6yB,WAEnC3pB,EAAMw2B,kBACNx2B,EAAMD,kBAQR3G,EAAWiP,UAAU0iB,QAAU,SAAU/qB,GACvC,GAAKlJ,KAAKu/B,YAAYE,SAAtB,CAEA,GAAIxE,GAAS/xB,EAAMquB,QAAQ0D,OACvB9qB,EAAInQ,KAAK8xB,KAAKnxB,KAAKwxB,SAASnyB,KAAKu/B,YAAY1M,YAAcoI,EAC3DlG,EAAO/0B,KAAK8xB,KAAKnxB,KAAK4xB,OAAOpiB,EAEjCnQ,MAAK80B,cAAcC,GAGnB/0B,KAAK8xB,KAAKE,QAAQnH,KAAK,cACrBkK,KAAM,GAAI/wB,MAAKhE,KAAK6yB,WAAWrsB,aAGjC0C,EAAMw2B,kBACNx2B,EAAMD,mBAQR3G,EAAWiP,UAAU8oB,WAAa,SAAUnxB,GACrClJ,KAAKu/B,YAAYE,WAGtBz/B,KAAK8xB,KAAKE,QAAQnH,KAAK,eACrBkK,KAAM,GAAI/wB,MAAKhE,KAAK6yB,WAAWrsB,aAGjC0C,EAAMw2B,kBACNx2B,EAAMD,mBAGRpJ,EAAOD,QAAU0C,GAKb,SAASzC,EAAQD,EAASM,GAe9B,QAASqC,GAAUuvB,EAAMpkB,EAASiyB,GAChC3/B,KAAKK,GAAKM,EAAK+D,aACf1E,KAAK8xB,KAAOA,EAEZ9xB,KAAKwxB,gBACHE,YAAa,OACbkO,iBAAiB,EACjBC,iBAAiB,EACjBC,OAAO,EACPC,iBAAkB,EAClBC,iBAAkB,EAClBC,aAAc,GACdC,aAAc,EACdC,UAAW,GACXvvB,MAAO,OACP4U,SAAS,GAGXxlB,KAAKogC,aAAeT,EACpB3/B,KAAK0F,SACL1F,KAAKqgC,aACHC,SACAC,WAGFvgC,KAAKktB,OAELltB,KAAK8N,OAASY,MAAM,EAAGyW,IAAI,GAE3BnlB,KAAK0N,QAAU/M,EAAKqE,UAAWhF,KAAKwxB,gBACpCxxB,KAAKwgC,iBAAmB,EAExBxgC,KAAK2Z,WAAWjM,GAChB1N,KAAK4Q,MAAQhN,QAAQ,GAAK5D,KAAK0N,QAAQkD,OAAOlF,QAAQ,KAAK,KAC3D1L,KAAKygC,SAAWzgC,KAAK4Q,MACrB5Q,KAAK6Q,OAAS7Q,KAAKogC,aAAa3S,aAEhCztB,KAAK0gC,WAAa,GAClB1gC,KAAK2gC,iBAAmB,GACxB3gC,KAAK4gC,WAAa,EAClB5gC,KAAK6gC,QAAS,EACd7gC,KAAK8gC,eAGL9gC,KAAKu1B,UACLv1B,KAAK+gC,eAAiB,EAGtB/gC,KAAK6xB,UA7DP,GAAIlxB,GAAOT,EAAoB,GAC3BU,EAAUV,EAAoB,GAC9BkC,EAAYlC,EAAoB,IAChCwB,EAAWxB,EAAoB,GA6DnCqC,GAASgP,UAAY,GAAInP,GAIzBG,EAASgP,UAAUyvB,SAAW,SAASzb,EAAO0b,GACvCjhC,KAAKu1B,OAAO/vB,eAAe+f,KAC9BvlB,KAAKu1B,OAAOhQ,GAAS0b,GAEvBjhC,KAAK+gC,gBAAkB,GAGzBx+B,EAASgP,UAAU2vB,YAAc,SAAS3b,EAAO0b,GAC/CjhC,KAAKu1B,OAAOhQ,GAAS0b,GAGvB1+B,EAASgP,UAAU4vB,YAAc,SAAS5b,GACpCvlB,KAAKu1B,OAAO/vB,eAAe+f,WACtBvlB,MAAKu1B,OAAOhQ,GACnBvlB,KAAK+gC,gBAAkB,IAK3Bx+B,EAASgP,UAAUoI,WAAa,SAAUjM,GACxC,GAAIA,EAAS,CACX,GAAI4Q,IAAS,CACTte,MAAK0N,QAAQgkB,aAAehkB,EAAQgkB,aAAuCxrB,SAAxBwH,EAAQgkB,cAC7DpT,GAAS,EAEX,IAAInR,IACF,cACA,kBACA,kBACA,QACA,mBACA,mBACA,eACA,eACA,YACA,QACA,UACFxM,GAAK8E,gBAAgB0H,EAAQnN,KAAK0N,QAASA,GAE3C1N,KAAKygC,SAAW78B,QAAQ,GAAK5D,KAAK0N,QAAQkD,OAAOlF,QAAQ,KAAK,KAEhD,GAAV4S,GAAkBte,KAAKktB,IAAI/Q,QAC7Bnc,KAAKohC,OACLphC,KAAKqhC,UASX9+B,EAASgP,UAAUsgB,QAAU,WAC3B7xB,KAAKktB,IAAI/Q,MAAQvM,SAASK,cAAc,OACxCjQ,KAAKktB,IAAI/Q,MAAM3L,MAAMI,MAAQ5Q,KAAK0N,QAAQkD,MAC1C5Q,KAAKktB,IAAI/Q,MAAM3L,MAAMK,OAAS7Q,KAAK6Q,OAEnC7Q,KAAKktB,IAAIoU,cAAgB1xB,SAASK,cAAc,OAChDjQ,KAAKktB,IAAIoU,cAAc9wB,MAAMI,MAAQ,OACrC5Q,KAAKktB,IAAIoU,cAAc9wB,MAAMK,OAAS7Q,KAAK6Q,OAG3C7Q,KAAK2/B,IAAM/vB,SAASC,gBAAgB,6BAA6B,OACjE7P,KAAK2/B,IAAInvB,MAAMiQ,SAAW,WAC1BzgB,KAAK2/B,IAAInvB,MAAMnJ,IAAM,MACrBrH,KAAK2/B,IAAInvB,MAAMK,OAAS,OACxB7Q,KAAK2/B,IAAInvB,MAAMI,MAAQ,OACvB5Q,KAAK2/B,IAAInvB,MAAM+wB,QAAU,QACzBvhC,KAAKktB,IAAI/Q,MAAMrM,YAAY9P,KAAK2/B,MAGlCp9B,EAASgP,UAAUiwB,kBAAoB,WACrC5gC,EAAQsO,gBAAgBlP,KAAK8gC,YAE7B,IAAI3wB,GACAgwB,EAAYngC,KAAK0N,QAAQyyB,UACzBsB,EAAa,GACbC,EAAa,EACbtxB,EAAIsxB,EAAa,GAAMD,CAGzBtxB,GAD8B,QAA5BnQ,KAAK0N,QAAQgkB,YACXgQ,EAGA1hC,KAAK4Q,MAAQuvB,EAAYuB,CAG/B,KAAK,GAAIC,KAAW3hC,MAAKu1B,OACnBv1B,KAAKu1B,OAAO/vB,eAAem8B,KAC7B3hC,KAAKu1B,OAAOoM,GAASC,SAASzxB,EAAGC,EAAGpQ,KAAK8gC,YAAa9gC,KAAK2/B,IAAKQ,EAAWsB,GAC3ErxB,GAAKqxB,EAAaC,EAItB9gC,GAAQ2O,gBAAgBvP,KAAK8gC,cAM/Bv+B,EAASgP,UAAU8vB,KAAO,WACnBrhC,KAAKktB,IAAI/Q,MAAM3S,aACc,QAA5BxJ,KAAK0N,QAAQgkB,YACf1xB,KAAK8xB,KAAK5E,IAAIjmB,KAAK6I,YAAY9P,KAAKktB,IAAI/Q,OAGxCnc,KAAK8xB,KAAK5E,IAAIhJ,MAAMpU,YAAY9P,KAAKktB,IAAI/Q,QAIxCnc,KAAKktB,IAAIoU,cAAc93B,YAC1BxJ,KAAK8xB,KAAK5E,IAAIkG,qBAAqBtjB,YAAY9P,KAAKktB,IAAIoU,gBAO5D/+B,EAASgP,UAAU6vB,KAAO,WACpBphC,KAAKktB,IAAI/Q,MAAM3S,YACjBxJ,KAAKktB,IAAI/Q,MAAM3S,WAAWgG,YAAYxP,KAAKktB,IAAI/Q,OAG7Cnc,KAAKktB,IAAIoU,cAAc93B,YACzBxJ,KAAKktB,IAAIoU,cAAc93B,WAAWgG,YAAYxP,KAAKktB,IAAIoU,gBAU3D/+B,EAASgP,UAAUsf,SAAW,SAAUniB,EAAOyW,GAC7CnlB,KAAK8N,MAAMY,MAAQA,EACnB1O,KAAK8N,MAAMqX,IAAMA,GAOnB5iB,EAASgP,UAAU+M,OAAS,WAC1B,GAAIujB,IAAe,CACnB,IAA2B,GAAvB7hC,KAAK+gC,eACP/gC,KAAKohC,WAEF,CACHphC,KAAKqhC,OACLrhC,KAAK6Q,OAASjN,OAAO5D,KAAKogC,aAAa5vB,MAAMK,OAAOnF,QAAQ,KAAK,KAGjE1L,KAAKktB,IAAIoU,cAAc9wB,MAAMK,OAAS7Q,KAAK6Q,OAAS,KACpD7Q,KAAK4Q,MAAgC,GAAxB5Q,KAAK0N,QAAQ8X,QAAkB5hB,QAAQ,GAAK5D,KAAK0N,QAAQkD,OAAOlF,QAAQ,KAAK,KAAO,CAEjG,IAAIhG,GAAQ1F,KAAK0F,MACbyW,EAAQnc,KAAKktB,IAAI/Q,KAGrBA,GAAM3U,UAAY,WAGlBxH,KAAK8hC,oBAEL,IAAIpQ,GAAc1xB,KAAK0N,QAAQgkB,YAC3BkO,EAAkB5/B,KAAK0N,QAAQkyB,gBAC/BC,EAAkB7/B,KAAK0N,QAAQmyB,eAGnCn6B,GAAMq8B,iBAAmBnC,EAAkBl6B,EAAMs8B,gBAAkB,EACnEt8B,EAAMu8B,iBAAmBpC,EAAkBn6B,EAAMw8B,gBAAkB,EAEnEx8B,EAAMy8B,eAAiBniC,KAAK8xB,KAAK5E,IAAIkG,qBAAqB7F,YAAcvtB,KAAK4gC,WAAa5gC,KAAK4Q,MAAQ,EAAI5Q,KAAK0N,QAAQsyB,iBACxHt6B,EAAM08B,gBAAkB,EACxB18B,EAAM28B,eAAiBriC,KAAK8xB,KAAK5E,IAAIkG,qBAAqB7F,YAAcvtB,KAAK4gC,WAAa5gC,KAAK4Q,MAAQ,EAAI5Q,KAAK0N,QAAQqyB,iBACxHr6B,EAAM48B,gBAAkB,EAGL,QAAf5Q,GACFvV,EAAM3L,MAAMnJ,IAAM,IAClB8U,EAAM3L,MAAMvJ,KAAO,IACnBkV,EAAM3L,MAAM2P,OAAS,GACrBhE,EAAM3L,MAAMI,MAAQ5Q,KAAK4Q,MAAQ,KACjCuL,EAAM3L,MAAMK,OAAS7Q,KAAK6Q,OAAS,OAGnCsL,EAAM3L,MAAMnJ,IAAM,GAClB8U,EAAM3L,MAAM2P,OAAS,IACrBhE,EAAM3L,MAAMvJ,KAAO,IACnBkV,EAAM3L,MAAMI,MAAQ5Q,KAAK4Q,MAAQ,KACjCuL,EAAM3L,MAAMK,OAAS7Q,KAAK6Q,OAAS,MAErCgxB,EAAe7hC,KAAKuiC,gBACM,GAAtBviC,KAAK0N,QAAQoyB,OACf9/B,KAAKwhC,oBAGT,MAAOK,IAOTt/B,EAASgP,UAAUgxB,cAAgB,WACjC3hC,EAAQsO,gBAAgBlP,KAAKqgC,YAE7B,IAAI3O,GAAc1xB,KAAK0N,QAAqB,YAGxCqqB,EAAc/3B,KAAK6gC,OAAS7gC,KAAK0F,MAAMw8B,iBAAmB,GAAKliC,KAAK2gC,iBACpE3b,EAAO,GAAItjB,GAAS1B,KAAK8N,MAAMY,MAAO1O,KAAK8N,MAAMqX,IAAK4S,EAAa/3B,KAAKktB,IAAI/Q,MAAMsR,aACtFztB,MAAKglB,KAAOA,EACZA,EAAKiU,OAGL,IAAIyH,GAAa1gC,KAAKktB,IAAI/Q,MAAMsR,cAAiBzI,EAAKqU,YAAcrU,EAAKA,KAAQ,EACjFhlB,MAAK0gC,WAAaA,CAElB,IAAI8B,GAAgBxiC,KAAK6Q,OAAS6vB,EAC9B+B,EAAiB,CAErB,IAAmB,GAAfziC,KAAK6gC,OAAiB,CACxBH,EAAa1gC,KAAK2gC,iBAClB8B,EAAiB79B,KAAK+lB,MAAO3qB,KAAK6Q,OAAS6vB,EAAc8B,EACzD,KAAK,GAAIt9B,GAAI,EAAO,GAAMu9B,EAAVv9B,EAA0BA,IACxC8f,EAAKwU,UAEPgJ,GAAgBxiC,KAAK6Q,OAAS6vB,EAIhC1gC,KAAK0iC,YAAc1d,EAAKqT,SACxB,IAAIsK,GAAiB,EAGjBl2B,EAAM,CACVuY,GAAKE,OAELllB,KAAK4iC,aAAe,CAEpB,KADA,GAAIxyB,GAAI,EACD3D,EAAM7H,KAAK+lB,MAAM6X,IAAgB,CAEtCpyB,EAAIxL,KAAK+lB,MAAMle,EAAMi0B,GACrBiC,EAAiBl2B,EAAMi0B,CACvB,IAAIjH,GAAUzU,EAAKyU,WAEfz5B,KAAK0N,QAAyB,iBAAgB,GAAX+rB,GAAmC,GAAfz5B,KAAK6gC,QAAsD,GAAnC7gC,KAAK0N,QAAyB,kBAC/G1N,KAAK6iC,aAAazyB,EAAI,EAAG4U,EAAKC,aAAcyM,EAAa,cAAe1xB,KAAK0F,MAAMs8B,iBAGjFvI,GAAWz5B,KAAK0N,QAAyB,iBAAoB,GAAf1N,KAAK6gC,QAChB,GAAnC7gC,KAAK0N,QAAyB,iBAA6B,GAAf1N,KAAK6gC,QAA8B,GAAXpH,GAElErpB,GAAK,GACPpQ,KAAK6iC,aAAazyB,EAAI,EAAG4U,EAAKC,aAAcyM,EAAa,cAAe1xB,KAAK0F,MAAMw8B,iBAErFliC,KAAK8iC,YAAY1yB,EAAGshB,EAAa,wBAAyB1xB,KAAK0N,QAAQqyB,iBAAkB//B,KAAK0F,MAAM28B,iBAGpGriC,KAAK8iC,YAAY1yB,EAAGshB,EAAa,wBAAyB1xB,KAAK0N,QAAQsyB,iBAAkBhgC,KAAK0F,MAAMy8B,gBAGtGnd,EAAKE,OACLzY,IAGFzM,KAAKwgC,iBAAmBmC,IAAiBH,EAAc,GAAKxd,EAAKA,KAEjE,IAAIyB,GAA+B,GAAtBzmB,KAAK0N,QAAQoyB,MAAgB9/B,KAAK0N,QAAQyyB,UAAYngC,KAAK0N,QAAQuyB,aAAe,GAAKjgC,KAAK0N,QAAQuyB,aAAe,EAEhI,OAAIjgC,MAAK4iC,aAAgB5iC,KAAK4Q,MAAQ6V,GAAmC,GAAxBzmB,KAAK0N,QAAQ8X,SAC5DxlB,KAAK4Q,MAAQ5Q,KAAK4iC,aAAenc,EACjCzmB,KAAK0N,QAAQkD,MAAQ5Q,KAAK4Q,MAAQ,KAClChQ,EAAQ2O,gBAAgBvP,KAAKqgC,aAC7BrgC,KAAKse,UACE,GAGAte,KAAK4iC,aAAgB5iC,KAAK4Q,MAAQ6V,GAAmC,GAAxBzmB,KAAK0N,QAAQ8X,SAAmBxlB,KAAK4Q,MAAQ5Q,KAAKygC,UACtGzgC,KAAK4Q,MAAQhM,KAAK6H,IAAIzM,KAAKygC,SAASzgC,KAAK4iC,aAAenc,GACxDzmB,KAAK0N,QAAQkD,MAAQ5Q,KAAK4Q,MAAQ,KAClChQ,EAAQ2O,gBAAgBvP,KAAKqgC,aAC7BrgC,KAAKse,UACE,IAGP1d,EAAQ2O,gBAAgBvP,KAAKqgC,cACtB,IAaX99B,EAASgP,UAAUsxB,aAAe,SAAUzyB,EAAGiW,EAAMqL,EAAalqB,EAAWu7B,GAE3E,GAAIxd,GAAQ3kB,EAAQmP,cAAc,MAAM/P,KAAKqgC,YAAargC,KAAKktB,IAAI/Q,MACnEoJ,GAAM/d,UAAYA,EAClB+d,EAAMzE,UAAYuF,EAEC,QAAfqL,GACFnM,EAAM/U,MAAMvJ,KAAO,IAAMjH,KAAK0N,QAAQuyB,aAAe,KACrD1a,EAAM/U,MAAM4U,UAAY,UAGxBG,EAAM/U,MAAM0T,MAAQ,IAAMlkB,KAAK0N,QAAQuyB,aAAe,KACtD1a,EAAM/U,MAAM4U,UAAY,QAG1BG,EAAM/U,MAAMnJ,IAAM+I,EAAI,GAAM2yB,EAAkB/iC,KAAK0N,QAAQwyB,aAAe,KAE1E7Z,GAAQ,EAER,IAAI2c,GAAep+B,KAAK6H,IAAIzM,KAAK0F,MAAMu9B,eAAejjC,KAAK0F,MAAMw9B,eAC7DljC,MAAK4iC,aAAevc,EAAKhhB,OAAS29B,IACpChjC,KAAK4iC,aAAevc,EAAKhhB,OAAS29B,IAYtCzgC,EAASgP,UAAUuxB,YAAc,SAAU1yB,EAAGshB,EAAalqB,EAAWif,EAAQ7V,GAC5E,GAAmB,GAAf5Q,KAAK6gC,OAAgB,CACvB,GAAI7T,GAAOpsB,EAAQmP,cAAc,MAAM/P,KAAKqgC,YAAargC,KAAKktB,IAAIoU,cAClEtU,GAAKxlB,UAAYA,EACjBwlB,EAAKlM,UAAY,GAEE,QAAf4Q,EACF1E,EAAKxc,MAAMvJ,KAAQjH,KAAK4Q,MAAQ6V,EAAU,KAG1CuG,EAAKxc,MAAM0T,MAASlkB,KAAK4Q,MAAQ6V,EAAU,KAG7CuG,EAAKxc,MAAMI,MAAQA,EAAQ,KAC3Boc,EAAKxc,MAAMnJ,IAAM+I,EAAI,OAKzB7N,EAASgP,UAAU4xB,aAAe,SAAUt8B,GAC1C,GAAIu8B,GAAgBpjC,KAAK0iC,YAAc77B,EACnCw8B,EAAiBD,EAAgBpjC,KAAKwgC,gBAC1C,OAAO6C,IAST9gC,EAASgP,UAAUuwB,mBAAqB,WAEtC,KAAM,mBAAqB9hC,MAAK0F,OAAQ,CAEtC,GAAI49B,GAAY1zB,SAAS2zB,eAAe,KACpCC,EAAmB5zB,SAASK,cAAc,MAC9CuzB,GAAiBh8B,UAAY,sBAC7Bg8B,EAAiB1zB,YAAYwzB,GAC7BtjC,KAAKktB,IAAI/Q,MAAMrM,YAAY0zB,GAE3BxjC,KAAK0F,MAAMs8B,gBAAkBwB,EAAiB9hB,aAC9C1hB,KAAK0F,MAAMw9B,eAAiBM,EAAiBnnB,YAE7Crc,KAAKktB,IAAI/Q,MAAM3M,YAAYg0B,GAG7B,KAAM,mBAAqBxjC,MAAK0F,OAAQ,CACtC,GAAI+9B,GAAY7zB,SAAS2zB,eAAe,KACpCG,EAAmB9zB,SAASK,cAAc,MAC9CyzB,GAAiBl8B,UAAY,sBAC7Bk8B,EAAiB5zB,YAAY2zB,GAC7BzjC,KAAKktB,IAAI/Q,MAAMrM,YAAY4zB,GAE3B1jC,KAAK0F,MAAMw8B,gBAAkBwB,EAAiBhiB,aAC9C1hB,KAAK0F,MAAMu9B,eAAiBS,EAAiBrnB,YAE7Crc,KAAKktB,IAAI/Q,MAAM3M,YAAYk0B,KAU/BnhC,EAASgP,UAAU2gB,KAAO,SAASwM,GACjC,MAAO1+B,MAAKglB,KAAKkN,KAAKwM,IAGxB7+B,EAAOD,QAAU2C,GAKb,SAAS1C,EAAQD,EAASM,GAW9B,QAASsC,GAAY6N,EAAOsxB,EAASj0B,EAASi2B,GAC5C3jC,KAAKK,GAAKshC,CACV,IAAIx0B,IAAU,WAAW,QAAQ,OAAO,mBAAmB,WAAW,aAAa,SAAS,aAC5FnN,MAAK0N,QAAU/M,EAAKuM,sBAAsBC,EAAOO,GACjD1N,KAAK4jC,kBAAwC19B,SAApBmK,EAAM7I,UAC/BxH,KAAK2jC,yBAA2BA,EAChC3jC,KAAK6jC,aAAe,EACpB7jC,KAAK+S,OAAO1C,GACkB,GAA1BrQ,KAAK4jC,oBACP5jC,KAAK2jC,yBAAyB,IAAM,GAEtC3jC,KAAK+yB,aApBP,GAAIpyB,GAAOT,EAAoB,GAC3BU,EAAUV,EAAoB,EAsBlCsC,GAAW+O,UAAU0hB,SAAW,SAASlxB,GAC1B,MAATA,GACF/B,KAAK+yB,UAAYhxB,EACQ,GAArB/B,KAAK0N,QAAQ2G,MACfrU,KAAK+yB,UAAU1e,KAAK,SAAUpP,EAAEa,GAAI,MAAOb,GAAEkL,EAAIrK,EAAEqK,KAIrDnQ,KAAK+yB,cAITvwB,EAAW+O,UAAUuyB,gBAAkB,SAAS1hB,GAC9CpiB,KAAK6jC,aAAezhB,GAGtB5f,EAAW+O,UAAUoI,WAAa,SAASjM,GACzC,GAAgBxH,SAAZwH,EAAuB,CACzB,GAAIP,IAAU,WAAW,QAAQ,OAAO,mBAAmB,WAC3DxM,GAAKkF,oBAAoBsH,EAAQnN,KAAK0N,QAASA,GAE/C/M,EAAK6M,aAAaxN,KAAK0N,QAASA,EAAQ,cACxC/M,EAAK6M,aAAaxN,KAAK0N,QAASA,EAAQ,cACxC/M,EAAK6M,aAAaxN,KAAK0N,QAASA,EAAQ,UAEpCA,EAAQq2B,YACuB,gBAAtBr2B,GAAQq2B,YACbr2B,EAAQq2B,WAAWC,kBACqB,WAAtCt2B,EAAQq2B,WAAWC,gBACrBhkC,KAAK0N,QAAQq2B,WAAWE,MAAQ,EAEa,WAAtCv2B,EAAQq2B,WAAWC,gBAC1BhkC,KAAK0N,QAAQq2B,WAAWE,MAAQ,GAGhCjkC,KAAK0N,QAAQq2B,WAAWC,gBAAkB,cAC1ChkC,KAAK0N,QAAQq2B,WAAWE,MAAQ,OAQ5CzhC,EAAW+O,UAAUwB,OAAS,SAAS1C,GACrCrQ,KAAKqQ,MAAQA,EACbrQ,KAAK+sB,QAAU1c,EAAM0c,SAAW,QAChC/sB,KAAKwH,UAAY6I,EAAM7I,WAAaxH,KAAKwH,WAAa,aAAexH,KAAK2jC,yBAAyB,GAAK,GACxG3jC,KAAK2Z,WAAWtJ,EAAM3C,UAGxBlL,EAAW+O,UAAUqwB,SAAW,SAASzxB,EAAGC,EAAGjB,EAAe+0B,EAAc/D,EAAWsB,GACrF,GACI0C,GAAMC,EADNC,EAA0B,GAAb5C,EAGb6C,EAAU1jC,EAAQ6O,cAAc,OAAQN,EAAe+0B,EAO3D,IANAI,EAAQ7zB,eAAe,KAAM,IAAKN,GAClCm0B,EAAQ7zB,eAAe,KAAM,IAAKL,EAAIi0B,GACtCC,EAAQ7zB,eAAe,KAAM,QAAS0vB,GACtCmE,EAAQ7zB,eAAe,KAAM,SAAU,EAAE4zB,GACzCC,EAAQ7zB,eAAe,KAAM,QAAS,WAEZ,QAAtBzQ,KAAK0N,QAAQ8C,MACf2zB,EAAOvjC,EAAQ6O,cAAc,OAAQN,EAAe+0B,GACpDC,EAAK1zB,eAAe,KAAM,QAASzQ,KAAKwH,WACxC28B,EAAK1zB,eAAe,KAAM,IAAK,IAAMN,EAAI,IAAIC,EAAE,MAAQD,EAAIgwB,GAAa,IAAI/vB,GACzC,GAA/BpQ,KAAK0N,QAAQ62B,OAAO52B,UACtBy2B,EAAWxjC,EAAQ6O,cAAc,OAAQN,EAAe+0B,GACjB,OAAnClkC,KAAK0N,QAAQ62B,OAAO7S,YACtB0S,EAAS3zB,eAAe,KAAM,IAAK,IAAIN,EAAE,MAAQC,EAAIi0B,GACnD,IAAIl0B,EAAE,IAAIC,EAAE,MAAOD,EAAIgwB,GAAa,IAAI/vB,EAAE,MAAOD,EAAIgwB,GAAa,KAAO/vB,EAAIi0B,IAG/ED,EAAS3zB,eAAe,KAAM,IAAK,IAAIN,EAAE,IAAIC,EAAE,KACzCD,EAAE,KAAOC,EAAIi0B,GAAc,MACzBl0B,EAAIgwB,GAAa,KAAO/vB,EAAIi0B,GAClC,KAAMl0B,EAAIgwB,GAAa,IAAI/vB,GAE/Bg0B,EAAS3zB,eAAe,KAAM,QAASzQ,KAAKwH,UAAY,cAGnB,GAAnCxH,KAAK0N,QAAQ6C,WAAW5C,SAC1B/M,EAAQsP,UAAUC,EAAI,GAAMgwB,EAAU/vB,EAAGpQ,KAAMmP,EAAe+0B,OAG7D,CACH,GAAIM,GAAW5/B,KAAK+lB,MAAM,GAAMwV,GAC5BsE,EAAa7/B,KAAK+lB,MAAM,GAAM8W,GAC9BiD,EAAa9/B,KAAK+lB,MAAM,IAAO8W,GAE/Bhb,EAAS7hB,KAAK+lB,OAAOwV,EAAa,EAAIqE,GAAW,EAErD5jC,GAAQ+P,QAAQR,EAAI,GAAIq0B,EAAW/d,EAAYrW,EAAIi0B,EAAaI,EAAa,EAAGD,EAAUC,EAAYzkC,KAAKwH,UAAY,OAAQ2H,EAAe+0B,GAC9ItjC,EAAQ+P,QAAQR,EAAI,IAAIq0B,EAAW/d,EAAS,EAAGrW,EAAIi0B,EAAaK,EAAa,EAAGF,EAAUE,EAAY1kC,KAAKwH,UAAY,OAAQ2H,EAAe+0B,KAIlJrkC,EAAOD,QAAU4C,GAKb,SAAS3C,EAAQD,EAASM,GAY9B,QAASuC,GAAOk/B,EAAS5wB,EAAM+hB,GAC7B9yB,KAAK2hC,QAAUA,EAEf3hC,KAAK8yB,QAAUA,EAEf9yB,KAAKktB,OACLltB,KAAK0F,OACH6f,OACE3U,MAAO,EACPC,OAAQ,IAGZ7Q,KAAKwH,UAAY,KAEjBxH,KAAK+B,SACL/B,KAAK2kC,gBACL3kC,KAAK6N,cACH+2B,WACAC,UAGF7kC,KAAK6xB,UAEL7xB,KAAKoW,QAAQrF,GAjCf,GAAIpQ,GAAOT,EAAoB,GAC3B0B,EAAQ1B,EAAoB,IAC5BiC,EAAYjC,EAAoB,GAsCpCuC,GAAM8O,UAAUsgB,QAAU,WACxB,GAAItM,GAAQ3V,SAASK,cAAc,MACnCsV,GAAM/d,UAAY,SAClBxH,KAAKktB,IAAI3H,MAAQA,CAEjB,IAAIuf,GAAQl1B,SAASK,cAAc,MACnC60B,GAAMt9B,UAAY,QAClB+d,EAAMzV,YAAYg1B,GAClB9kC,KAAKktB,IAAI4X,MAAQA,CAEjB,IAAIC,GAAan1B,SAASK,cAAc,MACxC80B,GAAWv9B,UAAY,QACvBu9B,EAAW,kBAAoB/kC,KAC/BA,KAAKktB,IAAI6X,WAAaA,EAEtB/kC,KAAKktB,IAAI9hB,WAAawE,SAASK,cAAc,OAC7CjQ,KAAKktB,IAAI9hB,WAAW5D,UAAY,QAEhCxH,KAAKktB,IAAIgP,KAAOtsB,SAASK,cAAc,OACvCjQ,KAAKktB,IAAIgP,KAAK10B,UAAY,QAK1BxH,KAAKktB,IAAI8X,OAASp1B,SAASK,cAAc,OACzCjQ,KAAKktB,IAAI8X,OAAOx0B,MAAMomB,WAAa,SACnC52B,KAAKktB,IAAI8X,OAAOlkB,UAAY,IAC5B9gB,KAAKktB,IAAI9hB,WAAW0E,YAAY9P,KAAKktB,IAAI8X,SAO3CviC,EAAM8O,UAAU6E,QAAU,SAASrF,GAEjC,GAAIgc,GAAUhc,GAAQA,EAAKgc,OACvBA,aAAmBkY,SACrBjlC,KAAKktB,IAAI4X,MAAMh1B,YAAYid,GAG3B/sB,KAAKktB,IAAI4X,MAAMhkB,UADG5a,QAAX6mB,EACoBA,EAGA/sB,KAAK2hC,QAIlC3hC,KAAKktB,IAAI3H,MAAM6Z,MAAQruB,GAAQA,EAAKquB,OAAS,GAExCp/B,KAAKktB,IAAI4X,MAAMtkB,WAIlB7f,EAAKmH,gBAAgB9H,KAAKktB,IAAI4X,MAAO,UAHrCnkC,EAAK4G,aAAavH,KAAKktB,IAAI4X,MAAO,SAOpC,IAAIt9B,GAAYuJ,GAAQA,EAAKvJ,WAAa,IACtCA,IAAaxH,KAAKwH,YAChBxH,KAAKwH,YACP7G,EAAKmH,gBAAgB9H,KAAKktB,IAAI3H,MAAO/d,GACrC7G,EAAKmH,gBAAgB9H,KAAKktB,IAAI6X,WAAYv9B,GAC1C7G,EAAKmH,gBAAgB9H,KAAKktB,IAAI9hB,WAAY5D,GAC1C7G,EAAKmH,gBAAgB9H,KAAKktB,IAAIgP,KAAM10B,IAEtC7G,EAAK4G,aAAavH,KAAKktB,IAAI3H,MAAO/d,GAClC7G,EAAK4G,aAAavH,KAAKktB,IAAI6X,WAAYv9B,GACvC7G,EAAK4G,aAAavH,KAAKktB,IAAI9hB,WAAY5D,GACvC7G,EAAK4G,aAAavH,KAAKktB,IAAIgP,KAAM10B,KAQrC/E,EAAM8O,UAAU2zB,cAAgB,WAC9B,MAAOllC,MAAK0F,MAAM6f,MAAM3U;EAW1BnO,EAAM8O,UAAU+M,OAAS,SAASxQ,EAAOiJ,EAAQouB,GAC/C,GAAIhP,IAAU,CAEdn2B,MAAK2kC,aAAe3kC,KAAKolC,oBAAoBplC,KAAK6N,aAAc7N,KAAK2kC,aAAc72B,EAInF,IAAIu3B,GAAerlC,KAAKktB,IAAI8X,OAAOtjB,YAC/B2jB,IAAgBrlC,KAAKslC,mBACvBtlC,KAAKslC,iBAAmBD,EAExB1kC,EAAKsH,QAAQjI,KAAK+B,MAAO,SAAU4Q,GACjCA,EAAK4yB,OAAQ,EACT5yB,EAAK6yB,WAAW7yB,EAAK2L,WAG3B6mB,GAAU,GAIRnlC,KAAK8yB,QAAQplB,QAAQ9L,MACvBA,EAAMA,MAAM5B,KAAK2kC,aAAc5tB,EAAQouB,GAGvCvjC,EAAM06B,QAAQt8B,KAAK2kC,aAAc5tB,EAInC,IAAIlG,GACA8zB,EAAe3kC,KAAK2kC,YACxB,IAAIA,EAAat/B,OAAQ,CACvB,GAAI0F,GAAM45B,EAAa,GAAGt9B,IACtBoF,EAAMk4B,EAAa,GAAGt9B,IAAMs9B,EAAa,GAAG9zB,MAKhD,IAJAlQ,EAAKsH,QAAQ08B,EAAc,SAAUhyB,GACnC5H,EAAMnG,KAAKmG,IAAIA,EAAK4H,EAAKtL,KACzBoF,EAAM7H,KAAK6H,IAAIA,EAAMkG,EAAKtL,IAAMsL,EAAK9B,UAEnC9F,EAAMgM,EAAOmlB,KAAM,CAErB,GAAIzV,GAAS1b,EAAMgM,EAAOmlB,IAC1BzvB,IAAOga,EACP9lB,EAAKsH,QAAQ08B,EAAc,SAAUhyB,GACnCA,EAAKtL,KAAOof,IAGhB5V,EAASpE,EAAMsK,EAAOpE,KAAK2P,SAAW,MAGtCzR,GAASkG,EAAOmlB,KAAOnlB,EAAOpE,KAAK2P,QAErCzR,GAASjM,KAAK6H,IAAIoE,EAAQ7Q,KAAK0F,MAAM6f,MAAM1U,OAG3C,IAAIk0B,GAAa/kC,KAAKktB,IAAI6X,UAC1B/kC,MAAKqH,IAAM09B,EAAWU,UACtBzlC,KAAKiH,KAAO89B,EAAWW,WACvB1lC,KAAK4Q,MAAQm0B,EAAWxX,YACxB4I,EAAUx1B,EAAK0H,eAAerI,KAAM,SAAU6Q,IAAWslB,EAGzDA,EAAUx1B,EAAK0H,eAAerI,KAAK0F,MAAM6f,MAAO,QAASvlB,KAAKktB,IAAI4X,MAAMzoB,cAAgB8Z,EACxFA,EAAUx1B,EAAK0H,eAAerI,KAAK0F,MAAM6f,MAAO,SAAUvlB,KAAKktB,IAAI4X,MAAMpjB,eAAiByU,EAG1Fn2B,KAAKktB,IAAI9hB,WAAWoF,MAAMK,OAAUA,EAAS,KAC7C7Q,KAAKktB,IAAI6X,WAAWv0B,MAAMK,OAAUA,EAAS,KAC7C7Q,KAAKktB,IAAI3H,MAAM/U,MAAMK,OAASA,EAAS,IAGvC,KAAK,GAAI3L,GAAI,EAAGygC,EAAK3lC,KAAK2kC,aAAat/B,OAAYsgC,EAAJzgC,EAAQA,IAAK,CAC1D,GAAIyN,GAAO3S,KAAK2kC,aAAaz/B,EAC7ByN,GAAKizB,cAGP,MAAOzP,IAMT1zB,EAAM8O,UAAU8vB,KAAO,WAChBrhC,KAAKktB,IAAI3H,MAAM/b,YAClBxJ,KAAK8yB,QAAQ5F,IAAI2Y,SAAS/1B,YAAY9P,KAAKktB,IAAI3H,OAG5CvlB,KAAKktB,IAAI6X,WAAWv7B,YACvBxJ,KAAK8yB,QAAQ5F,IAAI6X,WAAWj1B,YAAY9P,KAAKktB,IAAI6X,YAG9C/kC,KAAKktB,IAAI9hB,WAAW5B,YACvBxJ,KAAK8yB,QAAQ5F,IAAI9hB,WAAW0E,YAAY9P,KAAKktB,IAAI9hB,YAG9CpL,KAAKktB,IAAIgP,KAAK1yB,YACjBxJ,KAAK8yB,QAAQ5F,IAAIgP,KAAKpsB,YAAY9P,KAAKktB,IAAIgP,OAO/Cz5B,EAAM8O,UAAU6vB,KAAO,WACrB,GAAI7b,GAAQvlB,KAAKktB,IAAI3H,KACjBA,GAAM/b,YACR+b,EAAM/b,WAAWgG,YAAY+V,EAG/B,IAAIwf,GAAa/kC,KAAKktB,IAAI6X,UACtBA,GAAWv7B,YACbu7B,EAAWv7B,WAAWgG,YAAYu1B,EAGpC,IAAI35B,GAAapL,KAAKktB,IAAI9hB,UACtBA,GAAW5B,YACb4B,EAAW5B,WAAWgG,YAAYpE,EAGpC,IAAI8wB,GAAOl8B,KAAKktB,IAAIgP,IAChBA,GAAK1yB,YACP0yB,EAAK1yB,WAAWgG,YAAY0sB,IAQhCz5B,EAAM8O,UAAUD,IAAM,SAASqB,GAI7B,GAHA3S,KAAK+B,MAAM4Q,EAAKtS,IAAMsS,EACtBA,EAAKmzB,UAAU9lC,MAEX2S,YAAgBxQ,IAAgD,IAAnCnC,KAAK2kC,aAAah9B,QAAQgL,GAAa,CACtE,GAAI7E,GAAQ9N,KAAK8yB,QAAQhB,KAAKhkB,KAC9B9N,MAAK+lC,gBAAgBpzB,EAAM3S,KAAK2kC,aAAc72B,KAQlDrL,EAAM8O,UAAUiD,OAAS,SAAS7B,SACzB3S,MAAK+B,MAAM4Q,EAAKtS,IACvBsS,EAAKmzB,UAAU9lC,KAAK8yB,QAGpB,IAAI/qB,GAAQ/H,KAAK2kC,aAAah9B,QAAQgL,EACzB,KAAT5K,GAAa/H,KAAK2kC,aAAa38B,OAAOD,EAAO,IASnDtF,EAAM8O,UAAUy0B,kBAAoB,SAASrzB,GAC3C3S,KAAK8yB,QAAQmT,WAAWtzB,EAAKtS,KAM/BoC,EAAM8O,UAAUmC,MAAQ,WACtB,GAAItL,GAAQzH,EAAKwH,QAAQnI,KAAK+B,MAC9B/B,MAAK6N,aAAa+2B,QAAUx8B,EAC5BpI,KAAK6N,aAAag3B,MAAQ7kC,KAAKkmC,qBAAqB99B,GAEpDxG,EAAMg6B,aAAa57B,KAAK6N,aAAa+2B,SACrChjC,EAAMi6B,WAAW77B,KAAK6N,aAAag3B,QASrCpiC,EAAM8O,UAAU20B,qBAAuB,SAAS99B,GAG9C,IAAK,GAFD+9B,MAEKjhC,EAAI,EAAGA,EAAIkD,EAAM/C,OAAQH,IAC5BkD,EAAMlD,YAAc/C,IACtBgkC,EAASv+B,KAAKQ,EAAMlD,GAGxB,OAAOihC,IAWT1jC,EAAM8O,UAAU6zB,oBAAsB,SAASv3B,EAAc82B,EAAc72B,GACzE,GAAIs4B,GAEAlhC,EADAmhC,IAKJ,IAAI1B,EAAat/B,OAAS,EACxB,IAAKH,EAAI,EAAGA,EAAIy/B,EAAat/B,OAAQH,IACnClF,KAAK+lC,gBAAgBpB,EAAaz/B,GAAImhC,EAAiBv4B,EAMzDs4B,GAD4B,GAA1BC,EAAgBhhC,OACE1E,EAAKiN,aAAaC,EAAa+2B,QAAS92B,EAAO,OAAO,SAGtDD,EAAa+2B,QAAQj9B,QAAQ0+B,EAAgB,GAInE,IAAIC,GAAkB3lC,EAAKiN,aAAaC,EAAag3B,MAAO/2B,EAAO,OAAO,MAG1E,IAAyB,IAArBs4B,EAAyB,CAC3B,IAAKlhC,EAAIkhC,EAAmBlhC,GAAK,IAC3BlF,KAAKumC,kBAAkB14B,EAAa+2B,QAAQ1/B,GAAImhC,EAAiBv4B,GADnC5I,KAGpC,IAAKA,EAAIkhC,EAAoB,EAAGlhC,EAAI2I,EAAa+2B,QAAQv/B,SACnDrF,KAAKumC,kBAAkB14B,EAAa+2B,QAAQ1/B,GAAImhC,EAAiBv4B,GADN5I,MAMnE,GAAuB,IAAnBohC,EAAuB,CACzB,IAAKphC,EAAIohC,EAAiBphC,GAAK,IACzBlF,KAAKumC,kBAAkB14B,EAAag3B,MAAM3/B,GAAImhC,EAAiBv4B,GADnC5I,KAGlC,IAAKA,EAAIohC,EAAkB,EAAGphC,EAAI2I,EAAag3B,MAAMx/B,SAC/CrF,KAAKumC,kBAAkB14B,EAAag3B,MAAM3/B,GAAImhC,EAAiBv4B,GADR5I,MAK/D,MAAOmhC,IAeT5jC,EAAM8O,UAAUg1B,kBAAoB,SAAS5zB,EAAMgyB,EAAc72B,GAC/D,MAAI6E,GAAKlE,UAAUX,IACZ6E,EAAK6yB,WAAW7yB,EAAK0uB,OAC1B1uB,EAAK6zB,cAC6B,IAA9B7B,EAAah9B,QAAQgL,IACvBgyB,EAAa/8B,KAAK+K,IAEb,IAGHA,EAAK6yB,WAAW7yB,EAAKyuB,QAClB,IAeX3+B,EAAM8O,UAAUw0B,gBAAkB,SAASpzB,EAAMgyB,EAAc72B,GACzD6E,EAAKlE,UAAUX,IACZ6E,EAAK6yB,WAAW7yB,EAAK0uB,OAE1B1uB,EAAK6zB,cACL7B,EAAa/8B,KAAK+K,IAGdA,EAAK6yB,WAAW7yB,EAAKyuB,QAI7BvhC,EAAOD,QAAU6C,GAKb,SAAS5C,EAAQD,EAASM,GAwB9B,QAASwC,GAAQovB,EAAMpkB,GACrB1N,KAAK8xB,KAAOA,EAEZ9xB,KAAKwxB,gBACHlrB,KAAM,KACNorB,YAAa,SACb+U,MAAO,SACP7kC,OAAO,EACP8kC,WAAY,KAEZC,YAAY,EACZC,UACEC,YAAY,EACZ3F,aAAa,EACb5vB,KAAK,EACLkD,QAAQ,GAGVsyB,MAAO,SAAUn0B,EAAMzK,GACrBA,EAASyK,IAEXo0B,SAAU,SAAUp0B,EAAMzK,GACxBA,EAASyK,IAEXq0B,OAAQ,SAAUr0B,EAAMzK,GACtBA,EAASyK,IAEXs0B,SAAU,SAAUt0B,EAAMzK,GACxBA,EAASyK,IAGXoE,QACEpE,MACE0P,WAAY,GACZC,SAAU,IAEZ4Z,KAAM,IAERrb,QAAS,GAIX7gB,KAAK0N,QAAU/M,EAAKqE,UAAWhF,KAAKwxB,gBAGpCxxB,KAAKknC,aACH5gC,MAAOoI,MAAO,OAAQyW,IAAK,SAG7BnlB,KAAK82B,YACH3E,SAAUL,EAAKnxB,KAAKwxB,SACpBI,OAAQT,EAAKnxB,KAAK4xB,QAEpBvyB,KAAKktB,OACLltB,KAAK0F,SACL1F,KAAKyD,OAAS,IAEd,IAAI2O,GAAKpS,IACTA,MAAK+yB,UAAY,KACjB/yB,KAAKgzB,WAAa,KAGlBhzB,KAAKmnC,eACH71B,IAAO,SAAUpI,EAAO6I,GACtBK,EAAGg1B,OAAOr1B,EAAOhQ,QAEnBgR,OAAU,SAAU7J,EAAO6I,GACzBK,EAAGi1B,UAAUt1B,EAAOhQ,QAEtByS,OAAU,SAAUtL,EAAO6I,GACzBK,EAAGk1B,UAAUv1B,EAAOhQ,SAKxB/B,KAAKunC,gBACHj2B,IAAO,SAAUpI,EAAO6I,GACtBK,EAAGo1B,aAAaz1B,EAAOhQ,QAEzBgR,OAAU,SAAU7J,EAAO6I,GACzBK,EAAGq1B,gBAAgB11B,EAAOhQ,QAE5ByS,OAAU,SAAUtL,EAAO6I,GACzBK,EAAGs1B,gBAAgB31B,EAAOhQ,SAI9B/B,KAAK+B,SACL/B,KAAKu1B,UACLv1B,KAAK2nC,YAEL3nC,KAAK4nC,aACL5nC,KAAK6nC,YAAa,EAElB7nC,KAAK8nC,eAGL9nC,KAAK6xB,UAEL7xB,KAAK2Z,WAAWjM,GAzHlB,GAAIwlB,GAAShzB,EAAoB,IAC7BS,EAAOT,EAAoB,GAC3BW,EAAUX,EAAoB,GAC9BY,EAAWZ,EAAoB,GAC/BkC,EAAYlC,EAAoB,IAChCuC,EAAQvC,EAAoB,IAC5B+B,EAAU/B,EAAoB,IAC9BgC,EAAYhC,EAAoB,IAChCiC,EAAYjC,EAAoB,IAGhC6nC,EAAY,eAiHhBrlC,GAAQ6O,UAAY,GAAInP,GAGxBM,EAAQ4S,OACN0yB,IAAK/lC,EACL6L,MAAO3L,EACPmO,MAAOpO,GAMTQ,EAAQ6O,UAAUsgB,QAAU,WAC1B,GAAI1V,GAAQvM,SAASK,cAAc,MACnCkM,GAAM3U,UAAY,UAClB2U,EAAM,oBAAsBnc,KAC5BA,KAAKktB,IAAI/Q,MAAQA,CAGjB,IAAI/Q,GAAawE,SAASK,cAAc,MACxC7E,GAAW5D,UAAY,aACvB2U,EAAMrM,YAAY1E,GAClBpL,KAAKktB,IAAI9hB,WAAaA,CAGtB,IAAI25B,GAAan1B,SAASK,cAAc,MACxC80B,GAAWv9B,UAAY,aACvB2U,EAAMrM,YAAYi1B,GAClB/kC,KAAKktB,IAAI6X,WAAaA,CAGtB,IAAI7I,GAAOtsB,SAASK,cAAc,MAClCisB,GAAK10B,UAAY,OACjBxH,KAAKktB,IAAIgP,KAAOA,CAGhB,IAAI2J,GAAWj2B,SAASK,cAAc,MACtC41B,GAASr+B,UAAY,WACrBxH,KAAKktB,IAAI2Y,SAAWA,EAGpB7lC,KAAKioC,mBAMLjoC,KAAKyD,OAASyvB,EAAOlzB,KAAK8xB,KAAK5E,IAAImG,iBACjCa,iBAAiB,IAInBl0B,KAAKyD,OAAO+N,GAAG,QAAaxR,KAAK8zB,SAAS7B,KAAKjyB,OAC/CA,KAAKyD,OAAO+N,GAAG,YAAaxR,KAAKg0B,aAAa/B,KAAKjyB,OACnDA,KAAKyD,OAAO+N,GAAG,OAAaxR,KAAKi0B,QAAQhC,KAAKjyB,OAC9CA,KAAKyD,OAAO+N,GAAG,UAAaxR,KAAKq6B,WAAWpI,KAAKjyB,OAGjDA,KAAKyD,OAAO+N,GAAG,MAAQxR,KAAKkoC,cAAcjW,KAAKjyB,OAG/CA,KAAKyD,OAAO+N,GAAG,OAAQxR,KAAKmoC,mBAAmBlW,KAAKjyB,OAGpDA,KAAKyD,OAAO+N,GAAG,YAAaxR,KAAKooC,WAAWnW,KAAKjyB,OAGjDA,KAAKqhC,QAkEP3+B,EAAQ6O,UAAUoI,WAAa,SAASjM,GACtC,GAAIA,EAAS,CAEX,GAAIP,IAAU,OAAQ,QAAS,cAAe,UAAW,QAAS,aAAc,aAChFxM,GAAK8E,gBAAgB0H,EAAQnN,KAAK0N,QAASA,GAEvC,UAAYA,KACgB,gBAAnBA,GAAQqJ,QACjB/W,KAAK0N,QAAQqJ,OAAOmlB,KAAOxuB,EAAQqJ,OACnC/W,KAAK0N,QAAQqJ,OAAOpE,KAAK0P,WAAa3U,EAAQqJ,OAC9C/W,KAAK0N,QAAQqJ,OAAOpE,KAAK2P,SAAW5U,EAAQqJ,QAEX,gBAAnBrJ,GAAQqJ,SACtBpW,EAAK8E,iBAAiB,QAASzF,KAAK0N,QAAQqJ,OAAQrJ,EAAQqJ,QACxD,QAAUrJ,GAAQqJ,SACe,gBAAxBrJ,GAAQqJ,OAAOpE,MACxB3S,KAAK0N,QAAQqJ,OAAOpE,KAAK0P,WAAa3U,EAAQqJ,OAAOpE,KACrD3S,KAAK0N,QAAQqJ,OAAOpE,KAAK2P,SAAW5U,EAAQqJ,OAAOpE,MAEb,gBAAxBjF,GAAQqJ,OAAOpE,MAC7BhS,EAAK8E,iBAAiB,aAAc,YAAazF,KAAK0N,QAAQqJ,OAAOpE,KAAMjF,EAAQqJ,OAAOpE,SAM9F,YAAcjF,KACgB,iBAArBA,GAAQk5B,UACjB5mC,KAAK0N,QAAQk5B,SAASC,WAAcn5B,EAAQk5B,SAC5C5mC,KAAK0N,QAAQk5B,SAAS1F,YAAcxzB,EAAQk5B,SAC5C5mC,KAAK0N,QAAQk5B,SAASt1B,IAAc5D,EAAQk5B,SAC5C5mC,KAAK0N,QAAQk5B,SAASpyB,OAAc9G,EAAQk5B,UAET,gBAArBl5B,GAAQk5B,UACtBjmC,EAAK8E,iBAAiB,aAAc,cAAe,MAAO,UAAWzF,KAAK0N,QAAQk5B,SAAUl5B,EAAQk5B,UAKxG,IAAIyB,GAAc,SAAWj0B,GAC3B,GAAIA,IAAQ1G,GAAS,CACnB,GAAI46B,GAAK56B,EAAQ0G,EACjB,MAAMk0B,YAAcC,WAClB,KAAM,IAAIhlC,OAAM,UAAY6Q,EAAO,uBAAyBA,EAAO,mBAErEpU,MAAK0N,QAAQ0G,GAAQk0B,IAEtBrW,KAAKjyB,OACP,QAAS,WAAY,WAAY,UAAUiI,QAAQogC,GAGpDroC,KAAKwoC,cAOT9lC,EAAQ6O,UAAUi3B,UAAY,WAC5BxoC,KAAK2nC,YACL3nC,KAAK6nC,YAAa,GAMpBnlC,EAAQ6O,UAAUmjB,QAAU,WAC1B10B,KAAKohC,OACLphC,KAAKizB,SAAS,MACdjzB,KAAKs1B,UAAU,MAEft1B,KAAKyD,OAAS,KAEdzD,KAAK8xB,KAAO,KACZ9xB,KAAK82B,WAAa,MAMpBp0B,EAAQ6O,UAAU6vB,KAAO,WAEnBphC,KAAKktB,IAAI/Q,MAAM3S,YACjBxJ,KAAKktB,IAAI/Q,MAAM3S,WAAWgG,YAAYxP,KAAKktB,IAAI/Q,OAI7Cnc,KAAKktB,IAAIgP,KAAK1yB,YAChBxJ,KAAKktB,IAAIgP,KAAK1yB,WAAWgG,YAAYxP,KAAKktB,IAAIgP,MAI5Cl8B,KAAKktB,IAAI2Y,SAASr8B,YACpBxJ,KAAKktB,IAAI2Y,SAASr8B,WAAWgG,YAAYxP,KAAKktB,IAAI2Y,WAQtDnjC,EAAQ6O,UAAU8vB,KAAO,WAElBrhC,KAAKktB,IAAI/Q,MAAM3S,YAClBxJ,KAAK8xB,KAAK5E,IAAIjE,OAAOnZ,YAAY9P,KAAKktB,IAAI/Q,OAIvCnc,KAAKktB,IAAIgP,KAAK1yB,YACjBxJ,KAAK8xB,KAAK5E,IAAIiG,mBAAmBrjB,YAAY9P,KAAKktB,IAAIgP,MAInDl8B,KAAKktB,IAAI2Y,SAASr8B,YACrBxJ,KAAK8xB,KAAK5E,IAAIjmB,KAAK6I,YAAY9P,KAAKktB,IAAI2Y,WAW5CnjC,EAAQ6O,UAAUwkB,aAAe,SAAS3iB,GACxC,GAAIlO,GAAGygC,EAAItlC,EAAIsS,CAEf,IAAIS,EAAK,CACP,IAAKzN,MAAMC,QAAQwN,GACjB,KAAM,IAAIrN,WAAU,iBAItB,KAAKb,EAAI,EAAGygC,EAAK3lC,KAAK4nC,UAAUviC,OAAYsgC,EAAJzgC,EAAQA,IAC9C7E,EAAKL,KAAK4nC,UAAU1iC,GACpByN,EAAO3S,KAAK+B,MAAM1B,GACdsS,GAAMA,EAAK81B,UAKjB,KADAzoC,KAAK4nC,aACA1iC,EAAI,EAAGygC,EAAKvyB,EAAI/N,OAAYsgC,EAAJzgC,EAAQA,IACnC7E,EAAK+S,EAAIlO,GACTyN,EAAO3S,KAAK+B,MAAM1B,GACdsS,IACF3S,KAAK4nC,UAAUhgC,KAAKvH,GACpBsS,EAAK+1B,YAUbhmC,EAAQ6O,UAAUykB,aAAe,WAC/B,MAAOh2B,MAAK4nC,UAAU31B,YAOxBvP,EAAQ6O,UAAU8jB,gBAAkB,WAClC,GAAIvnB,GAAQ9N,KAAK8xB,KAAKhkB,MAAMooB,WACxBjvB,EAAQjH,KAAK8xB,KAAKnxB,KAAKwxB,SAASrkB,EAAMY,OACtCwV,EAAQlkB,KAAK8xB,KAAKnxB,KAAKwxB,SAASrkB,EAAMqX,KAEtC/R,IACJ,KAAK,GAAIuuB,KAAW3hC,MAAKu1B,OACvB,GAAIv1B,KAAKu1B,OAAO/vB,eAAem8B,GAM7B,IAAK,GALDtxB,GAAQrQ,KAAKu1B,OAAOoM,GACpBgH,EAAkBt4B,EAAMs0B,aAInBz/B,EAAI,EAAGA,EAAIyjC,EAAgBtjC,OAAQH,IAAK,CAC/C,GAAIyN,GAAOg2B,EAAgBzjC,EAEtByN,GAAK1L,KAAOid,GAAWvR,EAAK1L,KAAO0L,EAAK/B,MAAQ3J,GACnDmM,EAAIxL,KAAK+K,EAAKtS,IAMtB,MAAO+S,IAQT1Q,EAAQ6O,UAAUq3B,UAAY,SAASvoC,GAErC,IAAK,GADDunC,GAAY5nC,KAAK4nC,UACZ1iC,EAAI,EAAGygC,EAAKiC,EAAUviC,OAAYsgC,EAAJzgC,EAAQA,IAC7C,GAAI0iC,EAAU1iC,IAAM7E,EAAI,CACtBunC,EAAU5/B,OAAO9C,EAAG,EACpB,SASNxC,EAAQ6O,UAAU+M,OAAS,WACzB,GAAIvH,GAAS/W,KAAK0N,QAAQqJ,OACtBjJ,EAAQ9N,KAAK8xB,KAAKhkB,MAClBhE,EAASnJ,EAAK8I,OAAOK,OACrB4D,EAAU1N,KAAK0N,QACfgkB,EAAchkB,EAAQgkB,YACtByE,GAAU,EACVha,EAAQnc,KAAKktB,IAAI/Q,MACjByqB,EAAWl5B,EAAQk5B,SAASC,YAAcn5B,EAAQk5B,SAAS1F,WAG/D/kB,GAAM3U,UAAY,WAAao/B,EAAW,YAAc,IAGxDzQ,EAAUn2B,KAAK6oC,gBAAkB1S,CAIjC,IAAI2S,GAAkBh7B,EAAMqX,IAAMrX,EAAMY,MACpCq6B,EAAUD,GAAmB9oC,KAAKgpC,qBAAyBhpC,KAAK0F,MAAMkL,OAAS5Q,KAAK0F,MAAMuxB,SAC1F8R,KAAQ/oC,KAAK6nC,YAAa,GAC9B7nC,KAAKgpC,oBAAsBF,EAC3B9oC,KAAK0F,MAAMuxB,UAAYj3B,KAAK0F,MAAMkL,KAGlC,IAAIu0B,GAAUnlC,KAAK6nC,WACfoB,EAAajpC,KAAKkpC,cAClBC,GACEx2B,KAAMoE,EAAOpE,KACbupB,KAAMnlB,EAAOmlB,MAEfkN,GACEz2B,KAAMoE,EAAOpE,KACbupB,KAAMnlB,EAAOpE,KAAK2P,SAAW,GAE/BzR,EAAS,EACT+gB,EAAY7a,EAAOmlB,KAAOnlB,EAAOpE,KAAK2P,QA4B1C,OA3BA3hB,GAAKsH,QAAQjI,KAAKu1B,OAAQ,SAAUllB,GAClC,GAAIg5B,GAAeh5B,GAAS44B,EAAcE,EAAcC,EACpDE,EAAej5B,EAAMiO,OAAOxQ,EAAOu7B,EAAalE,EACpDhP,GAAUmT,GAAgBnT,EAC1BtlB,GAAUR,EAAMQ,SAElBA,EAASjM,KAAK6H,IAAIoE,EAAQ+gB,GAC1B5xB,KAAK6nC,YAAa,EAGlB1rB,EAAM3L,MAAMK,OAAU/G,EAAO+G,GAG7B7Q,KAAK0F,MAAM2B,IAAM8U,EAAMspB,UACvBzlC,KAAK0F,MAAMuB,KAAOkV,EAAMupB,WACxB1lC,KAAK0F,MAAMkL,MAAQuL,EAAMoR,YACzBvtB,KAAK0F,MAAMmL,OAASA,EAGpB7Q,KAAKktB,IAAIgP,KAAK1rB,MAAMnJ,IAAMyC,EAAuB,OAAf4nB,EAC7B1xB,KAAK8xB,KAAKC,SAAS1qB,IAAIwJ,OAAS7Q,KAAK8xB,KAAKC,SAAS1mB,OAAOhE,IAC1DrH,KAAK8xB,KAAKC,SAAS1qB,IAAIwJ,OAAS7Q,KAAK8xB,KAAKC,SAASsB,gBAAgBxiB,QACxE7Q,KAAKktB,IAAIgP,KAAK1rB,MAAMvJ,KAAOjH,KAAK8xB,KAAKC,SAAS1mB,OAAOpE,KAAO,KAG5DkvB,EAAUn2B,KAAK++B,cAAgB5I,GAUjCzzB,EAAQ6O,UAAU23B,YAAc,WAC9B,GAAIK,GAA+C,OAA5BvpC,KAAK0N,QAAQgkB,YAAwB,EAAK1xB,KAAK2nC,SAAStiC,OAAS,EACpFmkC,EAAexpC,KAAK2nC,SAAS4B,GAC7BN,EAAajpC,KAAKu1B,OAAOiU,IAAiBxpC,KAAKu1B,OAAOwS,EAE1D,OAAOkB,IAAc,MAQvBvmC,EAAQ6O,UAAU02B,iBAAmB,WACnC,GAAIwB,GAAYzpC,KAAKu1B,OAAOwS,EAE5B,IAAI/nC,KAAKgzB,WAEHyW,IACFA,EAAUrI,aACHphC,MAAKu1B,OAAOwS,QAKrB,KAAK0B,EAAW,CACd,GAAIppC,GAAK,KACL0Q,EAAO,IACX04B,GAAY,GAAIhnC,GAAMpC,EAAI0Q,EAAM/Q,MAChCA,KAAKu1B,OAAOwS,GAAa0B,CAEzB,KAAK,GAAIj2B,KAAUxT,MAAK+B,MAClB/B,KAAK+B,MAAMyD,eAAegO,IAC5Bi2B,EAAUn4B,IAAItR,KAAK+B,MAAMyR,GAI7Bi2B,GAAUpI,SAShB3+B,EAAQ6O,UAAUm4B,YAAc,WAC9B,MAAO1pC,MAAKktB,IAAI2Y,UAOlBnjC,EAAQ6O,UAAU0hB,SAAW,SAASlxB,GACpC,GACIqR,GADAhB,EAAKpS,KAEL2pC,EAAe3pC,KAAK+yB,SAGxB,IAAKhxB,EAGA,CAAA,KAAIA,YAAiBlB,IAAWkB,YAAiBjB,IAIpD,KAAM,IAAIiF,WAAU,kDAHpB/F,MAAK+yB,UAAYhxB,MAHjB/B,MAAK+yB,UAAY,IAoBnB,IAXI4W,IAEFhpC,EAAKsH,QAAQjI,KAAKmnC,cAAe,SAAUj/B,EAAUgB,GACnDygC,EAAah4B,IAAIzI,EAAOhB,KAI1BkL,EAAMu2B,EAAa51B,SACnB/T,KAAKsnC,UAAUl0B,IAGbpT,KAAK+yB,UAAW,CAElB,GAAI1yB,GAAKL,KAAKK,EACdM,GAAKsH,QAAQjI,KAAKmnC,cAAe,SAAUj/B,EAAUgB,GACnDkJ,EAAG2gB,UAAUvhB,GAAGtI,EAAOhB,EAAU7H,KAInC+S,EAAMpT,KAAK+yB,UAAUhf,SACrB/T,KAAKonC,OAAOh0B,GAGZpT,KAAKioC,qBAQTvlC,EAAQ6O,UAAUq4B,SAAW,WAC3B,MAAO5pC,MAAK+yB,WAOdrwB,EAAQ6O,UAAU+jB,UAAY,SAASC,GACrC,GACIniB,GADAhB,EAAKpS,IAgBT,IAZIA,KAAKgzB,aACPryB,EAAKsH,QAAQjI,KAAKunC,eAAgB,SAAUr/B,EAAUgB,GACpDkJ,EAAG4gB,WAAWnhB,YAAY3I,EAAOhB,KAInCkL,EAAMpT,KAAKgzB,WAAWjf,SACtB/T,KAAKgzB,WAAa,KAClBhzB,KAAK0nC,gBAAgBt0B,IAIlBmiB,EAGA,CAAA,KAAIA,YAAkB10B,IAAW00B,YAAkBz0B,IAItD,KAAM,IAAIiF,WAAU,kDAHpB/F,MAAKgzB,WAAauC,MAHlBv1B,MAAKgzB,WAAa,IASpB,IAAIhzB,KAAKgzB,WAAY,CAEnB,GAAI3yB,GAAKL,KAAKK,EACdM,GAAKsH,QAAQjI,KAAKunC,eAAgB,SAAUr/B,EAAUgB,GACpDkJ,EAAG4gB,WAAWxhB,GAAGtI,EAAOhB,EAAU7H,KAIpC+S,EAAMpT,KAAKgzB,WAAWjf,SACtB/T,KAAKwnC,aAAap0B,GAIpBpT,KAAKioC,mBAGLjoC,KAAK6pC,SAEL7pC,KAAK8xB,KAAKE,QAAQnH,KAAK,WAOzBnoB,EAAQ6O,UAAUu4B,UAAY,WAC5B,MAAO9pC,MAAKgzB,YAOdtwB,EAAQ6O,UAAU00B,WAAa,SAAS5lC,GACtC,GAAIsS,GAAO3S,KAAK+yB,UAAU5f,IAAI9S,GAC1Bs1B,EAAU31B,KAAK+yB,UAAU/e,YAEzBrB,IAEF3S,KAAK0N,QAAQu5B,SAASt0B,EAAM,SAAUA,GAChCA,GAGFgjB,EAAQnhB,OAAOnU,MAWvBqC,EAAQ6O,UAAU81B,UAAY,SAASj0B,GACrC,GAAIhB,GAAKpS,IAEToT,GAAInL,QAAQ,SAAU5H,GACpB,GAAI0pC,GAAW33B,EAAG2gB,UAAU5f,IAAI9S,EAAI+R,EAAG80B,aACnCv0B,EAAOP,EAAGrQ,MAAM1B,GAChBiG,EAAOyjC,EAASzjC,MAAQ8L,EAAG1E,QAAQpH,OAASyjC,EAAS5kB,IAAM,QAAU,OAErEnf,EAActD,EAAQ4S,MAAMhP,EAchC,IAZIqM,IAEG3M,GAAiB2M,YAAgB3M,GAMpCoM,EAAGc,YAAYP,EAAMo3B,IAJrB33B,EAAG43B,YAAYr3B,GACfA,EAAO,QAONA,EAAM,CAET,IAAI3M,EAKC,KAEG,IAAID,WAFK,iBAARO,EAEa,4HAIA,sBAAwBA,EAAO,IAVnDqM,GAAO,GAAI3M,GAAY+jC,EAAU33B,EAAG0kB,WAAY1kB,EAAG1E,SACnDiF,EAAKtS,GAAKA,EACV+R,EAAGC,SAASM,MAalB3S,KAAK6pC,SACL7pC,KAAK6nC,YAAa,EAClB7nC,KAAK8xB,KAAKE,QAAQnH,KAAK,WAQzBnoB,EAAQ6O,UAAU61B,OAAS1kC,EAAQ6O,UAAU81B,UAO7C3kC,EAAQ6O,UAAU+1B,UAAY,SAASl0B,GACrC,GAAIgC,GAAQ,EACRhD,EAAKpS,IACToT,GAAInL,QAAQ,SAAU5H,GACpB,GAAIsS,GAAOP,EAAGrQ,MAAM1B,EAChBsS,KACFyC,IACAhD,EAAG43B,YAAYr3B,MAIfyC,IAEFpV,KAAK6pC,SACL7pC,KAAK6nC,YAAa,EAClB7nC,KAAK8xB,KAAKE,QAAQnH,KAAK,YAQ3BnoB,EAAQ6O,UAAUs4B,OAAS,WAGzBlpC,EAAKsH,QAAQjI,KAAKu1B,OAAQ,SAAUllB,GAClCA,EAAMqD,WASVhR,EAAQ6O,UAAUk2B,gBAAkB,SAASr0B,GAC3CpT,KAAKwnC,aAAap0B,IAQpB1Q,EAAQ6O,UAAUi2B,aAAe,SAASp0B,GACxC,GAAIhB,GAAKpS,IAEToT,GAAInL,QAAQ,SAAU5H,GACpB,GAAI4pC,GAAY73B,EAAG4gB,WAAW7f,IAAI9S,GAC9BgQ,EAAQ+B,EAAGmjB,OAAOl1B,EAEtB,IAAKgQ,EA6BHA,EAAM+F,QAAQ6zB,OA7BJ,CAEV,GAAI5pC,GAAM0nC,EACR,KAAM,IAAIxkC,OAAM,qBAAuBlD,EAAK,qBAG9C,IAAI6pC,GAAejkC,OAAOqH,OAAO8E,EAAG1E,QACpC/M,GAAKqE,OAAOklC,GACVr5B,OAAQ,OAGVR,EAAQ,GAAI5N,GAAMpC,EAAI4pC,EAAW73B,GACjCA,EAAGmjB,OAAOl1B,GAAMgQ,CAGhB,KAAK,GAAImD,KAAUpB,GAAGrQ,MACpB,GAAIqQ,EAAGrQ,MAAMyD,eAAegO,GAAS,CACnC,GAAIb,GAAOP,EAAGrQ,MAAMyR,EAChBb,GAAK5B,KAAKV,OAAShQ,GACrBgQ,EAAMiB,IAAIqB,GAKhBtC,EAAMqD,QACNrD,EAAMgxB,UAQVrhC,KAAK8xB,KAAKE,QAAQnH,KAAK,WAQzBnoB,EAAQ6O,UAAUm2B,gBAAkB,SAASt0B,GAC3C,GAAImiB,GAASv1B,KAAKu1B,MAClBniB,GAAInL,QAAQ,SAAU5H,GACpB,GAAIgQ,GAAQklB,EAAOl1B,EAEfgQ,KACFA,EAAM+wB,aACC7L,GAAOl1B,MAIlBL,KAAKwoC,YAELxoC,KAAK8xB,KAAKE,QAAQnH,KAAK,WAQzBnoB,EAAQ6O,UAAUs3B,aAAe,WAC/B,GAAI7oC,KAAKgzB,WAAY,CAEnB,GAAI2U,GAAW3nC,KAAKgzB,WAAWjf,QAC7BL,MAAO1T,KAAK0N,QAAQg5B,aAGlB7L,GAAWl6B,EAAKyF,WAAWuhC,EAAU3nC,KAAK2nC,SAC9C,IAAI9M,EAAS,CAEX,GAAItF,GAASv1B,KAAKu1B,MAClBoS,GAAS1/B,QAAQ,SAAU05B,GACzBpM,EAAOoM,GAASP,SAIlBuG,EAAS1/B,QAAQ,SAAU05B,GACzBpM,EAAOoM,GAASN,SAGlBrhC,KAAK2nC,SAAWA,EAGlB,MAAO9M,GAGP,OAAO,GASXn4B,EAAQ6O,UAAUc,SAAW,SAASM,GACpC3S,KAAK+B,MAAM4Q,EAAKtS,IAAMsS,CAGtB,IAAIgvB,GAAU3hC,KAAKgzB,WAAargB,EAAK5B,KAAKV,MAAQ03B,EAC9C13B,EAAQrQ,KAAKu1B,OAAOoM,EACpBtxB,IAAOA,EAAMiB,IAAIqB,IASvBjQ,EAAQ6O,UAAU2B,YAAc,SAASP,EAAMo3B,GAC7C,GAAII,GAAax3B,EAAK5B,KAAKV,KAQ3B,IANAsC,EAAK5B,KAAOg5B,EACRp3B,EAAK6yB,WACP7yB,EAAK2L,SAIH6rB,GAAcx3B,EAAK5B,KAAKV,MAAO,CACjC,GAAI+5B,GAAWpqC,KAAKu1B,OAAO4U,EACvBC,IAAUA,EAAS51B,OAAO7B,EAE9B,IAAIgvB,GAAU3hC,KAAKgzB,WAAargB,EAAK5B,KAAKV,MAAQ03B,EAC9C13B,EAAQrQ,KAAKu1B,OAAOoM,EACpBtxB,IAAOA,EAAMiB,IAAIqB,KAUzBjQ,EAAQ6O,UAAUy4B,YAAc,SAASr3B,GAEvCA,EAAKyuB,aAGEphC,MAAK+B,MAAM4Q,EAAKtS,GAGvB,IAAI0H,GAAQ/H,KAAK4nC,UAAUjgC,QAAQgL,EAAKtS,GAC3B,KAAT0H,GAAa/H,KAAK4nC,UAAU5/B,OAAOD,EAAO,EAG9C,IAAI45B,GAAU3hC,KAAKgzB,WAAargB,EAAK5B,KAAKV,MAAQ03B,EAC9C13B,EAAQrQ,KAAKu1B,OAAOoM,EACpBtxB,IAAOA,EAAMmE,OAAO7B,IAS1BjQ,EAAQ6O,UAAU20B,qBAAuB,SAAS99B,GAGhD,IAAK,GAFD+9B,MAEKjhC,EAAI,EAAGA,EAAIkD,EAAM/C,OAAQH,IAC5BkD,EAAMlD,YAAc/C,IACtBgkC,EAASv+B,KAAKQ,EAAMlD,GAGxB,OAAOihC,IAYTzjC,EAAQ6O,UAAUuiB,SAAW,SAAU5qB,GAErClJ,KAAK8nC,YAAYn1B,KAAOjQ,EAAQ2nC,eAAenhC,IAQjDxG,EAAQ6O,UAAUyiB,aAAe,SAAU9qB,GACzC,GAAKlJ,KAAK0N,QAAQk5B,SAASC,YAAe7mC,KAAK0N,QAAQk5B,SAAS1F,YAAhE,CAIA,GAEIx7B,GAFAiN,EAAO3S,KAAK8nC,YAAYn1B,MAAQ,KAChCP,EAAKpS,IAGT,IAAI2S,GAAQA,EAAK23B,SAAU,CACzB,GAAIC,GAAerhC,EAAMG,OAAOkhC,aAC5BC,EAAgBthC,EAAMG,OAAOmhC,aAE7BD,IACF7kC,GACEiN,KAAM43B,GAGJn4B,EAAG1E,QAAQk5B,SAASC,aACtBnhC,EAAMgJ,MAAQiE,EAAK5B,KAAKrC,MAAMlI,WAE5B4L,EAAG1E,QAAQk5B,SAAS1F,aAClB,SAAWvuB,GAAK5B,OAAMrL,EAAM2K,MAAQsC,EAAK5B,KAAKV,OAGpDrQ,KAAK8nC,YAAY2C,WAAa/kC,IAEvB8kC,GACP9kC,GACEiN,KAAM63B,GAGJp4B,EAAG1E,QAAQk5B,SAASC,aACtBnhC,EAAMyf,IAAMxS,EAAK5B,KAAKoU,IAAI3e,WAExB4L,EAAG1E,QAAQk5B,SAAS1F,aAClB,SAAWvuB,GAAK5B,OAAMrL,EAAM2K,MAAQsC,EAAK5B,KAAKV,OAGpDrQ,KAAK8nC,YAAY2C,WAAa/kC,IAG9B1F,KAAK8nC,YAAY2C,UAAYzqC,KAAKg2B,eAAe/hB,IAAI,SAAU5T,GAC7D,GAAIsS,GAAOP,EAAGrQ,MAAM1B,GAChBqF,GACFiN,KAAMA,EAWR,OARIP,GAAG1E,QAAQk5B,SAASC,aAClB,SAAWl0B,GAAK5B,OAAMrL,EAAMgJ,MAAQiE,EAAK5B,KAAKrC,MAAMlI,WACpD,OAASmM,GAAK5B,OAAQrL,EAAMyf,IAAMxS,EAAK5B,KAAKoU,IAAI3e,YAElD4L,EAAG1E,QAAQk5B,SAAS1F,aAClB,SAAWvuB,GAAK5B,OAAMrL,EAAM2K,MAAQsC,EAAK5B,KAAKV,OAG7C3K,IAIXwD,EAAMw2B,qBASVh9B,EAAQ6O,UAAU0iB,QAAU,SAAU/qB,GACpC,GAAIlJ,KAAK8nC,YAAY2C,UAAW,CAC9B,GAAI38B,GAAQ9N,KAAK8xB,KAAKhkB,MAClBokB,EAAOlyB,KAAK8xB,KAAKnxB,KAAKuxB,MAAQ,KAC9B+I,EAAS/xB,EAAMquB,QAAQ0D,OACvBnhB,EAAS9Z,KAAK0F,MAAMkL,OAAS9C,EAAMqX,IAAMrX,EAAMY,OAC/C+X,EAASwU,EAASnhB,CAGtB9Z,MAAK8nC,YAAY2C,UAAUxiC,QAAQ,SAAUvC,GAC3C,GAAI,SAAWA,GAAO,CACpB,GAAIgJ,GAAQ,GAAI1K,MAAK0B,EAAMgJ,MAAQ+X,EACnC/gB,GAAMiN,KAAK5B,KAAKrC,MAAQwjB,EAAOA,EAAKxjB,GAASA,EAG/C,GAAI,OAAShJ,GAAO,CAClB,GAAIyf,GAAM,GAAInhB,MAAK0B,EAAMyf,IAAMsB,EAC/B/gB,GAAMiN,KAAK5B,KAAKoU,IAAM+M,EAAOA,EAAK/M,GAAOA,EAG3C,GAAI,SAAWzf,GAAO,CAEpB,GAAI2K,GAAQ3N,EAAQgoC,gBAAgBxhC,EACpC,IAAImH,GAASA,EAAMsxB,SAAWj8B,EAAMiN,KAAK5B,KAAKV,MAAO,CACnD,GAAI+5B,GAAW1kC,EAAMiN,KAAKwsB,MAC1BiL,GAAS51B,OAAO9O,EAAMiN,MACtBy3B,EAAS12B,QACTrD,EAAMiB,IAAI5L,EAAMiN,MAChBtC,EAAMqD,QAENhO,EAAMiN,KAAK5B,KAAKV,MAAQA,EAAMsxB,YAOpC3hC,KAAK6nC,YAAa,EAClB7nC,KAAK8xB,KAAKE,QAAQnH,KAAK,UAEvB3hB,EAAMw2B,oBASVh9B,EAAQ6O,UAAU8oB,WAAa,SAAUnxB,GACvC,GAAIlJ,KAAK8nC,YAAY2C,UAAW,CAE9B,GAAIE,MACAv4B,EAAKpS,KACL21B,EAAU31B,KAAK+yB,UAAU/e,YAE7BhU,MAAK8nC,YAAY2C,UAAUxiC,QAAQ,SAAUvC,GAC3C,GAAIrF,GAAKqF,EAAMiN,KAAKtS,GAChB0pC,EAAW33B,EAAG2gB,UAAU5f,IAAI9S,EAAI+R,EAAG80B,aAEnCrM,GAAU,CACV,UAAWn1B,GAAMiN,KAAK5B,OACxB8pB,EAAWn1B,EAAMgJ,OAAShJ,EAAMiN,KAAK5B,KAAKrC,MAAMlI,UAChDujC,EAASr7B,MAAQ/N,EAAK0F,QAAQX,EAAMiN,KAAK5B,KAAKrC,MACtCinB,EAAQ3kB,SAAS1K,MAAQqvB,EAAQ3kB,SAAS1K,KAAKoI,OAAS,SAE9D,OAAShJ,GAAMiN,KAAK5B,OACtB8pB,EAAUA,GAAan1B,EAAMyf,KAAOzf,EAAMiN,KAAK5B,KAAKoU,IAAI3e,UACxDujC,EAAS5kB,IAAMxkB,EAAK0F,QAAQX,EAAMiN,KAAK5B,KAAKoU,IACpCwQ,EAAQ3kB,SAAS1K,MAAQqvB,EAAQ3kB,SAAS1K,KAAK6e,KAAO,SAE5D,SAAWzf,GAAMiN,KAAK5B,OACxB8pB,EAAUA,GAAan1B,EAAM2K,OAAS3K,EAAMiN,KAAK5B,KAAKV,MACtD05B,EAAS15B,MAAQ3K,EAAMiN,KAAK5B,KAAKV,OAI/BwqB,GACFzoB,EAAG1E,QAAQs5B,OAAO+C,EAAU,SAAUA,GAChCA,GAEFA,EAASpU,EAAQzkB,UAAY7Q,EAC7BsqC,EAAQ/iC,KAAKmiC,KAIT,SAAWrkC,KAAOA,EAAMiN,KAAK5B,KAAKrC,MAAQhJ,EAAMgJ,OAChD,OAAShJ,KAASA,EAAMiN,KAAK5B,KAAKoU,IAAQzf,EAAMyf,KAEpD/S,EAAGy1B,YAAa,EAChBz1B,EAAG0f,KAAKE,QAAQnH,KAAK,eAK7B7qB,KAAK8nC,YAAY2C,UAAY,KAGzBE,EAAQtlC,QACVswB,EAAQ5iB,OAAO43B,GAGjBzhC,EAAMw2B,oBASVh9B,EAAQ6O,UAAU22B,cAAgB,SAAUh/B,GAC1C,GAAKlJ,KAAK0N,QAAQi5B,WAAlB,CAEA,GAAIiE,GAAW1hC,EAAMquB,QAAQsT,UAAY3hC,EAAMquB,QAAQsT,SAASD,QAC5DE,EAAW5hC,EAAMquB,QAAQsT,UAAY3hC,EAAMquB,QAAQsT,SAASC,QAChE,IAAIF,GAAWE,EAEb,WADA9qC,MAAKmoC,mBAAmBj/B,EAI1B,IAAI6hC,GAAe/qC,KAAKg2B,eAEpBrjB,EAAOjQ,EAAQ2nC,eAAenhC,GAC9B0+B,EAAYj1B,GAAQA,EAAKtS,MAC7BL,MAAK+1B,aAAa6R,EAElB,IAAIoD,GAAehrC,KAAKg2B,gBAIpBgV,EAAa3lC,OAAS,GAAK0lC,EAAa1lC,OAAS,IACnDrF,KAAK8xB,KAAKE,QAAQnH,KAAK,UACrB9oB,MAAO/B,KAAKg2B,iBAIhB9sB,EAAMw2B,oBAQRh9B,EAAQ6O,UAAU62B,WAAa,SAAUl/B,GACvC,GAAKlJ,KAAK0N,QAAQi5B,YACb3mC,KAAK0N,QAAQk5B,SAASt1B,IAA3B,CAEA,GAAIc,GAAKpS,KACLkyB,EAAOlyB,KAAK8xB,KAAKnxB,KAAKuxB,MAAQ,KAC9Bvf,EAAOjQ,EAAQ2nC,eAAenhC,EAElC,IAAIyJ,EAAM,CAIR,GAAIo3B,GAAW33B,EAAG2gB,UAAU5f,IAAIR,EAAKtS,GACrCL,MAAK0N,QAAQq5B,SAASgD,EAAU,SAAUA,GACpCA,GACF33B,EAAG2gB,UAAUhgB,OAAOg3B,SAIrB,CAEH,GAAIkB,GAAOtqC,EAAKmG,gBAAgB9G,KAAKktB,IAAI/Q,OACrChM,EAAIjH,EAAMquB,QAAQtO,OAAOyR,MAAQuQ,EACjCv8B,EAAQ1O,KAAK8xB,KAAKnxB,KAAK4xB,OAAOpiB,GAC9B+6B,GACFx8B,MAAOwjB,EAAOA,EAAKxjB,GAASA,EAC5Bqe,QAAS,WAIX,IAA0B,UAAtB/sB,KAAK0N,QAAQpH,KAAkB,CACjC,GAAI6e,GAAMnlB,KAAK8xB,KAAKnxB,KAAK4xB,OAAOpiB,EAAInQ,KAAK0F,MAAMkL,MAAQ,EACvDs6B,GAAQ/lB,IAAM+M,EAAOA,EAAK/M,GAAOA,EAGnC+lB,EAAQlrC,KAAK+yB,UAAU5hB,SAAWxQ,EAAK+D,YAEvC,IAAI2L,GAAQ3N,EAAQgoC,gBAAgBxhC,EAChCmH,KACF66B,EAAQ76B,MAAQA,EAAMsxB,SAIxB3hC,KAAK0N,QAAQo5B,MAAMoE,EAAS,SAAUv4B,GAChCA,GACFP,EAAG2gB,UAAUzhB,IAAI45B,QAYzBxoC,EAAQ6O,UAAU42B,mBAAqB,SAAUj/B,GAC/C,GAAKlJ,KAAK0N,QAAQi5B,WAAlB,CAEA,GAAIiB,GACAj1B,EAAOjQ,EAAQ2nC,eAAenhC,EAElC,IAAIyJ,EAAM,CAERi1B,EAAY5nC,KAAKg2B,cACjB,IAAIjuB,GAAQ6/B,EAAUjgC,QAAQgL,EAAKtS,GACtB,KAAT0H,EAEF6/B,EAAUhgC,KAAK+K,EAAKtS,IAIpBunC,EAAU5/B,OAAOD,EAAO,GAE1B/H,KAAK+1B,aAAa6R,GAElB5nC,KAAK8xB,KAAKE,QAAQnH,KAAK,UACrB9oB,MAAO/B,KAAKg2B,iBAGd9sB,EAAMw2B,qBAUVh9B,EAAQ2nC,eAAiB,SAASnhC,GAEhC,IADA,GAAIG,GAASH,EAAMG,OACZA,GAAQ,CACb,GAAIA,EAAO7D,eAAe,iBACxB,MAAO6D,GAAO,gBAEhBA,GAASA,EAAOG,WAGlB,MAAO,OAST9G,EAAQgoC,gBAAkB,SAASxhC,GAEjC,IADA,GAAIG,GAASH,EAAMG,OACZA,GAAQ,CACb,GAAIA,EAAO7D,eAAe,kBACxB,MAAO6D,GAAO,iBAEhBA,GAASA,EAAOG,WAGlB,MAAO,OAST9G,EAAQyoC,kBAAoB,SAASjiC,GAEnC,IADA,GAAIG,GAASH,EAAMG,OACZA,GAAQ,CACb,GAAIA,EAAO7D,eAAe,oBACxB,MAAO6D,GAAO,mBAEhBA,GAASA,EAAOG,WAGlB,MAAO,OAGT3J,EAAOD,QAAU8C,GAKb,SAAS7C,EAAQD,EAASM,GAS9B,QAASyC,GAAOmvB,EAAMpkB,EAAS09B,GAC7BprC,KAAK8xB,KAAOA,EACZ9xB,KAAKwxB,gBACH7jB,SAAS,EACTmyB,OAAO,EACPuL,SAAU,GACVC,YAAa,EACbrkC,MACEue,SAAS,EACT/E,SAAU,YAEZyD,OACEsB,SAAS,EACT/E,SAAU,aAGdzgB,KAAKorC,KAAOA,EACZprC,KAAK0N,QAAU/M,EAAKqE,UAAUhF,KAAKwxB,gBAEnCxxB,KAAK8gC,eACL9gC,KAAKktB,OACLltB,KAAKu1B,UACLv1B,KAAK+gC,eAAiB,EACtB/gC,KAAK6xB,UAEL7xB,KAAK2Z,WAAWjM,GAhClB,GAAI/M,GAAOT,EAAoB,GAC3BU,EAAUV,EAAoB,GAC9BkC,EAAYlC,EAAoB,GAiCpCyC,GAAO4O,UAAY,GAAInP,GAGvBO,EAAO4O,UAAUyvB,SAAW,SAASzb,EAAO0b,GACrCjhC,KAAKu1B,OAAO/vB,eAAe+f,KAC9BvlB,KAAKu1B,OAAOhQ,GAAS0b,GAEvBjhC,KAAK+gC,gBAAkB,GAGzBp+B,EAAO4O,UAAU2vB,YAAc,SAAS3b,EAAO0b,GAC7CjhC,KAAKu1B,OAAOhQ,GAAS0b,GAGvBt+B,EAAO4O,UAAU4vB,YAAc,SAAS5b,GAClCvlB,KAAKu1B,OAAO/vB,eAAe+f,WACtBvlB,MAAKu1B,OAAOhQ,GACnBvlB,KAAK+gC,gBAAkB,IAI3Bp+B,EAAO4O,UAAUsgB,QAAU,WACzB7xB,KAAKktB,IAAI/Q,MAAQvM,SAASK,cAAc,OACxCjQ,KAAKktB,IAAI/Q,MAAM3U,UAAY,SAC3BxH,KAAKktB,IAAI/Q,MAAM3L,MAAMiQ,SAAW,WAChCzgB,KAAKktB,IAAI/Q,MAAM3L,MAAMnJ,IAAM,OAC3BrH,KAAKktB,IAAI/Q,MAAM3L,MAAM+wB,QAAU,QAE/BvhC,KAAKktB,IAAIqe,SAAW37B,SAASK,cAAc,OAC3CjQ,KAAKktB,IAAIqe,SAAS/jC,UAAY,aAC9BxH,KAAKktB,IAAIqe,SAAS/6B,MAAMiQ,SAAW,WACnCzgB,KAAKktB,IAAIqe,SAAS/6B,MAAMnJ,IAAM,MAE9BrH,KAAK2/B,IAAM/vB,SAASC,gBAAgB,6BAA6B,OACjE7P,KAAK2/B,IAAInvB,MAAMiQ,SAAW,WAC1BzgB,KAAK2/B,IAAInvB,MAAMnJ,IAAM,MACrBrH,KAAK2/B,IAAInvB,MAAMI,MAAQ5Q,KAAK0N,QAAQ29B,SAAW,EAAI,KAEnDrrC,KAAKktB,IAAI/Q,MAAMrM,YAAY9P,KAAK2/B,KAChC3/B,KAAKktB,IAAI/Q,MAAMrM,YAAY9P,KAAKktB,IAAIqe,WAMtC5oC,EAAO4O,UAAU6vB,KAAO,WAElBphC,KAAKktB,IAAI/Q,MAAM3S,YACjBxJ,KAAKktB,IAAI/Q,MAAM3S,WAAWgG,YAAYxP,KAAKktB,IAAI/Q,QAQnDxZ,EAAO4O,UAAU8vB,KAAO,WAEjBrhC,KAAKktB,IAAI/Q,MAAM3S,YAClBxJ,KAAK8xB,KAAK5E,IAAIjE,OAAOnZ,YAAY9P,KAAKktB,IAAI/Q,QAI9CxZ,EAAO4O,UAAUoI,WAAa,SAASjM,GACrC,GAAIP,IAAU,UAAU,cAAc,QAAQ,OAAO,QACrDxM,GAAKkF,oBAAoBsH,EAAQnN,KAAK0N,QAASA,IAGjD/K,EAAO4O,UAAU+M,OAAS,WACxB,GAAuC,GAAnCte,KAAK0N,QAAQ1N,KAAKorC,MAAM5lB,SAA2C,GAAvBxlB,KAAK+gC,gBAA+C,GAAxB/gC,KAAK0N,QAAQC,QACvF3N,KAAKohC,WAEF,CACHphC,KAAKqhC,OACmC,YAApCrhC,KAAK0N,QAAQ1N,KAAKorC,MAAM3qB,UAA8D,eAApCzgB,KAAK0N,QAAQ1N,KAAKorC,MAAM3qB,UAC5EzgB,KAAKktB,IAAI/Q,MAAM3L,MAAMvJ,KAAO,MAC5BjH,KAAKktB,IAAI/Q,MAAM3L,MAAM4U,UAAY,OACjCplB,KAAKktB,IAAIqe,SAAS/6B,MAAM4U,UAAY,OACpCplB,KAAKktB,IAAIqe,SAAS/6B,MAAMvJ,KAAQjH,KAAK0N,QAAQ29B,SAAW,GAAM,KAC9DrrC,KAAKktB,IAAIqe,SAAS/6B,MAAM0T,MAAQ,GAChClkB,KAAK2/B,IAAInvB,MAAMvJ,KAAO,MACtBjH,KAAK2/B,IAAInvB,MAAM0T,MAAQ,KAGvBlkB,KAAKktB,IAAI/Q,MAAM3L,MAAM0T,MAAQ,MAC7BlkB,KAAKktB,IAAI/Q,MAAM3L,MAAM4U,UAAY,QACjCplB,KAAKktB,IAAIqe,SAAS/6B,MAAM4U,UAAY,QACpCplB,KAAKktB,IAAIqe,SAAS/6B,MAAM0T,MAASlkB,KAAK0N,QAAQ29B,SAAW,GAAM,KAC/DrrC,KAAKktB,IAAIqe,SAAS/6B,MAAMvJ,KAAO,GAC/BjH,KAAK2/B,IAAInvB,MAAM0T,MAAQ,MACvBlkB,KAAK2/B,IAAInvB,MAAMvJ,KAAO,IAGgB,YAApCjH,KAAK0N,QAAQ1N,KAAKorC,MAAM3qB,UAA8D,aAApCzgB,KAAK0N,QAAQ1N,KAAKorC,MAAM3qB,UAC5EzgB,KAAKktB,IAAI/Q,MAAM3L,MAAMnJ,IAAM,EAAIzD,OAAO5D,KAAK8xB,KAAK5E,IAAIjE,OAAOzY,MAAMnJ,IAAIqE,QAAQ,KAAK,KAAO,KACzF1L,KAAKktB,IAAI/Q,MAAM3L,MAAM2P,OAAS,KAG9BngB,KAAKktB,IAAI/Q,MAAM3L,MAAM2P,OAAS,EAAIvc,OAAO5D,KAAK8xB,KAAK5E,IAAIjE,OAAOzY,MAAMnJ,IAAIqE,QAAQ,KAAK,KAAO,KAC5F1L,KAAKktB,IAAI/Q,MAAM3L,MAAMnJ,IAAM,IAGH,GAAtBrH,KAAK0N,QAAQoyB,OACf9/B,KAAKktB,IAAI/Q,MAAM3L,MAAMI,MAAQ5Q,KAAKktB,IAAIqe,SAAShe,YAAc,GAAK,KAClEvtB,KAAKktB,IAAIqe,SAAS/6B,MAAM0T,MAAQ,GAChClkB,KAAKktB,IAAIqe,SAAS/6B,MAAMvJ,KAAO,GAC/BjH,KAAK2/B,IAAInvB,MAAMI,MAAQ,QAGvB5Q,KAAKktB,IAAI/Q,MAAM3L,MAAMI,MAAQ5Q,KAAK0N,QAAQ29B,SAAW,GAAKrrC,KAAKktB,IAAIqe,SAAShe,YAAc,GAAK,KAC/FvtB,KAAKwrC,kBAGP,IAAIze,GAAU,EACd,KAAK,GAAI4U,KAAW3hC,MAAKu1B,OACnBv1B,KAAKu1B,OAAO/vB,eAAem8B,KAC7B5U,GAAW/sB,KAAKu1B,OAAOoM,GAAS5U,QAAU,SAG9C/sB,MAAKktB,IAAIqe,SAASzqB,UAAYiM,EAC9B/sB,KAAKktB,IAAIqe,SAAS/6B,MAAMkd,WAAe,IAAO1tB,KAAK0N,QAAQ29B,SAAYrrC,KAAK0N,QAAQ49B,YAAe,OAIvG3oC,EAAO4O,UAAUi6B,gBAAkB,WACjC,GAAIxrC,KAAKktB,IAAI/Q,MAAM3S,WAAY,CAC7B5I,EAAQsO,gBAAgBlP,KAAK8gC,YAC7B,IAAIjgB,GAAU3Z,OAAOukC,iBAAiBzrC,KAAKktB,IAAI/Q,OAAOuvB,WAClDhK,EAAa99B,OAAOid,EAAQnV,QAAQ,KAAK,KACzCyE,EAAIuxB,EACJvB,EAAYngC,KAAK0N,QAAQ29B,SACzB5J,EAAa,IAAOzhC,KAAK0N,QAAQ29B,SACjCj7B,EAAIsxB,EAAa,GAAMD,EAAa,CAExCzhC,MAAK2/B,IAAInvB,MAAMI,MAAQuvB,EAAY,EAAIuB,EAAa,IAEpD,KAAK,GAAIC,KAAW3hC,MAAKu1B,OACnBv1B,KAAKu1B,OAAO/vB,eAAem8B,KAC7B3hC,KAAKu1B,OAAOoM,GAASC,SAASzxB,EAAGC,EAAGpQ,KAAK8gC,YAAa9gC,KAAK2/B,IAAKQ,EAAWsB,GAC3ErxB,GAAKqxB,EAAazhC,KAAK0N,QAAQ49B,YAInC1qC,GAAQ2O,gBAAgBvP,KAAK8gC,eAIjCjhC,EAAOD,QAAU+C,GAKb,SAAS9C,EAAQD,EAASM,GAoB9B,QAAS0C,GAAUkvB,EAAMpkB,GACvB1N,KAAKK,GAAKM,EAAK+D,aACf1E,KAAK8xB,KAAOA,EAEZ9xB,KAAKwxB,gBACHma,iBAAkB,OAClBC,aAAc,UACdv3B,MAAM,EACNw3B,UAAU,EACVC,YAAa,QACbvH,QACE52B,SAAS,EACT+jB,YAAa,UAEflhB,MAAO,OACPu7B,UACEn7B,MAAO,GACP61B,MAAO,UAET1C,YACEp2B,SAAS,EACTq2B,gBAAiB,cACjBC,MAAO,IAET1zB,YACE5C,SAAS,EACT+C,KAAM,EACNF,MAAO,UAETw7B,UACEpM,iBAAiB,EACjBC,iBAAiB,EACjBC,OAAO,EACPlvB,MAAO,OACP4U,SAAS,GAEXymB,QACEt+B,SAAS,EACTmyB,OAAO,EACP74B,MACEue,SAAS,EACT/E,SAAU,YAEZyD,OACEsB,SAAS,EACT/E,SAAU,eAMhBzgB,KAAK0N,QAAU/M,EAAKqE,UAAWhF,KAAKwxB,gBACpCxxB,KAAKktB,OACLltB,KAAK0F,SACL1F,KAAKyD,OAAS,KACdzD,KAAKu1B,SAEL,IAAInjB,GAAKpS,IACTA,MAAK+yB,UAAY,KACjB/yB,KAAKgzB,WAAa,KAGlBhzB,KAAKmnC,eACH71B,IAAO,SAAUpI,EAAO6I,GACtBK,EAAGg1B,OAAOr1B,EAAOhQ,QAEnBgR,OAAU,SAAU7J,EAAO6I,GACzBK,EAAGi1B,UAAUt1B,EAAOhQ,QAEtByS,OAAU,SAAUtL,EAAO6I,GACzBK,EAAGk1B,UAAUv1B,EAAOhQ,SAKxB/B,KAAKunC,gBACHj2B,IAAO,SAAUpI,EAAO6I,GACtBK,EAAGo1B,aAAaz1B,EAAOhQ,QAEzBgR,OAAU,SAAU7J,EAAO6I,GACzBK,EAAGq1B,gBAAgB11B,EAAOhQ,QAE5ByS,OAAU,SAAUtL,EAAO6I,GACzBK,EAAGs1B,gBAAgB31B,EAAOhQ,SAI9B/B,KAAK+B,SACL/B,KAAK4nC,aACL5nC,KAAKksC,UAAYlsC,KAAK8xB,KAAKhkB,MAAMY,MACjC1O,KAAK8nC,eAEL9nC,KAAK8gC,eACL9gC,KAAK2Z,WAAWjM,GAChB1N,KAAK2jC,0BAA4B,GAEjC3jC,KAAK8xB,KAAKE,QAAQxgB,GAAG,cAAc,WAC/B,GAAoB,GAAhBY,EAAG85B,UAAgB,CACrB,GAAIzlB,GAASrU,EAAG0f,KAAKhkB,MAAMY,MAAQ0D,EAAG85B,UAClCp+B,EAAQsE,EAAG0f,KAAKhkB,MAAMqX,IAAM/S,EAAG0f,KAAKhkB,MAAMY,KAC9C,IAAgB,GAAZ0D,EAAGxB,MAAY,CACjB,GAAIu7B,GAAmB/5B,EAAGxB,MAAM9C,EAC5B4Y,EAAUD,EAAS0lB,CACvB/5B,GAAGutB,IAAInvB,MAAMvJ,MAASmL,EAAGxB,MAAQ8V,EAAW,SAIpD1mB,KAAK8xB,KAAKE,QAAQxgB,GAAG,eAAgB,WACnCY,EAAG85B,UAAY95B,EAAG0f,KAAKhkB,MAAMY,MAC7B0D,EAAGutB,IAAInvB,MAAMvJ,KAAOtG,EAAK8I,OAAOK,QAAQsI,EAAGxB,OAC3CwB,EAAGg6B,aAAaj2B,MAAM/D,KAIxBpS,KAAK6xB,UACL7xB,KAAK8xB,KAAKE,QAAQnH,KAAK,UArIzB,GAAIlqB,GAAOT,EAAoB,GAC3BU,EAAUV,EAAoB,GAC9BW,EAAUX,EAAoB,GAC9BY,EAAWZ,EAAoB,GAC/BkC,EAAYlC,EAAoB,IAChCqC,EAAWrC,EAAoB,IAC/BsC,EAAatC,EAAoB,IACjCyC,EAASzC,EAAoB,IAE7B6nC,EAAY,eA+HhBnlC,GAAU2O,UAAY,GAAInP,GAK1BQ,EAAU2O,UAAUsgB,QAAU,WAC5B,GAAI1V,GAAQvM,SAASK,cAAc,MACnCkM,GAAM3U,UAAY,YAClBxH,KAAKktB,IAAI/Q,MAAQA,EAGjBnc,KAAK2/B,IAAM/vB,SAASC,gBAAgB,6BAA6B,OACjE7P,KAAK2/B,IAAInvB,MAAMiQ,SAAW,WAC1BzgB,KAAK2/B,IAAInvB,MAAMK,QAAU,GAAK7Q,KAAK0N,QAAQo+B,aAAapgC,QAAQ,KAAK,IAAM,KAC3E1L,KAAK2/B,IAAInvB,MAAM+wB,QAAU,QACzBplB,EAAMrM,YAAY9P,KAAK2/B,KAGvB3/B,KAAK0N,QAAQs+B,SAASta,YAAc,OACpC1xB,KAAKqsC,UAAY,GAAI9pC,GAASvC,KAAK8xB,KAAM9xB,KAAK0N,QAAQs+B,SAAUhsC,KAAK2/B,KAErE3/B,KAAK0N,QAAQs+B,SAASta,YAAc,QACpC1xB,KAAKssC,WAAa,GAAI/pC,GAASvC,KAAK8xB,KAAM9xB,KAAK0N,QAAQs+B,SAAUhsC,KAAK2/B,WAC/D3/B,MAAK0N,QAAQs+B,SAASta,YAG7B1xB,KAAKusC,WAAa,GAAI5pC,GAAO3C,KAAK8xB,KAAM9xB,KAAK0N,QAAQu+B,OAAQ,QAC7DjsC,KAAKwsC,YAAc,GAAI7pC,GAAO3C,KAAK8xB,KAAM9xB,KAAK0N,QAAQu+B,OAAQ,SAE9DjsC,KAAKqhC,QAOPz+B,EAAU2O,UAAUoI,WAAa,SAASjM,GACxC,GAAIA,EAAS,CACX,GAAIP,IAAU,WAAW,eAAe,cAAc,mBAAmB,QAAQ,WAAW,WAAW,OACvGxM,GAAKkF,oBAAoBsH,EAAQnN,KAAK0N,QAASA,GAC/C/M,EAAK6M,aAAaxN,KAAK0N,QAASA,EAAQ,cACxC/M,EAAK6M,aAAaxN,KAAK0N,QAASA,EAAQ,cACxC/M,EAAK6M,aAAaxN,KAAK0N,QAASA,EAAQ,UACxC/M,EAAK6M,aAAaxN,KAAK0N,QAASA,EAAQ,UAEpCA,EAAQq2B,YACuB,gBAAtBr2B,GAAQq2B,YACbr2B,EAAQq2B,WAAWC,kBACqB,WAAtCt2B,EAAQq2B,WAAWC,gBACrBhkC,KAAK0N,QAAQq2B,WAAWE,MAAQ,EAEa,WAAtCv2B,EAAQq2B,WAAWC,gBAC1BhkC,KAAK0N,QAAQq2B,WAAWE,MAAQ,GAGhCjkC,KAAK0N,QAAQq2B,WAAWC,gBAAkB,cAC1ChkC,KAAK0N,QAAQq2B,WAAWE,MAAQ,KAMpCjkC,KAAKqsC,WACkBnmC,SAArBwH,EAAQs+B,WACVhsC,KAAKqsC,UAAU1yB,WAAW3Z,KAAK0N,QAAQs+B,UACvChsC,KAAKssC,WAAW3yB,WAAW3Z,KAAK0N,QAAQs+B,WAIxChsC,KAAKusC,YACgBrmC,SAAnBwH,EAAQu+B,SACVjsC,KAAKusC,WAAW5yB,WAAW3Z,KAAK0N,QAAQu+B,QACxCjsC,KAAKwsC,YAAY7yB,WAAW3Z,KAAK0N,QAAQu+B,SAIzCjsC,KAAKu1B,OAAO/vB,eAAeuiC,IAC7B/nC,KAAKu1B,OAAOwS,GAAWpuB,WAAWjM,GAGlC1N,KAAKktB,IAAI/Q,OACXnc,KAAKosC,gBAOTxpC,EAAU2O,UAAU6vB,KAAO,WAErBphC,KAAKktB,IAAI/Q,MAAM3S,YACjBxJ,KAAKktB,IAAI/Q,MAAM3S,WAAWgG,YAAYxP,KAAKktB,IAAI/Q,QAQnDvZ,EAAU2O,UAAU8vB,KAAO,WAEpBrhC,KAAKktB,IAAI/Q,MAAM3S,YAClBxJ,KAAK8xB,KAAK5E,IAAIjE,OAAOnZ,YAAY9P,KAAKktB,IAAI/Q,QAS9CvZ,EAAU2O,UAAU0hB,SAAW,SAASlxB,GACtC,GACEqR,GADEhB,EAAKpS,KAEP2pC,EAAe3pC,KAAK+yB,SAGtB,IAAKhxB,EAGA,CAAA,KAAIA,YAAiBlB,IAAWkB,YAAiBjB,IAIpD,KAAM,IAAIiF,WAAU,kDAHpB/F,MAAK+yB,UAAYhxB,MAHjB/B,MAAK+yB,UAAY,IAoBnB,IAXI4W,IAEFhpC,EAAKsH,QAAQjI,KAAKmnC,cAAe,SAAUj/B,EAAUgB,GACnDygC,EAAah4B,IAAIzI,EAAOhB,KAI1BkL,EAAMu2B,EAAa51B,SACnB/T,KAAKsnC,UAAUl0B,IAGbpT,KAAK+yB,UAAW,CAElB,GAAI1yB,GAAKL,KAAKK,EACdM,GAAKsH,QAAQjI,KAAKmnC,cAAe,SAAUj/B,EAAUgB,GACnDkJ,EAAG2gB,UAAUvhB,GAAGtI,EAAOhB,EAAU7H,KAInC+S,EAAMpT,KAAK+yB,UAAUhf,SACrB/T,KAAKonC,OAAOh0B,GAEdpT,KAAKioC,mBACLjoC,KAAKosC,eACLpsC,KAAKse,UAOP1b,EAAU2O,UAAU+jB,UAAY,SAASC,GACvC,GACEniB,GADEhB,EAAKpS,IAgBT,IAZIA,KAAKgzB,aACPryB,EAAKsH,QAAQjI,KAAKunC,eAAgB,SAAUr/B,EAAUgB,GACpDkJ,EAAG4gB,WAAWnhB,YAAY3I,EAAOhB,KAInCkL,EAAMpT,KAAKgzB,WAAWjf,SACtB/T,KAAKgzB,WAAa,KAClBhzB,KAAK0nC,gBAAgBt0B,IAIlBmiB,EAGA,CAAA,KAAIA,YAAkB10B,IAAW00B,YAAkBz0B,IAItD,KAAM,IAAIiF,WAAU,kDAHpB/F,MAAKgzB,WAAauC,MAHlBv1B,MAAKgzB,WAAa,IASpB,IAAIhzB,KAAKgzB,WAAY,CAEnB,GAAI3yB,GAAKL,KAAKK,EACdM,GAAKsH,QAAQjI,KAAKunC,eAAgB,SAAUr/B,EAAUgB,GACpDkJ,EAAG4gB,WAAWxhB,GAAGtI,EAAOhB,EAAU7H,KAIpC+S,EAAMpT,KAAKgzB,WAAWjf,SACtB/T,KAAKwnC,aAAap0B,GAEpBpT,KAAKqnC,aAKPzkC,EAAU2O,UAAU81B,UAAY,WAC9BrnC,KAAKioC,mBACLjoC,KAAKysC,sBACLzsC,KAAKosC,eACLpsC,KAAKse,UAEP1b,EAAU2O,UAAU61B,OAAkB,SAAUh0B,GAAMpT,KAAKqnC,UAAUj0B,IACrExQ,EAAU2O,UAAU+1B,UAAkB,SAAUl0B,GAAMpT,KAAKqnC,UAAUj0B,IACrExQ,EAAU2O,UAAUk2B,gBAAmB,SAAUE,GAC/C,IAAK,GAAIziC,GAAI,EAAGA,EAAIyiC,EAAStiC,OAAQH,IAAK,CACxC,GAAImL,GAAQrQ,KAAKgzB,WAAW7f,IAAIw0B,EAASziC,GACzClF,MAAK0sC,aAAar8B,EAAOs3B,EAASziC,IAGpClF,KAAKosC,eACLpsC,KAAKse,UAEP1b,EAAU2O,UAAUi2B,aAAe,SAAUG,GAAW3nC,KAAKynC,gBAAgBE,IAE7E/kC,EAAU2O,UAAUm2B,gBAAkB,SAAUC,GAC9C,IAAK,GAAIziC,GAAI,EAAGA,EAAIyiC,EAAStiC,OAAQH,IAC9BlF,KAAKu1B,OAAO/vB,eAAemiC,EAASziC,MACkB,SAArDlF,KAAKu1B,OAAOoS,EAASziC,IAAIwI,QAAQi+B,kBACnC3rC,KAAKssC,WAAWnL,YAAYwG,EAASziC,IACrClF,KAAKwsC,YAAYrL,YAAYwG,EAASziC,IACtClF,KAAKwsC,YAAYluB,WAGjBte,KAAKqsC,UAAUlL,YAAYwG,EAASziC,IACpClF,KAAKusC,WAAWpL,YAAYwG,EAASziC,IACrClF,KAAKusC,WAAWjuB,gBAEXte,MAAKu1B,OAAOoS,EAASziC,IAGhClF,MAAKioC,mBACLjoC,KAAKosC,eACLpsC,KAAKse,UAUP1b,EAAU2O,UAAUm7B,aAAe,SAAUr8B,EAAOsxB,GAC7C3hC,KAAKu1B,OAAO/vB,eAAem8B,IAY9B3hC,KAAKu1B,OAAOoM,GAAS5uB,OAAO1C,GACyB,SAAjDrQ,KAAKu1B,OAAOoM,GAASj0B,QAAQi+B,kBAC/B3rC,KAAKssC,WAAWpL,YAAYS,EAAS3hC,KAAKu1B,OAAOoM,IACjD3hC,KAAKwsC,YAAYtL,YAAYS,EAAS3hC,KAAKu1B,OAAOoM,MAGlD3hC,KAAKqsC,UAAUnL,YAAYS,EAAS3hC,KAAKu1B,OAAOoM,IAChD3hC,KAAKusC,WAAWrL,YAAYS,EAAS3hC,KAAKu1B,OAAOoM,OAlBnD3hC,KAAKu1B,OAAOoM,GAAW,GAAIn/B,GAAW6N,EAAOsxB,EAAS3hC,KAAK0N,QAAS1N,KAAK2jC,0BACpB,SAAjD3jC,KAAKu1B,OAAOoM,GAASj0B,QAAQi+B,kBAC/B3rC,KAAKssC,WAAWtL,SAASW,EAAS3hC,KAAKu1B,OAAOoM,IAC9C3hC,KAAKwsC,YAAYxL,SAASW,EAAS3hC,KAAKu1B,OAAOoM,MAG/C3hC,KAAKqsC,UAAUrL,SAASW,EAAS3hC,KAAKu1B,OAAOoM,IAC7C3hC,KAAKusC,WAAWvL,SAASW,EAAS3hC,KAAKu1B,OAAOoM,MAclD3hC,KAAKusC,WAAWjuB,SAChBte,KAAKwsC,YAAYluB,UAGnB1b,EAAU2O,UAAUk7B,oBAAsB,WACxC,GAAsB,MAAlBzsC,KAAK+yB,UAAmB,CAG1B,GAAI4Z,KACJ,KAAK,GAAIhL,KAAW3hC,MAAKu1B,OACnBv1B,KAAKu1B,OAAO/vB,eAAem8B,KAC7BgL,EAAchL,MAGlB,KAAK,GAAInuB,KAAUxT,MAAK+yB,UAAU9hB,MAChC,GAAIjR,KAAK+yB,UAAU9hB,MAAMzL,eAAegO,GAAS,CAC/C,GAAIb,GAAO3S,KAAK+yB,UAAU9hB,MAAMuC,EAChCb,GAAKxC,EAAIxP,EAAK0F,QAAQsM,EAAKxC,EAAE,QAC7Bw8B,EAAch6B,EAAKtC,OAAOzI,KAAK+K,GAGnC,IAAK,GAAIgvB,KAAW3hC,MAAKu1B,OACnBv1B,KAAKu1B,OAAO/vB,eAAem8B,IAC7B3hC,KAAKu1B,OAAOoM,GAAS1O,SAAS0Z,EAAchL,MAqBpD/+B,EAAU2O,UAAU02B,iBAAmB,WACrC,GAAsB,MAAlBjoC,KAAK+yB,UAAmB,CAE1B,GAAI1iB,IAAShQ,GAAI0nC,EAAWhb,QAAS/sB,KAAK0N,QAAQk+B,aAClD5rC,MAAK0sC,aAAar8B,EAAO03B,EACzB,IAAI6E,GAAmB,CACvB,IAAI5sC,KAAK+yB,UACP,IAAK,GAAIvf,KAAUxT,MAAK+yB,UAAU9hB,MAChC,GAAIjR,KAAK+yB,UAAU9hB,MAAMzL,eAAegO,GAAS,CAC/C,GAAIb,GAAO3S,KAAK+yB,UAAU9hB,MAAMuC,EACpBtN,SAARyM,IACEA,EAAKnN,eAAe,SACHU,SAAfyM,EAAKtC,QACPsC,EAAKtC,MAAQ03B,GAIfp1B,EAAKtC,MAAQ03B,EAEf6E,EAAmBj6B,EAAKtC,OAAS03B,EAAY6E,EAAmB,EAAIA,GAoBpD,GAApBA,UACK5sC,MAAKu1B,OAAOwS,GACnB/nC,KAAKusC,WAAWpL,YAAY4G,GAC5B/nC,KAAKwsC,YAAYrL,YAAY4G,GAC7B/nC,KAAKqsC,UAAUlL,YAAY4G,GAC3B/nC,KAAKssC,WAAWnL,YAAY4G,eAMvB/nC,MAAKu1B,OAAOwS,GACnB/nC,KAAKusC,WAAWpL,YAAY4G,GAC5B/nC,KAAKwsC,YAAYrL,YAAY4G,GAC7B/nC,KAAKqsC,UAAUlL,YAAY4G,GAC3B/nC,KAAKssC,WAAWnL,YAAY4G,EAG9B/nC,MAAKusC,WAAWjuB,SAChBte,KAAKwsC,YAAYluB,UAQnB1b,EAAU2O,UAAU+M,OAAS,WAC3B,GAAI6X,IAAU,CAEdn2B,MAAK2/B,IAAInvB,MAAMK,QAAU,GAAK7Q,KAAK0N,QAAQo+B,aAAapgC,QAAQ,KAAK,IAAM,MACpDxF,SAAnBlG,KAAKi3B,WAA2Bj3B,KAAK4Q,OAAS5Q,KAAKi3B,WAAaj3B,KAAK4Q,SACvEulB,GAAU,GAGZA,EAAUn2B,KAAK++B,cAAgB5I,CAE/B,IAAI2S,GAAkB9oC,KAAK8xB,KAAKhkB,MAAMqX,IAAMnlB,KAAK8xB,KAAKhkB,MAAMY,MACxDq6B,EAAUD,GAAmB9oC,KAAKgpC,qBAAyBhpC,KAAK4Q,OAAS5Q,KAAKi3B,SAoBlF,OAnBAj3B,MAAKgpC,oBAAsBF,EAC3B9oC,KAAKi3B,UAAYj3B,KAAK4Q,MAGtB5Q,KAAK4Q,MAAQ5Q,KAAKktB,IAAI/Q,MAAMoR,YAIb,GAAX4I,IACFn2B,KAAK2/B,IAAInvB,MAAMI,MAAQjQ,EAAK8I,OAAOK,OAAO,EAAE9J,KAAK4Q,OACjD5Q,KAAK2/B,IAAInvB,MAAMvJ,KAAOtG,EAAK8I,OAAOK,QAAQ9J,KAAK4Q,QAEnC,GAAVm4B,GACF/oC,KAAKosC,eAGPpsC,KAAKusC,WAAWjuB,SAChBte,KAAKwsC,YAAYluB,SAEV6X,GAOTvzB,EAAU2O,UAAU66B,aAAe,WAWjC,GATAxrC,EAAQsO,gBAAgBlP,KAAK8gC,aASX,GAAd9gC,KAAK4Q,OAAgC,MAAlB5Q,KAAK+yB,UAAmB,CAC7C,GAAI1iB,GAAO45B,EAAW4C,EAAmB3nC,EACrC4nC,KACAC,KACAC,KACAnL,GAAe,EAGf8F,IACJ,KAAK,GAAIhG,KAAW3hC,MAAKu1B,OACnBv1B,KAAKu1B,OAAO/vB,eAAem8B,IAC7BgG,EAAS//B,KAAK+5B,EAKlB,IAAIsL,GAAUjtC,KAAK8xB,KAAKnxB,KAAK8xB,cAAezyB,KAAK8xB,KAAKC,SAASryB,KAAKkR,OAChEs8B,EAAUltC,KAAK8xB,KAAKnxB,KAAK8xB,aAAa,EAAIzyB,KAAK8xB,KAAKC,SAASryB,KAAKkR,MAOtE,IAAI+2B,EAAStiC,OAAS,EAAG,CACvB,IAAKH,EAAI,EAAGA,EAAIyiC,EAAStiC,OAAQH,IAAK,CAIpC,GAHAmL,EAAQrQ,KAAKu1B,OAAOoS,EAASziC,IAC7B+kC,KAE0B,GAAtB55B,EAAM3C,QAAQ2G,KAGhB,IAAK,GAFD7F,GAAQ5J,KAAK6H,IAAI,EAAE9L,EAAKkO,oBAAoBwB,EAAM0iB,UAAWka,EAAS,IAAK,WAEtEtkB,EAAIna,EAAOma,EAAItY,EAAM0iB,UAAU1tB,OAAQsjB,IAAK,CACnD,GAAIhW,GAAOtC,EAAM0iB,UAAUpK,EAC3B,IAAaziB,SAATyM,EAAoB,CACtB,GAAIA,EAAKxC,EAAI+8B,EAAS,CACrBjD,EAAUriC,KAAK+K,EACf,OAGCs3B,EAAUriC,KAAK+K,QAMrB,KAAK,GAAIgW,GAAI,EAAGA,EAAItY,EAAM0iB,UAAU1tB,OAAQsjB,IAAK,CAC/C,GAAIhW,GAAOtC,EAAM0iB,UAAUpK,EACdziB,UAATyM,GACEA,EAAKxC,EAAI88B,GAAWt6B,EAAKxC,EAAI+8B,GAC/BjD,EAAUriC,KAAK+K,GAMvBk6B,EAAoB7sC,KAAKmtC,gBAAgBlD,EAAW55B,GACpD28B,EAAYplC,MAAMmD,IAAK8hC,EAAkB9hC,IAAK0B,IAAKogC,EAAkBpgC,MACrEqgC,EAAsBllC,KAAKilC,EAAkB97B,MAM/C,GADA8wB,EAAe7hC,KAAKotC,aAAazF,EAAUqF,GACvB,GAAhBnL,EAGF,MAFAjhC,GAAQ2O,gBAAgBvP,KAAK8gC,iBAC7B9gC,MAAK8xB,KAAKE,QAAQnH,KAAK,SAKzB,KAAK3lB,EAAI,EAAGA,EAAIyiC,EAAStiC,OAAQH,IAC/BmL,EAAQrQ,KAAKu1B,OAAOoS,EAASziC,IAC7B6nC,EAAmBnlC,KAAK5H,KAAKqtC,gBAAgBP,EAAsB5nC,GAAGmL,GAIxE,KAAKnL,EAAI,EAAGA,EAAIyiC,EAAStiC,OAAQH,IAC/BmL,EAAQrQ,KAAKu1B,OAAOoS,EAASziC,IACF,QAAvBmL,EAAM3C,QAAQ8C,MAChBxQ,KAAKstC,eAAeP,EAAmB7nC,GAAImL,GAG3CrQ,KAAKutC,cAAeR,EAAmB7nC,GAAImL,IAOnDzP,EAAQ2O,gBAAgBvP,KAAK8gC,cAQ/Bl+B,EAAU2O,UAAU67B,aAAe,SAAUzF,EAAUqF,GACrD,GAGoEQ,GAAQC,EAHxE5L,GAAe,EACf6L,GAAgB,EAChBC,GAAiB,EACjBC,EAAU,IAAKC,EAAW,IAAKC,EAAU,KAAMC,EAAW,KAC1Drc,EAAc,MAGlB,IAAIiW,EAAStiC,OAAS,EAAG,CACvB,IAAK,GAAIH,GAAI,EAAGA,EAAIyiC,EAAStiC,OAAQH,IAAK,CACxCwsB,EAAc,MACd,IAAIrhB,GAAQrQ,KAAKu1B,OAAOoS,EAASziC,GACK,UAAlCmL,EAAM3C,QAAQi+B,mBAChBja,EAAc,SAGhB8b,EAASR,EAAY9nC,GAAG6F,IACxB0iC,EAAST,EAAY9nC,GAAGuH,IAEL,QAAfilB,GACFgc,GAAgB,EAChBE,EAAUA,EAAUJ,EAASA,EAASI,EACtCE,EAAoBL,EAAVK,EAAmBL,EAASK,IAGtCH,GAAiB,EACjBE,EAAWA,EAAWL,EAASA,EAASK,EACxCE,EAAsBN,EAAXM,EAAoBN,EAASM,GAGvB,GAAjBL,GACF1tC,KAAKqsC,UAAUxb,SAAS+c,EAASE,GAEb,GAAlBH,GACF3tC,KAAKssC,WAAWzb,SAASgd,EAAUE,GA6BvC,MAzBAlM,GAAe7hC,KAAKguC,qBAAqBN,EAAgB1tC,KAAKqsC,YAAexK,EAC7EA,EAAe7hC,KAAKguC,qBAAqBL,EAAgB3tC,KAAKssC,aAAezK,EAEvD,GAAlB8L,GAA2C,GAAjBD,GAC5B1tC,KAAKqsC,UAAU4B,WAAY,EAC3BjuC,KAAKssC,WAAW2B,WAAY,IAG5BjuC,KAAKqsC,UAAU4B,WAAY,EAC3BjuC,KAAKssC,WAAW2B,WAAY,GAG9BjuC,KAAKssC,WAAWzL,QAAU6M,EAEI,GAA1B1tC,KAAKssC,WAAWzL,QACI,GAAlB8M,IACF3tC,KAAKqsC,UAAUzL,WAAa5gC,KAAKssC,WAAW17B,OAE9CixB,EAAe7hC,KAAKqsC,UAAU/tB,UAAYujB,EAC1C7hC,KAAKssC,WAAW3L,iBAAmB3gC,KAAKqsC,UAAU3L,WAClDmB,EAAe7hC,KAAKssC,WAAWhuB,UAAYujB,GAG3CA,EAAe7hC,KAAKssC,WAAWhuB,UAAYujB,EAEtCA,GAWTj/B,EAAU2O,UAAUy8B,qBAAuB,SAAUE,EAAUhS,GAC7D,GAAIrB,IAAU,CAad,OAZgB,IAAZqT,EACEhS,EAAKhP,IAAI/Q,MAAM3S,aACjB0yB,EAAKkF,OACLvG,GAAU,GAIPqB,EAAKhP,IAAI/Q,MAAM3S,aAClB0yB,EAAKmF,OACLxG,GAAU,GAGPA;EASTj4B,EAAU2O,UAAUg8B,cAAgB,SAAU5X,EAAStlB,GACrD,GAAe,MAAXslB,GACEA,EAAQtwB,OAAS,EAAG,CACtB,GAAI8oC,GACA1N,EAAW,GAAMpwB,EAAM3C,QAAQq+B,SAASn7B,MACxC6V,EAAS,EACT7V,EAAQP,EAAM3C,QAAQq+B,SAASn7B,KAEC,SAAhCP,EAAM3C,QAAQq+B,SAAStF,MAAwBhgB,GAAU,GAAI7V,EACxB,SAAhCP,EAAM3C,QAAQq+B,SAAStF,QAAmBhgB,GAAU,GAAI7V,EAEjE,KAAK,GAAI1L,GAAI,EAAGA,EAAIywB,EAAQtwB,OAAQH,IAE9BA,EAAE,EAAIywB,EAAQtwB,SAAS8oC,EAAevpC,KAAK+iB,IAAIgO,EAAQzwB,EAAE,GAAGiL,EAAIwlB,EAAQzwB,GAAGiL,IAC3EjL,EAAI,IAAmBipC,EAAevpC,KAAKmG,IAAIojC,EAAavpC,KAAK+iB,IAAIgO,EAAQzwB,EAAE,GAAGiL,EAAIwlB,EAAQzwB,GAAGiL,KAClFS,EAAfu9B,IAAuBv9B,EAAuB6vB,EAAf0N,EAA0B1N,EAAW0N,GAExEvtC,EAAQ+P,QAAQglB,EAAQzwB,GAAGiL,EAAIsW,EAAQkP,EAAQzwB,GAAGkL,EAAGQ,EAAOP,EAAMwzB,aAAelO,EAAQzwB,GAAGkL,EAAGC,EAAM7I,UAAY,OAAQxH,KAAK8gC,YAAa9gC,KAAK2/B,IAI1G,IAApCtvB,EAAM3C,QAAQ6C,WAAW5C,SAC3B3N,KAAKouC,YAAYzY,EAAStlB,EAAOrQ,KAAK8gC,YAAa9gC,KAAK2/B,IAAKlZ,KAarE7jB,EAAU2O,UAAU+7B,eAAiB,SAAU3X,EAAStlB,GACtD,GAAe,MAAXslB,GACEA,EAAQtwB,OAAS,EAAG,CACtB,GAAI8+B,GAAMt4B,EACNwiC,EAAYzqC,OAAO5D,KAAK2/B,IAAInvB,MAAMK,OAAOnF,QAAQ,KAAK,IAa1D,IAZAy4B,EAAOvjC,EAAQ6O,cAAc,OAAQzP,KAAK8gC,YAAa9gC,KAAK2/B,KAC5DwE,EAAK1zB,eAAe,KAAM,QAASJ,EAAM7I,WAIvCqE,EADsC,GAApCwE,EAAM3C,QAAQq2B,WAAWp2B,QACvB3N,KAAKsuC,YAAY3Y,EAAStlB,GAG1BrQ,KAAKuuC,QAAQ5Y,GAIiB,GAAhCtlB,EAAM3C,QAAQ62B,OAAO52B,QAAiB,CACxC,GACI6gC,GADApK,EAAWxjC,EAAQ6O,cAAc,OAAOzP,KAAK8gC,YAAa9gC,KAAK2/B,IAGjE6O,GADsC,OAApCn+B,EAAM3C,QAAQ62B,OAAO7S,YACf,IAAMiE,EAAQ,GAAGxlB,EAAI,MAAgBtE,EAAI,IAAM8pB,EAAQA,EAAQtwB,OAAS,GAAG8K,EAAI,KAG/E,IAAMwlB,EAAQ,GAAGxlB,EAAI,IAAMk+B,EAAY,IAAMxiC,EAAI,IAAM8pB,EAAQA,EAAQtwB,OAAS,GAAG8K,EAAI,IAAMk+B,EAEvGjK,EAAS3zB,eAAe,KAAM,QAASJ,EAAM7I,UAAY,SACzD48B,EAAS3zB,eAAe,KAAM,IAAK+9B,GAGrCrK,EAAK1zB,eAAe,KAAM,IAAK,IAAM5E,GAGG,GAApCwE,EAAM3C,QAAQ6C,WAAW5C,SAC3B3N,KAAKouC,YAAYzY,EAAStlB,EAAOrQ,KAAK8gC,YAAa9gC,KAAK2/B,OAchE/8B,EAAU2O,UAAU68B,YAAc,SAAUzY,EAAStlB,EAAOlB,EAAewwB,EAAKlZ,GAC/DvgB,SAAXugB,IAAuBA,EAAS,EACpC,KAAK,GAAIvhB,GAAI,EAAGA,EAAIywB,EAAQtwB,OAAQH,IAClCtE,EAAQsP,UAAUylB,EAAQzwB,GAAGiL,EAAIsW,EAAQkP,EAAQzwB,GAAGkL,EAAGC,EAAOlB,EAAewwB,IAejF/8B,EAAU2O,UAAU47B,gBAAkB,SAAUsB,EAAYp+B,GAC1D,GACIq+B,GAAQC,EADRC,KAEAzc,EAAWnyB,KAAK8xB,KAAKnxB,KAAKwxB,SAE1B0c,EAAY,EACZC,EAAiBL,EAAWppC,OAE5BwT,EAAO41B,EAAW,GAAGr+B,EACrB2I,EAAO01B,EAAW,GAAGr+B,CAIzB,IAA8B,GAA1BC,EAAM3C,QAAQm+B,SAAkB,CAClC,GAAIkD,GAAY/uC,KAAK8xB,KAAKnxB,KAAK0xB,eAAeoc,EAAWA,EAAWppC,OAAO,GAAG8K,GAAKnQ,KAAK8xB,KAAKnxB,KAAK0xB,eAAeoc,EAAW,GAAGt+B,GAC3H6+B,EAAiBF,EAAeC,CACpCF,GAAYjqC,KAAKmG,IAAInG,KAAKqqC,KAAK,GAAMH,GAAiBlqC,KAAK6H,IAAI,EAAE7H,KAAK+lB,MAAMqkB,KAG9E,IAAK,GAAI9pC,GAAI,EAAO4pC,EAAJ5pC,EAAoBA,GAAK2pC,EACvCH,EAASvc,EAASsc,EAAWvpC,GAAGiL,GAAKnQ,KAAK4Q,MAAQ,EAClD+9B,EAASF,EAAWvpC,GAAGkL,EACvBw+B,EAAchnC,MAAMuI,EAAGu+B,EAAQt+B,EAAGu+B,IAClC91B,EAAOA,EAAO81B,EAASA,EAAS91B,EAChCE,EAAc41B,EAAP51B,EAAgB41B,EAAS51B,CAIlC,QAAQhO,IAAK8N,EAAMpM,IAAKsM,EAAMhI,KAAM69B,IAYtChsC,EAAU2O,UAAU87B,gBAAkB,SAAUoB,EAAYp+B,GAC1D,GACIq+B,GAAQC,EADRC,KAEA1S,EAAOl8B,KAAKqsC,UACZgC,EAAYzqC,OAAO5D,KAAK2/B,IAAInvB,MAAMK,OAAOnF,QAAQ,KAAK,IAEpB,UAAlC2E,EAAM3C,QAAQi+B,mBAChBzP,EAAOl8B,KAAKssC,WAGd,KAAK,GAAIpnC,GAAI,EAAGA,EAAIupC,EAAWppC,OAAQH,IACrCwpC,EAASD,EAAWvpC,GAAGiL,EACvBw+B,EAAS/pC,KAAK+lB,MAAMuR,EAAKiH,aAAasL,EAAWvpC,GAAGkL,IACpDw+B,EAAchnC,MAAMuI,EAAGu+B,EAAQt+B,EAAGu+B,GAMpC,OAHAt+B,GAAMyzB,gBAAgBl/B,KAAKmG,IAAIsjC,EAAWnS,EAAKiH,aAAa,KAGrDyL,GAWThsC,EAAU2O,UAAU29B,mBAAqB,SAASn+B,GAMhD,IAAK,GAJDo+B,GAAIC,EAAIC,EAAIC,EAAIC,EAAKC,EACrB3jC,EAAIjH,KAAK+lB,MAAM5Z,EAAK,GAAGZ,GAAK,IAAMvL,KAAK+lB,MAAM5Z,EAAK,GAAGX,GAAK,IAC1Dq/B,EAAgB,EAAE,EAClBpqC,EAAS0L,EAAK1L,OACTH,EAAI,EAAOG,EAAS,EAAbH,EAAgBA,IAE9BiqC,EAAW,GAALjqC,EAAU6L,EAAK,GAAKA,EAAK7L,EAAE,GACjCkqC,EAAKr+B,EAAK7L,GACVmqC,EAAKt+B,EAAK7L,EAAE,GACZoqC,EAAcjqC,EAARH,EAAI,EAAc6L,EAAK7L,EAAE,GAAKmqC,EAUpCE,GAAQp/B,IAAMg/B,EAAGh/B,EAAI,EAAEi/B,EAAGj/B,EAAIk/B,EAAGl/B,GAAIs/B,EAAgBr/B,IAAM++B,EAAG/+B,EAAI,EAAEg/B,EAAGh/B,EAAIi/B,EAAGj/B,GAAIq/B,GAClFD,GAAQr/B,GAAMi/B,EAAGj/B,EAAI,EAAEk/B,EAAGl/B,EAAIm/B,EAAGn/B,GAAIs/B,EAAgBr/B,GAAMg/B,EAAGh/B,EAAI,EAAEi/B,EAAGj/B,EAAIk/B,EAAGl/B,GAAIq/B,GAGlF5jC,GAAK,IACH0jC,EAAIp/B,EAAI,IACRo/B,EAAIn/B,EAAI,IACRo/B,EAAIr/B,EAAI,IACRq/B,EAAIp/B,EAAI,IACRi/B,EAAGl/B,EAAI,IACPk/B,EAAGj/B,EAAI,GAGX,OAAOvE,IAaTjJ,EAAU2O,UAAU+8B,YAAc,SAASv9B,EAAMV,GAC/C,GAAI4zB,GAAQ5zB,EAAM3C,QAAQq2B,WAAWE,KACrC,IAAa,GAATA,GAAwB/9B,SAAV+9B,EAChB,MAAOjkC,MAAKkvC,mBAAmBn+B,EAO/B,KAAK,GAJDo+B,GAAIC,EAAIC,EAAIC,EAAIC,EAAKC,EAAKE,EAAGC,EAAGC,EAAIC,EAAGtoB,EAAGuoB,EAAGC,EAC7CC,EAAQC,EAAQC,EAASC,EAASC,EAASC,EAC3CxkC,EAAIjH,KAAK+lB,MAAM5Z,EAAK,GAAGZ,GAAK,IAAMvL,KAAK+lB,MAAM5Z,EAAK,GAAGX,GAAK,IAC1D/K,EAAS0L,EAAK1L,OACTH,EAAI,EAAOG,EAAS,EAAbH,EAAgBA,IAE9BiqC,EAAW,GAALjqC,EAAU6L,EAAK,GAAKA,EAAK7L,EAAE,GACjCkqC,EAAKr+B,EAAK7L,GACVmqC,EAAKt+B,EAAK7L,EAAE,GACZoqC,EAAcjqC,EAARH,EAAI,EAAc6L,EAAK7L,EAAE,GAAKmqC,EAEpCK,EAAK9qC,KAAKkoB,KAAKloB,KAAKusB,IAAIge,EAAGh/B,EAAIi/B,EAAGj/B,EAAE,GAAKvL,KAAKusB,IAAIge,EAAG/+B,EAAIg/B,EAAGh/B,EAAE,IAC9Du/B,EAAK/qC,KAAKkoB,KAAKloB,KAAKusB,IAAIie,EAAGj/B,EAAIk/B,EAAGl/B,EAAE,GAAKvL,KAAKusB,IAAIie,EAAGh/B,EAAIi/B,EAAGj/B,EAAE,IAC9Dw/B,EAAKhrC,KAAKkoB,KAAKloB,KAAKusB,IAAIke,EAAGl/B,EAAIm/B,EAAGn/B,EAAE,GAAKvL,KAAKusB,IAAIke,EAAGj/B,EAAIk/B,EAAGl/B,EAAE,IAiB9D4/B,EAAUprC,KAAKusB,IAAIye,EAAK3L,GACxBiM,EAAUtrC,KAAKusB,IAAIye,EAAG,EAAE3L,GACxBgM,EAAUrrC,KAAKusB,IAAIwe,EAAK1L,GACxBkM,EAAUvrC,KAAKusB,IAAIwe,EAAG,EAAE1L,GACxBoM,EAAUzrC,KAAKusB,IAAIue,EAAKzL,GACxBmM,EAAUxrC,KAAKusB,IAAIue,EAAG,EAAEzL,GAExB4L,EAAI,EAAEO,EAAU,EAAEC,EAASJ,EAASE,EACpC5oB,EAAI,EAAE2oB,EAAU,EAAEF,EAASC,EAASE,EACpCL,EAAI,EAAEO,GAAUA,EAASJ,GACrBH,EAAI,IAAIA,EAAI,EAAIA,GACpBC,EAAI,EAAEC,GAAUA,EAASC,GACrBF,EAAI,IAAIA,EAAI,EAAIA,GAEpBR,GAAQp/B,IAAMggC,EAAUhB,EAAGh/B,EAAI0/B,EAAET,EAAGj/B,EAAIigC,EAAUf,EAAGl/B,GAAK2/B,EACxD1/B,IAAM+/B,EAAUhB,EAAG/+B,EAAIy/B,EAAET,EAAGh/B,EAAIggC,EAAUf,EAAGj/B,GAAK0/B,GAEpDN,GAAQr/B,GAAM+/B,EAAUd,EAAGj/B,EAAIoX,EAAE8nB,EAAGl/B,EAAIggC,EAAUb,EAAGn/B,GAAK4/B,EACxD3/B,GAAM8/B,EAAUd,EAAGh/B,EAAImX,EAAE8nB,EAAGj/B,EAAI+/B,EAAUb,EAAGl/B,GAAK2/B,GAEvC,GAATR,EAAIp/B,GAAmB,GAATo/B,EAAIn/B,IAASm/B,EAAMH,GACxB,GAATI,EAAIr/B,GAAmB,GAATq/B,EAAIp/B,IAASo/B,EAAMH,GACrCxjC,GAAK,IACH0jC,EAAIp/B,EAAI,IACRo/B,EAAIn/B,EAAI,IACRo/B,EAAIr/B,EAAI,IACRq/B,EAAIp/B,EAAI,IACRi/B,EAAGl/B,EAAI,IACPk/B,EAAGj/B,EAAI,GAGX,OAAOvE,IAUXjJ,EAAU2O,UAAUg9B,QAAU,SAASx9B,GAGrC,IAAK,GADDlF,GAAI,GACC3G,EAAI,EAAGA,EAAI6L,EAAK1L,OAAQH,IAE7B2G,GADO,GAAL3G,EACG6L,EAAK7L,GAAGiL,EAAI,IAAMY,EAAK7L,GAAGkL,EAG1B,IAAMW,EAAK7L,GAAGiL,EAAI,IAAMY,EAAK7L,GAAGkL,CAGzC,OAAOvE,IAGThM,EAAOD,QAAUgD,GAKb,SAAS/C,EAAQD,EAASM,GAc9B,QAAS2C,GAAUivB,EAAMpkB,GACvB1N,KAAKktB,KACH6X,WAAY,KACZuL,cACAC,cACAC,cACAC,cACAphC,WACEihC,cACAC,cACAC,cACAC,gBAGJzwC,KAAK0F,OACHoI,OACEY,MAAO,EACPyW,IAAK,EACL4S,YAAa,GAEf2Y,QAAS,GAGX1wC,KAAKwxB,gBACHE,YAAa,SAEbkO,iBAAiB,EACjBC,iBAAiB,GAEnB7/B,KAAK0N,QAAU/M,EAAKqE,UAAWhF,KAAKwxB,gBAEpCxxB,KAAK8xB,KAAOA,EAGZ9xB,KAAK6xB,UAEL7xB,KAAK2Z,WAAWjM,GAhDlB,GAAI/M,GAAOT,EAAoB,GAC3BkC,EAAYlC,EAAoB,IAChC2B,EAAW3B,EAAoB,GAiDnC2C,GAAS0O,UAAY,GAAInP,GAUzBS,EAAS0O,UAAUoI,WAAa,SAASjM,GACnCA,GAEF/M,EAAK8E,iBAAiB,cAAe,kBAAmB,mBAAoBzF,KAAK0N,QAASA,IAO9F7K,EAAS0O,UAAUsgB,QAAU,WAC3B7xB,KAAKktB,IAAI6X,WAAan1B,SAASK,cAAc,OAC7CjQ,KAAKktB,IAAI9hB,WAAawE,SAASK,cAAc,OAE7CjQ,KAAKktB,IAAI6X,WAAWv9B,UAAY,sBAChCxH,KAAKktB,IAAI9hB,WAAW5D,UAAY,uBAMlC3E,EAAS0O,UAAUmjB,QAAU,WAEvB10B,KAAKktB,IAAI6X,WAAWv7B,YACtBxJ,KAAKktB,IAAI6X,WAAWv7B,WAAWgG,YAAYxP,KAAKktB,IAAI6X,YAElD/kC,KAAKktB,IAAI9hB,WAAW5B,YACtBxJ,KAAKktB,IAAI9hB,WAAW5B,WAAWgG,YAAYxP,KAAKktB,IAAI9hB,YAGtDpL,KAAK8xB,KAAO,MAOdjvB,EAAS0O,UAAU+M,OAAS,WAC1B,GAAI5Q,GAAU1N,KAAK0N,QACfhI,EAAQ1F,KAAK0F,MACbq/B,EAAa/kC,KAAKktB,IAAI6X,WACtB35B,EAAapL,KAAKktB,IAAI9hB,WAGtB+zB,EAAiC,OAAvBzxB,EAAQgkB,YAAwB1xB,KAAK8xB,KAAK5E,IAAI7lB,IAAMrH,KAAK8xB,KAAK5E,IAAI/M,OAC5EwwB,EAAiB5L,EAAWv7B,aAAe21B,CAG/Cn/B,MAAK8hC,oBAGL,IACIlC,IADc5/B,KAAK0N,QAAQgkB,YACT1xB,KAAK0N,QAAQkyB,iBAC/BC,EAAkB7/B,KAAK0N,QAAQmyB,eAGnCn6B,GAAMq8B,iBAAmBnC,EAAkBl6B,EAAMs8B,gBAAkB,EACnEt8B,EAAMu8B,iBAAmBpC,EAAkBn6B,EAAMw8B,gBAAkB,EACnEx8B,EAAMmL,OAASnL,EAAMq8B,iBAAmBr8B,EAAMu8B,iBAC9Cv8B,EAAMkL,MAAQm0B,EAAWxX,YAEzB7nB,EAAM08B,gBAAkBpiC,KAAK8xB,KAAKC,SAASryB,KAAKmR,OAASnL,EAAMu8B,kBACnC,OAAvBv0B,EAAQgkB,YAAuB1xB,KAAK8xB,KAAKC,SAAS5R,OAAOtP,OAAS7Q,KAAK8xB,KAAKC,SAAS1qB,IAAIwJ,QAC9FnL,EAAMy8B,eAAiB,EACvBz8B,EAAM48B,gBAAkB58B,EAAM08B,gBAAkB18B,EAAMu8B,iBACtDv8B,EAAM28B,eAAiB,CAGvB,IAAIuO,GAAwB7L,EAAW8L,YACnCC,EAAwB1lC,EAAWylC,WAsBvC,OArBA9L,GAAWv7B,YAAcu7B,EAAWv7B,WAAWgG,YAAYu1B,GAC3D35B,EAAW5B,YAAc4B,EAAW5B,WAAWgG,YAAYpE,GAE3D25B,EAAWv0B,MAAMK,OAAS7Q,KAAK0F,MAAMmL,OAAS,KAE9C7Q,KAAK+wC,iBAGDH,EACFzR,EAAO6R,aAAajM,EAAY6L,GAGhCzR,EAAOrvB,YAAYi1B,GAEjB+L,EACF9wC,KAAK8xB,KAAK5E,IAAIiG,mBAAmB6d,aAAa5lC,EAAY0lC,GAG1D9wC,KAAK8xB,KAAK5E,IAAIiG,mBAAmBrjB,YAAY1E,GAGxCpL,KAAK++B,cAAgB4R,GAO9B9tC,EAAS0O,UAAUw/B,eAAiB,WAClC,GAAIrf,GAAc1xB,KAAK0N,QAAQgkB,YAG3BhjB,EAAQ/N,EAAK0F,QAAQrG,KAAK8xB,KAAKhkB,MAAMY,MAAO,UAC5CyW,EAAMxkB,EAAK0F,QAAQrG,KAAK8xB,KAAKhkB,MAAMqX,IAAK,UACxC4S,EAAc/3B,KAAK8xB,KAAKnxB,KAAK4xB,OAA2C,GAAnCvyB,KAAK0F,MAAMw9B,gBAAkB,KAAS18B,UACtExG,KAAK8xB,KAAKnxB,KAAK4xB,OAAO,GAAG/rB,UAC9Bwe,EAAO,GAAInjB,GAAS,GAAImC,MAAK0K,GAAQ,GAAI1K,MAAKmhB,GAAM4S,EACxD/3B,MAAKglB,KAAOA,CAKZ,IAAIkI,GAAMltB,KAAKktB,GACfA,GAAI7d,UAAUihC,WAAapjB,EAAIojB,WAC/BpjB,EAAI7d,UAAUkhC,WAAarjB,EAAIqjB,WAC/BrjB,EAAI7d,UAAUmhC,WAAatjB,EAAIsjB,WAC/BtjB,EAAI7d,UAAUohC,WAAavjB,EAAIujB,WAC/BvjB,EAAIojB,cACJpjB,EAAIqjB,cACJrjB,EAAIsjB,cACJtjB,EAAIujB,cAEJzrB,EAAKiU,OAGL,KAFA,GAAIgY,GAAmB/qC,OACnBuG,EAAM,EACHuY,EAAKuU,WAAmB,IAAN9sB,GAAY,CACnCA,GACA,IAAIykC,GAAMlsB,EAAKC,aACX9U,EAAInQ,KAAK8xB,KAAKnxB,KAAKwxB,SAAS+e,GAC5BzX,EAAUzU,EAAKyU,SAIfz5B,MAAK0N,QAAQkyB,iBACf5/B,KAAKmxC,kBAAkBhhC,EAAG6U,EAAK4Z,gBAAiBlN,GAG9C+H,GAAWz5B,KAAK0N,QAAQmyB,iBACtB1vB,EAAI,IACkBjK,QAApB+qC,IACFA,EAAmB9gC,GAErBnQ,KAAKoxC,kBAAkBjhC,EAAG6U,EAAK8Z,gBAAiBpN,IAElD1xB,KAAKqxC,kBAAkBlhC,EAAGuhB,IAG1B1xB,KAAKsxC,kBAAkBnhC,EAAGuhB,GAG5B1M,EAAKE,OAIP,GAAIllB,KAAK0N,QAAQmyB,gBAAiB,CAChC,GAAI0R,GAAWvxC,KAAK8xB,KAAKnxB,KAAK4xB,OAAO,GACjCif,EAAWxsB,EAAK8Z,cAAcyS,GAC9BE,EAAYD,EAASnsC,QAAUrF,KAAK0F,MAAMu9B,gBAAkB,IAAM,IAE9C/8B,QAApB+qC,GAA6CA,EAAZQ,IACnCzxC,KAAKoxC,kBAAkB,EAAGI,EAAU9f,GAKxC/wB,EAAKsH,QAAQjI,KAAKktB,IAAI7d,UAAW,SAAUqiC,GACzC,KAAOA,EAAIrsC,QAAQ,CACjB,GAAI0B,GAAO2qC,EAAIC,KACX5qC,IAAQA,EAAKyC,YACfzC,EAAKyC,WAAWgG,YAAYzI,OAapClE,EAAS0O,UAAU4/B,kBAAoB,SAAUhhC,EAAGkW,EAAMqL,GAExD,GAAInM,GAAQvlB,KAAKktB,IAAI7d,UAAUohC,WAAW9gC,OAE1C,KAAK4V,EAAO,CAEV,GAAIwH,GAAUnd,SAAS2zB,eAAe,GACtChe,GAAQ3V,SAASK,cAAc,OAC/BsV,EAAMzV,YAAYid,GAClBxH,EAAM/d,UAAY,aAClBxH,KAAKktB,IAAI6X,WAAWj1B,YAAYyV,GAElCvlB,KAAKktB,IAAIujB,WAAW7oC,KAAK2d,GAEzBA,EAAMqsB,WAAW,GAAGC,UAAYxrB,EAEhCd,EAAM/U,MAAMnJ,IAAsB,OAAfqqB,EAAyB1xB,KAAK0F,MAAMu8B,iBAAmB,KAAQ,IAClF1c,EAAM/U,MAAMvJ,KAAOkJ,EAAI,MAWzBtN,EAAS0O,UAAU6/B,kBAAoB,SAAUjhC,EAAGkW,EAAMqL,GAExD,GAAInM,GAAQvlB,KAAKktB,IAAI7d,UAAUkhC,WAAW5gC,OAE1C,KAAK4V,EAAO,CAEV,GAAIwH,GAAUnd,SAAS2zB,eAAeld,EACtCd,GAAQ3V,SAASK,cAAc,OAC/BsV,EAAM/d,UAAY,aAClB+d,EAAMzV,YAAYid,GAClB/sB,KAAKktB,IAAI6X,WAAWj1B,YAAYyV,GAElCvlB,KAAKktB,IAAIqjB,WAAW3oC,KAAK2d,GAEzBA,EAAMqsB,WAAW,GAAGC,UAAYxrB,EAGhCd,EAAM/U,MAAMnJ,IAAsB,OAAfqqB,EAAwB,IAAO1xB,KAAK0F,MAAMq8B,iBAAoB,KACjFxc,EAAM/U,MAAMvJ,KAAOkJ,EAAI,MASzBtN,EAAS0O,UAAU+/B,kBAAoB,SAAUnhC,EAAGuhB,GAElD,GAAI1E,GAAOhtB,KAAKktB,IAAI7d,UAAUmhC,WAAW7gC,OAEpCqd,KAEHA,EAAOpd,SAASK,cAAc,OAC9B+c,EAAKxlB,UAAY,sBACjBxH,KAAKktB,IAAI9hB,WAAW0E,YAAYkd,IAElChtB,KAAKktB,IAAIsjB,WAAW5oC,KAAKolB,EAEzB,IAAItnB,GAAQ1F,KAAK0F,KAEfsnB,GAAKxc,MAAMnJ,IADM,OAAfqqB,EACehsB,EAAMu8B,iBAAmB,KAGzBjiC,KAAK8xB,KAAKC,SAAS1qB,IAAIwJ,OAAS,KAEnDmc,EAAKxc,MAAMK,OAASnL,EAAM08B,gBAAkB,KAC5CpV,EAAKxc,MAAMvJ,KAAQkJ,EAAIzK,EAAMy8B,eAAiB,EAAK,MASrDt/B,EAAS0O,UAAU8/B,kBAAoB,SAAUlhC,EAAGuhB,GAElD,GAAI1E,GAAOhtB,KAAKktB,IAAI7d,UAAUihC,WAAW3gC,OAEpCqd,KAEHA,EAAOpd,SAASK,cAAc,OAC9B+c,EAAKxlB,UAAY,sBACjBxH,KAAKktB,IAAI9hB,WAAW0E,YAAYkd,IAElChtB,KAAKktB,IAAIojB,WAAW1oC,KAAKolB,EAEzB,IAAItnB,GAAQ1F,KAAK0F,KAEfsnB,GAAKxc,MAAMnJ,IADM,OAAfqqB,EACe,IAGA1xB,KAAK8xB,KAAKC,SAAS1qB,IAAIwJ,OAAS,KAEnDmc,EAAKxc,MAAMvJ,KAAQkJ,EAAIzK,EAAM28B,eAAiB,EAAK,KACnDrV,EAAKxc,MAAMK,OAASnL,EAAM48B,gBAAkB,MAQ9Cz/B,EAAS0O,UAAUuwB,mBAAqB,WAKjC9hC,KAAKktB,IAAIsW,mBACZxjC,KAAKktB,IAAIsW,iBAAmB5zB,SAASK,cAAc,OACnDjQ,KAAKktB,IAAIsW,iBAAiBh8B,UAAY,qBACtCxH,KAAKktB,IAAIsW,iBAAiBhzB,MAAMiQ,SAAW,WAE3CzgB,KAAKktB,IAAIsW,iBAAiB1zB,YAAYF,SAAS2zB,eAAe,MAC9DvjC,KAAKktB,IAAI6X,WAAWj1B,YAAY9P,KAAKktB,IAAIsW,mBAE3CxjC,KAAK0F,MAAMs8B,gBAAkBhiC,KAAKktB,IAAIsW,iBAAiB9hB,aACvD1hB,KAAK0F,MAAMw9B,eAAiBljC,KAAKktB,IAAIsW,iBAAiBnnB,YAGjDrc,KAAKktB,IAAIwW,mBACZ1jC,KAAKktB,IAAIwW,iBAAmB9zB,SAASK,cAAc,OACnDjQ,KAAKktB,IAAIwW,iBAAiBl8B,UAAY,qBACtCxH,KAAKktB,IAAIwW,iBAAiBlzB,MAAMiQ,SAAW,WAE3CzgB,KAAKktB,IAAIwW,iBAAiB5zB,YAAYF,SAAS2zB,eAAe,MAC9DvjC,KAAKktB,IAAI6X,WAAWj1B,YAAY9P,KAAKktB,IAAIwW,mBAE3C1jC,KAAK0F,MAAMw8B,gBAAkBliC,KAAKktB,IAAIwW,iBAAiBhiB,aACvD1hB,KAAK0F,MAAMu9B,eAAiBjjC,KAAKktB,IAAIwW,iBAAiBrnB,aASxDxZ,EAAS0O,UAAU2gB,KAAO,SAASwM,GACjC,MAAO1+B,MAAKglB,KAAKkN,KAAKwM,IAGxB7+B,EAAOD,QAAUiD,GAKb,SAAShD,EAAQD,EAASM,GAa9B,QAAS8B,GAAM+O,EAAM+lB,EAAYppB,GAC/B1N,KAAKK,GAAK,KACVL,KAAKm/B,OAAS,KACdn/B,KAAK+Q,KAAOA,EACZ/Q,KAAKktB,IAAM,KACXltB,KAAK82B,WAAaA,MAClB92B,KAAK0N,QAAUA,MAEf1N,KAAKsqC,UAAW,EAChBtqC,KAAKwlC,WAAY,EACjBxlC,KAAKulC,OAAQ,EAEbvlC,KAAKqH,IAAM,KACXrH,KAAKiH,KAAO,KACZjH,KAAK4Q,MAAQ,KACb5Q,KAAK6Q,OAAS,KA1BhB,GAAIqiB,GAAShzB,EAAoB,GAgCjC8B,GAAKuP,UAAUm3B,OAAS,WACtB1oC,KAAKsqC,UAAW,EACZtqC,KAAKwlC,WAAWxlC,KAAKse,UAM3Btc,EAAKuP,UAAUk3B,SAAW,WACxBzoC,KAAKsqC,UAAW,EACZtqC,KAAKwlC,WAAWxlC,KAAKse,UAO3Btc,EAAKuP,UAAUu0B,UAAY,SAAS3G,GAC9Bn/B,KAAKwlC,WACPxlC,KAAKohC,OACLphC,KAAKm/B,OAASA,EACVn/B,KAAKm/B,QACPn/B,KAAKqhC,QAIPrhC,KAAKm/B,OAASA,GASlBn9B,EAAKuP,UAAU9C,UAAY,WAEzB,OAAO,GAOTzM,EAAKuP,UAAU8vB,KAAO,WACpB,OAAO,GAOTr/B,EAAKuP,UAAU6vB,KAAO,WACpB,OAAO,GAMTp/B,EAAKuP,UAAU+M,OAAS,aAOxBtc,EAAKuP,UAAUi1B,YAAc,aAO7BxkC,EAAKuP,UAAUq0B,YAAc,aAS7B5jC,EAAKuP,UAAUugC,qBAAuB,SAAUC,GAC9C,GAAI/xC,KAAKsqC,UAAYtqC,KAAK0N,QAAQk5B,SAASpyB,SAAWxU,KAAKktB,IAAI8kB,aAAc,CAE3E,GAAI5/B,GAAKpS,KAELgyC,EAAepiC,SAASK,cAAc,MAC1C+hC,GAAaxqC,UAAY,SACzBwqC,EAAa5S,MAAQ,mBAErBlM,EAAO8e,GACL/oC,gBAAgB,IACfuI,GAAG,MAAO,SAAUtI,GACrBkJ,EAAG+sB,OAAO6G,kBAAkB5zB,GAC5BlJ,EAAMw2B,oBAGRqS,EAAOjiC,YAAYkiC,GACnBhyC,KAAKktB,IAAI8kB,aAAeA,OAEhBhyC,KAAKsqC,UAAYtqC,KAAKktB,IAAI8kB,eAE9BhyC,KAAKktB,IAAI8kB,aAAaxoC,YACxBxJ,KAAKktB,IAAI8kB,aAAaxoC,WAAWgG,YAAYxP,KAAKktB,IAAI8kB,cAExDhyC,KAAKktB,IAAI8kB,aAAe,OAI5BnyC,EAAOD,QAAUoC,GAKb,SAASnC,EAAQD,EAASM,GAc9B,QAAS+B,GAAS8O,EAAM+lB,EAAYppB,GAalC,GAZA1N,KAAK0F,OACHunB,KACErc,MAAO,EACPC,OAAQ,GAEVmc,MACEpc,MAAO,EACPC,OAAQ,IAKRE,GACgB7K,QAAd6K,EAAKrC,MACP,KAAM,IAAInL,OAAM,oCAAsCwN,EAI1D/O,GAAKzB,KAAKP,KAAM+Q,EAAM+lB,EAAYppB,GA/BpC,GAAI1L,GAAO9B,EAAoB,GAkC/B+B,GAAQsP,UAAY,GAAIvP,GAAM,KAAM,KAAM,MAO1CC,EAAQsP,UAAU9C,UAAY,SAASX,GAGrC,GAAIgiB,IAAYhiB,EAAMqX,IAAMrX,EAAMY,OAAS,CAC3C,OAAQ1O,MAAK+Q,KAAKrC,MAAQZ,EAAMY,MAAQohB,GAAc9vB,KAAK+Q,KAAKrC,MAAQZ,EAAMqX,IAAM2K,GAMtF7tB,EAAQsP,UAAU+M,OAAS,WACzB,GAAI4O,GAAMltB,KAAKktB,GA2Bf,IA1BKA,IAEHltB,KAAKktB,OACLA,EAAMltB,KAAKktB,IAGXA,EAAI8a,IAAMp4B,SAASK,cAAc,OAGjCid,EAAIH,QAAUnd,SAASK,cAAc,OACrCid,EAAIH,QAAQvlB,UAAY,UACxB0lB,EAAI8a,IAAIl4B,YAAYod,EAAIH,SAGxBG,EAAIF,KAAOpd,SAASK,cAAc,OAClCid,EAAIF,KAAKxlB,UAAY,OAGrB0lB,EAAID,IAAMrd,SAASK,cAAc,OACjCid,EAAID,IAAIzlB,UAAY,MAGpB0lB,EAAI8a,IAAI,iBAAmBhoC,OAIxBA,KAAKm/B,OACR,KAAM,IAAI57B,OAAM,yCAElB,KAAK2pB,EAAI8a,IAAIx+B,WAAY,CACvB,GAAIu7B,GAAa/kC,KAAKm/B,OAAOjS,IAAI6X,UACjC,KAAKA,EAAY,KAAM,IAAIxhC,OAAM,sEACjCwhC,GAAWj1B,YAAYod,EAAI8a,KAE7B,IAAK9a,EAAIF,KAAKxjB,WAAY,CACxB,GAAI4B,GAAapL,KAAKm/B,OAAOjS,IAAI9hB,UACjC,KAAKA,EAAY,KAAM,IAAI7H,OAAM,sEACjC6H,GAAW0E,YAAYod,EAAIF,MAE7B,IAAKE,EAAID,IAAIzjB,WAAY,CACvB,GAAI0yB,GAAOl8B,KAAKm/B,OAAOjS,IAAIgP,IAC3B,KAAK9wB,EAAY,KAAM,IAAI7H,OAAM,gEACjC24B,GAAKpsB,YAAYod,EAAID,KAKvB,GAHAjtB,KAAKwlC,WAAY,EAGbxlC,KAAK+Q,KAAKgc,SAAW/sB,KAAK+sB,QAAS,CAErC,GADA/sB,KAAK+sB,QAAU/sB,KAAK+Q,KAAKgc,QACrB/sB,KAAK+sB,kBAAmBkY,SAC1B/X,EAAIH,QAAQjM,UAAY,GACxBoM,EAAIH,QAAQjd,YAAY9P,KAAK+sB,aAE1B,CAAA,GAAyB7mB,QAArBlG,KAAK+Q,KAAKgc,QAIjB,KAAM,IAAIxpB,OAAM,sCAAwCvD,KAAK+Q,KAAK1Q,GAHlE6sB,GAAIH,QAAQjM,UAAY9gB,KAAK+sB,QAM/B/sB,KAAKulC,OAAQ,EAIXvlC,KAAK+Q,KAAKquB,OAASp/B,KAAKo/B,QAC1BlS,EAAI8a,IAAI5I,MAAQp/B,KAAK+Q,KAAKquB,MAC1Bp/B,KAAKo/B,MAAQp/B,KAAK+Q,KAAKquB,MAIzB,IAAI53B,IAAaxH,KAAK+Q,KAAKvJ,UAAW,IAAMxH,KAAK+Q,KAAKvJ,UAAY,KAC7DxH,KAAKsqC,SAAW,YAAc,GAC/BtqC,MAAKwH,WAAaA,IACpBxH,KAAKwH,UAAYA,EACjB0lB,EAAI8a,IAAIxgC,UAAY,WAAaA,EACjC0lB,EAAIF,KAAKxlB,UAAY,YAAcA,EACnC0lB,EAAID,IAAIzlB,UAAa,WAAaA,EAElCxH,KAAKulC,OAAQ,GAIXvlC,KAAKulC,QACPvlC,KAAK0F,MAAMunB,IAAIpc,OAASqc,EAAID,IAAIQ,aAChCztB,KAAK0F,MAAMunB,IAAIrc,MAAQsc,EAAID,IAAIM,YAC/BvtB,KAAK0F,MAAMsnB,KAAKpc,MAAQsc,EAAIF,KAAKO,YACjCvtB,KAAK4Q,MAAQsc,EAAI8a,IAAIza,YACrBvtB,KAAK6Q,OAASqc,EAAI8a,IAAIva,aAEtBztB,KAAKulC,OAAQ,GAGfvlC,KAAK8xC,qBAAqB5kB,EAAI8a,MAOhC/lC,EAAQsP,UAAU8vB,KAAO,WAClBrhC,KAAKwlC,WACRxlC,KAAKse,UAOTrc,EAAQsP,UAAU6vB,KAAO,WACvB,GAAIphC,KAAKwlC,UAAW,CAClB,GAAItY,GAAMltB,KAAKktB,GAEXA,GAAI8a,IAAIx+B,YAAc0jB,EAAI8a,IAAIx+B,WAAWgG,YAAY0d,EAAI8a,KACzD9a,EAAIF,KAAKxjB,YAAa0jB,EAAIF,KAAKxjB,WAAWgG,YAAY0d,EAAIF,MAC1DE,EAAID,IAAIzjB,YAAc0jB,EAAID,IAAIzjB,WAAWgG,YAAY0d,EAAID,KAE7DjtB,KAAKqH,IAAM,KACXrH,KAAKiH,KAAO,KAEZjH,KAAKwlC,WAAY,IAQrBvjC,EAAQsP,UAAUi1B,YAAc,WAC9B,GAAI93B,GAAQ1O,KAAK82B,WAAW3E,SAASnyB,KAAK+Q,KAAKrC,OAC3C+3B,EAAQzmC,KAAK0N,QAAQ+4B,MAErBuB,EAAMhoC,KAAKktB,IAAI8a,IACfhb,EAAOhtB,KAAKktB,IAAIF,KAChBC,EAAMjtB,KAAKktB,IAAID,GAIjBjtB,MAAKiH,KADM,SAATw/B,EACU/3B,EAAQ1O,KAAK4Q,MAET,QAAT61B,EACK/3B,EAIAA,EAAQ1O,KAAK4Q,MAAQ,EAInCo3B,EAAIx3B,MAAMvJ,KAAOjH,KAAKiH,KAAO,KAG7B+lB,EAAKxc,MAAMvJ,KAAQyH,EAAQ1O,KAAK0F,MAAMsnB,KAAKpc,MAAQ,EAAK,KAGxDqc,EAAIzc,MAAMvJ,KAAQyH,EAAQ1O,KAAK0F,MAAMunB,IAAIrc,MAAQ,EAAK,MAOxD3O,EAAQsP,UAAUq0B,YAAc,WAC9B,GAAIlU,GAAc1xB,KAAK0N,QAAQgkB,YAC3BsW,EAAMhoC,KAAKktB,IAAI8a,IACfhb,EAAOhtB,KAAKktB,IAAIF,KAChBC,EAAMjtB,KAAKktB,IAAID,GAEnB,IAAmB,OAAfyE,EACFsW,EAAIx3B,MAAMnJ,KAAWrH,KAAKqH,KAAO,GAAK,KAEtC2lB,EAAKxc,MAAMnJ,IAAS,IACpB2lB,EAAKxc,MAAMK,OAAU7Q,KAAKm/B,OAAO93B,IAAMrH,KAAKqH,IAAM,EAAK,KACvD2lB,EAAKxc,MAAM2P,OAAS,OAEjB,CACH,GAAI8xB,GAAgBjyC,KAAKm/B,OAAOrM,QAAQptB,MAAMmL,OAC1C6c,EAAaukB,EAAgBjyC,KAAKm/B,OAAO93B,IAAMrH,KAAKm/B,OAAOtuB,OAAS7Q,KAAKqH,GAE7E2gC,GAAIx3B,MAAMnJ,KAAWrH,KAAKm/B,OAAOtuB,OAAS7Q,KAAKqH,IAAMrH,KAAK6Q,QAAU,GAAK,KACzEmc,EAAKxc,MAAMnJ,IAAU4qC,EAAgBvkB,EAAc,KACnDV,EAAKxc,MAAM2P,OAAS,IAGtB8M,EAAIzc,MAAMnJ,KAAQrH,KAAK0F,MAAMunB,IAAIpc,OAAS,EAAK,MAGjDhR,EAAOD,QAAUqC,GAKb,SAASpC,EAAQD,EAASM,GAc9B,QAASgC,GAAW6O,EAAM+lB,EAAYppB,GAcpC,GAbA1N,KAAK0F,OACHunB,KACE5lB,IAAK,EACLuJ,MAAO,EACPC,OAAQ,GAEVkc,SACElc,OAAQ,EACRqhC,WAAY,IAKZnhC,GACgB7K,QAAd6K,EAAKrC,MACP,KAAM,IAAInL,OAAM,oCAAsCwN,EAI1D/O,GAAKzB,KAAKP,KAAM+Q,EAAM+lB,EAAYppB,GAhCpC,GAAI1L,GAAO9B,EAAoB,GAmC/BgC,GAAUqP,UAAY,GAAIvP,GAAM,KAAM,KAAM,MAO5CE,EAAUqP,UAAU9C,UAAY,SAASX,GAGvC,GAAIgiB,IAAYhiB,EAAMqX,IAAMrX,EAAMY,OAAS,CAC3C,OAAQ1O,MAAK+Q,KAAKrC,MAAQZ,EAAMY,MAAQohB,GAAc9vB,KAAK+Q,KAAKrC,MAAQZ,EAAMqX,IAAM2K,GAMtF5tB,EAAUqP,UAAU+M,OAAS,WAC3B,GAAI4O,GAAMltB,KAAKktB,GAwBf,IAvBKA,IAEHltB,KAAKktB,OACLA,EAAMltB,KAAKktB,IAGXA,EAAI5c,MAAQV,SAASK,cAAc,OAInCid,EAAIH,QAAUnd,SAASK,cAAc,OACrCid,EAAIH,QAAQvlB,UAAY,UACxB0lB,EAAI5c,MAAMR,YAAYod,EAAIH,SAG1BG,EAAID,IAAMrd,SAASK,cAAc,OACjCid,EAAI5c,MAAMR,YAAYod,EAAID,KAG1BC,EAAI5c,MAAM,iBAAmBtQ,OAI1BA,KAAKm/B,OACR,KAAM,IAAI57B,OAAM,yCAElB,KAAK2pB,EAAI5c,MAAM9G,WAAY,CACzB,GAAIu7B,GAAa/kC,KAAKm/B,OAAOjS,IAAI6X,UACjC,KAAKA,EACH,KAAM,IAAIxhC,OAAM,sEAElBwhC,GAAWj1B,YAAYod,EAAI5c,OAK7B,GAHAtQ,KAAKwlC,WAAY,EAGbxlC,KAAK+Q,KAAKgc,SAAW/sB,KAAK+sB,QAAS,CAErC,GADA/sB,KAAK+sB,QAAU/sB,KAAK+Q,KAAKgc,QACrB/sB,KAAK+sB,kBAAmBkY,SAC1B/X,EAAIH,QAAQjM,UAAY,GACxBoM,EAAIH,QAAQjd,YAAY9P,KAAK+sB,aAE1B,CAAA,GAAyB7mB,QAArBlG,KAAK+Q,KAAKgc,QAIjB,KAAM,IAAIxpB,OAAM,sCAAwCvD,KAAK+Q,KAAK1Q,GAHlE6sB,GAAIH,QAAQjM,UAAY9gB,KAAK+sB,QAM/B/sB,KAAKulC,OAAQ,EAIXvlC,KAAK+Q,KAAKquB,OAASp/B,KAAKo/B,QAC1BlS,EAAI5c,MAAM8uB,MAAQp/B,KAAK+Q,KAAKquB,MAC5Bp/B,KAAKo/B,MAAQp/B,KAAK+Q,KAAKquB,MAIzB,IAAI53B,IAAaxH,KAAK+Q,KAAKvJ,UAAW,IAAMxH,KAAK+Q,KAAKvJ,UAAY,KAC7DxH,KAAKsqC,SAAW,YAAc,GAC/BtqC,MAAKwH,WAAaA,IACpBxH,KAAKwH,UAAYA,EACjB0lB,EAAI5c,MAAM9I,UAAa,aAAeA,EACtC0lB,EAAID,IAAIzlB,UAAa,WAAaA,EAElCxH,KAAKulC,OAAQ,GAIXvlC,KAAKulC,QACPvlC,KAAK4Q,MAAQsc,EAAI5c,MAAMid,YACvBvtB,KAAK6Q,OAASqc,EAAI5c,MAAMmd,aACxBztB,KAAK0F,MAAMunB,IAAIrc,MAAQsc,EAAID,IAAIM,YAC/BvtB,KAAK0F,MAAMunB,IAAIpc,OAASqc,EAAID,IAAIQ,aAChCztB,KAAK0F,MAAMqnB,QAAQlc,OAASqc,EAAIH,QAAQU,aAGxCP,EAAIH,QAAQvc,MAAM0hC,WAAa,EAAIlyC,KAAK0F,MAAMunB,IAAIrc,MAAQ,KAG1Dsc,EAAID,IAAIzc,MAAMnJ,KAAQrH,KAAK6Q,OAAS7Q,KAAK0F,MAAMunB,IAAIpc,QAAU,EAAK,KAClEqc,EAAID,IAAIzc,MAAMvJ,KAAQjH,KAAK0F,MAAMunB,IAAIrc,MAAQ,EAAK,KAElD5Q,KAAKulC,OAAQ,GAGfvlC,KAAK8xC,qBAAqB5kB,EAAI5c,QAOhCpO,EAAUqP,UAAU8vB,KAAO,WACpBrhC,KAAKwlC,WACRxlC,KAAKse,UAOTpc,EAAUqP,UAAU6vB,KAAO,WACrBphC,KAAKwlC,YACHxlC,KAAKktB,IAAI5c,MAAM9G,YACjBxJ,KAAKktB,IAAI5c,MAAM9G,WAAWgG,YAAYxP,KAAKktB,IAAI5c,OAGjDtQ,KAAKqH,IAAM,KACXrH,KAAKiH,KAAO,KAEZjH,KAAKwlC,WAAY,IAQrBtjC,EAAUqP,UAAUi1B,YAAc,WAChC,GAAI93B,GAAQ1O,KAAK82B,WAAW3E,SAASnyB,KAAK+Q,KAAKrC,MAE/C1O,MAAKiH,KAAOyH,EAAQ1O,KAAK0F,MAAMunB,IAAIrc,MAGnC5Q,KAAKktB,IAAI5c,MAAME,MAAMvJ,KAAOjH,KAAKiH,KAAO,MAO1C/E,EAAUqP,UAAUq0B,YAAc,WAChC,GAAIlU,GAAc1xB,KAAK0N,QAAQgkB,YAC3BphB,EAAQtQ,KAAKktB,IAAI5c,KAGnBA,GAAME,MAAMnJ,IADK,OAAfqqB,EACgB1xB,KAAKqH,IAAM,KAGVrH,KAAKm/B,OAAOtuB,OAAS7Q,KAAKqH,IAAMrH,KAAK6Q,OAAU,MAItEhR,EAAOD,QAAUsC,GAKb,SAASrC,EAAQD,EAASM,GAe9B,QAASiC,GAAW4O,EAAM+lB,EAAYppB,GASpC,GARA1N,KAAK0F,OACHqnB,SACEnc,MAAO,IAGX5Q,KAAK0gB,UAAW,EAGZ3P,EAAM,CACR,GAAkB7K,QAAd6K,EAAKrC,MACP,KAAM,IAAInL,OAAM,oCAAsCwN,EAAK1Q,GAE7D,IAAgB6F,QAAZ6K,EAAKoU,IACP,KAAM,IAAI5hB,OAAM,kCAAoCwN,EAAK1Q,IAI7D2B,EAAKzB,KAAKP,KAAM+Q,EAAM+lB,EAAYppB,GA/BpC,GAAIwlB,GAAShzB,EAAoB,IAC7B8B,EAAO9B,EAAoB,GAiC/BiC,GAAUoP,UAAY,GAAIvP,GAAM,KAAM,KAAM,MAE5CG,EAAUoP,UAAU4gC,cAAgB,aAOpChwC,EAAUoP,UAAU9C,UAAY,SAASX,GAEvC,MAAQ9N,MAAK+Q,KAAKrC,MAAQZ,EAAMqX,KAASnlB,KAAK+Q,KAAKoU,IAAMrX,EAAMY,OAMjEvM,EAAUoP,UAAU+M,OAAS,WAC3B,GAAI4O,GAAMltB,KAAKktB,GAoBf,IAnBKA,IAEHltB,KAAKktB,OACLA,EAAMltB,KAAKktB,IAGXA,EAAI8a,IAAMp4B,SAASK,cAAc,OAIjCid,EAAIH,QAAUnd,SAASK,cAAc,OACrCid,EAAIH,QAAQvlB,UAAY,UACxB0lB,EAAI8a,IAAIl4B,YAAYod,EAAIH,SAGxBG,EAAI8a,IAAI,iBAAmBhoC,OAIxBA,KAAKm/B,OACR,KAAM,IAAI57B,OAAM,yCAElB,KAAK2pB,EAAI8a,IAAIx+B,WAAY,CACvB,GAAIu7B,GAAa/kC,KAAKm/B,OAAOjS,IAAI6X,UACjC,KAAKA,EACH,KAAM,IAAIxhC,OAAM,sEAElBwhC,GAAWj1B,YAAYod,EAAI8a,KAK7B,GAHAhoC,KAAKwlC,WAAY,EAGbxlC,KAAK+Q,KAAKgc,SAAW/sB,KAAK+sB,QAAS,CAErC,GADA/sB,KAAK+sB,QAAU/sB,KAAK+Q,KAAKgc,QACrB/sB,KAAK+sB,kBAAmBkY,SAC1B/X,EAAIH,QAAQjM,UAAY,GACxBoM,EAAIH,QAAQjd,YAAY9P,KAAK+sB,aAE1B,CAAA,GAAyB7mB,QAArBlG,KAAK+Q,KAAKgc,QAIjB,KAAM,IAAIxpB,OAAM,sCAAwCvD,KAAK+Q,KAAK1Q,GAHlE6sB,GAAIH,QAAQjM,UAAY9gB,KAAK+sB,QAM/B/sB,KAAKulC,OAAQ,EAIXvlC,KAAK+Q,KAAKquB,OAASp/B,KAAKo/B,QAC1BlS,EAAI8a,IAAI5I,MAAQp/B,KAAK+Q,KAAKquB,MAC1Bp/B,KAAKo/B,MAAQp/B,KAAK+Q,KAAKquB,MAIzB,IAAI53B,IAAaxH,KAAK+Q,KAAKvJ,UAAa,IAAMxH,KAAK+Q,KAAKvJ,UAAa,KAChExH,KAAKsqC,SAAW,YAAc,GAC/BtqC,MAAKwH,WAAaA,IACpBxH,KAAKwH,UAAYA,EACjB0lB,EAAI8a,IAAIxgC,UAAYxH,KAAKmyC,cAAgB3qC,EAEzCxH,KAAKulC,OAAQ,GAIXvlC,KAAKulC,QAEPvlC,KAAK0gB,SAA6D,WAAlDxZ,OAAOukC,iBAAiBve,EAAIH,SAASrM,SAErD1gB,KAAK0F,MAAMqnB,QAAQnc,MAAQ5Q,KAAKktB,IAAIH,QAAQQ,YAC5CvtB,KAAK6Q,OAAS7Q,KAAKktB,IAAI8a,IAAIva,aAE3BztB,KAAKulC,OAAQ,GAGfvlC,KAAK8xC,qBAAqB5kB,EAAI8a,KAC9BhoC,KAAKoyC,mBACLpyC,KAAKqyC,qBAOPlwC,EAAUoP,UAAU8vB,KAAO,WACpBrhC,KAAKwlC,WACRxlC,KAAKse,UAQTnc,EAAUoP,UAAU6vB,KAAO,WACzB,GAAIphC,KAAKwlC,UAAW,CAClB,GAAIwC,GAAMhoC,KAAKktB,IAAI8a,GAEfA,GAAIx+B,YACNw+B,EAAIx+B,WAAWgG,YAAYw4B,GAG7BhoC,KAAKqH,IAAM,KACXrH,KAAKiH,KAAO,KAEZjH,KAAKwlC,WAAY,IASrBrjC,EAAUoP,UAAUi1B,YAAc,WAChC,GAKI8L,GALA5sC,EAAQ1F,KAAK0F,MACb6sC,EAAcvyC,KAAKm/B,OAAOvuB,MAC1BlC,EAAQ1O,KAAK82B,WAAW3E,SAASnyB,KAAK+Q,KAAKrC,OAC3CyW,EAAMnlB,KAAK82B,WAAW3E,SAASnyB,KAAK+Q,KAAKoU,KACzCtE,EAAU7gB,KAAK0N,QAAQmT,SAId0xB,EAAT7jC,IACFA,GAAS6jC,GAEPptB,EAAM,EAAIotB,IACZptB,EAAM,EAAIotB,EAEZ,IAAIC,GAAW5tC,KAAK6H,IAAI0Y,EAAMzW,EAAO,EAEjC1O,MAAK0gB,UAEP4xB,EAAc1tC,KAAK6H,KAAKiC,EAAO,GAE/B1O,KAAKiH,KAAOyH,EACZ1O,KAAK4Q,MAAQ4hC,EAAWxyC,KAAK0F,MAAMqnB,QAAQnc,QAQzC0hC,EADU,EAAR5jC,EACY9J,KAAKmG,KAAK2D,EACnByW,EAAMzW,EAAQhJ,EAAMqnB,QAAQnc,MAAQ,EAAIiQ,GAI/B,EAGhB7gB,KAAKiH,KAAOyH,EACZ1O,KAAK4Q,MAAQ4hC,GAGfxyC,KAAKktB,IAAI8a,IAAIx3B,MAAMvJ,KAAOjH,KAAKiH,KAAO,KACtCjH,KAAKktB,IAAI8a,IAAIx3B,MAAMI,MAAQ4hC,EAAW,KACtCxyC,KAAKktB,IAAIH,QAAQvc,MAAMvJ,KAAOqrC,EAAc,MAO9CnwC,EAAUoP,UAAUq0B,YAAc,WAChC,GAAIlU,GAAc1xB,KAAK0N,QAAQgkB,YAC3BsW,EAAMhoC,KAAKktB,IAAI8a,GAGjBA,GAAIx3B,MAAMnJ,IADO,OAAfqqB,EACc1xB,KAAKqH,IAAM,KAGVrH,KAAKm/B,OAAOtuB,OAAS7Q,KAAKqH,IAAMrH,KAAK6Q,OAAU,MAQpE1O,EAAUoP,UAAU6gC,iBAAmB,WACrC,GAAIpyC,KAAKsqC,UAAYtqC,KAAK0N,QAAQk5B,SAASC,aAAe7mC,KAAKktB,IAAIulB,SAAU,CAE3E,GAAIA,GAAW7iC,SAASK,cAAc,MACtCwiC,GAASjrC,UAAY,YACrBirC,EAASlI,aAAevqC,KAGxBkzB,EAAOuf,GACLxpC,gBAAgB,IACfuI,GAAG,OAAQ,cAIdxR,KAAKktB,IAAI8a,IAAIl4B,YAAY2iC,GACzBzyC,KAAKktB,IAAIulB,SAAWA,OAEZzyC,KAAKsqC,UAAYtqC,KAAKktB,IAAIulB,WAE9BzyC,KAAKktB,IAAIulB,SAASjpC,YACpBxJ,KAAKktB,IAAIulB,SAASjpC,WAAWgG,YAAYxP,KAAKktB,IAAIulB,UAEpDzyC,KAAKktB,IAAIulB,SAAW,OAQxBtwC,EAAUoP,UAAU8gC,kBAAoB,WACtC,GAAIryC,KAAKsqC,UAAYtqC,KAAK0N,QAAQk5B,SAASC,aAAe7mC,KAAKktB,IAAIwlB,UAAW,CAE5E,GAAIA,GAAY9iC,SAASK,cAAc,MACvCyiC,GAAUlrC,UAAY,aACtBkrC,EAAUlI,cAAgBxqC,KAG1BkzB,EAAOwf,GACLzpC,gBAAgB,IACfuI,GAAG,OAAQ,cAIdxR,KAAKktB,IAAI8a,IAAIl4B,YAAY4iC,GACzB1yC,KAAKktB,IAAIwlB,UAAYA,OAEb1yC,KAAKsqC,UAAYtqC,KAAKktB,IAAIwlB,YAE9B1yC,KAAKktB,IAAIwlB,UAAUlpC,YACrBxJ,KAAKktB,IAAIwlB,UAAUlpC,WAAWgG,YAAYxP,KAAKktB,IAAIwlB,WAErD1yC,KAAKktB,IAAIwlB,UAAY,OAIzB7yC,EAAOD,QAAUuC,GAKb,SAAStC,EAAQD,EAASM,GA+B9B,QAAS4C,GAAS8T,EAAW7F,EAAMrD,GACjC,KAAM1N,eAAgB8C,IACpB,KAAM,IAAI+T,aAAY,mDAGxB7W,MAAK2yC,0BAGL3yC,KAAK8W,iBAAmBF,EACxB5W,KAAK4Q,MAAQ,OACb5Q,KAAK6Q,OAAS,OAGd7Q,KAAK4yC,kBAAoB,GACzB5yC,KAAK6yC,eAAiB,IAAO7yC,KAAK4yC,kBAClC5yC,KAAK8yC,WAAa,GAAM9yC,KAAK6yC,eAC7B7yC,KAAK+yC,yBAA2B,EAChC/yC,KAAKgzC,wBAA0B,GAE/BhzC,KAAKizC,WAAY,EACjBjzC,KAAK2mC,YAAa,EAClB3mC,KAAKkzC,cAAe,EAGpBlzC,KAAKmzC,kBAAoB7hC,IAAI,KAAK8hC,KAAK,KAAKC,SAAS,KAAKC,QAAQ,KAAKC,IAAI,MAI3EvzC,KAAKwzC,WACHC,OACEC,UAAW,GACXC,UAAW,GACXnrB,OAAQ,GACRorB,MAAO,UACPC,MAAO3tC,OACP6d,SAAU,GACVC,SAAU,GACV8vB,OAAO,EACPC,UAAW,QACXC,SAAU,GACVC,SAAU,UACVC,MAAO,GACP3pC,OACIc,OAAQ,UACRD,WAAY,UACdE,WACED,OAAQ,UACRD,WAAY,WAEdG,OACEF,OAAQ,UACRD,WAAY,YAGhBwR,YAAa,UACbJ,gBAAiB,UACjB23B,eAAgB,UAChB9jC,MAAOnK,OACP2W,YAAa,GAEfu3B,OACErwB,SAAU,EACVC,SAAU,GACVpT,MAAO,EACPyjC,yBAA0B,EAC1BC,WAAY,IACZ9jC,MAAO,OACPjG,OACEA,MAAM,UACNe,UAAU,UACVC,MAAO,WAETwoC,UAAW,UACXC,SAAU,GACVC,SAAU,QACVM,SAAU,QACVC,iBAAkB,EAClBC,MACEpvC,OAAQ,GACRqvC,IAAK,EACLC,UAAWzuC,QAEb0uC,aAAc,QAEhBC,kBAAiB,EACjBC,SACEC,WACEpnC,SAAS,EACTqnC,MAAO,EAAI,GACXC,sBAAuB,KACvBC,eAAgB,GAChBC,aAAc,GACdC,eAAgB,IAChBC,QAAS,KAEXC,WACEJ,eAAgB,EAChBC,aAAc,IACdC,eAAgB,IAChBG,aAAc,IACdF,QAAS,KAEXG,uBACE7nC,SAAS,EACTunC,eAAgB,EAChBC,aAAc,IACdC,eAAgB,IAChBG,aAAc,IACdF,QAAS,KAEXA,QAAS,KACTH,eAAgB,KAChBC,aAAc,KACdC,eAAgB,MAElBK,YACE9nC,SAAS,EACT+nC,gBAAiB,IACjBC,iBAAiB,IACjBC,cAAc,IACdC,eAAgB,GAChBC,qBAAsB,GACtBC,gBAAiB,IACjBC,oBAAqB,GACrBC,mBAAoB,EACpBC,YAAa,IACbC,mBAAoB,GACpBC,sBAAuB,GACvBC,WAAY,GACZC,aAAc1lC,MAAQ,EACRC,OAAQ,EACR2X,OAAQ,GACtB+tB,sBAAuB,IACvBC,kBAAmB,GACnBC,uBAAwB,GAE1BC,YACE/oC,SAAS,GAEXgpC,UACEhpC,SAAS,EACTipC,OAAQzmC,EAAG,GAAIC,EAAG,GAAImrB,KAAM,MAE9Bsb,kBACElpC,SAAS,EACTmpC,kBAAkB,GAEpBC,oBACEppC,SAAQ,EACRqpC,gBAAiB,IACjBC,YAAa,IACbjd,UAAW,MAEbkd,wBAAwB,EACxBC,cACExpC,SAAS,EACTypC,SAAS,EACT9wC,KAAM,aACN+wC,UAAW,IAEbC,qBAAqB,EACrBC,YAAc,GACdC,YAAc,GACdC,wBAAyB,IACzBlX,QACEjvB,IAAI,WACJ8hC,KAAK,OACLsE,KAAK,WACLnE,IAAI,kBACJoE,SAAS,YACTtE,SAAS,YACTuE,KAAK,OACLC,eAAe,+CACfC,gBAAgB,qEAChBC,oBAAoB,wEACpBC,SAAS,uEACTC,UAAU,2EACVC,UAAU,yEACVC,eAAe,kDACfC,YAAY,2EACZC,mBAAmB,+BAErBp1B,SACE6H,MAAO,IACPipB,UAAW,QACXC,SAAU,GACVC,SAAU,UACV1pC,OACEc,OAAQ,OACRD,WAAY,YAGhBktC,aAAa,EACbC,WAAW,EACXre,UAAU,EACV3uB,OAAO,EACPitC,iBAAiB,EACjBC,iBAAiB,GAEnBz4C,KAAK04C,UAAYjF,SAASW,UAC1Bp0C,KAAK24C,oBAAqB,CAG1B,IAAI51C,GAAU/C,IACdA,MAAKu1B,OAAS,GAAItyB,GAClBjD,KAAK44C,OAAS,GAAI11C,GAClBlD,KAAK44C,OAAOC,kBAAkB,WAC5B91C,EAAQ+1C,YAIV94C,KAAK+4C,WAAa,EAClB/4C,KAAKg5C,WAAa,EAClBh5C,KAAKi5C,cAAgB,EAIrBj5C,KAAKk5C,qBAELl5C,KAAK6xB,UAEL7xB,KAAKm5C,oBAELn5C,KAAKo5C,qBAELp5C,KAAKq5C,uBAELr5C,KAAKs5C,uBAGLt5C,KAAKu5C,gBAAgBv5C,KAAKmc,MAAME,YAAc,EAAGrc,KAAKmc,MAAMuF,aAAe,GAC3E1hB,KAAK6Z,UAAU,GACf7Z,KAAK2Z,WAAWjM,GAGhB1N,KAAKw5C,kBAAmB,EACxBx5C,KAAKy5C,mBAGLz5C,KAAK05C,oBACL15C,KAAK25C,0BACL35C,KAAK45C,eACL55C,KAAKyzC,SACLzzC,KAAKo0C,SAGLp0C,KAAK65C,eAAqB1pC,EAAK,EAAEC,EAAK,GACtCpQ,KAAK85C,mBAAqB3pC,EAAK,EAAEC,EAAK,GACtCpQ,KAAK+5C,iBAAmB5pC,EAAK,EAAEC,EAAK,GACpCpQ,KAAKg6C,cACLh6C,KAAK8Z,MAAQ,EACb9Z,KAAKi6C,cAAgBj6C,KAAK8Z,MAG1B9Z,KAAKk6C,UAAY,KACjBl6C,KAAKm6C,UAAY,KAGjBn6C,KAAKo6C,gBACH9oC,IAAO,SAAUpI,EAAO6I,GACtBhP,EAAQs3C,UAAUtoC,EAAOhQ,OACzBgB,EAAQ2L,SAEVqE,OAAU,SAAU7J,EAAO6I,GACzBhP,EAAQu3C,aAAavoC,EAAOhQ,OAC5BgB,EAAQ2L,SAEV8F,OAAU,SAAUtL,EAAO6I,GACzBhP,EAAQw3C,aAAaxoC,EAAOhQ,OAC5BgB,EAAQ2L,UAGZ1O,KAAKw6C,gBACHlpC,IAAO,SAAUpI,EAAO6I,GACtBhP,EAAQ03C,UAAU1oC,EAAOhQ,OACzBgB,EAAQ2L,SAEVqE,OAAU,SAAU7J,EAAO6I,GACzBhP,EAAQ23C,aAAa3oC,EAAOhQ,OAC5BgB,EAAQ2L,SAEV8F,OAAU,SAAUtL,EAAO6I,GACzBhP,EAAQ43C,aAAa5oC,EAAOhQ,OAC5BgB,EAAQ2L,UAKZ1O,KAAK46C,QAAS,EACd56C,KAAK66C,MAAQ30C,OAGblG,KAAKoW,QAAQrF,EAAK/Q,KAAKwzC,UAAUiC,WAAW9nC,SAAW3N,KAAKwzC,UAAUuD,mBAAmBppC,SAGzF3N,KAAKkzC,cAAe,EAC6B,GAA7ClzC,KAAKwzC,UAAUuD,mBAAmBppC,QACpC3N,KAAK86C,2BAIiB,GAAlB96C,KAAKizC,WACPjzC,KAAK+6C,YAAW,EAAK/6C,KAAKwzC,UAAUiC,WAAW9nC,SAK/C3N,KAAKwzC,UAAUiC,WAAW9nC,SAC5B3N,KAAKg7C,sBAjVT,GAAIphC,GAAU1Z,EAAoB,IAC9BgzB,EAAShzB,EAAoB,IAC7B+6C,EAAY/6C,EAAoB,IAChCS,EAAOT,EAAoB,GAC3B06B,EAAa16B,EAAoB,IACjCW,EAAUX,EAAoB,GAC9BY,EAAWZ,EAAoB,GAC/BmD,EAAYnD,EAAoB,IAChC+C,EAAS/C,EAAoB,IAC7BgD,EAAShD,EAAoB,IAC7BiD,EAAOjD,EAAoB,IAC3B8C,EAAO9C,EAAoB,IAC3BkD,EAAQlD,EAAoB,IAC5Bg7C,EAAch7C,EAAoB,GAGtCA,GAAoB,IAsUpB0Z,EAAQ9W,EAAQyO,WAShBzO,EAAQyO,UAAU4pC,eAAiB,WAIjC,IAAK,GAHDC,GAAUxrC,SAASyrC,qBAAsB,UAGpCn2C,EAAI,EAAGA,EAAIk2C,EAAQ/1C,OAAQH,IAAK,CACvC,GAAIo2C,GAAMF,EAAQl2C,GAAGo2C,IACjBr3C,EAAQq3C,GAAO,qBAAqBn3C,KAAKm3C,EAC7C,IAAIr3C,EAEF,MAAOq3C,GAAI1vC,UAAU,EAAG0vC,EAAIj2C,OAASpB,EAAM,GAAGoB,QAIlD,MAAO,OAQTvC,EAAQyO,UAAUgqC,UAAY,WAC5B,GAAsDC,GAAlDC,EAAO,IAAKC,EAAO,KAAMC,EAAO,IAAKC,EAAO,IAChD,KAAK,GAAIC,KAAU77C,MAAKyzC,MAClBzzC,KAAKyzC,MAAMjuC,eAAeq2C,KAC5BL,EAAOx7C,KAAKyzC,MAAMoI,GACdF,EAAQH,EAAM,IAAIG,EAAOH,EAAKrrC,GAC9ByrC,EAAQJ,EAAM,IAAII,EAAOJ,EAAKrrC,GAC9BsrC,EAAQD,EAAM,IAAIC,EAAOD,EAAKprC,GAC9BsrC,EAAQF,EAAM,IAAIE,EAAOF,EAAKprC,GAMtC,OAHY,MAARurC,GAAuB,MAARC,GAAwB,KAARH,GAAuB,MAARC,IAChDD,EAAO,EAAGC,EAAO,EAAGC,EAAO,EAAGC,EAAO,IAE/BD,KAAMA,EAAMC,KAAMA,EAAMH,KAAMA,EAAMC,KAAMA,IASpD54C,EAAQyO,UAAUuqC,YAAc,SAAShuC,GACvC,OAAQqC,EAAI,IAAOrC,EAAM8tC,KAAO9tC,EAAM6tC,MAC9BvrC,EAAI,IAAOtC,EAAM4tC,KAAO5tC,EAAM2tC,QASxC34C,EAAQyO,UAAUwqC,eAAiB,SAASjuC,GAC1C,GAAImb,GAASjpB,KAAK87C,YAAYhuC,EAE9Bmb,GAAO9Y,GAAKnQ,KAAK8Z,MACjBmP,EAAO7Y,GAAKpQ,KAAK8Z,MACjBmP,EAAO9Y,GAAK,GAAMnQ,KAAKmc,MAAMC,OAAOC,YACpC4M,EAAO7Y,GAAK,GAAMpQ,KAAKmc,MAAMC,OAAOsF,aAEpC1hB,KAAKu5C,iBAAiBtwB,EAAO9Y,GAAG8Y,EAAO7Y,IAUzCtN,EAAQyO,UAAUwpC,WAAa,SAASiB,EAAaC,GAC/B/1C,SAAhB81C,IACFA,GAAc,GAEK91C,SAAjB+1C,IACFA,GAAe,EAGjB,IACIC,GADApuC,EAAQ9N,KAAKu7C,WAGjB,IAAmB,GAAfS,EAAqB,CACvB,GAAIG,GAAgBn8C,KAAK45C,YAAYv0C,MAIjC62C,GAH+B,GAA/Bl8C,KAAKwzC,UAAU2D,aACwB,GAArCn3C,KAAKwzC,UAAUiC,WAAW9nC,SAC5BwuC,GAAiBn8C,KAAKwzC,UAAUiC,WAAWC,gBAC/B,UAAYyG,EAAgB,WAAa,SAGzC,QAAUA,EAAgB,QAAU,SAIT,GAArCn8C,KAAKwzC,UAAUiC,WAAW9nC,SAC1BwuC,GAAiBn8C,KAAKwzC,UAAUiC,WAAWC,gBACjC,YAAcyG,EAAgB,YAAc,cAG5C,YAAcA,EAAgB,aAAe,SAK7D,IAAIC,GAASx3C,KAAKmG,IAAI/K,KAAKmc,MAAMC,OAAOC,YAAc,IAAKrc,KAAKmc,MAAMC,OAAOsF,aAAe,IAC5Fw6B,IAAaE,MAEV,CACH,GAAIrN,GAA4D,KAA/CnqC,KAAK+iB,IAAI7Z,EAAM6tC,MAAQ/2C,KAAK+iB,IAAI7Z,EAAM8tC,OACnDS,EAA4D,KAA/Cz3C,KAAK+iB,IAAI7Z,EAAM2tC,MAAQ72C,KAAK+iB,IAAI7Z,EAAM4tC,OAEnDY,EAAat8C,KAAKmc,MAAMC,OAAOC,YAAc0yB,EAC7CwN,EAAav8C,KAAKmc,MAAMC,OAAOsF,aAAe26B,CAElDH,GAA2BK,GAAdD,EAA4BA,EAAaC,EAGpDL,EAAY,IACdA,EAAY,GAIdl8C,KAAK6Z,UAAUqiC,GACfl8C,KAAK+7C,eAAejuC,GACA,GAAhBmuC,IACFj8C,KAAK46C,QAAS,EACd56C,KAAK0O,UAST5L,EAAQyO,UAAUirC,qBAAuB,WACvCx8C,KAAKy8C,qBACL,KAAK,GAAIC,KAAO18C,MAAKyzC,MACfzzC,KAAKyzC,MAAMjuC,eAAek3C,IAC5B18C,KAAK45C,YAAYhyC,KAAK80C,IAgB5B55C,EAAQyO,UAAU6E,QAAU,SAASrF,EAAMkrC,GAKzC,GAJqB/1C,SAAjB+1C,IACFA,GAAe,GAGblrC,GAAQA,EAAKkc,MAAQlc,EAAK0iC,OAAS1iC,EAAKqjC,OAC1C,KAAM,IAAIv9B,aAAY,iGAQxB,IAHA7W,KAAK2Z,WAAW5I,GAAQA,EAAKrD,SAGzBqD,GAAQA,EAAKkc,KAEf,GAAGlc,GAAQA,EAAKkc,IAAK,CACnB,GAAI0vB,GAAUt5C,EAAUu5C,WAAW7rC,EAAKkc,IAExC,YADAjtB,MAAKoW,QAAQumC,QAKf38C,MAAK68C,UAAU9rC,GAAQA,EAAK0iC,OAC5BzzC,KAAK88C,UAAU/rC,GAAQA,EAAKqjC,MAI9B,IADAp0C,KAAK+8C,oBACAd,EAEH,GAAIj8C,KAAKizC,UAAW,CAClB,GAAI7gC,GAAKpS,IACTurB,YAAW,WAAYnZ,EAAG4qC,aAAc5qC,EAAG1D,SAAU,OAGrD1O,MAAK0O,SAUX5L,EAAQyO,UAAUoI,WAAa,SAAUjM,GACvC,GAAIA,EAAS,CACX,GAAInI,EAiBJ,IAfsBW,SAAlBwH,EAAQkD,QAAgC5Q,KAAK4Q,MAAQlD,EAAQkD,OAC1C1K,SAAnBwH,EAAQmD,SAAgC7Q,KAAK6Q,OAASnD,EAAQmD,QACxC3K,SAAtBwH,EAAQulC,YAAgCjzC,KAAKizC,UAAYvlC,EAAQulC,WAC1C/sC,SAAvBwH,EAAQi5B,aAAgC3mC,KAAK2mC,WAAaj5B,EAAQi5B,YAC/BzgC,SAAnCwH,EAAQwpC,yBAA0Cl3C,KAAKwzC,UAAU0D,uBAAyBxpC,EAAQwpC,wBACrEhxC,SAA7BwH,EAAQmnC,mBAAgC70C,KAAKwzC,UAAUqB,iBAAmBnnC,EAAQmnC,kBAC9C3uC,SAApCwH,EAAQ+pC,0BAA0Cz3C,KAAKwzC,UAAUiE,wBAA0B/pC,EAAQ+pC,yBAC3EvxC,SAAxBwH,EAAQ4qC,cAAgCt4C,KAAKwzC,UAAU8E,YAAc5qC,EAAQ4qC,aACvDpyC,SAAtBwH,EAAQ6qC,YAAgCv4C,KAAKwzC,UAAU+E,UAAY7qC,EAAQ6qC,WACtDryC,SAArBwH,EAAQwsB,WAAgCl6B,KAAKwzC,UAAUtZ,SAAWxsB,EAAQwsB,UACxDh0B,SAAlBwH,EAAQnC,QAAgCvL,KAAKwzC,UAAUjoC,MAAQmC,EAAQnC,OAC3CrF,SAA5BwH,EAAQ8qC,kBAAgCx4C,KAAKwzC,UAAUgF,gBAAkB9qC,EAAQ8qC,iBACrDtyC,SAA5BwH,EAAQ+qC,kBAAgCz4C,KAAKwzC,UAAUiF,gBAAkB/qC,EAAQ+qC,iBAG3DvyC,SAAtBwH,EAAQuvC,UACV,KAAM,IAAI15C,OAAM,6CAGlB,IAAuB2C,SAAnBwH,EAAQ6yB,OACV,IAAKh7B,IAAQmI,GAAQ6yB,OACf7yB,EAAQ6yB,OAAO/6B,eAAeD,KAChCvF,KAAKwzC,UAAUjT,OAAOh7B,GAAQmI,EAAQ6yB,OAAOh7B,GAyBnD,IApBImI,EAAQo5B,QACR9mC,KAAKmzC,iBAAiB7hC,IAAM5D,EAAQo5B,OAGpCp5B,EAAQwvC,SACVl9C,KAAKmzC,iBAAiBC,KAAO1lC,EAAQwvC,QAGnCxvC,EAAQyvC,aACVn9C,KAAKmzC,iBAAiBE,SAAW3lC,EAAQyvC,YAGvCzvC,EAAQ0vC,YACVp9C,KAAKmzC,iBAAiBG,QAAU5lC,EAAQ0vC,WAGtC1vC,EAAQ2vC,WACVr9C,KAAKmzC,iBAAiBI,IAAM7lC,EAAQ2vC,UAGlC3vC,EAAQonC,QAAS,CACnB,GAAIpnC,EAAQonC,QAAQC,UAAW,CAC7B/0C,KAAKwzC,UAAUsB,QAAQC,UAAUpnC,SAAU,CAC3C,KAAKpI,IAAQmI,GAAQonC,QAAQC,UACvBrnC,EAAQonC,QAAQC,UAAUvvC,eAAeD,KAC3CvF,KAAKwzC,UAAUsB,QAAQC,UAAUxvC,GAAQmI,EAAQonC,QAAQC,UAAUxvC,IAKzE,GAAImI,EAAQonC,QAAQQ,UAAW,CAC7Bt1C,KAAKwzC,UAAUsB,QAAQC,UAAUpnC,SAAU,CAC3C,KAAKpI,IAAQmI,GAAQonC,QAAQQ,UACvB5nC,EAAQonC,QAAQQ,UAAU9vC,eAAeD,KAC3CvF,KAAKwzC,UAAUsB,QAAQQ,UAAU/vC,GAAQmI,EAAQonC,QAAQQ,UAAU/vC,IAKzE,GAAImI,EAAQonC,QAAQU,sBAAuB,CACzCx1C,KAAKwzC,UAAUuD,mBAAmBppC,SAAU,EAC5C3N,KAAKwzC,UAAUsB,QAAQU,sBAAsB7nC,SAAU,EACvD3N,KAAKwzC,UAAUsB,QAAQC,UAAUpnC,SAAU,CAC3C,KAAKpI,IAAQmI,GAAQonC,QAAQU,sBACvB9nC,EAAQonC,QAAQU,sBAAsBhwC,eAAeD,KACvDvF,KAAKwzC,UAAUsB,QAAQU,sBAAsBjwC,GAAQmI,EAAQonC,QAAQU,sBAAsBjwC,KAMnG,GAA6BW,SAAzBwH,EAAQypC,aACV,GAAmC,iBAAxBzpC,GAAQypC,aACjBn3C,KAAKwzC,UAAU2D,aAAaxpC,QAAUD,EAAQypC,iBAE3C,CACHn3C,KAAKwzC,UAAU2D,aAAaxpC,SAAU,CACtC,KAAKpI,IAAQmI,GAAQypC,aACfzpC,EAAQypC,aAAa3xC,eAAeD,KACtCvF,KAAKwzC,UAAU2D,aAAa5xC,GAAQmI,EAAQypC,aAAa5xC,IAMjE,GAAImI,EAAQqpC,mBAAoB,CAC9B/2C,KAAKwzC,UAAUuD,mBAAmBppC,SAAU,CAC5C,KAAKpI,IAAQmI,GAAQqpC,mBACfrpC,EAAQqpC,mBAAmBvxC,eAAeD,KAC5CvF,KAAKwzC,UAAUuD,mBAAmBxxC,GAAQmI,EAAQqpC,mBAAmBxxC,QAInCW,UAA/BwH,EAAQqpC,qBACf/2C,KAAKwzC,UAAUuD,mBAAmBppC,SAAU,EAG9C,IAAID,EAAQ+nC,WAAY,CACtBz1C,KAAKwzC,UAAUiC,WAAW9nC,SAAU,CACpC,KAAKpI,IAAQmI,GAAQ+nC,WACf/nC,EAAQ+nC,WAAWjwC,eAAeD,KACpCvF,KAAKwzC,UAAUiC,WAAWlwC,GAAQmI,EAAQ+nC,WAAWlwC,QAI3BW,UAAvBwH,EAAQ+nC,aACfz1C,KAAKwzC,UAAUiC,WAAW9nC,SAAU,EAGtC,IAAID,EAAQgpC,WAAY,CACtB12C,KAAKwzC,UAAUkD,WAAW/oC,SAAU,CACpC,KAAKpI,IAAQmI,GAAQgpC,WACfhpC,EAAQgpC,WAAWlxC,eAAeD,KACpCvF,KAAKwzC,UAAUkD,WAAWnxC,GAAQmI,EAAQgpC,WAAWnxC,QAI3BW,UAAvBwH,EAAQgpC,aACf12C,KAAKwzC,UAAUkD,WAAW/oC,SAAU,EAGtC,IAAID,EAAQipC,SAAU,CACpB32C,KAAKwzC,UAAUmD,SAAShpC,SAAU,CAClC,KAAKpI,IAAQmI,GAAQipC,SACfjpC,EAAQipC,SAASnxC,eAAeD,KAClCvF,KAAKwzC,UAAUmD,SAASpxC,GAAQmI,EAAQipC,SAASpxC,QAIzBW,UAArBwH,EAAQipC,WACf32C,KAAKwzC,UAAUmD,SAAShpC,SAAU,EAGpC,IAAID,EAAQmpC,iBAAkB,CAC5B72C,KAAKwzC,UAAUqD,iBAAiBlpC,SAAU,CAC1C,KAAKpI,IAAQmI,GAAQmpC,iBACfnpC,EAAQmpC,iBAAiBrxC,eAAeD,KAC1CvF,KAAKwzC,UAAUqD,iBAAiBtxC,GAAQmI,EAAQmpC,iBAAiBtxC,GAGrEvF,MAAKs9C,SAAWt9C,KAAKwzC,UAAUqD,iBAAiBC,qBAEZ5wC,UAA7BwH,EAAQmpC,mBACf72C,KAAKwzC,UAAUqD,iBAAiBlpC,SAAU,EAI5C,IAAID,EAAQ0mC,MAAO,CACjB,IAAK7uC,IAAQmI,GAAQ0mC,MACf1mC,EAAQ0mC,MAAM5uC,eAAeD,IACG,gBAAvBmI,GAAQ0mC,MAAM7uC,KACvBvF,KAAKwzC,UAAUY,MAAM7uC,GAAQmI,EAAQ0mC,MAAM7uC,GAKrBW,UAAxBwH,EAAQ0mC,MAAM7pC,QACZ5J,EAAKkD,SAAS6J,EAAQ0mC,MAAM7pC,QAC9BvK,KAAKwzC,UAAUY,MAAM7pC,SACrBvK,KAAKwzC,UAAUY,MAAM7pC,MAAMA,MAAQmD,EAAQ0mC,MAAM7pC,MACjDvK,KAAKwzC,UAAUY,MAAM7pC,MAAMe,UAAYoC,EAAQ0mC,MAAM7pC,MACrDvK,KAAKwzC,UAAUY,MAAM7pC,MAAMgB,MAAQmC,EAAQ0mC,MAAM7pC,QAGfrE,SAA9BwH,EAAQ0mC,MAAM7pC,MAAMA,QAA0BvK,KAAKwzC,UAAUY,MAAM7pC,MAAMA,MAAQmD,EAAQ0mC,MAAM7pC,MAAMA,OACnErE,SAAlCwH,EAAQ0mC,MAAM7pC,MAAMe,YAA0BtL,KAAKwzC,UAAUY,MAAM7pC,MAAMe,UAAYoC,EAAQ0mC,MAAM7pC,MAAMe,WAC3EpF,SAA9BwH,EAAQ0mC,MAAM7pC,MAAMgB,QAA0BvL,KAAKwzC,UAAUY,MAAM7pC,MAAMgB,MAAQmC,EAAQ0mC,MAAM7pC,MAAMgB,SAIxGmC,EAAQ0mC,MAAML,WACW7tC,SAAxBwH,EAAQ0mC,MAAM7pC,QACZ5J,EAAKkD,SAAS6J,EAAQ0mC,MAAM7pC,OAAmBvK,KAAKwzC,UAAUY,MAAML,UAAYrmC,EAAQ0mC,MAAM7pC,MAC3DrE,SAA9BwH,EAAQ0mC,MAAM7pC,MAAMA,QAAsBvK,KAAKwzC,UAAUY,MAAML,UAAYrmC,EAAQ0mC,MAAM7pC,MAAMA,QAOxGmD,EAAQ0mC,MAAMK,OACkBvuC,SAA9BwH,EAAQ0mC,MAAMK,KAAKpvC,SACrBrF,KAAKwzC,UAAUY,MAAMK,KAAKpvC,OAASqI,EAAQ0mC,MAAMK,KAAKpvC,QAEzBa,SAA3BwH,EAAQ0mC,MAAMK,KAAKC,MACrB10C,KAAKwzC,UAAUY,MAAMK,KAAKC,IAAMhnC,EAAQ0mC,MAAMK,KAAKC,KAEhBxuC,SAAjCwH,EAAQ0mC,MAAMK,KAAKE,YACrB30C,KAAKwzC,UAAUY,MAAMK,KAAKE,UAAYjnC,EAAQ0mC,MAAMK,KAAKE;CAK/D,GAAIjnC,EAAQ+lC,MAAO,CACjB,IAAKluC,IAAQmI,GAAQ+lC,MACf/lC,EAAQ+lC,MAAMjuC,eAAeD,KAC/BvF,KAAKwzC,UAAUC,MAAMluC,GAAQmI,EAAQ+lC,MAAMluC,GAI3CmI,GAAQ+lC,MAAMlpC,QAChBvK,KAAKwzC,UAAUC,MAAMlpC,MAAQ5J,EAAK2J,WAAWoD,EAAQ+lC,MAAMlpC,QAQ/D,GAAImD,EAAQ6nB,OACV,IAAK,GAAIgoB,KAAa7vC,GAAQ6nB,OAC5B,GAAI7nB,EAAQ6nB,OAAO/vB,eAAe+3C,GAAY,CAC5C,GAAIltC,GAAQ3C,EAAQ6nB,OAAOgoB,EAC3Bv9C,MAAKu1B,OAAOjkB,IAAIisC,EAAWltC,GAKjC,GAAI3C,EAAQuV,QAAS,CACnB,IAAK1d,IAAQmI,GAAQuV,QACfvV,EAAQuV,QAAQzd,eAAeD,KACjCvF,KAAKwzC,UAAUvwB,QAAQ1d,GAAQmI,EAAQuV,QAAQ1d,GAG/CmI,GAAQuV,QAAQ1Y,QAClBvK,KAAKwzC,UAAUvwB,QAAQ1Y,MAAQ5J,EAAK2J,WAAWoD,EAAQuV,QAAQ1Y,SAQrEvK,KAAKk5C,qBAELl5C,KAAKw9C,0BAELx9C,KAAKy9C,0BAELz9C,KAAK09C,yBAIL19C,KAAK29C,kBACL39C,KAAKwhB,QAAQxhB,KAAK4Q,MAAO5Q,KAAK6Q,QAC9B7Q,KAAK46C,QAAS,EACd56C,KAAK0O,SAWP5L,EAAQyO,UAAUsgB,QAAU,WAE1B,KAAO7xB,KAAK8W,iBAAiByJ,iBAC3BvgB,KAAK8W,iBAAiBtH,YAAYxP,KAAK8W,iBAAiB0J,WAY1D,IATAxgB,KAAKmc,MAAQvM,SAASK,cAAc,OACpCjQ,KAAKmc,MAAM3U,UAAY,gBACvBxH,KAAKmc,MAAM3L,MAAMiQ,SAAW,WAC5BzgB,KAAKmc,MAAM3L,MAAMkQ,SAAW,SAG5B1gB,KAAKmc,MAAMC,OAASxM,SAASK,cAAe,UAC5CjQ,KAAKmc,MAAMC,OAAO5L,MAAMiQ,SAAW,WACnCzgB,KAAKmc,MAAMrM,YAAY9P,KAAKmc,MAAMC,SAC7Bpc,KAAKmc,MAAMC,OAAOyH,WAAY,CACjC,GAAIlD,GAAW/Q,SAASK,cAAe,MACvC0Q,GAASnQ,MAAMjG,MAAQ,MACvBoW,EAASnQ,MAAMoQ,WAAc,OAC7BD,EAASnQ,MAAMqQ,QAAW,OAC1BF,EAASG,UAAa,mDACtB9gB,KAAKmc,MAAMC,OAAOtM,YAAY6Q,GAGhC,GAAIvO,GAAKpS,IACTA,MAAKw/B,QACLx/B,KAAK49C,SACL59C,KAAKyD,OAASyvB,EAAOlzB,KAAKmc,MAAMC,QAC9B8X,iBAAiB,IAEnBl0B,KAAKyD,OAAO+N,GAAG,MAAaY,EAAGyrC,OAAO5rB,KAAK7f,IAC3CpS,KAAKyD,OAAO+N,GAAG,YAAaY,EAAG0rC,aAAa7rB,KAAK7f,IACjDpS,KAAKyD,OAAO+N,GAAG,OAAaY,EAAGkoB,QAAQrI,KAAK7f,IAC5CpS,KAAKyD,OAAO+N,GAAG,QAAaY,EAAG2hB,SAAS9B,KAAK7f,IAC7CpS,KAAKyD,OAAO+N,GAAG,QAAaY,EAAG0hB,SAAS7B,KAAK7f,IAC7CpS,KAAKyD,OAAO+N,GAAG,YAAaY,EAAG4hB,aAAa/B,KAAK7f,IACjDpS,KAAKyD,OAAO+N,GAAG,OAAaY,EAAG6hB,QAAQhC,KAAK7f,IAC5CpS,KAAKyD,OAAO+N,GAAG,UAAaY,EAAGioB,WAAWpI,KAAK7f,IAC/CpS,KAAKyD,OAAO+N,GAAG,UAAaY,EAAG2rC,WAAW9rB,KAAK7f,IAC/CpS,KAAKyD,OAAO+N,GAAG,aAAaY,EAAGmoB,cAActI,KAAK7f,IAClDpS,KAAKyD,OAAO+N,GAAG,iBAAiBY,EAAGmoB,cAActI,KAAK7f,IACtDpS,KAAKyD,OAAO+N,GAAG,YAAaY,EAAG4rC,kBAAkB/rB,KAAK7f,IAGtDpS,KAAK8W,iBAAiBhH,YAAY9P,KAAKmc,QASzCrZ,EAAQyO,UAAUosC,gBAAkB,WAClC,GAAIvrC,GAAKpS,IACTA,MAAKi7C,UAAYA,EAEjBj7C,KAAKi7C,UAAUgD,QAEwB,GAAnCj+C,KAAKwzC,UAAUmD,SAAShpC,UAC1B3N,KAAKi7C,UAAUhpB,KAAK,KAAQjyB,KAAKk+C,QAAQjsB,KAAK7f,GAAQ,WACtDpS,KAAKi7C,UAAUhpB,KAAK,KAAQjyB,KAAKm+C,aAAalsB,KAAK7f,GAAK,SACxDpS,KAAKi7C,UAAUhpB,KAAK,OAAQjyB,KAAKo+C,UAAUnsB,KAAK7f,GAAM,WACtDpS,KAAKi7C,UAAUhpB,KAAK,OAAQjyB,KAAKm+C,aAAalsB,KAAK7f,GAAK,SACxDpS,KAAKi7C,UAAUhpB,KAAK,OAAQjyB,KAAKq+C,UAAUpsB,KAAK7f,GAAM,WACtDpS,KAAKi7C,UAAUhpB,KAAK,OAAQjyB,KAAKs+C,aAAarsB,KAAK7f,GAAK,SACxDpS,KAAKi7C,UAAUhpB,KAAK,QAAQjyB,KAAKu+C,WAAWtsB,KAAK7f,GAAK,WACtDpS,KAAKi7C,UAAUhpB,KAAK,QAAQjyB,KAAKs+C,aAAarsB,KAAK7f,GAAK,SACxDpS,KAAKi7C,UAAUhpB,KAAK,IAAQjyB,KAAKw+C,QAAQvsB,KAAK7f,GAAQ,WACtDpS,KAAKi7C,UAAUhpB,KAAK,IAAQjyB,KAAKy+C,UAAUxsB,KAAK7f,GAAQ,SACxDpS,KAAKi7C,UAAUhpB,KAAK,IAAQjyB,KAAK0+C,SAASzsB,KAAK7f,GAAO,WACtDpS,KAAKi7C,UAAUhpB,KAAK,IAAQjyB,KAAKy+C,UAAUxsB,KAAK7f,GAAQ,SACxDpS,KAAKi7C,UAAUhpB,KAAK,IAAQjyB,KAAKw+C,QAAQvsB,KAAK7f,GAAQ,WACtDpS,KAAKi7C,UAAUhpB,KAAK,IAAQjyB,KAAKy+C,UAAUxsB,KAAK7f,GAAQ,SACxDpS,KAAKi7C,UAAUhpB,KAAK,IAAQjyB,KAAK0+C,SAASzsB,KAAK7f,GAAO,WACtDpS,KAAKi7C,UAAUhpB,KAAK,IAAQjyB,KAAKy+C,UAAUxsB,KAAK7f,GAAQ,SACxDpS,KAAKi7C,UAAUhpB,KAAK,SAASjyB,KAAKw+C,QAAQvsB,KAAK7f,GAAO,WACtDpS,KAAKi7C,UAAUhpB,KAAK,SAASjyB,KAAKy+C,UAAUxsB,KAAK7f,GAAO,SACxDpS,KAAKi7C,UAAUhpB,KAAK,WAAWjyB,KAAK0+C,SAASzsB,KAAK7f,GAAI,WACtDpS,KAAKi7C,UAAUhpB,KAAK,WAAWjyB,KAAKy+C,UAAUxsB,KAAK7f,GAAK,UAGX,GAA3CpS,KAAKwzC,UAAUqD,iBAAiBlpC,UAClC3N,KAAKi7C,UAAUhpB,KAAK,SAASjyB,KAAK2+C,sBAAsB1sB,KAAK7f,IAC7DpS,KAAKi7C,UAAUhpB,KAAK,MAAMjyB,KAAK4+C,gBAAgB3sB,KAAK7f,MAUxDtP,EAAQyO,UAAUstC,YAAc,SAAUpqB,GACxC,OACEtkB,EAAGskB,EAAMiG,MAAQ/5B,EAAKmG,gBAAgB9G,KAAKmc,MAAMC,QACjDhM,EAAGqkB,EAAMkG,MAAQh6B,EAAKyG,eAAepH,KAAKmc,MAAMC,UASpDtZ,EAAQyO,UAAUuiB,SAAW,SAAU5qB,GACrClJ,KAAKw/B,KAAKpE,QAAUp7B,KAAK6+C,YAAY31C,EAAMquB,QAAQtO,QACnDjpB,KAAKw/B,KAAKsf,SAAU,EACpB9+C,KAAK49C,MAAM9jC,MAAQ9Z,KAAK++C,YAExB/+C,KAAKg/C,aAAah/C,KAAKw/B,KAAKpE,UAO9Bt4B,EAAQyO,UAAUyiB,aAAe,WAC/Bh0B,KAAKi/C,oBAUPn8C,EAAQyO,UAAU0tC,iBAAmB,WACnC,GAAIzf,GAAOx/B,KAAKw/B,KACZgc,EAAOx7C,KAAKk/C,WAAW1f,EAAKpE,QAQhC,IALAoE,EAAKC,UAAW,EAChBD,EAAKoI,aACLpI,EAAKllB,YAActa,KAAKm/C,kBACxB3f,EAAKqc,OAAS,KAEF,MAARL,EAAc,CAChBhc,EAAKqc,OAASL,EAAKn7C,GAEdm7C,EAAK4D,cACRp/C,KAAKq/C,cAAc7D,GAAK,EAI1B,KAAK,GAAI8D,KAAYt/C,MAAKu/C,aAAa9L,MACrC,GAAIzzC,KAAKu/C,aAAa9L,MAAMjuC,eAAe85C,GAAW,CACpD,GAAI37C,GAAS3D,KAAKu/C,aAAa9L,MAAM6L,GACjCz0C,GACFxK,GAAIsD,EAAOtD,GACXm7C,KAAM73C,EAGNwM,EAAGxM,EAAOwM,EACVC,EAAGzM,EAAOyM,EACVovC,OAAQ77C,EAAO67C,OACfC,OAAQ97C,EAAO87C,OAGjB97C,GAAO67C,QAAS,EAChB77C,EAAO87C,QAAS,EAEhBjgB,EAAKoI,UAAUhgC,KAAKiD,MAW5B/H,EAAQyO,UAAU0iB,QAAU,SAAU/qB,GACpClJ,KAAK0/C,cAAcx2C,IAUrBpG,EAAQyO,UAAUmuC,cAAgB,SAASx2C,GACzC,IAAIlJ,KAAKw/B,KAAKsf,QAAd,CAIA,GAAI1jB,GAAUp7B,KAAK6+C,YAAY31C,EAAMquB,QAAQtO,QAEzC7W,EAAKpS,KACLw/B,EAAOx/B,KAAKw/B,KACZoI,EAAYpI,EAAKoI,SACrB,IAAIA,GAAaA,EAAUviC,QAAsC,GAA5BrF,KAAKwzC,UAAU+E,UAAmB,CAErE,GAAItd,GAASG,EAAQjrB,EAAIqvB,EAAKpE,QAAQjrB,EAClCqnB,EAAS4D,EAAQhrB,EAAIovB,EAAKpE,QAAQhrB,CAGtCw3B,GAAU3/B,QAAQ,SAAU4C,GAC1B,GAAI2wC,GAAO3wC,EAAE2wC,IAER3wC,GAAE20C,SACLhE,EAAKrrC,EAAIiC,EAAGutC,qBAAqBvtC,EAAGwtC,qBAAqB/0C,EAAEsF,GAAK8qB,IAG7DpwB,EAAE40C,SACLjE,EAAKprC,EAAIgC,EAAGytC,qBAAqBztC,EAAG0tC,qBAAqBj1C,EAAEuF,GAAKonB,MAM/Dx3B,KAAK46C,SACR56C,KAAK46C,QAAS,EACd56C,KAAK0O,aAIP,IAAkC,GAA9B1O,KAAKwzC,UAAU8E,YAAqB,CAEtC,GAAIjuB,GAAQ+Q,EAAQjrB,EAAInQ,KAAKw/B,KAAKpE,QAAQjrB,EACtCma,EAAQ8Q,EAAQhrB,EAAIpQ,KAAKw/B,KAAKpE,QAAQhrB,CAE1CpQ,MAAKu5C,gBACHv5C,KAAKw/B,KAAKllB,YAAYnK,EAAIka,EAC1BrqB,KAAKw/B,KAAKllB,YAAYlK,EAAIka,GAE5BtqB,KAAK84C,aAWXh2C,EAAQyO,UAAU8oB,WAAa,WAC7Br6B,KAAKw/B,KAAKC,UAAW,CACrB,IAAImI,GAAY5nC,KAAKw/B,KAAKoI,SACtBA,KACFA,EAAU3/B,QAAQ,SAAU4C,GAE1BA,EAAE2wC,KAAKgE,OAAS30C,EAAE20C,OAClB30C,EAAE2wC,KAAKiE,OAAS50C,EAAE40C,SAEpBz/C,KAAK46C,QAAS,EACd56C,KAAK0O,SAEP1O,KAAK84C,WAOPh2C,EAAQyO,UAAUssC,OAAS,SAAU30C,GACnC,GAAIkyB,GAAUp7B,KAAK6+C,YAAY31C,EAAMquB,QAAQtO,OAC7CjpB,MAAK+5C,gBAAkB3e,EACvBp7B,KAAK+/C,WAAW3kB,IASlBt4B,EAAQyO,UAAUusC,aAAe,SAAU50C,GACzC,GAAIkyB,GAAUp7B,KAAK6+C,YAAY31C,EAAMquB,QAAQtO,OAC7CjpB,MAAKggD,iBAAiB5kB,IAQxBt4B,EAAQyO,UAAU+oB,QAAU,SAAUpxB,GACpC,GAAIkyB,GAAUp7B,KAAK6+C,YAAY31C,EAAMquB,QAAQtO,OAC7CjpB,MAAK+5C,gBAAkB3e,EACvBp7B,KAAKigD,cAAc7kB,IAQrBt4B,EAAQyO,UAAUwsC,WAAa,SAAU70C,GACvC,GAAIkyB,GAAUp7B,KAAK6+C,YAAY31C,EAAMquB,QAAQtO,OAC7CjpB,MAAKkgD,iBAAiB9kB,IAQxBt4B,EAAQyO,UAAUwiB,SAAW,SAAU7qB,GACrC,GAAIkyB,GAAUp7B,KAAK6+C,YAAY31C,EAAMquB,QAAQtO,OAE7CjpB,MAAKw/B,KAAKsf,SAAU,EACd,SAAW9+C,MAAK49C,QACpB59C,KAAK49C,MAAM9jC,MAAQ,EAIrB,IAAIA,GAAQ9Z,KAAK49C,MAAM9jC,MAAQ5Q,EAAMquB,QAAQzd,KAC7C9Z,MAAKmgD,MAAMrmC,EAAOshB,IAUpBt4B,EAAQyO,UAAU4uC,MAAQ,SAASrmC,EAAOshB,GACxC,GAA+B,GAA3Bp7B,KAAKwzC,UAAUtZ,SAAkB,CACnC,GAAIkmB,GAAWpgD,KAAK++C,WACR,MAARjlC,IACFA,EAAQ,MAENA,EAAQ,KACVA,EAAQ,GAGV,IAAIumC,GAAsB,IACRn6C,UAAdlG,KAAKw/B,MACmB,GAAtBx/B,KAAKw/B,KAAKC,WACZ4gB,EAAsBrgD,KAAKsgD,YAAYtgD,KAAKw/B,KAAKpE,SAIrD,IAAI9gB,GAActa,KAAKm/C,kBAEnBoB,EAAYzmC,EAAQsmC,EACpBI,GAAM,EAAID,GAAanlB,EAAQjrB,EAAImK,EAAYnK,EAAIowC,EACnDE,GAAM,EAAIF,GAAanlB,EAAQhrB,EAAIkK,EAAYlK,EAAImwC,CASvD,IAPAvgD,KAAKg6C,YAAc7pC,EAAMnQ,KAAK2/C,qBAAqBvkB,EAAQjrB,GACxCC,EAAMpQ,KAAK6/C,qBAAqBzkB,EAAQhrB,IAE3DpQ,KAAK6Z,UAAUC,GACf9Z,KAAKu5C,gBAAgBiH,EAAIC,GACzBzgD,KAAK0gD,wBAEsB,MAAvBL,EAA6B,CAC/B,GAAIM,GAAuB3gD,KAAK4gD,YAAYP,EAC5CrgD,MAAKw/B,KAAKpE,QAAQjrB,EAAIwwC,EAAqBxwC,EAC3CnQ,KAAKw/B,KAAKpE,QAAQhrB,EAAIuwC,EAAqBvwC,EAY7C,MATApQ,MAAK84C,UAEUh/B,EAAXsmC,EACFpgD,KAAK6qB,KAAK,QAASmP,UAAU,MAG7Bh6B,KAAK6qB,KAAK,QAASmP,UAAU,MAGxBlgB,IAYXhX,EAAQyO,UAAUgpB,cAAgB,SAASrxB,GAEzC,GAAI0iB,GAAQ,CAYZ,IAXI1iB,EAAM2iB,WACRD,EAAQ1iB,EAAM2iB,WAAW,IAChB3iB,EAAM4iB,SAGfF,GAAS1iB,EAAM4iB,OAAO,GAMpBF,EAAO,CAGT,GAAI9R,GAAQ9Z,KAAK++C,YACbxjB,EAAO3P,EAAQ,EACP,GAARA,IACF2P,GAAe,EAAIA,GAErBzhB,GAAU,EAAIyhB,CAGd,IAAIhE,GAAUqD,EAAWO,YAAYn7B,KAAMkJ,GACvCkyB,EAAUp7B,KAAK6+C,YAAYtnB,EAAQtO,OAGvCjpB,MAAKmgD,MAAMrmC,EAAOshB,GAIpBlyB,EAAMD,kBASRnG,EAAQyO,UAAUysC,kBAAoB,SAAU90C,GAC9C,GAAIquB,GAAUqD,EAAWO,YAAYn7B,KAAMkJ,GACvCkyB,EAAUp7B,KAAK6+C,YAAYtnB,EAAQtO,OAGnCjpB,MAAK6gD,UACP7gD,KAAK8gD,gBAAgB1lB,EAKvB,IAAIhpB,GAAKpS,KACL+gD,EAAY,WACd3uC,EAAG4uC,gBAAgB5lB,GAarB,IAXIp7B,KAAKihD,YACPlxB,cAAc/vB,KAAKihD,YAEhBjhD,KAAKw/B,KAAKC,WACbz/B,KAAKihD,WAAa11B,WAAWw1B,EAAW/gD,KAAKwzC,UAAUvwB,QAAQ6H,QAOrC,GAAxB9qB,KAAKwzC,UAAUjoC,MAAe,CAEhC,IAAK,GAAI21C,KAAUlhD,MAAK04C,SAAStE,MAC3Bp0C,KAAK04C,SAAStE,MAAM5uC,eAAe07C,KACrClhD,KAAK04C,SAAStE,MAAM8M,GAAQ31C,OAAQ,QAC7BvL,MAAK04C,SAAStE,MAAM8M,GAK/B,IAAIrhC,GAAM7f,KAAKk/C,WAAW9jB,EACf,OAAPvb,IACFA,EAAM7f,KAAKmhD,WAAW/lB,IAEb,MAAPvb,GACF7f,KAAKohD,aAAavhC,EAIpB,KAAK,GAAIg8B,KAAU77C,MAAK04C,SAASjF,MAC3BzzC,KAAK04C,SAASjF,MAAMjuC,eAAeq2C,KACjCh8B,YAAe1c,IAAQ0c,EAAIxf,IAAMw7C,GAAUh8B,YAAe7c,IAAe,MAAP6c,KACpE7f,KAAKqhD,YAAYrhD,KAAK04C,SAASjF,MAAMoI,UAC9B77C,MAAK04C,SAASjF,MAAMoI,GAIjC77C,MAAKse,WAYTxb,EAAQyO,UAAUyvC,gBAAkB,SAAU5lB,GAC5C,GAOI/6B,GAPAwf,GACF5Y,KAAQjH,KAAK2/C,qBAAqBvkB,EAAQjrB,GAC1C9I,IAAQrH,KAAK6/C,qBAAqBzkB,EAAQhrB,GAC1C8T,MAAQlkB,KAAK2/C,qBAAqBvkB,EAAQjrB,GAC1CgQ,OAAQngB,KAAK6/C,qBAAqBzkB,EAAQhrB,IAIxCkxC,EAAgBthD,KAAK6gD,QAEzB,IAAqB36C,QAAjBlG,KAAK6gD,SAAuB,CAE9B,GAAIpN,GAAQzzC,KAAKyzC,KACjB,KAAKpzC,IAAMozC,GACT,GAAIA,EAAMjuC,eAAenF,GAAK,CAC5B,GAAIm7C,GAAO/H,EAAMpzC,EACjB,IAAwB6F,SAApBs1C,EAAK+F,YAA4B/F,EAAKgG,kBAAkB3hC,GAAM,CAChE7f,KAAK6gD,SAAWrF,CAChB,SAMR,GAAsBt1C,SAAlBlG,KAAK6gD,SAAwB,CAE/B,GAAIzM,GAAQp0C,KAAKo0C,KACjB,KAAK/zC,IAAM+zC,GACT,GAAIA,EAAM5uC,eAAenF,GAAK,CAC5B,GAAIohD,GAAOrN,EAAM/zC,EACjB,IAAIohD,EAAKC,WAAkCx7C,SAApBu7C,EAAKF,YACxBE,EAAKD,kBAAkB3hC,GAAM,CAC/B7f,KAAK6gD,SAAWY,CAChB,SAMR,GAAIzhD,KAAK6gD,UAEP,GAAI7gD,KAAK6gD,UAAYS,EAAe,CAClC,GAAIlvC,GAAKpS,IACJoS,GAAGuvC,QACNvvC,EAAGuvC,MAAQ,GAAIv+C,GAAMgP,EAAG+J,MAAO/J,EAAGohC,UAAUvwB,UAM9C7Q,EAAGuvC,MAAMC,YAAYxmB,EAAQjrB,EAAI,EAAGirB,EAAQhrB,EAAI,GAChDgC,EAAGuvC,MAAME,QAAQzvC,EAAGyuC,SAASU,YAC7BnvC,EAAGuvC,MAAMtgB,YAIPrhC,MAAK2hD,OACP3hD,KAAK2hD,MAAMvgB,QAYjBt+B,EAAQyO,UAAUuvC,gBAAkB,SAAU1lB,GACvCp7B,KAAK6gD,UAAa7gD,KAAKk/C,WAAW9jB,KACrCp7B,KAAK6gD,SAAW36C,OACZlG,KAAK2hD,OACP3hD,KAAK2hD,MAAMvgB,SAajBt+B,EAAQyO,UAAUiQ,QAAU,SAAS5Q,EAAOC,GAC1C7Q,KAAKmc,MAAM3L,MAAMI,MAAQA,EACzB5Q,KAAKmc,MAAM3L,MAAMK,OAASA,EAE1B7Q,KAAKmc,MAAMC,OAAO5L,MAAMI,MAAQ,OAChC5Q,KAAKmc,MAAMC,OAAO5L,MAAMK,OAAS,OAEjC7Q,KAAKmc,MAAMC,OAAOxL,MAAQ5Q,KAAKmc,MAAMC,OAAOC,YAC5Crc,KAAKmc,MAAMC,OAAOvL,OAAS7Q,KAAKmc,MAAMC,OAAOsF,aAEhBxb,SAAzBlG,KAAK8hD,kBACP9hD,KAAK8hD,gBAAgBtxC,MAAMI,MAAQ5Q,KAAKmc,MAAMC,OAAOC,YAAc,MAEzCnW,SAAxBlG,KAAK+hD,gBACgC77C,SAAnClG,KAAK+hD,eAAwB,UAC/B/hD,KAAK+hD,eAAwB,QAAEvxC,MAAMI,MAAQ5Q,KAAKmc,MAAMC,OAAOC,YAAc,KAC7Erc,KAAK+hD,eAAwB,QAAEvxC,MAAMK,OAAS7Q,KAAKmc,MAAMC,OAAOsF,aAAe,MAInF1hB,KAAK6qB,KAAK,UAAWja,MAAM5Q,KAAKmc,MAAMC,OAAOxL,MAAMC,OAAO7Q,KAAKmc,MAAMC,OAAOvL,UAQ9E/N,EAAQyO,UAAUsrC,UAAY,SAASpJ,GACrC,GAAIuO,GAAehiD,KAAKk6C,SAExB,IAAIzG,YAAiB5yC,IAAW4yC,YAAiB3yC,GAC/Cd,KAAKk6C,UAAYzG,MAEd,IAAIA,YAAiB9tC,OACxB3F,KAAKk6C,UAAY,GAAIr5C,GACrBb,KAAKk6C,UAAU5oC,IAAImiC,OAEhB,CAAA,GAAKA,EAIR,KAAM,IAAI1tC,WAAU,4BAHpB/F,MAAKk6C,UAAY,GAAIr5C,GAgBvB,GAVImhD,GAEFrhD,EAAKsH,QAAQjI,KAAKo6C,eAAgB,SAAUlyC,EAAUgB,GACpD84C,EAAarwC,IAAIzI,EAAOhB,KAK5BlI,KAAKyzC,SAEDzzC,KAAKk6C,UAAW,CAElB,GAAI9nC,GAAKpS,IACTW,GAAKsH,QAAQjI,KAAKo6C,eAAgB,SAAUlyC,EAAUgB,GACpDkJ,EAAG8nC,UAAU1oC,GAAGtI,EAAOhB,IAIzB,IAAIkL,GAAMpT,KAAKk6C,UAAUnmC,QACzB/T,MAAKq6C,UAAUjnC,GAEjBpT,KAAKiiD,oBAQPn/C,EAAQyO,UAAU8oC,UAAY,SAASjnC,GAErC,IAAK,GADD/S,GACK6E,EAAI,EAAGC,EAAMiO,EAAI/N,OAAYF,EAAJD,EAASA,IAAK,CAC9C7E,EAAK+S,EAAIlO,EACT,IAAI6L,GAAO/Q,KAAKk6C,UAAU/mC,IAAI9S,GAC1Bm7C,EAAO,GAAIr4C,GAAK4N,EAAM/Q,KAAK44C,OAAQ54C,KAAKu1B,OAAQv1B,KAAKwzC,UAGzD,IAFAxzC,KAAKyzC,MAAMpzC,GAAMm7C,IAEG,GAAfA,EAAKgE,QAAkC,GAAfhE,EAAKiE,QAAgC,OAAXjE,EAAKrrC,GAAyB,OAAXqrC,EAAKprC,GAAa,CAC1F,GAAIoY,GAAS,EAASpV,EAAI/N,OACtB68C,EAAQ,EAAIt9C,KAAK8jB,GAAK9jB,KAAKE,QACZ,IAAf02C,EAAKgE,SAAkBhE,EAAKrrC,EAAIqY,EAAS5jB,KAAKwW,IAAI8mC,IACnC,GAAf1G,EAAKiE,SAAkBjE,EAAKprC,EAAIoY,EAAS5jB,KAAKqW,IAAIinC,IAExDliD,KAAK46C,QAAS,EAEhB56C,KAAKw8C,uBAC4C,GAA7Cx8C,KAAKwzC,UAAUuD,mBAAmBppC,SAAwC,GAArB3N,KAAKkzC,eAC5DlzC,KAAKmiD,eACLniD,KAAK86C,4BAEP96C,KAAKoiD,0BACLpiD,KAAKqiD,kBACLriD,KAAKsiD,kBAAkBtiD,KAAKyzC,OAC5BzzC,KAAKuiD,gBAQPz/C,EAAQyO,UAAU+oC,aAAe,SAASlnC,GAGxC,IAAK,GAFDqgC,GAAQzzC,KAAKyzC,MACbyG,EAAYl6C,KAAKk6C,UACZh1C,EAAI,EAAGC,EAAMiO,EAAI/N,OAAYF,EAAJD,EAASA,IAAK,CAC9C,GAAI7E,GAAK+S,EAAIlO,GACTs2C,EAAO/H,EAAMpzC,GACb0Q,EAAOmpC,EAAU/mC,IAAI9S,EACrBm7C,GAEFA,EAAKgH,cAAczxC,EAAM/Q,KAAKwzC,YAI9BgI,EAAO,GAAIr4C,GAAKs/C,WAAYziD,KAAK44C,OAAQ54C,KAAKu1B,OAAQv1B,KAAKwzC,WAC3DC,EAAMpzC,GAAMm7C,GAGhBx7C,KAAK46C,QAAS,EACmC,GAA7C56C,KAAKwzC,UAAUuD,mBAAmBppC,SAAwC,GAArB3N,KAAKkzC,eAC5DlzC,KAAKmiD,eACLniD,KAAK86C,4BAEP96C,KAAKw8C,uBACLx8C,KAAKqiD,kBACLriD,KAAKsiD,kBAAkB7O,IAQzB3wC,EAAQyO,UAAUgpC,aAAe,SAASnnC,GAExC,IAAK,GADDqgC,GAAQzzC,KAAKyzC,MACRvuC,EAAI,EAAGC,EAAMiO,EAAI/N,OAAYF,EAAJD,EAASA,IAAK,CAC9C,GAAI7E,GAAK+S,EAAIlO,SACNuuC,GAAMpzC,GAEfL,KAAKw8C,uBAC4C,GAA7Cx8C,KAAKwzC,UAAUuD,mBAAmBppC,SAAwC,GAArB3N,KAAKkzC,eAC5DlzC,KAAKmiD,eACLniD,KAAK86C,4BAEP96C,KAAKoiD,0BACLpiD,KAAKqiD,kBACLriD,KAAKiiD,mBACLjiD,KAAKsiD,kBAAkB7O,IASzB3wC,EAAQyO,UAAUurC,UAAY,SAAS1I,GACrC,GAAIsO,GAAe1iD,KAAKm6C,SAExB,IAAI/F,YAAiBvzC,IAAWuzC,YAAiBtzC,GAC/Cd,KAAKm6C,UAAY/F,MAEd,IAAIA,YAAiBzuC,OACxB3F,KAAKm6C,UAAY,GAAIt5C,GACrBb,KAAKm6C,UAAU7oC,IAAI8iC,OAEhB,CAAA,GAAKA,EAIR,KAAM,IAAIruC,WAAU,4BAHpB/F,MAAKm6C,UAAY,GAAIt5C,GAgBvB,GAVI6hD,GAEF/hD,EAAKsH,QAAQjI,KAAKw6C,eAAgB,SAAUtyC,EAAUgB,GACpDw5C,EAAa/wC,IAAIzI,EAAOhB,KAK5BlI,KAAKo0C,SAEDp0C,KAAKm6C,UAAW,CAElB,GAAI/nC,GAAKpS,IACTW,GAAKsH,QAAQjI,KAAKw6C,eAAgB,SAAUtyC,EAAUgB,GACpDkJ,EAAG+nC,UAAU3oC,GAAGtI,EAAOhB,IAIzB,IAAIkL,GAAMpT,KAAKm6C,UAAUpmC,QACzB/T,MAAKy6C,UAAUrnC,GAGjBpT,KAAKqiD,mBAQPv/C,EAAQyO,UAAUkpC,UAAY,SAAUrnC,GAItC,IAAK,GAHDghC,GAAQp0C,KAAKo0C,MACb+F,EAAYn6C,KAAKm6C,UAEZj1C,EAAI,EAAGC,EAAMiO,EAAI/N,OAAYF,EAAJD,EAASA,IAAK,CAC9C,GAAI7E,GAAK+S,EAAIlO,GAETy9C,EAAUvO,EAAM/zC,EAChBsiD,IACFA,EAAQC,YAGV,IAAI7xC,GAAOopC,EAAUhnC,IAAI9S,GAAKwiD,iBAAoB,GAClDzO,GAAM/zC,GAAM,GAAI2C,GAAK+N,EAAM/Q,KAAMA,KAAKwzC,WAGxCxzC,KAAK46C,QAAS,EACd56C,KAAKsiD,kBAAkBlO,GACvBp0C,KAAK8iD,qBAC4C,GAA7C9iD,KAAKwzC,UAAUuD,mBAAmBppC,SAAwC,GAArB3N,KAAKkzC,eAC5DlzC,KAAKmiD,eACLniD,KAAK86C,4BAEP96C,KAAKoiD,2BAQPt/C,EAAQyO,UAAUmpC,aAAe,SAAUtnC,GAGzC,IAAK,GAFDghC,GAAQp0C,KAAKo0C,MACb+F,EAAYn6C,KAAKm6C,UACZj1C,EAAI,EAAGC,EAAMiO,EAAI/N,OAAYF,EAAJD,EAASA,IAAK,CAC9C,GAAI7E,GAAK+S,EAAIlO,GAET6L,EAAOopC,EAAUhnC,IAAI9S,GACrBohD,EAAOrN,EAAM/zC,EACbohD,IAEFA,EAAKmB,aACLnB,EAAKe,cAAczxC,EAAM/Q,KAAKwzC,WAC9BiO,EAAKnO,YAILmO,EAAO,GAAIz+C,GAAK+N,EAAM/Q,KAAMA,KAAKwzC,WACjCxzC,KAAKo0C,MAAM/zC,GAAMohD,GAIrBzhD,KAAK8iD,qBAC4C,GAA7C9iD,KAAKwzC,UAAUuD,mBAAmBppC,SAAwC,GAArB3N,KAAKkzC,eAC5DlzC,KAAKmiD,eACLniD,KAAK86C,4BAEP96C,KAAK46C,QAAS,EACd56C,KAAKsiD,kBAAkBlO,IAQzBtxC,EAAQyO,UAAUopC,aAAe,SAAUvnC,GAEzC,IAAK,GADDghC,GAAQp0C,KAAKo0C,MACRlvC,EAAI,EAAGC,EAAMiO,EAAI/N,OAAYF,EAAJD,EAASA,IAAK,CAC9C,GAAI7E,GAAK+S,EAAIlO,GACTu8C,EAAOrN,EAAM/zC,EACbohD,KACc,MAAZA,EAAKsB,WACA/iD,MAAKgjD,QAAiB,QAAS,MAAEvB,EAAKsB,IAAI1iD,IAEnDohD,EAAKmB,mBACExO,GAAM/zC,IAIjBL,KAAK46C,QAAS,EACd56C,KAAKsiD,kBAAkBlO,GAC0B,GAA7Cp0C,KAAKwzC,UAAUuD,mBAAmBppC,SAAwC,GAArB3N,KAAKkzC,eAC5DlzC,KAAKmiD,eACLniD,KAAK86C,4BAEP96C,KAAKoiD,2BAOPt/C,EAAQyO,UAAU8wC,gBAAkB,WAClC,GAAIhiD,GACAozC,EAAQzzC,KAAKyzC,MACbW,EAAQp0C,KAAKo0C,KACjB,KAAK/zC,IAAMozC,GACLA,EAAMjuC,eAAenF,KACvBozC,EAAMpzC,GAAI+zC,SAId,KAAK/zC,IAAM+zC,GACT,GAAIA,EAAM5uC,eAAenF,GAAK,CAC5B,GAAIohD,GAAOrN,EAAM/zC,EACjBohD,GAAKv7B,KAAO,KACZu7B,EAAKt7B,GAAK,KACVs7B,EAAKnO,YAaXxwC,EAAQyO,UAAU+wC,kBAAoB,SAASziC,GAC7C,GAAIxf,GAGA8Y,EAAWjT,OACXkT,EAAWlT,MACf,KAAK7F,IAAMwf,GACT,GAAIA,EAAIra,eAAenF,GAAK,CAC1B,GAAIwG,GAAQgZ,EAAIxf,GAAIyS,UACN5M,UAAVW,IACFsS,EAAyBjT,SAAbiT,EAA0BtS,EAAQjC,KAAKmG,IAAIlE,EAAOsS,GAC9DC,EAAyBlT,SAAbkT,EAA0BvS,EAAQjC,KAAK6H,IAAI5F,EAAOuS,IAMpE,GAAiBlT,SAAbiT,GAAuCjT,SAAbkT,EAC5B,IAAK/Y,IAAMwf,GACLA,EAAIra,eAAenF,IACrBwf,EAAIxf,GAAI4iD,cAAc9pC,EAAUC,IAUxCtW,EAAQyO,UAAU+M,OAAS,WACzBte,KAAKwhB,QAAQxhB,KAAK4Q,MAAO5Q,KAAK6Q,QAC9B7Q,KAAK84C,WAOPh2C,EAAQyO,UAAUunC,QAAU,WAC1B,GAAIl1B,GAAM5jB,KAAKmc,MAAMC,OAAOyH,WAAW,MAEnCq/B,EAAIljD,KAAKmc,MAAMC,OAAOxL,MACtBhG,EAAI5K,KAAKmc,MAAMC,OAAOvL,MAC1B+S,GAAIE,UAAU,EAAG,EAAGo/B,EAAGt4C,GAGvBgZ,EAAIu/B,OACJv/B,EAAIw/B,UAAUpjD,KAAKsa,YAAYnK,EAAGnQ,KAAKsa,YAAYlK,GACnDwT,EAAI9J,MAAM9Z,KAAK8Z,MAAO9Z,KAAK8Z,OAE3B9Z,KAAK65C,eACH1pC,EAAKnQ,KAAK2/C,qBAAqB,GAC/BvvC,EAAKpQ,KAAK6/C,qBAAqB,IAEjC7/C,KAAK85C,mBACH3pC,EAAKnQ,KAAK2/C,qBAAqB3/C,KAAKmc,MAAMC,OAAOC,aACjDjM,EAAKpQ,KAAK6/C,qBAAqB7/C,KAAKmc,MAAMC,OAAOsF,eAInD1hB,KAAKqjD,gBAAgB,sBAAsBz/B,IACjB,GAAtB5jB,KAAKw/B,KAAKC,UAA4Cv5B,SAAvBlG,KAAKw/B,KAAKC,UAA4D,GAAlCz/B,KAAKwzC,UAAUgF,kBACpFx4C,KAAKqjD,gBAAgB,aAAaz/B,IAGV,GAAtB5jB,KAAKw/B,KAAKC,UAA4Cv5B,SAAvBlG,KAAKw/B,KAAKC,UAA4D,GAAlCz/B,KAAKwzC,UAAUiF,kBACpFz4C,KAAKqjD,gBAAgB,aAAaz/B,GAAI,GAGT,GAA3B5jB,KAAK24C,oBACP34C,KAAKqjD,gBAAgB,oBAAoBz/B,GAO3CA,EAAI0/B,WASNxgD,EAAQyO,UAAUgoC,gBAAkB,SAASgK,EAASC,GAC3Bt9C,SAArBlG,KAAKsa,cACPta,KAAKsa,aACHnK,EAAG,EACHC,EAAG,IAISlK,SAAZq9C,IACFvjD,KAAKsa,YAAYnK,EAAIozC,GAEPr9C,SAAZs9C,IACFxjD,KAAKsa,YAAYlK,EAAIozC,GAGvBxjD,KAAK6qB,KAAK,gBAQZ/nB,EAAQyO,UAAU4tC,gBAAkB,WAClC,OACEhvC,EAAGnQ,KAAKsa,YAAYnK,EACpBC,EAAGpQ,KAAKsa,YAAYlK,IASxBtN,EAAQyO,UAAUsI,UAAY,SAASC,GACrC9Z,KAAK8Z,MAAQA,GAQfhX,EAAQyO,UAAUwtC,UAAY,WAC5B,MAAO/+C,MAAK8Z,OAUdhX,EAAQyO,UAAUouC,qBAAuB,SAASxvC,GAChD,OAAQA,EAAInQ,KAAKsa,YAAYnK,GAAKnQ,KAAK8Z,OAUzChX,EAAQyO,UAAUquC,qBAAuB,SAASzvC,GAChD,MAAOA,GAAInQ,KAAK8Z,MAAQ9Z,KAAKsa,YAAYnK,GAU3CrN,EAAQyO,UAAUsuC,qBAAuB,SAASzvC,GAChD,OAAQA,EAAIpQ,KAAKsa,YAAYlK,GAAKpQ,KAAK8Z,OAUzChX,EAAQyO,UAAUuuC,qBAAuB,SAAS1vC,GAChD,MAAOA,GAAIpQ,KAAK8Z,MAAQ9Z,KAAKsa,YAAYlK,GAU3CtN,EAAQyO,UAAUqvC,YAAc,SAASx+B,GACvC,OAAQjS,EAAEnQ,KAAK4/C,qBAAqBx9B,EAAIjS,GAAGC,EAAEpQ,KAAK8/C,qBAAqB19B,EAAIhS,KAS7EtN,EAAQyO,UAAU+uC,YAAc,SAASl+B,GACvC,OAAQjS,EAAEnQ,KAAK2/C,qBAAqBv9B,EAAIjS,GAAGC,EAAEpQ,KAAK6/C,qBAAqBz9B,EAAIhS,KAU7EtN,EAAQyO,UAAUkyC,WAAa,SAAS7/B,EAAI8/B,GACvBx9C,SAAfw9C,IACFA,GAAa,EAIf,IAAIjQ,GAAQzzC,KAAKyzC,MACbnJ,IAEJ,KAAK,GAAIjqC,KAAMozC,GACTA,EAAMjuC,eAAenF,KACvBozC,EAAMpzC,GAAIsjD,eAAe3jD,KAAK8Z,MAAM9Z,KAAK65C,cAAc75C,KAAK85C,mBACxDrG,EAAMpzC,GAAI++C,aACZ9U,EAAS1iC,KAAKvH,IAGVozC,EAAMpzC,GAAIujD,UAAYF,IACxBjQ,EAAMpzC,GAAIwjD,KAAKjgC,GAOvB,KAAK,GAAI/Y,GAAI,EAAGi5C,EAAOxZ,EAASjlC,OAAYy+C,EAAJj5C,EAAUA,KAC5C4oC,EAAMnJ,EAASz/B,IAAI+4C,UAAYF,IACjCjQ,EAAMnJ,EAASz/B,IAAIg5C,KAAKjgC,IAW9B9gB,EAAQyO,UAAUwyC,WAAa,SAASngC,GACtC,GAAIwwB,GAAQp0C,KAAKo0C,KACjB,KAAK,GAAI/zC,KAAM+zC,GACb,GAAIA,EAAM5uC,eAAenF,GAAK,CAC5B,GAAIohD,GAAOrN,EAAM/zC,EACjBohD,GAAK3jB,SAAS99B,KAAK8Z,OACf2nC,EAAKC,WACPtN,EAAM/zC,GAAIwjD,KAAKjgC,KAYvB9gB,EAAQyO,UAAUyyC,kBAAoB,SAASpgC,GAC7C,GAAIwwB,GAAQp0C,KAAKo0C,KACjB,KAAK,GAAI/zC,KAAM+zC,GACTA,EAAM5uC,eAAenF,IACvB+zC,EAAM/zC,GAAI2jD,kBAAkBpgC,IASlC9gB,EAAQyO,UAAUyrC,WAAa,WACgB,GAAzCh9C,KAAKwzC,UAAU0D,wBACjBl3C,KAAKikD,qBAKP,KADA,GAAI7uC,GAAQ,EACLpV,KAAK46C,QAAUxlC,EAAQpV,KAAKwzC,UAAUiE,yBAC3Cz3C,KAAKkkD,eACL9uC,GAEFpV,MAAK+6C,YAAW,GAAM,GACuB,GAAzC/6C,KAAKwzC,UAAU0D,wBACjBl3C,KAAKmkD,sBAEPnkD,KAAK6qB,KAAK,cAAcu5B,WAAWhvC,KASrCtS,EAAQyO,UAAU0yC,oBAAsB,WACtC,GAAIxQ,GAAQzzC,KAAKyzC,KACjB,KAAK,GAAIpzC,KAAMozC,GACTA,EAAMjuC,eAAenF,IACJ,MAAfozC,EAAMpzC,GAAI8P,GAA4B,MAAfsjC,EAAMpzC,GAAI+P,IACnCqjC,EAAMpzC,GAAIgkD,UAAUl0C,EAAIsjC,EAAMpzC,GAAIm/C,OAClC/L,EAAMpzC,GAAIgkD,UAAUj0C,EAAIqjC,EAAMpzC,GAAIo/C,OAClChM,EAAMpzC,GAAIm/C,QAAS,EACnB/L,EAAMpzC,GAAIo/C,QAAS,IAW3B38C,EAAQyO,UAAU4yC,oBAAsB,WACtC,GAAI1Q,GAAQzzC,KAAKyzC,KACjB,KAAK,GAAIpzC,KAAMozC,GACTA,EAAMjuC,eAAenF,IACM,MAAzBozC,EAAMpzC,GAAIgkD,UAAUl0C,IACtBsjC,EAAMpzC,GAAIm/C,OAAS/L,EAAMpzC,GAAIgkD,UAAUl0C,EACvCsjC,EAAMpzC,GAAIo/C,OAAShM,EAAMpzC,GAAIgkD,UAAUj0C,IAa/CtN,EAAQyO,UAAU+yC,UAAY,SAASC,GACrC,GAAI9Q,GAAQzzC,KAAKyzC,KACjB,KAAK,GAAIpzC,KAAMozC,GACb,GAAIA,EAAMjuC,eAAenF,IAAOozC,EAAMpzC,GAAImkD,SAASD,GACjD,OAAO,CAGX,QAAO,GAUTzhD,EAAQyO,UAAUkzC,mBAAqB,WACrC,GAEI5I,GAFA/rB,EAAW9vB,KAAKgzC,wBAChBS,EAAQzzC,KAAKyzC,MAEbiR,GAAe,CAEnB,IAAI1kD,KAAKwzC,UAAU+D,YAAc,EAC/B,IAAKsE,IAAUpI,GACTA,EAAMjuC,eAAeq2C,KACvBpI,EAAMoI,GAAQ8I,oBAAoB70B,EAAU9vB,KAAKwzC,UAAU+D,aAC3DmN,GAAe,OAKnB,KAAK7I,IAAUpI,GACTA,EAAMjuC,eAAeq2C,KACvBpI,EAAMoI,GAAQ+I,aAAa90B,GAC3B40B,GAAe,EAKrB,IAAoB,GAAhBA,EAAsB,CACxB,GAAIG,GAAgB7kD,KAAKwzC,UAAUgE,YAAc5yC,KAAK6H,IAAIzM,KAAK8Z,MAAM,IACjE+qC,GAAgB,GAAI7kD,KAAKwzC,UAAU+D,YACrCv3C,KAAK46C,QAAS,GAGd56C,KAAK46C,OAAS56C,KAAKskD,UAAUO,GACV,GAAf7kD,KAAK46C,QACP56C,KAAK6qB,KAAK,cAAcu5B,WAAW,OAErCpkD,KAAK46C,OAAS56C,KAAK46C,QAAU56C,KAAK60C,oBAWxC/xC,EAAQyO,UAAU2yC,aAAe,WAC1BlkD,KAAKw5C,kBACJx5C,KAAK46C,SACP56C,KAAK8kD,sBAAsB,+BAC3B9kD,KAAK8kD,sBAAsB,sBACvB9kD,KAAKwzC,UAAU2D,cACjBn3C,KAAK+kD,mBAAmB,sBAE1B/kD,KAAK87C,YAAY97C,KAAKu7C,eAY5Bz4C,EAAQyO,UAAUyzC,eAAiB,WAEjChlD,KAAK66C,MAAQ30C,OAEblG,KAAKilD,oBAGLjlD,KAAK0O,OAGL,IAAIw2C,GAAkBlhD,KAAK01B,MACvByrB,EAAW,CACfnlD,MAAKkkD,cAEL,KADA,GAAIkB,GAAephD,KAAK01B,MAAQwrB,EACzBE,EAAe,IAAKplD,KAAK6yC,eAAiB7yC,KAAK8yC,aAAeqS,EAAWnlD,KAAK+yC,0BACnF/yC,KAAKkkD,eACLkB,EAAephD,KAAK01B,MAAQwrB,EAC5BC,GAIF,IAAIrS,GAAa9uC,KAAK01B,KACtB15B,MAAK84C,UACL94C,KAAK8yC,WAAa9uC,KAAK01B,MAAQoZ,GAIX,mBAAX5rC,UACTA,OAAOm+C,sBAAwBn+C,OAAOm+C,uBAAyBn+C,OAAOo+C,0BACvCp+C,OAAOq+C,6BAA+Br+C,OAAOs+C,yBAM9E1iD,EAAQyO,UAAU7C,MAAQ,WACxB,GAAI1O,KAAK46C,QAA6B,GAAnB56C,KAAK+4C,YAAsC,GAAnB/4C,KAAKg5C,YAAyC,GAAtBh5C,KAAKi5C,eACtE,IAAKj5C,KAAK66C,MAAO,CACf,GAAI4K,GAAK78C,UAAUC,UAAU68C,cAEzBC,GAAkB,CACQ,KAA1BF,EAAG99C,QAAQ,YACbg+C,GAAkB,EAEa,IAAxBF,EAAG99C,QAAQ,WACd89C,EAAG99C,QAAQ,WAAa,KAC1Bg+C,GAAkB,GAKpB3lD,KAAK66C,MADgB,GAAnB8K,EACWz+C,OAAOqkB,WAAWvrB,KAAKglD,eAAe/yB,KAAKjyB,MAAOA,KAAK6yC,gBAGvD3rC,OAAOm+C,sBAAsBrlD,KAAKglD,eAAe/yB,KAAKjyB,MAAOA,KAAK6yC,qBAKnF7yC,MAAK84C,WAUTh2C,EAAQyO,UAAU0zC,kBAAoB,WACpC,GAAuB,GAAnBjlD,KAAK+4C,YAAsC,GAAnB/4C,KAAKg5C,WAAiB,CAChD,GAAI1+B,GAActa,KAAKm/C,iBACvBn/C,MAAKu5C,gBAAgBj/B,EAAYnK,EAAEnQ,KAAK+4C,WAAYz+B,EAAYlK,EAAEpQ,KAAKg5C,YAEzE,GAA0B,GAAtBh5C,KAAKi5C,cAAoB,CAC3B,GAAIhwB,IACF9Y,EAAGnQ,KAAKmc,MAAMC,OAAOC,YAAc,EACnCjM,EAAGpQ,KAAKmc,MAAMC,OAAOsF,aAAe,EAEtC1hB,MAAKmgD,MAAMngD,KAAK8Z,OAAO,EAAI9Z,KAAKi5C,eAAgBhwB,KAQpDnmB,EAAQyO,UAAUq0C,aAAe,WACF,GAAzB5lD,KAAKw5C,iBACPx5C,KAAKw5C,kBAAmB,GAGxBx5C,KAAKw5C,kBAAmB,EACxBx5C,KAAK0O,UAWT5L,EAAQyO,UAAUmsC,uBAAyB,SAASzB,GAIlD,GAHqB/1C,SAAjB+1C,IACFA,GAAe,GAE0B,GAAvCj8C,KAAKwzC,UAAU2D,aAAaxpC,SAA0D,GAAvC3N,KAAKwzC,UAAU2D,aAAaC,QAAiB,CAC9Fp3C,KAAK8iD,oBAEL,KAAK,GAAIjH,KAAU77C,MAAKgjD,QAAiB,QAAS,MAC5ChjD,KAAKgjD,QAAiB,QAAS,MAAEx9C,eAAeq2C,IACW31C,SAAzDlG,KAAKo0C,MAAMp0C,KAAKgjD,QAAiB,QAAS,MAAEnH,WACvC77C,MAAKgjD,QAAiB,QAAS,MAAEnH,OAK3C,CAEH77C,KAAKgjD,QAAiB,QAAS,QAC/B,KAAK,GAAI9B,KAAUlhD,MAAKo0C,MAClBp0C,KAAKo0C,MAAM5uC,eAAe07C,KAC5BlhD,KAAKo0C,MAAM8M,GAAQ2E,QAAS,EAC5B7lD,KAAKo0C,MAAM8M,GAAQ6B,IAAM,MAM/B/iD,KAAKoiD,0BACAnG,IACHj8C,KAAK46C,QAAS,EACd56C,KAAK0O,UAWT5L,EAAQyO,UAAUuxC,mBAAqB,WACrC,GAA2C,GAAvC9iD,KAAKwzC,UAAU2D,aAAaxpC,SAA0D,GAAvC3N,KAAKwzC,UAAU2D,aAAaC,QAC7E,IAAK,GAAI8J,KAAUlhD,MAAKo0C,MACtB,GAAIp0C,KAAKo0C,MAAM5uC,eAAe07C,GAAS,CACrC,GAAIO,GAAOzhD,KAAKo0C,MAAM8M,EACtB,IAAgB,MAAZO,EAAKsB,IAAa,CACpBtB,EAAKoE,QAAS,CACd,IAAIhK,GAAS,UAAU5pC,OAAOwvC,EAAKphD,GACnCL,MAAKgjD,QAAiB,QAAS,MAAEnH,GAAU,GAAI14C,IACtC9C,GAAGw7C,EACFiK,KAAK,EACLlS,MAAM,SACNC,MAAM,GACNkS,mBAAmB,SACb/lD,KAAKwzC,WACrBiO,EAAKsB,IAAM/iD,KAAKgjD,QAAiB,QAAS,MAAEnH,GAC5C4F,EAAKsB,IAAIiD,aAAevE,EAAKphD,GAC7BohD,EAAKwE,wBAYfnjD,EAAQyO,UAAUohC,wBAA0B,WAC1C,IAAK,GAAIuT,KAAShL,GACZA,EAAY11C,eAAe0gD,KAC7BpjD,EAAQyO,UAAU20C,GAAShL,EAAYgL,KAQ7CpjD,EAAQyO,UAAU40C,cAAgB,WAChC,GAAIC,KACJ,KAAK,GAAIvK,KAAU77C,MAAKyzC,MACtB,GAAIzzC,KAAKyzC,MAAMjuC,eAAeq2C,GAAS,CACrC,GAAIL,GAAOx7C,KAAKyzC,MAAMoI,GAClBwK,GAAkBrmD,KAAKyzC,MAAM+L,OAC7B8G,GAAkBtmD,KAAKyzC,MAAMgM,QAC7Bz/C,KAAKk6C,UAAUjpC,MAAM4qC,GAAQ1rC,GAAKvL,KAAK+lB,MAAM6wB,EAAKrrC,IAAMnQ,KAAKk6C,UAAUjpC,MAAM4qC,GAAQzrC,GAAKxL,KAAK+lB,MAAM6wB,EAAKprC,KAC5Gg2C,EAAUx+C,MAAMvH,GAAGw7C,EAAO1rC,EAAEvL,KAAK+lB,MAAM6wB,EAAKrrC,GAAGC,EAAExL,KAAK+lB,MAAM6wB,EAAKprC,GAAGi2C,eAAeA,EAAeC,eAAeA,IAIvHtmD,KAAKk6C,UAAUnnC,OAAOqzC,IAUxBtjD,EAAQyO,UAAUg1C,YAAc,SAAU1K,EAAQK,GAChD,GAAIl8C,KAAKyzC,MAAMjuC,eAAeq2C,GAAS,CACnB31C,SAAdg2C,IACFA,EAAYl8C,KAAK++C,YAEnB,IAAIyH,IAAer2C,EAAGnQ,KAAKyzC,MAAMoI,GAAQ1rC,EAAGC,EAAGpQ,KAAKyzC,MAAMoI,GAAQzrC,GAE9Dq2C,EAAgBvK,CACpBl8C,MAAK6Z,UAAU4sC,EAEf,IAAIC,GAAe1mD,KAAKsgD,aAAanwC,EAAE,GAAMnQ,KAAKmc,MAAMC,OAAOxL,MAAMR,EAAE,GAAMpQ,KAAKmc,MAAMC,OAAOvL,SAC3FyJ,EAActa,KAAKm/C,kBAEnBwH,GAAsBx2C,EAAEu2C,EAAav2C,EAAIq2C,EAAar2C,EAChCC,EAAEs2C,EAAat2C,EAAIo2C,EAAap2C,EAE1DpQ,MAAKu5C,gBAAgBj/B,EAAYnK,EAAIs2C,EAAgBE,EAAmBx2C,EACnDmK,EAAYlK,EAAIq2C,EAAgBE,EAAmBv2C,GACxEpQ,KAAKse,aAGL3P,SAAQC,IAAI,iCAIhB/O,EAAOD,QAAUkD,GAKb,SAASjD,EAAQD,EAASM,GAoB9B,QAAS8C,GAAMy/C,EAAY1/C,EAASywC,GAClC,IAAKzwC,EACH,KAAM,qBAER/C,MAAK+C,QAAUA,EAGf/C,KAAK+jB,SAAWyvB,EAAUY,MAAMrwB,SAChC/jB,KAAKgkB,SAAWwvB,EAAUY,MAAMpwB,SAGhChkB,KAAKK,GAAS6F,OACdlG,KAAK4mD,OAAS1gD,OACdlG,KAAK6mD,KAAS3gD,OACdlG,KAAKwQ,MAASgjC,EAAUY,MAAM5jC,MAC9BxQ,KAAKo/B,MAASl5B,OACdlG,KAAK4Q,MAAS4iC,EAAUY,MAAMxjC,MAC9B5Q,KAAKq0C,yBAA2Bb,EAAUY,MAAMC,yBAChDr0C,KAAK8mD,cAAgB9mD,KAAK4Q,MAAQ5Q,KAAKq0C,yBACvCr0C,KAAKs0C,WAAad,EAAUY,MAAME,WAClCt0C,KAAK6G,MAASX,OACdlG,KAAKqF,OAASmuC,EAAUsB,QAAQK,aAChCn1C,KAAK+mD,cAAe,EACpB/mD,KAAKsqC,UAAW,EAChBtqC,KAAKuL,OAAQ,EACbvL,KAAKm3C,aAAe3D,EAAU2D,aAC9Bn3C,KAAKs3C,oBAAsB9D,EAAU8D,oBACrCt3C,KAAKw0C,iBAAmBhB,EAAUY,MAAMI,iBACxCx0C,KAAK40C,aAAepB,EAAUY,MAAMQ,aAEpC50C,KAAKkmB,KAAO,KACZlmB,KAAKmmB,GAAK,KACVnmB,KAAK+iD,IAAM,KAIX/iD,KAAKgnD,kBACLhnD,KAAKinD,gBAELjnD,KAAK0hD,WAAY,EAKjB1hD,KAAKy0C,KAAO9zC,EAAKqE,UAAWwuC,EAAUY,MAAMK,MAE5Cz0C,KAAKuK,OAAeA,MAAMipC,EAAUY,MAAM7pC,MAAMA,MAC5Be,UAAUkoC,EAAUY,MAAM7pC,MAAMe,UAChCC,MAAMioC,EAAUY,MAAM7pC,MAAMgB,OAChDvL,KAAKknD,YAAc,EACnBlnD,KAAKmnD,aAAc,EAEnBnnD,KAAKwiD,cAAcC,EAAYjP,GAE/BxzC,KAAKonD,qBAAsB,EAC3BpnD,KAAKqnD,cAAgBnhC,KAAK,KAAMC,GAAG,KAAMmhC,cACzCtnD,KAAKunD,cAAgB,KA1EvB,GAAI5mD,GAAOT,EAAoB,GAC3BiD,EAAOjD,EAAoB,GAiF/B8C,GAAKuO,UAAUixC,cAAgB,SAASC,EAAYjP,GAClD,GAAKiP,EAmEL,OA/DwBv8C,SAApBu8C,EAAWv8B,OAA+BlmB,KAAK4mD,OAASnE,EAAWv8B,MACjDhgB,SAAlBu8C,EAAWt8B,KAA+BnmB,KAAK6mD,KAAOpE,EAAWt8B,IAE/CjgB,SAAlBu8C,EAAWpiD,KAA+BL,KAAKK,GAAKoiD,EAAWpiD,IAC1C6F,SAArBu8C,EAAWjyC,QAA+BxQ,KAAKwQ,MAAQiyC,EAAWjyC,OAC7CtK,SAArBu8C,EAAWl9B,QAA+BvlB,KAAKulB,MAAQk9B,EAAWl9B,OAElEvlB,KAAKulB,QACPvlB,KAAKg0C,SAAWR,EAAUY,MAAMJ,SAChCh0C,KAAKi0C,SAAWT,EAAUY,MAAMH,SAChCj0C,KAAK+zC,UAAYP,EAAUY,MAAML,UACjC/zC,KAAKu0C,SAAWf,EAAUY,MAAMG,SAEHruC,SAAzBu8C,EAAW1O,YAA2B/zC,KAAK+zC,UAAY0O,EAAW1O,WAC1C7tC,SAAxBu8C,EAAWzO,WAA2Bh0C,KAAKg0C,SAAWyO,EAAWzO,UACzC9tC,SAAxBu8C,EAAWxO,WAA2Bj0C,KAAKi0C,SAAWwO,EAAWxO,UACzC/tC,SAAxBu8C,EAAWlO,WAA2Bv0C,KAAKu0C,SAAWkO,EAAWlO,WAG9CruC,SAArBu8C,EAAWrjB,QAA6Bp/B,KAAKo/B,MAAQqjB,EAAWrjB,OAC3Cl5B,SAArBu8C,EAAW7xC,QAA6B5Q,KAAK4Q,MAAQ6xC,EAAW7xC,OACxB1K,SAAxCu8C,EAAWpO,2BAC6Br0C,KAAKq0C,yBAA2BoO,EAAWpO,0BACzDnuC,SAA1Bu8C,EAAWnO,aAA6Bt0C,KAAKs0C,WAAamO,EAAWnO,YAChDpuC,SAArBu8C,EAAW57C,QAA6B7G,KAAK6G,MAAQ47C,EAAW57C,OAC1CX,SAAtBu8C,EAAWp9C,SAA6BrF,KAAKqF,OAASo9C,EAAWp9C,OACzBrF,KAAK+mD,cAAe,GAG5B7gD,SAAhCu8C,EAAWjO,mBAAuCx0C,KAAKw0C,iBAAmBiO,EAAWjO,kBAEzDtuC,SAA5Bu8C,EAAW7N,eAAmC50C,KAAK40C,aAAe6N,EAAW7N,cAK7E6N,EAAWhO,OACkBvuC,SAA3Bu8C,EAAWhO,KAAKpvC,SAA0BrF,KAAKy0C,KAAKpvC,OAASo9C,EAAWhO,KAAKpvC,QACrDa,SAAxBu8C,EAAWhO,KAAKC,MAA0B10C,KAAKy0C,KAAKC,IAAM+N,EAAWhO,KAAKC,KAC5CxuC,SAA9Bu8C,EAAWhO,KAAKE,YAA0B30C,KAAKy0C,KAAKE,UAAY8N,EAAWhO,KAAKE,YAG7DzuC,SAArBu8C,EAAWl4C,QACT5J,EAAKkD,SAAS4+C,EAAWl4C,QAC3BvK,KAAKuK,MAAMA,MAAQk4C,EAAWl4C,MAC9BvK,KAAKuK,MAAMe,UAAYm3C,EAAWl4C,QAGHrE,SAA3Bu8C,EAAWl4C,MAAMA,QAA0BvK,KAAKuK,MAAMA,MAAQk4C,EAAWl4C,MAAMA,OAChDrE,SAA/Bu8C,EAAWl4C,MAAMe,YAA0BtL,KAAKuK,MAAMe,UAAYm3C,EAAWl4C,MAAMe,WACxDpF,SAA3Bu8C,EAAWl4C,MAAMgB,QAA0BvL,KAAKuK,MAAMgB,MAAQk3C,EAAWl4C,MAAMgB,SAKvFvL,KAAKszC,UAELtzC,KAAKknD,WAAalnD,KAAKknD,YAAoChhD,SAArBu8C,EAAW7xC,MACjD5Q,KAAKmnD,YAAcnnD,KAAKmnD,aAAsCjhD,SAAtBu8C,EAAWp9C,OAEnDrF,KAAK8mD,cAAgB9mD,KAAK4Q,MAAQ5Q,KAAKq0C,yBAG/Br0C,KAAKwQ,OACX,IAAK,OAAiBxQ,KAAK6jD,KAAO7jD,KAAKwnD,SAAW,MAClD,KAAK,QAAiBxnD,KAAK6jD,KAAO7jD,KAAKynD,UAAY,MACnD,KAAK,eAAiBznD,KAAK6jD,KAAO7jD,KAAK0nD,gBAAkB,MACzD,KAAK,YAAiB1nD,KAAK6jD,KAAO7jD,KAAK2nD,aAAe,MACtD,SAAsB3nD,KAAK6jD,KAAO7jD,KAAKwnD,YAO3CxkD,EAAKuO,UAAU+hC,QAAU,WACvBtzC,KAAK4iD,aAEL5iD,KAAKkmB,KAAOlmB,KAAK+C,QAAQ0wC,MAAMzzC,KAAK4mD,SAAW,KAC/C5mD,KAAKmmB,GAAKnmB,KAAK+C,QAAQ0wC,MAAMzzC,KAAK6mD,OAAS,KAC3C7mD,KAAK0hD,UAAa1hD,KAAKkmB,MAAQlmB,KAAKmmB,GAEhCnmB,KAAK0hD,WACP1hD,KAAKkmB,KAAK0hC,WAAW5nD,MACrBA,KAAKmmB,GAAGyhC,WAAW5nD,QAGfA,KAAKkmB,MACPlmB,KAAKkmB,KAAK2hC,WAAW7nD,MAEnBA,KAAKmmB,IACPnmB,KAAKmmB,GAAG0hC,WAAW7nD,QAQzBgD,EAAKuO,UAAUqxC,WAAa,WACtB5iD,KAAKkmB,OACPlmB,KAAKkmB,KAAK2hC,WAAW7nD,MACrBA,KAAKkmB,KAAO,MAEVlmB,KAAKmmB,KACPnmB,KAAKmmB,GAAG0hC,WAAW7nD,MACnBA,KAAKmmB,GAAK,MAGZnmB,KAAK0hD,WAAY,GAQnB1+C,EAAKuO,UAAUgwC,SAAW,WACxB,MAA6B,kBAAfvhD,MAAKo/B,MAAuBp/B,KAAKo/B,QAAUp/B,KAAKo/B,OAQhEp8B,EAAKuO,UAAUuB,SAAW,WACxB,MAAO9S,MAAK6G,OASd7D,EAAKuO,UAAU0xC,cAAgB,SAASl4C,EAAK0B,GAC3C,IAAKzM,KAAKknD,YAA6BhhD,SAAflG,KAAK6G,MAAqB,CAChD,GAAIiT,IAAS9Z,KAAKgkB,SAAWhkB,KAAK+jB,WAAatX,EAAM1B,EACrD/K,MAAK4Q,OAAS5Q,KAAK6G,MAAQkE,GAAO+O,EAAQ9Z,KAAK+jB,WAUnD/gB,EAAKuO,UAAUsyC,KAAO,WACpB,KAAM,uCAQR7gD,EAAKuO,UAAUiwC,kBAAoB,SAAS3hC,GAC1C,GAAI7f,KAAK0hD,UAAW,CAClB,GAAIn1B,GAAU,GACVu7B,EAAQ9nD,KAAKkmB,KAAK/V,EAClB43C,EAAQ/nD,KAAKkmB,KAAK9V,EAClB43C,EAAMhoD,KAAKmmB,GAAGhW,EACd83C,EAAMjoD,KAAKmmB,GAAG/V,EACd83C,EAAOroC,EAAI5Y,KACXkhD,EAAOtoC,EAAIxY,IAEX4gB,EAAOjoB,KAAKooD,mBAAmBN,EAAOC,EAAOC,EAAKC,EAAKC,EAAMC,EAEjE,OAAe57B,GAAPtE,EAGR,OAAO,GAIXjlB,EAAKuO,UAAU82C,UAAY,WACzB,GAAIC,GAAWtoD,KAAKuK,KAgBpB,OAfyB,MAArBvK,KAAK40C,aACP0T,GACEh9C,UAAWtL,KAAKmmB,GAAG5b,MAAMe,UAAUD,OACnCE,MAAOvL,KAAKmmB,GAAG5b,MAAMgB,MAAMF,OAC3Bd,MAAOvK,KAAKmmB,GAAG5b,MAAMc,SAGK,QAArBrL,KAAK40C,cAA+C,GAArB50C,KAAK40C,gBAC3C0T,GACEh9C,UAAWtL,KAAKkmB,KAAK3b,MAAMe,UAAUD,OACrCE,MAAOvL,KAAKkmB,KAAK3b,MAAMgB,MAAMF,OAC7Bd,MAAOvK,KAAKkmB,KAAK3b,MAAMc,SAIN,GAAjBrL,KAAKsqC,SAA4Bge,EAASh9C,UACvB,GAAdtL,KAAKuL,MAAuB+8C,EAAS/8C,MACT+8C,EAAS/9C,OAWhDvH,EAAKuO,UAAUi2C,UAAY,SAAS5jC,GAKlC,GAHAA,EAAIY,YAAcxkB,KAAKqoD,YACvBzkC,EAAIO,UAAcnkB,KAAKuoD,gBAEnBvoD,KAAKkmB,MAAQlmB,KAAKmmB,GAAI,CAExB,GAGI7V,GAHAyyC,EAAM/iD,KAAKwoD,MAAM5kC,EAIrB,IAAI5jB,KAAKulB,MAAO,CACd,GAAiC,GAA7BvlB,KAAKm3C,aAAaxpC,SAA0B,MAAPo1C,EAAa,CACpD,GAAI0F,GAAY,IAAK,IAAKzoD,KAAKkmB,KAAK/V,EAAI4yC,EAAI5yC,GAAK,IAAKnQ,KAAKmmB,GAAGhW,EAAI4yC,EAAI5yC,IAClEu4C,EAAY,IAAK,IAAK1oD,KAAKkmB,KAAK9V,EAAI2yC,EAAI3yC,GAAK,IAAKpQ,KAAKmmB,GAAG/V,EAAI2yC,EAAI3yC,GACtEE,IAASH,EAAEs4C,EAAWr4C,EAAEs4C,OAGxBp4C,GAAQtQ,KAAK2oD,aAAa,GAE5B3oD,MAAK4oD,OAAOhlC,EAAK5jB,KAAKulB,MAAOjV,EAAMH,EAAGG,EAAMF,QAG3C,CACH,GAAID,GAAGC,EACHoY,EAASxoB,KAAKqF,OAAS,EACvBm2C,EAAOx7C,KAAKkmB,IACXs1B,GAAK5qC,OACR4qC,EAAKqN,OAAOjlC,GAEV43B,EAAK5qC,MAAQ4qC,EAAK3qC,QACpBV,EAAIqrC,EAAKrrC,EAAIqrC,EAAK5qC,MAAQ,EAC1BR,EAAIorC,EAAKprC,EAAIoY,IAGbrY,EAAIqrC,EAAKrrC,EAAIqY,EACbpY,EAAIorC,EAAKprC,EAAIorC,EAAK3qC,OAAS,GAE7B7Q,KAAK8oD,QAAQllC,EAAKzT,EAAGC,EAAGoY,GACxBlY,EAAQtQ,KAAK+oD,eAAe54C,EAAGC,EAAGoY,EAAQ,IAC1CxoB,KAAK4oD,OAAOhlC,EAAK5jB,KAAKulB,MAAOjV,EAAMH,EAAGG,EAAMF,KAUhDpN,EAAKuO,UAAUg3C,cAAgB,WAC7B,MAAqB,IAAjBvoD,KAAKsqC,SACA1lC,KAAKmG,IAAI/K,KAAK8mD,cAAe9mD,KAAKgkB,UAAUhkB,KAAKgpD,gBAGtC,GAAdhpD,KAAKuL,MACA3G,KAAKmG,IAAI/K,KAAKs0C,WAAYt0C,KAAKgkB,UAAUhkB,KAAKgpD,gBAG9ChpD,KAAK4Q,MAAM5Q,KAAKgpD,iBAK7BhmD,EAAKuO,UAAU03C,mBAAqB,WAClC,GAAIC,GAAO,KACPC,EAAO,KACP/M,EAASp8C,KAAKm3C,aAAaE,UAC3B/wC,EAAOtG,KAAKm3C,aAAa7wC,KAEzBmV,EAAK7W,KAAK+iB,IAAI3nB,KAAKkmB,KAAK/V,EAAInQ,KAAKmmB,GAAGhW,GACpCuL,EAAK9W,KAAK+iB,IAAI3nB,KAAKkmB,KAAK9V,EAAIpQ,KAAKmmB,GAAG/V,EA2JxC,OA1JY,YAAR9J,GAA8B,iBAARA,EACpB1B,KAAK+iB,IAAI3nB,KAAKkmB,KAAK/V,EAAInQ,KAAKmmB,GAAGhW,GAAKvL,KAAK+iB,IAAI3nB,KAAKkmB,KAAK9V,EAAIpQ,KAAKmmB,GAAG/V,IACjEpQ,KAAKkmB,KAAK9V,EAAIpQ,KAAKmmB,GAAG/V,EACpBpQ,KAAKkmB,KAAK/V,EAAInQ,KAAKmmB,GAAGhW,GACxB+4C,EAAOlpD,KAAKkmB,KAAK/V,EAAIisC,EAAS1gC,EAC9BytC,EAAOnpD,KAAKkmB,KAAK9V,EAAIgsC,EAAS1gC,GAEvB1b,KAAKkmB,KAAK/V,EAAInQ,KAAKmmB,GAAGhW,IAC7B+4C,EAAOlpD,KAAKkmB,KAAK/V,EAAIisC,EAAS1gC,EAC9BytC,EAAOnpD,KAAKkmB,KAAK9V,EAAIgsC,EAAS1gC,GAGzB1b,KAAKkmB,KAAK9V,EAAIpQ,KAAKmmB,GAAG/V,IACzBpQ,KAAKkmB,KAAK/V,EAAInQ,KAAKmmB,GAAGhW,GACxB+4C,EAAOlpD,KAAKkmB,KAAK/V,EAAIisC,EAAS1gC,EAC9BytC,EAAOnpD,KAAKkmB,KAAK9V,EAAIgsC,EAAS1gC,GAEvB1b,KAAKkmB,KAAK/V,EAAInQ,KAAKmmB,GAAGhW,IAC7B+4C,EAAOlpD,KAAKkmB,KAAK/V,EAAIisC,EAAS1gC,EAC9BytC,EAAOnpD,KAAKkmB,KAAK9V,EAAIgsC,EAAS1gC,IAGtB,YAARpV,IACF4iD,EAAY9M,EAAS1gC,EAAdD,EAAmBzb,KAAKkmB,KAAK/V,EAAI+4C,IAGnCtkD,KAAK+iB,IAAI3nB,KAAKkmB,KAAK/V,EAAInQ,KAAKmmB,GAAGhW,GAAKvL,KAAK+iB,IAAI3nB,KAAKkmB,KAAK9V,EAAIpQ,KAAKmmB,GAAG/V,KACtEpQ,KAAKkmB,KAAK9V,EAAIpQ,KAAKmmB,GAAG/V,EACpBpQ,KAAKkmB,KAAK/V,EAAInQ,KAAKmmB,GAAGhW,GACxB+4C,EAAOlpD,KAAKkmB,KAAK/V,EAAIisC,EAAS3gC,EAC9B0tC,EAAOnpD,KAAKkmB,KAAK9V,EAAIgsC,EAAS3gC,GAEvBzb,KAAKkmB,KAAK/V,EAAInQ,KAAKmmB,GAAGhW,IAC7B+4C,EAAOlpD,KAAKkmB,KAAK/V,EAAIisC,EAAS3gC,EAC9B0tC,EAAOnpD,KAAKkmB,KAAK9V,EAAIgsC,EAAS3gC,GAGzBzb,KAAKkmB,KAAK9V,EAAIpQ,KAAKmmB,GAAG/V,IACzBpQ,KAAKkmB,KAAK/V,EAAInQ,KAAKmmB,GAAGhW,GACxB+4C,EAAOlpD,KAAKkmB,KAAK/V,EAAIisC,EAAS3gC,EAC9B0tC,EAAOnpD,KAAKkmB,KAAK9V,EAAIgsC,EAAS3gC,GAEvBzb,KAAKkmB,KAAK/V,EAAInQ,KAAKmmB,GAAGhW,IAC7B+4C,EAAOlpD,KAAKkmB,KAAK/V,EAAIisC,EAAS3gC,EAC9B0tC,EAAOnpD,KAAKkmB,KAAK9V,EAAIgsC,EAAS3gC,IAGtB,YAARnV,IACF6iD,EAAY/M,EAAS3gC,EAAdC,EAAmB1b,KAAKkmB,KAAK9V,EAAI+4C,IAI7B,iBAAR7iD,EACH1B,KAAK+iB,IAAI3nB,KAAKkmB,KAAK/V,EAAInQ,KAAKmmB,GAAGhW,GAAKvL,KAAK+iB,IAAI3nB,KAAKkmB,KAAK9V,EAAIpQ,KAAKmmB,GAAG/V,IACrE84C,EAAOlpD,KAAKkmB,KAAK/V,EAEfg5C,EADEnpD,KAAKkmB,KAAK9V,EAAIpQ,KAAKmmB,GAAG/V,EACjBpQ,KAAKmmB,GAAG/V,GAAK,EAAEgsC,GAAU1gC,EAGzB1b,KAAKmmB,GAAG/V,GAAK,EAAEgsC,GAAU1gC,GAG3B9W,KAAK+iB,IAAI3nB,KAAKkmB,KAAK/V,EAAInQ,KAAKmmB,GAAGhW,GAAKvL,KAAK+iB,IAAI3nB,KAAKkmB,KAAK9V,EAAIpQ,KAAKmmB,GAAG/V,KAExE84C,EADElpD,KAAKkmB,KAAK/V,EAAInQ,KAAKmmB,GAAGhW,EACjBnQ,KAAKmmB,GAAGhW,GAAK,EAAEisC,GAAU3gC,EAGzBzb,KAAKmmB,GAAGhW,GAAK,EAAEisC,GAAU3gC,EAElC0tC,EAAOnpD,KAAKkmB,KAAK9V,GAGJ,cAAR9J,GAEL4iD,EADElpD,KAAKkmB,KAAK/V,EAAInQ,KAAKmmB,GAAGhW,EACjBnQ,KAAKmmB,GAAGhW,GAAK,EAAEisC,GAAU3gC,EAGzBzb,KAAKmmB,GAAGhW,GAAK,EAAEisC,GAAU3gC,EAElC0tC,EAAOnpD,KAAKkmB,KAAK9V,GAEF,YAAR9J,GACP4iD,EAAOlpD,KAAKkmB,KAAK/V,EAEfg5C,EADEnpD,KAAKkmB,KAAK9V,EAAIpQ,KAAKmmB,GAAG/V,EACjBpQ,KAAKmmB,GAAG/V,GAAK,EAAEgsC,GAAU1gC,EAGzB1b,KAAKmmB,GAAG/V,GAAK,EAAEgsC,GAAU1gC,GAI9B9W,KAAK+iB,IAAI3nB,KAAKkmB,KAAK/V,EAAInQ,KAAKmmB,GAAGhW,GAAKvL,KAAK+iB,IAAI3nB,KAAKkmB,KAAK9V,EAAIpQ,KAAKmmB,GAAG/V,GACjEpQ,KAAKkmB,KAAK9V,EAAIpQ,KAAKmmB,GAAG/V,EACpBpQ,KAAKkmB,KAAK/V,EAAInQ,KAAKmmB,GAAGhW,GAExB+4C,EAAOlpD,KAAKkmB,KAAK/V,EAAIisC,EAAS1gC,EAC9BytC,EAAOnpD,KAAKkmB,KAAK9V,EAAIgsC,EAAS1gC,EAC9BwtC,EAAOlpD,KAAKmmB,GAAGhW,EAAI+4C,EAAOlpD,KAAKmmB,GAAGhW,EAAI+4C,GAE/BlpD,KAAKkmB,KAAK/V,EAAInQ,KAAKmmB,GAAGhW,IAE7B+4C,EAAOlpD,KAAKkmB,KAAK/V,EAAIisC,EAAS1gC,EAC9BytC,EAAOnpD,KAAKkmB,KAAK9V,EAAIgsC,EAAS1gC,EAC9BwtC,EAAOlpD,KAAKmmB,GAAGhW,EAAI+4C,EAAOlpD,KAAKmmB,GAAGhW,EAAG+4C,GAGhClpD,KAAKkmB,KAAK9V,EAAIpQ,KAAKmmB,GAAG/V,IACzBpQ,KAAKkmB,KAAK/V,EAAInQ,KAAKmmB,GAAGhW,GAExB+4C,EAAOlpD,KAAKkmB,KAAK/V,EAAIisC,EAAS1gC,EAC9BytC,EAAOnpD,KAAKkmB,KAAK9V,EAAIgsC,EAAS1gC,EAC9BwtC,EAAOlpD,KAAKmmB,GAAGhW,EAAI+4C,EAAOlpD,KAAKmmB,GAAGhW,EAAI+4C,GAE/BlpD,KAAKkmB,KAAK/V,EAAInQ,KAAKmmB,GAAGhW,IAE7B+4C,EAAOlpD,KAAKkmB,KAAK/V,EAAIisC,EAAS1gC,EAC9BytC,EAAOnpD,KAAKkmB,KAAK9V,EAAIgsC,EAAS1gC,EAC9BwtC,EAAOlpD,KAAKmmB,GAAGhW,EAAI+4C,EAAOlpD,KAAKmmB,GAAGhW,EAAI+4C,IAInCtkD,KAAK+iB,IAAI3nB,KAAKkmB,KAAK/V,EAAInQ,KAAKmmB,GAAGhW,GAAKvL,KAAK+iB,IAAI3nB,KAAKkmB,KAAK9V,EAAIpQ,KAAKmmB,GAAG/V,KACtEpQ,KAAKkmB,KAAK9V,EAAIpQ,KAAKmmB,GAAG/V,EACpBpQ,KAAKkmB,KAAK/V,EAAInQ,KAAKmmB,GAAGhW,GAExB+4C,EAAOlpD,KAAKkmB,KAAK/V,EAAIisC,EAAS3gC,EAC9B0tC,EAAOnpD,KAAKkmB,KAAK9V,EAAIgsC,EAAS3gC,EAC9B0tC,EAAOnpD,KAAKmmB,GAAG/V,EAAI+4C,EAAOnpD,KAAKmmB,GAAG/V,EAAI+4C,GAE/BnpD,KAAKkmB,KAAK/V,EAAInQ,KAAKmmB,GAAGhW,IAE7B+4C,EAAOlpD,KAAKkmB,KAAK/V,EAAIisC,EAAS3gC,EAC9B0tC,EAAOnpD,KAAKkmB,KAAK9V,EAAIgsC,EAAS3gC,EAC9B0tC,EAAOnpD,KAAKmmB,GAAG/V,EAAI+4C,EAAOnpD,KAAKmmB,GAAG/V,EAAI+4C,GAGjCnpD,KAAKkmB,KAAK9V,EAAIpQ,KAAKmmB,GAAG/V,IACzBpQ,KAAKkmB,KAAK/V,EAAInQ,KAAKmmB,GAAGhW,GAExB+4C,EAAOlpD,KAAKkmB,KAAK/V,EAAIisC,EAAS3gC,EAC9B0tC,EAAOnpD,KAAKkmB,KAAK9V,EAAIgsC,EAAS3gC,EAC9B0tC,EAAOnpD,KAAKmmB,GAAG/V,EAAI+4C,EAAOnpD,KAAKmmB,GAAG/V,EAAI+4C,GAE/BnpD,KAAKkmB,KAAK/V,EAAInQ,KAAKmmB,GAAGhW,IAE7B+4C,EAAOlpD,KAAKkmB,KAAK/V,EAAIisC,EAAS3gC,EAC9B0tC,EAAOnpD,KAAKkmB,KAAK9V,EAAIgsC,EAAS3gC,EAC9B0tC,EAAOnpD,KAAKmmB,GAAG/V,EAAI+4C,EAAOnpD,KAAKmmB,GAAG/V,EAAI+4C,MAOtCh5C,EAAE+4C,EAAM94C,EAAE+4C,IAQpBnmD,EAAKuO,UAAUi3C,MAAQ,SAAU5kC,GAI/B,GAFAA,EAAIa,YACJb,EAAIc,OAAO1kB,KAAKkmB,KAAK/V,EAAGnQ,KAAKkmB,KAAK9V,GACD,GAA7BpQ,KAAKm3C,aAAaxpC,QAAiB,CACrC,GAAiC,GAA7B3N,KAAKm3C,aAAaC,QAAkB,CACtC,GAAI2L,GAAM/iD,KAAKipD,oBACf,OAAa,OAATlG,EAAI5yC,GACNyT,EAAIe,OAAO3kB,KAAKmmB,GAAGhW,EAAGnQ,KAAKmmB,GAAG/V,GAC9BwT,EAAIlH,SACG,OAKPkH,EAAIwlC,iBAAiBrG,EAAI5yC,EAAE4yC,EAAI3yC,EAAEpQ,KAAKmmB,GAAGhW,EAAGnQ,KAAKmmB,GAAG/V,GACpDwT,EAAIlH,SACGqmC,GAMT,MAFAn/B,GAAIwlC,iBAAiBppD,KAAK+iD,IAAI5yC,EAAEnQ,KAAK+iD,IAAI3yC,EAAEpQ,KAAKmmB,GAAGhW,EAAGnQ,KAAKmmB,GAAG/V,GAC9DwT,EAAIlH,SACG1c,KAAK+iD,IAMd,MAFAn/B,GAAIe,OAAO3kB,KAAKmmB,GAAGhW,EAAGnQ,KAAKmmB,GAAG/V,GAC9BwT,EAAIlH,SACG,MAYX1Z,EAAKuO,UAAUu3C,QAAU,SAAUllC,EAAKzT,EAAGC,EAAGoY,GAE5C5E,EAAIa,YACJb,EAAI6E,IAAItY,EAAGC,EAAGoY,EAAQ,EAAG,EAAI5jB,KAAK8jB,IAAI,GACtC9E,EAAIlH,UAWN1Z,EAAKuO,UAAUq3C,OAAS,SAAUhlC,EAAKyC,EAAMlW,EAAGC,GAC9C,GAAIiW,EAAM,CAERzC,EAAIQ,MAASpkB,KAAKkmB,KAAKokB,UAAYtqC,KAAKmmB,GAAGmkB,SAAY,QAAU,IAC7DtqC,KAAKg0C,SAAW,MAAQh0C,KAAKi0C,SACjCrwB,EAAIiB,UAAY7kB,KAAKu0C,QACrB,IAAI3jC,GAAQgT,EAAIylC,YAAYhjC,GAAMzV,MAC9BC,EAAS7Q,KAAKg0C,SACd/sC,EAAOkJ,EAAIS,EAAQ,EACnBvJ,EAAM+I,EAAIS,EAAS,CAEvB+S,GAAI0lC,SAASriD,EAAMI,EAAKuJ,EAAOC,GAG/B+S,EAAIiB,UAAY7kB,KAAK+zC,WAAa,QAClCnwB,EAAIwB,UAAY,OAChBxB,EAAIyB,aAAe,MACnBzB,EAAI0B,SAASe,EAAMpf,EAAMI,KAa7BrE,EAAKuO,UAAUo2C,cAAgB,SAAS/jC,GAERA,EAAIY,YAAb,GAAjBxkB,KAAKsqC,SAAuCtqC,KAAKuK,MAAMe,UACpC,GAAdtL,KAAKuL,MAAkCvL,KAAKuK,MAAMgB,MACXvL,KAAKuK,MAAMA,MAE3DqZ,EAAIO,UAAYnkB,KAAKuoD,eAErB,IAAIxF,GAAM,IAEV,IAAoB78C,SAAhB0d,EAAI2lC,SAA6CrjD,SAApB0d,EAAI4lC,YAA2B,CAE9D,GAAIC,IAAW,EAEbA,GADuBvjD,SAArBlG,KAAKy0C,KAAKpvC,QAA0Ca,SAAlBlG,KAAKy0C,KAAKC,KACnC10C,KAAKy0C,KAAKpvC,OAAOrF,KAAKy0C,KAAKC,MAG3B,EAAE,GAIgB,mBAApB9wB,GAAI4lC,aACb5lC,EAAI4lC,YAAYC,GAChB7lC,EAAI8lC,eAAiB,IAGrB9lC,EAAI2lC,QAAUE,EACd7lC,EAAI+lC,cAAgB,GAItB5G,EAAM/iD,KAAKwoD,MAAM5kC,GAGc,mBAApBA,GAAI4lC,aACb5lC,EAAI4lC,aAAa,IACjB5lC,EAAI8lC,eAAiB,IAGrB9lC,EAAI2lC,SAAW,GACf3lC,EAAI+lC,cAAgB,OAKtB/lC,GAAIa,YACJb,EAAIgmC,QAAU,QACc1jD,SAAxBlG,KAAKy0C,KAAKE,UAEZ/wB,EAAIimC,WAAW7pD,KAAKkmB,KAAK/V,EAAEnQ,KAAKkmB,KAAK9V,EAAEpQ,KAAKmmB,GAAGhW,EAAEnQ,KAAKmmB,GAAG/V,GACpDpQ,KAAKy0C,KAAKpvC,OAAOrF,KAAKy0C,KAAKC,IAAI10C,KAAKy0C,KAAKE,UAAU30C,KAAKy0C,KAAKC,MAEtCxuC,SAArBlG,KAAKy0C,KAAKpvC,QAA0Ca,SAAlBlG,KAAKy0C,KAAKC,IAEnD9wB,EAAIimC,WAAW7pD,KAAKkmB,KAAK/V,EAAEnQ,KAAKkmB,KAAK9V,EAAEpQ,KAAKmmB,GAAGhW,EAAEnQ,KAAKmmB,GAAG/V,GACpDpQ,KAAKy0C,KAAKpvC,OAAOrF,KAAKy0C,KAAKC,OAIhC9wB,EAAIc,OAAO1kB,KAAKkmB,KAAK/V,EAAGnQ,KAAKkmB,KAAK9V,GAClCwT,EAAIe,OAAO3kB,KAAKmmB,GAAGhW,EAAGnQ,KAAKmmB,GAAG/V,IAEhCwT,EAAIlH,QAIN,IAAI1c,KAAKulB,MAAO,CACd,GAAIjV,EACJ,IAAiC,GAA7BtQ,KAAKm3C,aAAaxpC,SAA0B,MAAPo1C,EAAa,CACpD,GAAI0F,GAAY,IAAK,IAAKzoD,KAAKkmB,KAAK/V,EAAI4yC,EAAI5yC,GAAK,IAAKnQ,KAAKmmB,GAAGhW,EAAI4yC,EAAI5yC,IAClEu4C,EAAY,IAAK,IAAK1oD,KAAKkmB,KAAK9V,EAAI2yC,EAAI3yC,GAAK,IAAKpQ,KAAKmmB,GAAG/V,EAAI2yC,EAAI3yC,GACtEE,IAASH,EAAEs4C,EAAWr4C,EAAEs4C,OAGxBp4C,GAAQtQ,KAAK2oD,aAAa,GAE5B3oD,MAAK4oD,OAAOhlC,EAAK5jB,KAAKulB,MAAOjV,EAAMH,EAAGG,EAAMF,KAUhDpN,EAAKuO,UAAUo3C,aAAe,SAAUmB,GACtC,OACE35C,GAAI,EAAI25C,GAAc9pD,KAAKkmB,KAAK/V,EAAI25C,EAAa9pD,KAAKmmB,GAAGhW,EACzDC,GAAI,EAAI05C,GAAc9pD,KAAKkmB,KAAK9V,EAAI05C,EAAa9pD,KAAKmmB,GAAG/V,IAa7DpN,EAAKuO,UAAUw3C,eAAiB,SAAU54C,EAAGC,EAAGoY,EAAQshC,GACtD,GAAI5H,GAA6B,GAApB4H,EAAa,EAAE,GAASllD,KAAK8jB,EAC1C,QACEvY,EAAGA,EAAIqY,EAAS5jB,KAAKwW,IAAI8mC,GACzB9xC,EAAGA,EAAIoY,EAAS5jB,KAAKqW,IAAIinC,KAW7Bl/C,EAAKuO,UAAUm2C,iBAAmB,SAAS9jC,GACzC,GAAItT,EAOJ,IALqB,GAAjBtQ,KAAKsqC,UAAqB1mB,EAAIY,YAAcxkB,KAAKuK,MAAMe,UAAWsY,EAAIiB,UAAY7kB,KAAKuK,MAAMe,WAC1E,GAAdtL,KAAKuL,OAAgBqY,EAAIY,YAAcxkB,KAAKuK,MAAMgB,MAAWqY,EAAIiB,UAAY7kB,KAAKuK,MAAMgB,QACnEqY,EAAIY,YAAcxkB,KAAKuK,MAAMA,MAAWqZ,EAAIiB,UAAY7kB,KAAKuK,MAAMA,OACjGqZ,EAAIO,UAAYnkB,KAAKuoD,gBAEjBvoD,KAAKkmB,MAAQlmB,KAAKmmB,GAAI,CAExB,GAAI48B,GAAM/iD,KAAKwoD,MAAM5kC,GAEjBs+B,EAAQt9C,KAAKmlD,MAAO/pD,KAAKmmB,GAAG/V,EAAIpQ,KAAKkmB,KAAK9V,EAAKpQ,KAAKmmB,GAAGhW,EAAInQ,KAAKkmB,KAAK/V,GACrE9K,GAAU,GAAK,EAAIrF,KAAK4Q,OAAS5Q,KAAKw0C,gBAE1C,IAAiC,GAA7Bx0C,KAAKm3C,aAAaxpC,SAA0B,MAAPo1C,EAAa,CACpD,GAAI0F,GAAY,IAAK,IAAKzoD,KAAKkmB,KAAK/V,EAAI4yC,EAAI5yC,GAAK,IAAKnQ,KAAKmmB,GAAGhW,EAAI4yC,EAAI5yC,IAClEu4C,EAAY,IAAK,IAAK1oD,KAAKkmB,KAAK9V,EAAI2yC,EAAI3yC,GAAK,IAAKpQ,KAAKmmB,GAAG/V,EAAI2yC,EAAI3yC,GACtEE,IAASH,EAAEs4C,EAAWr4C,EAAEs4C,OAGxBp4C,GAAQtQ,KAAK2oD,aAAa,GAG5B/kC,GAAIomC,MAAM15C,EAAMH,EAAGG,EAAMF,EAAG8xC,EAAO78C,GACnCue,EAAInH,OACJmH,EAAIlH,SAGA1c,KAAKulB,OACPvlB,KAAK4oD,OAAOhlC,EAAK5jB,KAAKulB,MAAOjV,EAAMH,EAAGG,EAAMF,OAG3C,CAEH,GAAID,GAAGC,EACHoY,EAAS,IAAO5jB,KAAK6H,IAAI,IAAIzM,KAAKqF,QAClCm2C,EAAOx7C,KAAKkmB,IACXs1B,GAAK5qC,OACR4qC,EAAKqN,OAAOjlC,GAEV43B,EAAK5qC,MAAQ4qC,EAAK3qC,QACpBV,EAAIqrC,EAAKrrC,EAAiB,GAAbqrC,EAAK5qC,MAClBR,EAAIorC,EAAKprC,EAAIoY,IAGbrY,EAAIqrC,EAAKrrC,EAAIqY,EACbpY,EAAIorC,EAAKprC,EAAkB,GAAdorC,EAAK3qC,QAEpB7Q,KAAK8oD,QAAQllC,EAAKzT,EAAGC,EAAGoY,EAGxB,IAAI05B,GAAQ,GAAMt9C,KAAK8jB,GACnBrjB,GAAU,GAAK,EAAIrF,KAAK4Q,OAAS5Q,KAAKw0C,gBAC1ClkC,GAAQtQ,KAAK+oD,eAAe54C,EAAGC,EAAGoY,EAAQ,IAC1C5E,EAAIomC,MAAM15C,EAAMH,EAAGG,EAAMF,EAAG8xC,EAAO78C,GACnCue,EAAInH,OACJmH,EAAIlH,SAGA1c,KAAKulB,QACPjV,EAAQtQ,KAAK+oD,eAAe54C,EAAGC,EAAGoY,EAAQ,IAC1CxoB,KAAK4oD,OAAOhlC,EAAK5jB,KAAKulB,MAAOjV,EAAMH,EAAGG,EAAMF,MAclDpN,EAAKuO,UAAUk2C,WAAa,SAAS7jC,GAEd,GAAjB5jB,KAAKsqC,UAAqB1mB,EAAIY,YAAcxkB,KAAKuK,MAAMe,UAAWsY,EAAIiB,UAAY7kB,KAAKuK,MAAMe,WAC1E,GAAdtL,KAAKuL,OAAgBqY,EAAIY,YAAcxkB,KAAKuK,MAAMgB,MAAWqY,EAAIiB,UAAY7kB,KAAKuK,MAAMgB,QACnEqY,EAAIY,YAAcxkB,KAAKuK,MAAMA,MAAWqZ,EAAIiB,UAAY7kB,KAAKuK,MAAMA,OAEjGqZ,EAAIO,UAAYnkB,KAAKuoD,eAErB;GAAIrG,GAAO78C,CAEX,IAAIrF,KAAKkmB,MAAQlmB,KAAKmmB,GAAI,CACxB+7B,EAAQt9C,KAAKmlD,MAAO/pD,KAAKmmB,GAAG/V,EAAIpQ,KAAKkmB,KAAK9V,EAAKpQ,KAAKmmB,GAAGhW,EAAInQ,KAAKkmB,KAAK/V,EACrE,IASI4yC,GATAtnC,EAAMzb,KAAKmmB,GAAGhW,EAAInQ,KAAKkmB,KAAK/V,EAC5BuL,EAAM1b,KAAKmmB,GAAG/V,EAAIpQ,KAAKkmB,KAAK9V,EAC5B65C,EAAoBrlD,KAAKkoB,KAAKrR,EAAKA,EAAKC,EAAKA,GAE7CwuC,EAAiBlqD,KAAKkmB,KAAKikC,iBAAiBvmC,EAAKs+B,EAAQt9C,KAAK8jB,IAC9D0hC,GAAmBH,EAAoBC,GAAkBD,EACzDnC,EAAQ,EAAoB9nD,KAAKkmB,KAAK/V,GAAK,EAAIi6C,GAAmBpqD,KAAKmmB,GAAGhW,EAC1E43C,EAAQ,EAAoB/nD,KAAKkmB,KAAK9V,GAAK,EAAIg6C,GAAmBpqD,KAAKmmB,GAAG/V,CAG7C,IAA7BpQ,KAAKm3C,aAAaC,SAAgD,GAA7Bp3C,KAAKm3C,aAAaxpC,QACzDo1C,EAAM/iD,KAAK+iD,IAEyB,GAA7B/iD,KAAKm3C,aAAaxpC,UACzBo1C,EAAM/iD,KAAKipD,sBAGoB,GAA7BjpD,KAAKm3C,aAAaxpC,SAA4B,MAATo1C,EAAI5yC,IAC3C+xC,EAAQt9C,KAAKmlD,MAAO/pD,KAAKmmB,GAAG/V,EAAI2yC,EAAI3yC,EAAKpQ,KAAKmmB,GAAGhW,EAAI4yC,EAAI5yC,GACzDsL,EAAMzb,KAAKmmB,GAAGhW,EAAI4yC,EAAI5yC,EACtBuL,EAAM1b,KAAKmmB,GAAG/V,EAAI2yC,EAAI3yC,EACtB65C,EAAoBrlD,KAAKkoB,KAAKrR,EAAKA,EAAKC,EAAKA,GAE/C,IAGIssC,GAAIC,EAHJoC,EAAerqD,KAAKmmB,GAAGgkC,iBAAiBvmC,EAAKs+B,GAC7CoI,GAAiBL,EAAoBI,GAAgBJ,CA6BzD,IA1BiC,GAA7BjqD,KAAKm3C,aAAaxpC,SAA4B,MAATo1C,EAAI5yC,GAC5C63C,GAAO,EAAIsC,GAAiBvH,EAAI5yC,EAAIm6C,EAAgBtqD,KAAKmmB,GAAGhW,EAC5D83C,GAAO,EAAIqC,GAAiBvH,EAAI3yC,EAAIk6C,EAAgBtqD,KAAKmmB,GAAG/V,IAG3D43C,GAAO,EAAIsC,GAAiBtqD,KAAKkmB,KAAK/V,EAAIm6C,EAAgBtqD,KAAKmmB,GAAGhW,EAClE83C,GAAO,EAAIqC,GAAiBtqD,KAAKkmB,KAAK9V,EAAIk6C,EAAgBtqD,KAAKmmB,GAAG/V,GAGpEwT,EAAIa,YACJb,EAAIc,OAAOojC,EAAMC,GACgB,GAA7B/nD,KAAKm3C,aAAaxpC,SAA4B,MAATo1C,EAAI5yC,EAC3CyT,EAAIwlC,iBAAiBrG,EAAI5yC,EAAE4yC,EAAI3yC,EAAE43C,EAAKC,GAGtCrkC,EAAIe,OAAOqjC,EAAKC,GAElBrkC,EAAIlH,SAGJrX,GAAU,GAAK,EAAIrF,KAAK4Q,OAAS5Q,KAAKw0C,iBACtC5wB,EAAIomC,MAAMhC,EAAKC,EAAK/F,EAAO78C,GAC3Bue,EAAInH,OACJmH,EAAIlH,SAGA1c,KAAKulB,MAAO,CACd,GAAIjV,EACJ,IAAiC,GAA7BtQ,KAAKm3C,aAAaxpC,SAA0B,MAAPo1C,EAAa,CACpD,GAAI0F,GAAY,IAAK,IAAKzoD,KAAKkmB,KAAK/V,EAAI4yC,EAAI5yC,GAAK,IAAKnQ,KAAKmmB,GAAGhW,EAAI4yC,EAAI5yC,IAClEu4C,EAAY,IAAK,IAAK1oD,KAAKkmB,KAAK9V,EAAI2yC,EAAI3yC,GAAK,IAAKpQ,KAAKmmB,GAAG/V,EAAI2yC,EAAI3yC,GACtEE,IAASH,EAAEs4C,EAAWr4C,EAAEs4C,OAGxBp4C,GAAQtQ,KAAK2oD,aAAa,GAE5B3oD,MAAK4oD,OAAOhlC,EAAK5jB,KAAKulB,MAAOjV,EAAMH,EAAGG,EAAMF,QAG3C,CAEH,GACID,GAAGC,EAAG45C,EADNxO,EAAOx7C,KAAKkmB,KAEZsC,EAAS,IAAO5jB,KAAK6H,IAAI,IAAIzM,KAAKqF,OACjCm2C,GAAK5qC,OACR4qC,EAAKqN,OAAOjlC,GAEV43B,EAAK5qC,MAAQ4qC,EAAK3qC,QACpBV,EAAIqrC,EAAKrrC,EAAiB,GAAbqrC,EAAK5qC,MAClBR,EAAIorC,EAAKprC,EAAIoY,EACbwhC,GACE75C,EAAGA,EACHC,EAAGorC,EAAKprC,EACR8xC,MAAO,GAAMt9C,KAAK8jB,MAIpBvY,EAAIqrC,EAAKrrC,EAAIqY,EACbpY,EAAIorC,EAAKprC,EAAkB,GAAdorC,EAAK3qC,OAClBm5C,GACE75C,EAAGqrC,EAAKrrC,EACRC,EAAGA,EACH8xC,MAAO,GAAMt9C,KAAK8jB,KAGtB9E,EAAIa,YAEJb,EAAI6E,IAAItY,EAAGC,EAAGoY,EAAQ,EAAG,EAAI5jB,KAAK8jB,IAAI,GACtC9E,EAAIlH,QAGJ,IAAIrX,IAAU,GAAK,EAAIrF,KAAK4Q,OAAS5Q,KAAKw0C,gBAC1C5wB,GAAIomC,MAAMA,EAAM75C,EAAG65C,EAAM55C,EAAG45C,EAAM9H,MAAO78C,GACzCue,EAAInH,OACJmH,EAAIlH,SAGA1c,KAAKulB,QACPjV,EAAQtQ,KAAK+oD,eAAe54C,EAAGC,EAAGoY,EAAQ,IAC1CxoB,KAAK4oD,OAAOhlC,EAAK5jB,KAAKulB,MAAOjV,EAAMH,EAAGG,EAAMF,MAmBlDpN,EAAKuO,UAAU62C,mBAAqB,SAAUmC,EAAGC,EAAIC,EAAGC,EAAIC,EAAGC,GAC7D,GAAI5qD,KAAKkmB,MAAQlmB,KAAKmmB,GAAI,CACxB,GAAiC,GAA7BnmB,KAAKm3C,aAAaxpC,QAAiB,CACrC,GAAIu7C,GAAMC,CACV,IAAiC,GAA7BnpD,KAAKm3C,aAAaxpC,SAAgD,GAA7B3N,KAAKm3C,aAAaC,QACzD8R,EAAOlpD,KAAK+iD,IAAI5yC,EAChBg5C,EAAOnpD,KAAK+iD,IAAI3yC,MAEb,CACH,GAAI2yC,GAAM/iD,KAAKipD,oBACfC,GAAOnG,EAAI5yC,EACXg5C,EAAOpG,EAAI3yC,EAEb,GACIoS,GACAtd,EAAE4H,EAAEqD,EAAEC,EAAGy6C,EAAOC,EAFhBC,EAAc,GAGlB,KAAK7lD,EAAI,EAAO,GAAJA,EAAQA,IAClB4H,EAAI,GAAI5H,EACRiL,EAAIvL,KAAKusB,IAAI,EAAErkB,EAAE,GAAGy9C,EAAM,EAAEz9C,GAAG,EAAIA,GAAIo8C,EAAOtkD,KAAKusB,IAAIrkB,EAAE,GAAG29C,EAC5Dr6C,EAAIxL,KAAKusB,IAAI,EAAErkB,EAAE,GAAG09C,EAAM,EAAE19C,GAAG,EAAIA,GAAIq8C,EAAOvkD,KAAKusB,IAAIrkB,EAAE,GAAG49C,EACxDxlD,EAAI,IACNsd,EAAWxiB,KAAKgrD,mBAAmBH,EAAMC,EAAM36C,EAAEC,EAAGu6C,EAAGC,GACvDG,EAAyBA,EAAXvoC,EAAyBA,EAAWuoC,GAEpDF,EAAQ16C,EAAG26C,EAAQ16C,CAErB,OAAO26C,GAGP,MAAO/qD,MAAKgrD,mBAAmBT,EAAGC,EAAGC,EAAGC,EAAGC,EAAGC,GAIhD,GAAIz6C,GAAGC,EAAGqL,EAAIC,EACV8M,EAASxoB,KAAKqF,OAAS,EACvBm2C,EAAOx7C,KAAKkmB,IAchB,OAbKs1B,GAAK5qC,OACR4qC,EAAKqN,OAAOjlC,KAEV43B,EAAK5qC,MAAQ4qC,EAAK3qC,QACpBV,EAAIqrC,EAAKrrC,EAAIqrC,EAAK5qC,MAAQ,EAC1BR,EAAIorC,EAAKprC,EAAIoY,IAGbrY,EAAIqrC,EAAKrrC,EAAIqY,EACbpY,EAAIorC,EAAKprC,EAAIorC,EAAK3qC,OAAS,GAE7B4K,EAAKtL,EAAIw6C,EACTjvC,EAAKtL,EAAIw6C,EACFhmD,KAAK+iB,IAAI/iB,KAAKkoB,KAAKrR,EAAGA,EAAKC,EAAGA,GAAM8M,IAI/CxlB,EAAKuO,UAAUy5C,mBAAqB,SAAST,EAAGC,EAAGC,EAAGC,EAAGC,EAAGC,GAC1D,GAAIK,GAAKR,EAAGF,EACVW,EAAKR,EAAGF,EACRW,EAAYF,EAAGA,EAAKC,EAAGA,EACvBE,IAAOT,EAAKJ,GAAMU,GAAML,EAAKJ,GAAMU,GAAMC,CAEvCC,GAAI,EACNA,EAAI,EAEO,EAAJA,IACPA,EAAI,EAGN,IAAIj7C,GAAIo6C,EAAKa,EAAIH,EACf76C,EAAIo6C,EAAKY,EAAIF,EACbzvC,EAAKtL,EAAIw6C,EACTjvC,EAAKtL,EAAIw6C,CAQX,OAAOhmD,MAAKkoB,KAAKrR,EAAGA,EAAKC,EAAGA,IAQ9B1Y,EAAKuO,UAAUusB,SAAW,SAAShkB,GACjC9Z,KAAKgpD,gBAAkB,EAAIlvC,GAI7B9W,EAAKuO,UAAUm3B,OAAS,WACtB1oC,KAAKsqC,UAAW,GAGlBtnC,EAAKuO,UAAUk3B,SAAW,WACxBzoC,KAAKsqC,UAAW,GAGlBtnC,EAAKuO,UAAU00C,mBAAqB,WACjB,OAAbjmD,KAAK+iD,MACP/iD,KAAK+iD,IAAI5yC,EAAI,IAAOnQ,KAAKkmB,KAAK/V,EAAInQ,KAAKmmB,GAAGhW,GAC1CnQ,KAAK+iD,IAAI3yC,EAAI,IAAOpQ,KAAKkmB,KAAK9V,EAAIpQ,KAAKmmB,GAAG/V,KAQ9CpN,EAAKuO,UAAUyyC,kBAAoB,SAASpgC,GAC1C,GAAgC,GAA5B5jB,KAAKonD,oBAA6B,CACpC,GAA+B,OAA3BpnD,KAAKqnD,aAAanhC,MAA0C,OAAzBlmB,KAAKqnD,aAAalhC,GAAa,CACpE,GAAIklC,GAAa,cAAcp5C,OAAOjS,KAAKK,IACvCirD,EAAW,YAAYr5C,OAAOjS,KAAKK,IACnCmzC,GACYC,OAAOpjC,MAAM,GAAImY,OAAO,GACxBssB,SAASO,QAAQ,GACjBI,YAAac,sBAAuB,EAAGD,aAAc1lC,MAAM,EAAGC,OAAQ,EAAG2X,OAAO,IAEhGxoB,MAAKqnD,aAAanhC,KAAO,GAAI/iB,IAC1B9C,GAAGgrD,EACFzX,MAAM,MACJrpC,OAAOa,WAAW,UAAWC,OAAO,UAAWC,WAAYF,WAAW,mBAClEooC,GACVxzC,KAAKqnD,aAAalhC,GAAK,GAAIhjB,IACxB9C,GAAGirD,EACF1X,MAAM,MACNrpC,OAAOa,WAAW,UAAWC,OAAO,UAAWC,WAAYF,WAAW,mBAChEooC,GAG2B,GAAnCxzC,KAAKqnD,aAAanhC,KAAKokB,UAAsD,GAAjCtqC,KAAKqnD,aAAalhC,GAAGmkB,WACnEtqC,KAAKqnD,aAAaC,UAAYtnD,KAAKurD,wBAAwB3nC,GAC3D5jB,KAAKqnD,aAAanhC,KAAK/V,EAAInQ,KAAKqnD,aAAaC,UAAUphC,KAAK/V,EAC5DnQ,KAAKqnD,aAAanhC,KAAK9V,EAAIpQ,KAAKqnD,aAAaC,UAAUphC,KAAK9V,EAC5DpQ,KAAKqnD,aAAalhC,GAAGhW,EAAInQ,KAAKqnD,aAAaC,UAAUnhC,GAAGhW,EACxDnQ,KAAKqnD,aAAalhC,GAAG/V,EAAIpQ,KAAKqnD,aAAaC,UAAUnhC,GAAG/V,GAG1DpQ,KAAKqnD,aAAanhC,KAAK29B,KAAKjgC,GAC5B5jB,KAAKqnD,aAAalhC,GAAG09B,KAAKjgC,OAG1B5jB,MAAKqnD,cAAgBnhC,KAAK,KAAMC,GAAG,KAAMmhC,eAQ7CtkD,EAAKuO,UAAUi6C,oBAAsB,WACnCxrD,KAAKonD,qBAAsB,GAO7BpkD,EAAKuO,UAAUk6C,qBAAuB,WACpCzrD,KAAKonD,qBAAsB,GAU7BpkD,EAAKuO,UAAUm6C,wBAA0B,SAASv7C,EAAEC,GAClD,GAAIk3C,GAAYtnD,KAAKqnD,aAAaC,UAC9BqE,EAAe/mD,KAAKkoB,KAAKloB,KAAKusB,IAAIhhB,EAAIm3C,EAAUphC,KAAK/V,EAAE,GAAKvL,KAAKusB,IAAI/gB,EAAIk3C,EAAUphC,KAAK9V,EAAE,IAC1Fw7C,EAAehnD,KAAKkoB,KAAKloB,KAAKusB,IAAIhhB,EAAIm3C,EAAUnhC,GAAGhW,EAAI,GAAKvL,KAAKusB,IAAI/gB,EAAIk3C,EAAUnhC,GAAG/V,EAAI,GAE9F,OAAmB,IAAfu7C,GACF3rD,KAAKunD,cAAgBvnD,KAAKkmB,KAC1BlmB,KAAKkmB,KAAOlmB,KAAKqnD,aAAanhC,KACvBlmB,KAAKqnD,aAAanhC,MAEL,GAAb0lC,GACP5rD,KAAKunD,cAAgBvnD,KAAKmmB,GAC1BnmB,KAAKmmB,GAAKnmB,KAAKqnD,aAAalhC,GACrBnmB,KAAKqnD,aAAalhC,IAGlB,MASXnjB,EAAKuO,UAAUs6C,qBAAuB,WACG,GAAnC7rD,KAAKqnD,aAAanhC,KAAKokB,WACzBtqC,KAAKkmB,KAAOlmB,KAAKunD,cACjBvnD,KAAKunD,cAAgB,KACrBvnD,KAAKqnD,aAAanhC,KAAKuiB,YAEY,GAAjCzoC,KAAKqnD,aAAalhC,GAAGmkB,WACvBtqC,KAAKmmB,GAAKnmB,KAAKunD,cACfvnD,KAAKunD,cAAgB,KACrBvnD,KAAKqnD,aAAalhC,GAAGsiB,aAUzBzlC,EAAKuO,UAAUg6C,wBAA0B,SAAS3nC,GAChD,GASIm/B,GATAb,EAAQt9C,KAAKmlD,MAAO/pD,KAAKmmB,GAAG/V,EAAIpQ,KAAKkmB,KAAK9V,EAAKpQ,KAAKmmB,GAAGhW,EAAInQ,KAAKkmB,KAAK/V,GACrEsL,EAAMzb,KAAKmmB,GAAGhW,EAAInQ,KAAKkmB,KAAK/V,EAC5BuL,EAAM1b,KAAKmmB,GAAG/V,EAAIpQ,KAAKkmB,KAAK9V,EAC5B65C,EAAoBrlD,KAAKkoB,KAAKrR,EAAKA,EAAKC,EAAKA,GAC7CwuC,EAAiBlqD,KAAKkmB,KAAKikC,iBAAiBvmC,EAAKs+B,EAAQt9C,KAAK8jB,IAC9D0hC,GAAmBH,EAAoBC,GAAkBD,EACzDnC,EAAQ,EAAoB9nD,KAAKkmB,KAAK/V,GAAK,EAAIi6C,GAAmBpqD,KAAKmmB,GAAGhW,EAC1E43C,EAAQ,EAAoB/nD,KAAKkmB,KAAK9V,GAAK,EAAIg6C,GAAmBpqD,KAAKmmB,GAAG/V,CAG7C,IAA7BpQ,KAAKm3C,aAAaC,SAAgD,GAA7Bp3C,KAAKm3C,aAAaxpC,QACzDo1C,EAAM/iD,KAAK+iD,IAEyB,GAA7B/iD,KAAKm3C,aAAaxpC,UACzBo1C,EAAM/iD,KAAKipD,sBAGoB,GAA7BjpD,KAAKm3C,aAAaxpC,SAA4B,MAATo1C,EAAI5yC,IAC3C+xC,EAAQt9C,KAAKmlD,MAAO/pD,KAAKmmB,GAAG/V,EAAI2yC,EAAI3yC,EAAKpQ,KAAKmmB,GAAGhW,EAAI4yC,EAAI5yC,GACzDsL,EAAMzb,KAAKmmB,GAAGhW,EAAI4yC,EAAI5yC,EACtBuL,EAAM1b,KAAKmmB,GAAG/V,EAAI2yC,EAAI3yC,EACtB65C,EAAoBrlD,KAAKkoB,KAAKrR,EAAKA,EAAKC,EAAKA,GAE/C,IAGIssC,GAAIC,EAHJoC,EAAerqD,KAAKmmB,GAAGgkC,iBAAiBvmC,EAAKs+B,GAC7CoI,GAAiBL,EAAoBI,GAAgBJ,CAYzD,OATiC,IAA7BjqD,KAAKm3C,aAAaxpC,SAA4B,MAATo1C,EAAI5yC,GAC3C63C,GAAO,EAAIsC,GAAiBvH,EAAI5yC,EAAIm6C,EAAgBtqD,KAAKmmB,GAAGhW,EAC5D83C,GAAO,EAAIqC,GAAiBvH,EAAI3yC,EAAIk6C,EAAgBtqD,KAAKmmB,GAAG/V,IAG5D43C,GAAO,EAAIsC,GAAiBtqD,KAAKkmB,KAAK/V,EAAIm6C,EAAgBtqD,KAAKmmB,GAAGhW,EAClE83C,GAAO,EAAIqC,GAAiBtqD,KAAKkmB,KAAK9V,EAAIk6C,EAAgBtqD,KAAKmmB,GAAG/V,IAG5D8V,MAAM/V,EAAE23C,EAAM13C,EAAE23C,GAAO5hC,IAAIhW,EAAE63C,EAAI53C,EAAE63C,KAG7CpoD,EAAOD,QAAUoD,GAIb,SAASnD,EAAQD,EAASM,GAQ9B,QAAS+C,KACPjD,KAAK4U,QACL5U,KAAK8rD,aAAe,EARtB,GAAInrD,GAAOT,EAAoB,EAe/B+C,GAAO8oD,UACJ1gD,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aACxIC,OAAQ,UAAWD,WAAY,UAAWE,WAAYD,OAAQ,UAAWD,WAAY,WAAYG,OAAQF,OAAQ,UAAWD,WAAY,aAO3InI,EAAOsO,UAAUqD,MAAQ,WACvB5U,KAAKu1B,UACLv1B,KAAKu1B,OAAOlwB,OAAS,WAEnB,GAAIH,GAAI,CACR,KAAM,GAAIxE,KAAKV,MACTA,KAAKwF,eAAe9E,IACtBwE,GAGJ,OAAOA,KAWXjC,EAAOsO,UAAU4B,IAAM,SAAUoqC,GAC/B,GAAIltC,GAAQrQ,KAAKu1B,OAAOgoB,EACxB,IAAar3C,QAATmK,EAAoB,CAEtB,GAAItI,GAAQ/H,KAAK8rD,aAAe7oD,EAAO8oD,QAAQ1mD,MAC/CrF,MAAK8rD,eACLz7C,KACAA,EAAM9F,MAAQtH,EAAO8oD,QAAQhkD,GAC7B/H,KAAKu1B,OAAOgoB,GAAaltC,EAG3B,MAAOA,IAUTpN,EAAOsO,UAAUD,IAAM,SAAUisC,EAAW/sC,GAK1C,MAJAxQ,MAAKu1B,OAAOgoB,GAAa/sC,EACrBA,EAAMjG,QACRiG,EAAMjG,MAAQ5J,EAAK2J,WAAWkG,EAAMjG,QAE/BiG,GAGT3Q,EAAOD,QAAUqD,GAKb,SAASpD,GAMb,QAASqD,KACPlD,KAAK44C,UAEL54C,KAAKkI,SAAWhC,OAQlBhD,EAAOqO,UAAUsnC,kBAAoB,SAAS3wC,GAC5ClI,KAAKkI,SAAWA,GAQlBhF,EAAOqO,UAAUy6C,KAAO,SAASC,GAC/B,GAAIC,GAAMlsD,KAAK44C,OAAOqT,EACtB,IAAW/lD,QAAPgmD,EAAkB,CAEpB,GAAItT,GAAS54C,IACbksD,GAAM,GAAIC,OACVnsD,KAAK44C,OAAOqT,GAAOC,EACnBA,EAAIE,OAAS,WACPxT,EAAO1wC,UACT0wC,EAAO1wC,SAASlI,OAGpBksD,EAAI5Q,IAAM2Q,EAGZ,MAAOC,IAGTrsD,EAAOD,QAAUsD,GAKb,SAASrD,EAAQD,EAASM,GA6B9B,QAASiD,GAAKs/C,EAAY4J,EAAWC,EAAW9Y,GAC9CxzC,KAAKsqC,UAAW,EAChBtqC,KAAKuL,OAAQ,EAEbvL,KAAKo0C,SACLp0C,KAAKusD,gBACLvsD,KAAKwsD,iBAELxsD,KAAKqQ,MAAQmjC,EAAUC,MAAMpjC,MAC7BrQ,KAAKg0C,SAAWpwC,OAAO4vC,EAAUC,MAAMO,UACvCh0C,KAAKi0C,SAAWT,EAAUC,MAAMQ,SAChCj0C,KAAK+zC,UAAYP,EAAUC,MAAMM,UACjC/zC,KAAKysD,kBAAoB,EAEzBzsD,KAAKuK,MAAQipC,EAAUC,MAAMlpC,MAG7BvK,KAAKK,GAAK6F,OACVlG,KAAK4zC,MAAQJ,EAAUC,MAAMG,MAC7B5zC,KAAK6zC,MAAQL,EAAUC,MAAMI,MAC7B7zC,KAAKmQ,EAAI,KACTnQ,KAAKoQ,EAAI,KACTpQ,KAAKw/C,QAAS,EACdx/C,KAAKy/C,QAAS,EACdz/C,KAAK0sD,qBAAsB,EAC3B1sD,KAAK2sD,kBAAsB,EAC3B3sD,KAAKwoB,OAASgrB,EAAUC,MAAMjrB,OAC9BxoB,KAAK4sD,gBAAkBpZ,EAAUC,MAAMjrB,OACvCxoB,KAAK6sD,aAAc,EACnB7sD,KAAK0zC,UAAYF,EAAUC,MAAMC,UACjC1zC,KAAK2zC,UAAYH,EAAUC,MAAME,UACjC3zC,KAAKk0C,MAAQ,GACbl0C,KAAK8sD,kBAAmB,EACxB9sD,KAAK6c,YAAc22B,EAAUC,MAAM52B,YACnC7c,KAAK+sD,oBAAsBvZ,EAAUC,MAAMsZ,oBAG3C/sD,KAAKqsD,UAAYA,EACjBrsD,KAAKssD,UAAYA,EAGjBtsD,KAAKgtD,GAAK,EACVhtD,KAAKitD,GAAK,EACVjtD,KAAKktD,GAAK,EACVltD,KAAKmtD,GAAK,EACVntD,KAAKotD,SAAW5Z,EAAU4Z,SAC1BptD,KAAKq1C,QAAU7B,EAAUsB,QAAQO,QACjCr1C,KAAK8lD,KAAO,EACZ9lD,KAAKqkD,WAAal0C,EAAE,KAAKC,EAAE,MAG3BpQ,KAAKwiD,cAAcC,EAAYjP,GAG/BxzC,KAAKqtD,eACLrtD,KAAKstD,mBAAqB,EAC1BttD,KAAKutD,eAAiB,EACtBvtD,KAAKwtD,uBAA0Bha,EAAUiC,WAAWa,YAAY1lC,MAChE5Q,KAAKytD,wBAA0Bja,EAAUiC,WAAWa,YAAYzlC,OAChE7Q,KAAK0tD,wBAA0Bla,EAAUiC,WAAWa,YAAY9tB,OAChExoB,KAAKu2C,sBAAwB/C,EAAUiC,WAAWc,sBAClDv2C,KAAK2tD,gBAAkB,EAGvB3tD,KAAKgpD,gBAAkB,EACvBhpD,KAAK4tD,aAAe,EACpB5tD,KAAK65C,eAAiB1pC,EAAK,KAAMC,EAAK,MACtCpQ,KAAK85C,mBAAqB3pC,EAAM,IAAKC,EAAM,KAC3CpQ,KAAKgmD,aAAe,KA/FtB,GAAIrlD,GAAOT,EAAoB,EAqG/BiD,GAAKoO,UAAU87C,aAAe,WAE5BrtD,KAAK6tD,eAAiB3nD,OACtBlG,KAAK8tD,YAAc,EACnB9tD,KAAK+tD,kBACL/tD,KAAKguD,kBACLhuD,KAAKiuD,oBAOP9qD,EAAKoO,UAAUq2C,WAAa,SAASnG,GACH,IAA5BzhD,KAAKo0C,MAAMzsC,QAAQ85C,IACrBzhD,KAAKo0C,MAAMxsC,KAAK65C,GAEqB,IAAnCzhD,KAAKusD,aAAa5kD,QAAQ85C,IAC5BzhD,KAAKusD,aAAa3kD,KAAK65C,GAEzBzhD,KAAKstD,mBAAqBttD,KAAKusD,aAAalnD,QAO9ClC,EAAKoO,UAAUs2C,WAAa,SAASpG,GACnC,GAAI15C,GAAQ/H,KAAKo0C,MAAMzsC,QAAQ85C,EAClB,KAAT15C,IACF/H,KAAKo0C,MAAMpsC,OAAOD,EAAO,GACzB/H,KAAKusD,aAAavkD,OAAOD,EAAO,IAElC/H,KAAKstD,mBAAqBttD,KAAKusD,aAAalnD,QAS9ClC,EAAKoO,UAAUixC,cAAgB,SAASC,EAAYjP,GAClD,GAAKiP,EAAL,CAwBA,GArBAziD,KAAKkuD,cAAgBhoD,OAECA,SAAlBu8C,EAAWpiD,KAA0BL,KAAKK,GAAKoiD,EAAWpiD,IACrC6F,SAArBu8C,EAAWl9B,QAA0BvlB,KAAKulB,MAAQk9B,EAAWl9B,MAAOvlB,KAAKkuD,cAAgBzL,EAAWl9B,OAC/Erf,SAArBu8C,EAAWrjB,QAA0Bp/B,KAAKo/B,MAAQqjB,EAAWrjB,OACxCl5B,SAArBu8C,EAAWpyC,QAA0BrQ,KAAKqQ,MAAQoyC,EAAWpyC,OAC5CnK,SAAjBu8C,EAAWtyC,IAA0BnQ,KAAKmQ,EAAIsyC,EAAWtyC,GACxCjK,SAAjBu8C,EAAWryC,IAA0BpQ,KAAKoQ,EAAIqyC,EAAWryC,GACpClK,SAArBu8C,EAAW57C,QAA0B7G,KAAK6G,MAAQ47C,EAAW57C,OACxCX,SAArBu8C,EAAWvO,QAA0Bl0C,KAAKk0C,MAAQuO,EAAWvO,MAAOl0C,KAAK8sD,kBAAmB,GACjE5mD,SAA3Bu8C,EAAW5lC,cAA4C7c,KAAK6c,YAAc4lC,EAAW5lC,aAClD3W,SAAnCu8C,EAAWsK,sBAA4C/sD,KAAK+sD,oBAAsBtK,EAAWsK,qBAGzE7mD,SAApBu8C,EAAWqD,OAAoC9lD,KAAK8lD,KAAOrD,EAAWqD,MAGnC5/C,SAAnCu8C,EAAWiK,sBAAoC1sD,KAAK0sD,oBAAsBjK,EAAWiK,qBAClDxmD,SAAnCu8C,EAAWkK,mBAAoC3sD,KAAK2sD,iBAAsBlK,EAAWkK,kBAClDzmD,SAAnCu8C,EAAW0L,kBAAoCnuD,KAAKmuD,gBAAsB1L,EAAW0L,iBAEzEjoD,SAAZlG,KAAKK,GACP,KAAM,sBAIR,IAAmB6F,SAAflG,KAAKqQ,MAAqB,CAC5B,GAAI+9C,GAAWpuD,KAAKssD,UAAUn5C,IAAInT,KAAKqQ,MACvC,KAAK,GAAI9K,KAAQ6oD,GACXA,EAAS5oD,eAAeD,KAC1BvF,KAAKuF,GAAQ6oD,EAAS7oD,IAgB5B,GATyBW,SAArBu8C,EAAW7O,QAA+B5zC,KAAK4zC,MAAQ6O,EAAW7O,OAC7C1tC,SAArBu8C,EAAW5O,QAA+B7zC,KAAK6zC,MAAQ4O,EAAW5O,OAC5C3tC,SAAtBu8C,EAAWj6B,SAA+BxoB,KAAKwoB,OAASi6B,EAAWj6B,OAAQxoB,KAAK4sD,gBAAkB5sD,KAAKwoB,QAClFtiB,SAArBu8C,EAAWl4C,QAA+BvK,KAAKuK,MAAQ5J,EAAK2J,WAAWm4C,EAAWl4C,QAEzDrE,SAAzBu8C,EAAW1O,YAA+B/zC,KAAK+zC,UAAY0O,EAAW1O,WAC9C7tC,SAAxBu8C,EAAWzO,WAA+Bh0C,KAAKg0C,SAAWyO,EAAWzO,UAC7C9tC,SAAxBu8C,EAAWxO,WAA+Bj0C,KAAKi0C,SAAWwO,EAAWxO,UAEtD/tC,SAAflG,KAAK6zC,OAAqC,IAAd7zC,KAAK6zC,MAAa,CAChD,IAAI7zC,KAAKqsD,UAIP,KAAM,uBAHNrsD,MAAKquD,SAAWruD,KAAKqsD,UAAUL,KAAKhsD,KAAK6zC,OAiB7C,OAVA7zC,KAAKw/C,OAASx/C,KAAKw/C,QAA4Bt5C,SAAjBu8C,EAAWtyC,IAAoBsyC,EAAW4D,eACxErmD,KAAKy/C,OAASz/C,KAAKy/C,QAA4Bv5C,SAAjBu8C,EAAWryC,IAAoBqyC,EAAW6D,eACxEtmD,KAAK6sD,YAAc7sD,KAAK6sD,aAAsC3mD,SAAtBu8C,EAAWj6B,OAEjC,SAAdxoB,KAAK4zC,QACP5zC,KAAK0zC,UAAYF,EAAUC,MAAM1vB,SACjC/jB,KAAK2zC,UAAYH,EAAUC,MAAMzvB,UAI3BhkB,KAAK4zC,OACX,IAAK,WAAiB5zC,KAAK6jD,KAAO7jD,KAAKsuD,cAAetuD,KAAK6oD,OAAS7oD,KAAKuuD,eAAiB,MAC1F,KAAK,MAAiBvuD,KAAK6jD,KAAO7jD,KAAKwuD,SAAUxuD,KAAK6oD,OAAS7oD,KAAKyuD,UAAY,MAChF,KAAK,SAAiBzuD,KAAK6jD,KAAO7jD,KAAK0uD,YAAa1uD,KAAK6oD,OAAS7oD,KAAK2uD,aAAe,MACtF,KAAK,UAAiB3uD,KAAK6jD,KAAO7jD,KAAK4uD,aAAc5uD,KAAK6oD,OAAS7oD,KAAK6uD,cAAgB,MAExF,KAAK,QAAiB7uD,KAAK6jD,KAAO7jD,KAAK8uD,WAAY9uD,KAAK6oD,OAAS7oD,KAAK+uD,YAAc,MACpF,KAAK,OAAiB/uD,KAAK6jD,KAAO7jD,KAAKgvD,UAAWhvD,KAAK6oD,OAAS7oD,KAAKivD,WAAa,MAClF,KAAK,MAAiBjvD,KAAK6jD,KAAO7jD,KAAKkvD,SAAUlvD,KAAK6oD,OAAS7oD,KAAKmvD,YAAc,MAClF,KAAK,SAAiBnvD,KAAK6jD,KAAO7jD,KAAKovD,YAAapvD,KAAK6oD,OAAS7oD,KAAKmvD,YAAc,MACrF,KAAK,WAAiBnvD,KAAK6jD,KAAO7jD,KAAKqvD,cAAervD,KAAK6oD,OAAS7oD,KAAKmvD,YAAc,MACvF,KAAK,eAAiBnvD,KAAK6jD,KAAO7jD,KAAKsvD,kBAAmBtvD,KAAK6oD,OAAS7oD,KAAKmvD,YAAc,MAC3F,KAAK,OAAiBnvD,KAAK6jD,KAAO7jD,KAAKuvD,UAAWvvD,KAAK6oD,OAAS7oD,KAAKmvD,YAAc,MACnF,SAAsBnvD,KAAK6jD,KAAO7jD,KAAK4uD,aAAc5uD,KAAK6oD,OAAS7oD,KAAK6uD,eAG1E7uD,KAAKwvD,WAMPrsD,EAAKoO,UAAUm3B,OAAS,WACtB1oC,KAAKsqC,UAAW,EAChBtqC,KAAKwvD,UAMPrsD,EAAKoO,UAAUk3B,SAAW,WACxBzoC,KAAKsqC,UAAW,EAChBtqC,KAAKwvD,UAOPrsD,EAAKoO,UAAUk+C,eAAiB,WAC9BzvD,KAAKwvD,UAOPrsD,EAAKoO,UAAUi+C,OAAS,WACtBxvD,KAAK4Q,MAAQ1K,OACblG,KAAK6Q,OAAS3K,QAQhB/C,EAAKoO,UAAUgwC,SAAW,WACxB,MAA6B,kBAAfvhD,MAAKo/B,MAAuBp/B,KAAKo/B,QAAUp/B,KAAKo/B,OAShEj8B,EAAKoO,UAAU44C,iBAAmB,SAAUvmC,EAAKs+B,GAC/C,GAAIrlC,GAAc,CAMlB,QAJK7c,KAAK4Q,OACR5Q,KAAK6oD,OAAOjlC,GAGN5jB,KAAK4zC,OACX,IAAK,SACL,IAAK,MACH,MAAO5zC,MAAKwoB,OAAS3L,CAEvB,KAAK,UACH,GAAI5X,GAAIjF,KAAK4Q,MAAQ,EACjB9K,EAAI9F,KAAK6Q,OAAS,EAClBqyC,EAAKt+C,KAAKqW,IAAIinC,GAASj9C,EACvB2F,EAAKhG,KAAKwW,IAAI8mC,GAASp8C,CAC3B,OAAOb,GAAIa,EAAIlB,KAAKkoB,KAAKo2B,EAAIA,EAAIt4C,EAAIA,EAMvC,KAAK,MACL,IAAK,QACL,IAAK,OACL,QACE,MAAI5K,MAAK4Q,MACAhM,KAAKmG,IACRnG,KAAK+iB,IAAI3nB,KAAK4Q,MAAQ,EAAIhM,KAAKwW,IAAI8mC,IACnCt9C,KAAK+iB,IAAI3nB,KAAK6Q,OAAS,EAAIjM,KAAKqW,IAAIinC,KAAWrlC,EAI5C,IAYf1Z,EAAKoO,UAAUm+C,UAAY,SAAS1C,EAAIC,GACtCjtD,KAAKgtD,GAAKA,EACVhtD,KAAKitD,GAAKA,GASZ9pD,EAAKoO,UAAUo+C,UAAY,SAAS3C,EAAIC,GACtCjtD,KAAKgtD,IAAMA,EACXhtD,KAAKitD,IAAMA,GAOb9pD,EAAKoO,UAAUqzC,aAAe,SAAS90B,GACrC,IAAK9vB,KAAKw/C,OAAQ,CAChB,GAAI/jC,GAAOzb,KAAKq1C,QAAUr1C,KAAKktD,GAC3BzyC,GAAQza,KAAKgtD,GAAKvxC,GAAMzb,KAAK8lD,IACjC9lD,MAAKktD,IAAMzyC,EAAKqV,EAChB9vB,KAAKmQ,GAAMnQ,KAAKktD,GAAKp9B,EAGvB,IAAK9vB,KAAKy/C,OAAQ,CAChB,GAAI/jC,GAAO1b,KAAKq1C,QAAUr1C,KAAKmtD,GAC3BzyC,GAAQ1a,KAAKitD,GAAKvxC,GAAM1b,KAAK8lD,IACjC9lD,MAAKmtD,IAAMzyC,EAAKoV,EAChB9vB,KAAKoQ,GAAMpQ,KAAKmtD,GAAKr9B,IAWzB3sB,EAAKoO,UAAUozC,oBAAsB,SAAS70B,EAAUynB,GACtD,GAAKv3C,KAAKw/C,OAQRx/C,KAAKgtD,GAAK,MARM,CAChB,GAAIvxC,GAAOzb,KAAKq1C,QAAUr1C,KAAKktD,GAC3BzyC,GAAQza,KAAKgtD,GAAKvxC,GAAMzb,KAAK8lD,IACjC9lD,MAAKktD,IAAMzyC,EAAKqV,EAChB9vB,KAAKktD,GAAMtoD,KAAK+iB,IAAI3nB,KAAKktD,IAAM3V,EAAiBv3C,KAAKktD,GAAK,EAAK3V,GAAeA,EAAev3C,KAAKktD,GAClGltD,KAAKmQ,GAAMnQ,KAAKktD,GAAKp9B,EAMvB,GAAK9vB,KAAKy/C,OAQRz/C,KAAKitD,GAAK,MARM,CAChB,GAAIvxC,GAAO1b,KAAKq1C,QAAUr1C,KAAKmtD,GAC3BzyC,GAAQ1a,KAAKitD,GAAKvxC,GAAM1b,KAAK8lD,IACjC9lD,MAAKmtD,IAAMzyC,EAAKoV,EAChB9vB,KAAKmtD,GAAMvoD,KAAK+iB,IAAI3nB,KAAKmtD,IAAM5V,EAAiBv3C,KAAKmtD,GAAK,EAAK5V,GAAeA,EAAev3C,KAAKmtD,GAClGntD,KAAKoQ,GAAMpQ,KAAKmtD,GAAKr9B,IAWzB3sB,EAAKoO,UAAUq+C,QAAU,WACvB,MAAQ5vD,MAAKw/C,QAAUx/C,KAAKy/C,QAS9Bt8C,EAAKoO,UAAUizC,SAAW,SAASD,GACjC,MAAQ3/C,MAAK+iB,IAAI3nB,KAAKktD,IAAM3I,GAAQ3/C,KAAK+iB,IAAI3nB,KAAKmtD,IAAM5I,GAO1DphD,EAAKoO,UAAU6tC,WAAa,WAC1B,MAAOp/C,MAAKsqC,UAOdnnC,EAAKoO,UAAUuB,SAAW,WACxB,MAAO9S,MAAK6G,OASd1D,EAAKoO,UAAUs+C,YAAc,SAAS1/C,EAAGC,GACvC,GAAIqL,GAAKzb,KAAKmQ,EAAIA,EACduL,EAAK1b,KAAKoQ,EAAIA,CAClB,OAAOxL,MAAKkoB,KAAKrR,EAAKA,EAAKC,EAAKA,IAUlCvY,EAAKoO,UAAU0xC,cAAgB,SAASl4C,EAAK0B,GAC3C,IAAKzM,KAAK6sD,aAA8B3mD,SAAflG,KAAK6G,MAC5B,GAAI4F,GAAO1B,EACT/K,KAAKwoB,QAAUxoB,KAAK0zC,UAAY1zC,KAAK2zC,WAAa,MAE/C,CACH,GAAI75B,IAAS9Z,KAAK2zC,UAAY3zC,KAAK0zC,YAAcjnC,EAAM1B,EACvD/K,MAAKwoB,QAAUxoB,KAAK6G,MAAQkE,GAAO+O,EAAQ9Z,KAAK0zC,UAGpD1zC,KAAK4sD,gBAAkB5sD,KAAKwoB,QAQ9BrlB,EAAKoO,UAAUsyC,KAAO,WACpB,KAAM,wCAQR1gD,EAAKoO,UAAUs3C,OAAS,WACtB,KAAM,0CAQR1lD,EAAKoO,UAAUiwC,kBAAoB,SAAS3hC,GAC1C,MAAQ7f,MAAKiH,KAAoB4Y,EAAIqE,OAC7BlkB,KAAKiH,KAAOjH,KAAK4Q,MAAQiP,EAAI5Y,MAC7BjH,KAAKqH,IAAoBwY,EAAIM,QAC7BngB,KAAKqH,IAAMrH,KAAK6Q,OAASgP,EAAIxY,KAGvClE,EAAKoO,UAAUw9C,aAAe,WAG5B,IAAK/uD,KAAK4Q,QAAU5Q,KAAK6Q,OAAQ,CAC/B,GAAID,GAAOC,CACX,IAAI7Q,KAAK6G,MAAO,CACd7G,KAAKwoB,OAASxoB,KAAK4sD,eACnB,IAAI9yC,GAAQ9Z,KAAKquD,SAASx9C,OAAS7Q,KAAKquD,SAASz9C,KACnC1K,UAAV4T,GACFlJ,EAAQ5Q,KAAKwoB,QAAUxoB,KAAKquD,SAASz9C,MACrCC,EAAS7Q,KAAKwoB,OAAS1O,GAAS9Z,KAAKquD,SAASx9C,SAG9CD,EAAQ,EACRC,EAAS,OAIXD,GAAQ5Q,KAAKquD,SAASz9C,MACtBC,EAAS7Q,KAAKquD,SAASx9C,MAEzB7Q,MAAK4Q,MAASA,EACd5Q,KAAK6Q,OAASA,EAEd7Q,KAAK2tD,gBAAkB,EACnB3tD,KAAK4Q,MAAQ,GAAK5Q,KAAK6Q,OAAS,IAClC7Q,KAAK4Q,OAAUhM,KAAKmG,IAAI/K,KAAK8tD,YAAc,EAAG9tD,KAAKu2C,uBAA0Bv2C,KAAKwtD,uBAClFxtD,KAAK6Q,QAAUjM,KAAKmG,IAAI/K,KAAK8tD,YAAc,EAAG9tD,KAAKu2C,uBAAyBv2C,KAAKytD,wBACjFztD,KAAKwoB,QAAU5jB,KAAKmG,IAAI/K,KAAK8tD,YAAc,EAAG9tD,KAAKu2C,uBAAyBv2C,KAAK0tD,wBACjF1tD,KAAK2tD,gBAAkB3tD,KAAK4Q,MAAQA,KAM1CzN,EAAKoO,UAAUu9C,WAAa,SAAUlrC,GACpC5jB,KAAK+uD,aAAanrC,GAElB5jB,KAAKiH,KAASjH,KAAKmQ,EAAInQ,KAAK4Q,MAAQ,EACpC5Q,KAAKqH,IAASrH,KAAKoQ,EAAIpQ,KAAK6Q,OAAS,CAErC,IAAIsG,EACJ,IAA2B,GAAvBnX,KAAKquD,SAASz9C,MAAa,CAE7B,GAAI5Q,KAAK8tD,YAAc,EAAG,CACxB,GAAI3pC,GAAcnkB,KAAK8tD,YAAc,EAAK,GAAK,CAC/C3pC,IAAankB,KAAKgpD,gBAClB7kC,EAAYvf,KAAKmG,IAAI,GAAM/K,KAAK4Q,MAAMuT,GAEtCP,EAAIksC,YAAc,GAClBlsC,EAAImsC,UAAU/vD,KAAKquD,SAAUruD,KAAKiH,KAAOkd,EAAWnkB,KAAKqH,IAAM8c,EAAWnkB,KAAK4Q,MAAQ,EAAEuT,EAAWnkB,KAAK6Q,OAAS,EAAEsT,GAItHP,EAAIksC,YAAc,EAClBlsC,EAAImsC,UAAU/vD,KAAKquD,SAAUruD,KAAKiH,KAAMjH,KAAKqH,IAAKrH,KAAK4Q,MAAO5Q,KAAK6Q,QACnEsG,EAASnX,KAAKoQ,EAAIpQ,KAAK6Q,OAAS,MAIhCsG,GAASnX,KAAKoQ,CAGhBpQ,MAAK4oD,OAAOhlC,EAAK5jB,KAAKulB,MAAOvlB,KAAKmQ,EAAGgH,EAAQjR,OAAW,QAI1D/C,EAAKoO,UAAUk9C,WAAa,SAAU7qC,GACpC,IAAK5jB,KAAK4Q,MAAO,CACf,GAAImG,GAAS,EACTi5C,EAAWhwD,KAAKiwD,YAAYrsC,EAChC5jB,MAAK4Q,MAAQo/C,EAASp/C,MAAQ,EAAImG,EAClC/W,KAAK6Q,OAASm/C,EAASn/C,OAAS,EAAIkG,EAEpC/W,KAAK4Q,OAAuE,GAA7DhM,KAAKmG,IAAI/K,KAAK8tD,YAAc,EAAG9tD,KAAKu2C,uBAA+Bv2C,KAAKwtD,uBACvFxtD,KAAK6Q,QAAuE,GAA7DjM,KAAKmG,IAAI/K,KAAK8tD,YAAc,EAAG9tD,KAAKu2C,uBAA+Bv2C,KAAKytD,wBACvFztD,KAAK2tD,gBAAkB3tD,KAAK4Q,OAASo/C,EAASp/C,MAAQ,EAAImG,KAM9D5T,EAAKoO,UAAUi9C,SAAW,SAAU5qC,GAClC5jB,KAAKyuD,WAAW7qC,GAEhB5jB,KAAKiH,KAAOjH,KAAKmQ,EAAInQ,KAAK4Q,MAAQ,EAClC5Q,KAAKqH,IAAMrH,KAAKoQ,EAAIpQ,KAAK6Q,OAAS,CAElC,IAAIq/C,GAAmB,IACnBrzC,EAAc7c,KAAK6c,YACnBszC,EAAqBnwD,KAAK+sD,qBAAuB,EAAI/sD,KAAK6c,WAE9D+G,GAAIY,YAAcxkB,KAAKsqC,SAAWtqC,KAAKuK,MAAMe,UAAUD,OAASrL,KAAKuL,MAAQvL,KAAKuK,MAAMgB,MAAMF,OAASrL,KAAKuK,MAAMc,OAG9GrL,KAAK8tD,YAAc,IACrBlqC,EAAIO,WAAankB,KAAKsqC,SAAW6lB,EAAqBtzC,IAAiB7c,KAAK8tD,YAAc,EAAKoC,EAAmB,GAClHtsC,EAAIO,WAAankB,KAAKgpD,gBACtBplC,EAAIO,UAAYvf,KAAKmG,IAAI/K,KAAK4Q,MAAMgT,EAAIO,WAExCP,EAAIwsC,UAAUpwD,KAAKiH,KAAK,EAAE2c,EAAIO,UAAWnkB,KAAKqH,IAAI,EAAEuc,EAAIO,UAAWnkB,KAAK4Q,MAAM,EAAEgT,EAAIO,UAAWnkB,KAAK6Q,OAAO,EAAE+S,EAAIO,UAAWnkB,KAAKwoB,QACjI5E,EAAIlH,UAENkH,EAAIO,WAAankB,KAAKsqC,SAAW6lB,EAAqBtzC,IAAiB7c,KAAK8tD,YAAc,EAAKoC,EAAmB,GAClHtsC,EAAIO,WAAankB,KAAKgpD,gBACtBplC,EAAIO,UAAYvf,KAAKmG,IAAI/K,KAAK4Q,MAAMgT,EAAIO,WAExCP,EAAIiB,UAAY7kB,KAAKsqC,SAAWtqC,KAAKuK,MAAMe,UAAUF,WAAapL,KAAKuK,MAAMa,WAE7EwY,EAAIwsC,UAAUpwD,KAAKiH,KAAMjH,KAAKqH,IAAKrH,KAAK4Q,MAAO5Q,KAAK6Q,OAAQ7Q,KAAKwoB,QACjE5E,EAAInH,OACJmH,EAAIlH,SAEJ1c,KAAK4oD,OAAOhlC,EAAK5jB,KAAKulB,MAAOvlB,KAAKmQ,EAAGnQ,KAAKoQ,IAI5CjN,EAAKoO,UAAUg9C,gBAAkB,SAAU3qC,GACzC,IAAK5jB,KAAK4Q,MAAO,CACf,GAAImG,GAAS,EACTi5C,EAAWhwD,KAAKiwD,YAAYrsC,GAC5BlT,EAAOs/C,EAASp/C,MAAQ,EAAImG,CAChC/W,MAAK4Q,MAAQF,EACb1Q,KAAK6Q,OAASH,EAGd1Q,KAAK4Q,OAAUhM,KAAKmG,IAAI/K,KAAK8tD,YAAc,EAAG9tD,KAAKu2C,uBAAyBv2C,KAAKwtD,uBACjFxtD,KAAK6Q,QAAUjM,KAAKmG,IAAI/K,KAAK8tD,YAAc,EAAG9tD,KAAKu2C,uBAAyBv2C,KAAKytD,wBACjFztD,KAAKwoB,QAAU5jB,KAAKmG,IAAI/K,KAAK8tD,YAAc,EAAG9tD,KAAKu2C,uBAAyBv2C,KAAK0tD,wBACjF1tD,KAAK2tD,gBAAkB3tD,KAAK4Q,MAAQF,IAIxCvN,EAAKoO,UAAU+8C,cAAgB,SAAU1qC,GACvC5jB,KAAKuuD,gBAAgB3qC,GACrB5jB,KAAKiH,KAAOjH,KAAKmQ,EAAInQ,KAAK4Q,MAAQ,EAClC5Q,KAAKqH,IAAMrH,KAAKoQ,EAAIpQ,KAAK6Q,OAAS,CAElC,IAAIq/C,GAAmB,IACnBrzC,EAAc7c,KAAK6c,YACnBszC,EAAqBnwD,KAAK+sD,qBAAuB,EAAI/sD,KAAK6c,WAE9D+G,GAAIY,YAAcxkB,KAAKsqC,SAAWtqC,KAAKuK,MAAMe,UAAUD,OAASrL,KAAKuL,MAAQvL,KAAKuK,MAAMgB,MAAMF,OAASrL,KAAKuK,MAAMc,OAG9GrL,KAAK8tD,YAAc,IACrBlqC,EAAIO,WAAankB,KAAKsqC,SAAW6lB,EAAqBtzC,IAAiB7c,KAAK8tD,YAAc,EAAKoC,EAAmB,GAClHtsC,EAAIO,WAAankB,KAAKgpD,gBACtBplC,EAAIO,UAAYvf,KAAKmG,IAAI/K,KAAK4Q,MAAMgT,EAAIO,WAExCP,EAAIysC,SAASrwD,KAAKmQ,EAAInQ,KAAK4Q,MAAM,EAAI,EAAEgT,EAAIO,UAAWnkB,KAAKoQ,EAAgB,GAAZpQ,KAAK6Q,OAAa,EAAE+S,EAAIO,UAAWnkB,KAAK4Q,MAAQ,EAAEgT,EAAIO,UAAWnkB,KAAK6Q,OAAS,EAAE+S,EAAIO,WACpJP,EAAIlH,UAENkH,EAAIO,WAAankB,KAAKsqC,SAAW6lB,EAAqBtzC,IAAiB7c,KAAK8tD,YAAc,EAAKoC,EAAmB,GAClHtsC,EAAIO,WAAankB,KAAKgpD,gBACtBplC,EAAIO,UAAYvf,KAAKmG,IAAI/K,KAAK4Q,MAAMgT,EAAIO,WAExCP,EAAIiB,UAAY7kB,KAAKsqC,SAAWtqC,KAAKuK,MAAMe,UAAUF,WAAapL,KAAKuL,MAAQvL,KAAKuK,MAAMgB,MAAMH,WAAapL,KAAKuK,MAAMa,WACxHwY,EAAIysC,SAASrwD,KAAKmQ,EAAInQ,KAAK4Q,MAAM,EAAG5Q,KAAKoQ,EAAgB,GAAZpQ,KAAK6Q,OAAY7Q,KAAK4Q,MAAO5Q,KAAK6Q,QAC/E+S,EAAInH,OACJmH,EAAIlH,SAEJ1c,KAAK4oD,OAAOhlC,EAAK5jB,KAAKulB,MAAOvlB,KAAKmQ,EAAGnQ,KAAKoQ,IAI5CjN,EAAKoO,UAAUo9C,cAAgB,SAAU/qC,GACvC,IAAK5jB,KAAK4Q,MAAO,CACf,GAAImG,GAAS,EACTi5C,EAAWhwD,KAAKiwD,YAAYrsC,GAC5B0sC,EAAW1rD,KAAK6H,IAAIujD,EAASp/C,MAAOo/C,EAASn/C,QAAU,EAAIkG,CAC/D/W,MAAKwoB,OAAS8nC,EAAW,EAEzBtwD,KAAK4Q,MAAQ0/C,EACbtwD,KAAK6Q,OAASy/C,EAKdtwD,KAAKwoB,QAAuE,GAA7D5jB,KAAKmG,IAAI/K,KAAK8tD,YAAc,EAAG9tD,KAAKu2C,uBAA+Bv2C,KAAK0tD,wBACvF1tD,KAAK2tD,gBAAkB3tD,KAAKwoB,OAAS,GAAI8nC,IAI7CntD,EAAKoO,UAAUm9C,YAAc,SAAU9qC,GACrC5jB,KAAK2uD,cAAc/qC,GACnB5jB,KAAKiH,KAAOjH,KAAKmQ,EAAInQ,KAAK4Q,MAAQ,EAClC5Q,KAAKqH,IAAMrH,KAAKoQ,EAAIpQ,KAAK6Q,OAAS,CAElC,IAAIq/C,GAAmB,IACnBrzC,EAAc7c,KAAK6c,YACnBszC,EAAqBnwD,KAAK+sD,qBAAuB,EAAI/sD,KAAK6c,WAE9D+G,GAAIY,YAAcxkB,KAAKsqC,SAAWtqC,KAAKuK,MAAMe,UAAUD,OAASrL,KAAKuL,MAAQvL,KAAKuK,MAAMgB,MAAMF,OAASrL,KAAKuK,MAAMc,OAG9GrL,KAAK8tD,YAAc,IACrBlqC,EAAIO,WAAankB,KAAKsqC,SAAW6lB,EAAqBtzC,IAAiB7c,KAAK8tD,YAAc,EAAKoC,EAAmB,GAClHtsC,EAAIO,WAAankB,KAAKgpD,gBACtBplC,EAAIO,UAAYvf,KAAKmG,IAAI/K,KAAK4Q,MAAMgT,EAAIO,WAExCP,EAAI2sC,OAAOvwD,KAAKmQ,EAAGnQ,KAAKoQ,EAAGpQ,KAAKwoB,OAAO,EAAE5E,EAAIO,WAC7CP,EAAIlH,UAENkH,EAAIO,WAAankB,KAAKsqC,SAAW6lB,EAAqBtzC,IAAiB7c,KAAK8tD,YAAc,EAAKoC,EAAmB,GAClHtsC,EAAIO,WAAankB,KAAKgpD,gBACtBplC,EAAIO,UAAYvf,KAAKmG,IAAI/K,KAAK4Q,MAAMgT,EAAIO,WAExCP,EAAIiB,UAAY7kB,KAAKsqC,SAAWtqC,KAAKuK,MAAMe,UAAUF,WAAapL,KAAKuL,MAAQvL,KAAKuK,MAAMgB,MAAMH,WAAapL,KAAKuK,MAAMa,WACxHwY,EAAI2sC,OAAOvwD,KAAKmQ,EAAGnQ,KAAKoQ,EAAGpQ,KAAKwoB,QAChC5E,EAAInH,OACJmH,EAAIlH,SAEJ1c,KAAK4oD,OAAOhlC,EAAK5jB,KAAKulB,MAAOvlB,KAAKmQ,EAAGnQ,KAAKoQ,IAG5CjN,EAAKoO,UAAUs9C,eAAiB,SAAUjrC,GACxC,IAAK5jB,KAAK4Q,MAAO,CACf,GAAIo/C,GAAWhwD,KAAKiwD,YAAYrsC,EAEhC5jB,MAAK4Q,MAAyB,IAAjBo/C,EAASp/C,MACtB5Q,KAAK6Q,OAA2B,EAAlBm/C,EAASn/C,OACnB7Q,KAAK4Q,MAAQ5Q,KAAK6Q,SACpB7Q,KAAK4Q,MAAQ5Q,KAAK6Q,OAEpB,IAAI2/C,GAAcxwD,KAAK4Q,KAGvB5Q,MAAK4Q,OAAUhM,KAAKmG,IAAI/K,KAAK8tD,YAAc,EAAG9tD,KAAKu2C,uBAAyBv2C,KAAKwtD,uBACjFxtD,KAAK6Q,QAAUjM,KAAKmG,IAAI/K,KAAK8tD,YAAc,EAAG9tD,KAAKu2C,uBAAyBv2C,KAAKytD,wBACjFztD,KAAKwoB,QAAU5jB,KAAKmG,IAAI/K,KAAK8tD,YAAc,EAAG9tD,KAAKu2C,uBAAyBv2C,KAAK0tD,wBACjF1tD,KAAK2tD,gBAAkB3tD,KAAK4Q,MAAQ4/C,IAIxCrtD,EAAKoO,UAAUq9C,aAAe,SAAUhrC,GACtC5jB,KAAK6uD,eAAejrC,GACpB5jB,KAAKiH,KAAOjH,KAAKmQ,EAAInQ,KAAK4Q,MAAQ,EAClC5Q,KAAKqH,IAAMrH,KAAKoQ,EAAIpQ,KAAK6Q,OAAS,CAElC,IAAIq/C,GAAmB,IACnBrzC,EAAc7c,KAAK6c,YACnBszC,EAAqBnwD,KAAK+sD,qBAAuB,EAAI/sD,KAAK6c,WAE9D+G,GAAIY,YAAcxkB,KAAKsqC,SAAWtqC,KAAKuK,MAAMe,UAAUD,OAASrL,KAAKuL,MAAQvL,KAAKuK,MAAMgB,MAAMF,OAASrL,KAAKuK,MAAMc,OAG9GrL,KAAK8tD,YAAc,IACrBlqC,EAAIO,WAAankB,KAAKsqC,SAAW6lB,EAAqBtzC,IAAiB7c,KAAK8tD,YAAc,EAAKoC,EAAmB,GAClHtsC,EAAIO,WAAankB,KAAKgpD,gBACtBplC,EAAIO,UAAYvf,KAAKmG,IAAI/K,KAAK4Q,MAAMgT,EAAIO,WAExCP,EAAI6sC,QAAQzwD,KAAKiH,KAAK,EAAE2c,EAAIO,UAAWnkB,KAAKqH,IAAI,EAAEuc,EAAIO,UAAWnkB,KAAK4Q,MAAM,EAAEgT,EAAIO,UAAWnkB,KAAK6Q,OAAO,EAAE+S,EAAIO,WAC/GP,EAAIlH,UAENkH,EAAIO,WAAankB,KAAKsqC,SAAW6lB,EAAqBtzC,IAAiB7c,KAAK8tD,YAAc,EAAKoC,EAAmB,GAClHtsC,EAAIO,WAAankB,KAAKgpD,gBACtBplC,EAAIO,UAAYvf,KAAKmG,IAAI/K,KAAK4Q,MAAMgT,EAAIO,WAExCP,EAAIiB,UAAY7kB,KAAKsqC,SAAWtqC,KAAKuK,MAAMe,UAAUF,WAAapL,KAAKuL,MAAQvL,KAAKuK,MAAMgB,MAAMH,WAAapL,KAAKuK,MAAMa,WAExHwY,EAAI6sC,QAAQzwD,KAAKiH,KAAMjH,KAAKqH,IAAKrH,KAAK4Q,MAAO5Q,KAAK6Q,QAClD+S,EAAInH,OACJmH,EAAIlH,SACJ1c,KAAK4oD,OAAOhlC,EAAK5jB,KAAKulB,MAAOvlB,KAAKmQ,EAAGnQ,KAAKoQ,IAG5CjN,EAAKoO,UAAU29C,SAAW,SAAUtrC,GAClC5jB,KAAK0wD,WAAW9sC,EAAK,WAGvBzgB,EAAKoO,UAAU89C,cAAgB,SAAUzrC,GACvC5jB,KAAK0wD,WAAW9sC,EAAK,aAGvBzgB,EAAKoO,UAAU+9C,kBAAoB,SAAU1rC,GAC3C5jB,KAAK0wD,WAAW9sC,EAAK,iBAGvBzgB,EAAKoO,UAAU69C,YAAc,SAAUxrC,GACrC5jB,KAAK0wD,WAAW9sC,EAAK,WAGvBzgB,EAAKoO,UAAUg+C,UAAY,SAAU3rC,GACnC5jB,KAAK0wD,WAAW9sC,EAAK,SAGvBzgB,EAAKoO,UAAU49C,aAAe,WAC5B,IAAKnvD,KAAK4Q,MAAO,CACf5Q,KAAKwoB,OAASxoB,KAAK4sD,eACnB,IAAIl8C,GAAO,EAAI1Q,KAAKwoB,MACpBxoB,MAAK4Q,MAAQF,EACb1Q,KAAK6Q,OAASH,EAGd1Q,KAAK4Q,OAAUhM,KAAKmG,IAAI/K,KAAK8tD,YAAc,EAAG9tD,KAAKu2C,uBAAyBv2C,KAAKwtD,uBACjFxtD,KAAK6Q,QAAUjM,KAAKmG,IAAI/K,KAAK8tD,YAAc,EAAG9tD,KAAKu2C,uBAAyBv2C,KAAKytD,wBACjFztD,KAAKwoB,QAAuE,GAA7D5jB,KAAKmG,IAAI/K,KAAK8tD,YAAc,EAAG9tD,KAAKu2C,uBAA+Bv2C,KAAK0tD,wBACvF1tD,KAAK2tD,gBAAkB3tD,KAAK4Q,MAAQF,IAIxCvN,EAAKoO,UAAUm/C,WAAa,SAAU9sC,EAAKgwB,GACzC5zC,KAAKmvD,aAAavrC,GAElB5jB,KAAKiH,KAAOjH,KAAKmQ,EAAInQ,KAAK4Q,MAAQ,EAClC5Q,KAAKqH,IAAMrH,KAAKoQ,EAAIpQ,KAAK6Q,OAAS,CAElC,IAAIq/C,GAAmB,IACnBrzC,EAAc7c,KAAK6c,YACnBszC,EAAqBnwD,KAAK+sD,qBAAuB,EAAI/sD,KAAK6c,YAC1D8zC,EAAmB,CAGvB,QAAQ/c,GACN,IAAK,MAAiB+c,EAAmB,CAAG,MAC5C,KAAK,SAAiBA,EAAmB,CAAG,MAC5C,KAAK,WAAiBA,EAAmB,CAAG,MAC5C,KAAK,eAAiBA,EAAmB,CAAG,MAC5C,KAAK,OAAiBA,EAAmB,EAG3C/sC,EAAIY,YAAcxkB,KAAKsqC,SAAWtqC,KAAKuK,MAAMe,UAAUD,OAASrL,KAAKuL,MAAQvL,KAAKuK,MAAMgB,MAAMF,OAASrL,KAAKuK,MAAMc,OAG9GrL,KAAK8tD,YAAc,IACrBlqC,EAAIO,WAAankB,KAAKsqC,SAAW6lB,EAAqBtzC,IAAiB7c,KAAK8tD,YAAc,EAAKoC,EAAmB,GAClHtsC,EAAIO,WAAankB,KAAKgpD,gBACtBplC,EAAIO,UAAYvf,KAAKmG,IAAI/K,KAAK4Q,MAAMgT,EAAIO,WAExCP,EAAIgwB,GAAO5zC,KAAKmQ,EAAGnQ,KAAKoQ,EAAGpQ,KAAKwoB,OAASmoC,EAAmB/sC,EAAIO,WAChEP,EAAIlH,UAENkH,EAAIO,WAAankB,KAAKsqC,SAAW6lB,EAAqBtzC,IAAiB7c,KAAK8tD,YAAc,EAAKoC,EAAmB,GAClHtsC,EAAIO,WAAankB,KAAKgpD,gBACtBplC,EAAIO,UAAYvf,KAAKmG,IAAI/K,KAAK4Q,MAAMgT,EAAIO,WAExCP,EAAIiB,UAAY7kB,KAAKsqC,SAAWtqC,KAAKuK,MAAMe,UAAUF,WAAapL,KAAKuL,MAAQvL,KAAKuK,MAAMgB,MAAMH,WAAapL,KAAKuK,MAAMa,WACxHwY,EAAIgwB,GAAO5zC,KAAKmQ,EAAGnQ,KAAKoQ,EAAGpQ,KAAKwoB,QAChC5E,EAAInH,OACJmH,EAAIlH,SAEA1c,KAAKulB,OACPvlB,KAAK4oD,OAAOhlC,EAAK5jB,KAAKulB,MAAOvlB,KAAKmQ,EAAGnQ,KAAKoQ,EAAIpQ,KAAK6Q,OAAS,EAAG3K,OAAW,OAAM,IAIpF/C,EAAKoO,UAAU09C,YAAc,SAAUrrC,GACrC,IAAK5jB,KAAK4Q,MAAO,CACf,GAAImG,GAAS,EACTi5C,EAAWhwD,KAAKiwD,YAAYrsC,EAChC5jB,MAAK4Q,MAAQo/C,EAASp/C,MAAQ,EAAImG,EAClC/W,KAAK6Q,OAASm/C,EAASn/C,OAAS,EAAIkG,EAGpC/W,KAAK4Q,OAAUhM,KAAKmG,IAAI/K,KAAK8tD,YAAc,EAAG9tD,KAAKu2C,uBAAyBv2C,KAAKwtD,uBACjFxtD,KAAK6Q,QAAUjM,KAAKmG,IAAI/K,KAAK8tD,YAAc,EAAG9tD,KAAKu2C,uBAAyBv2C,KAAKytD,wBACjFztD,KAAKwoB,QAAU5jB,KAAKmG,IAAI/K,KAAK8tD,YAAc,EAAG9tD,KAAKu2C,uBAAyBv2C,KAAK0tD,wBACjF1tD,KAAK2tD,gBAAkB3tD,KAAK4Q,OAASo/C,EAASp/C,MAAQ,EAAImG,KAI9D5T,EAAKoO,UAAUy9C,UAAY,SAAUprC,GACnC5jB,KAAKivD,YAAYrrC,GACjB5jB,KAAKiH,KAAOjH,KAAKmQ,EAAInQ,KAAK4Q,MAAQ,EAClC5Q,KAAKqH,IAAMrH,KAAKoQ,EAAIpQ,KAAK6Q,OAAS,EAElC7Q,KAAK4oD,OAAOhlC,EAAK5jB,KAAKulB,MAAOvlB,KAAKmQ,EAAGnQ,KAAKoQ,IAI5CjN,EAAKoO,UAAUq3C,OAAS,SAAUhlC,EAAKyC,EAAMlW,EAAGC,EAAGq2B,EAAOmqB,EAAUC,GAClE,GAAIxqC,GAAQrmB,KAAKg0C,SAAWh0C,KAAK4tD,aAAe5tD,KAAKysD,kBAAmB,CACtE7oC,EAAIQ,MAAQpkB,KAAKsqC,SAAW,QAAU,IAAMtqC,KAAKg0C,SAAW,MAAQh0C,KAAKi0C,SACzErwB,EAAIiB,UAAY7kB,KAAK+zC,WAAa,QAClCnwB,EAAIwB,UAAYqhB,GAAS,SACzB7iB,EAAIyB,aAAeurC,GAAY,QAE/B,IAAItwB,GAAQja,EAAK3e,MAAM,MACnBopD,EAAYxwB,EAAMj7B,OAClB2uC,EAAYh0C,KAAKg0C,SAAW,EAC5B+c,EAAQ3gD,GAAK,EAAI0gD,GAAa,EAAI9c,CAChB,IAAlB6c,IACFE,EAAQ3gD,GAAK,EAAI0gD,IAAc,EAAI9c,GAGrC,KAAK,GAAI9uC,GAAI,EAAO4rD,EAAJ5rD,EAAeA,IAC7B0e,EAAI0B,SAASgb,EAAMp7B,GAAIiL,EAAG4gD,GAC1BA,GAAS/c,IAMf7wC,EAAKoO,UAAU0+C,YAAc,SAASrsC,GACpC,GAAmB1d,SAAflG,KAAKulB,MAAqB,CAC5B3B,EAAIQ,MAAQpkB,KAAKsqC,SAAW,QAAU,IAAMtqC,KAAKg0C,SAAW,MAAQh0C,KAAKi0C,QAMzE,KAAK,GAJD3T,GAAQtgC,KAAKulB,MAAM7d,MAAM,MACzBmJ,GAAU7Q,KAAKg0C,SAAW,GAAK1T,EAAMj7B,OACrCuL,EAAQ,EAEH1L,EAAI,EAAG+2B,EAAOqE,EAAMj7B,OAAY42B,EAAJ/2B,EAAUA,IAC7C0L,EAAQhM,KAAK6H,IAAImE,EAAOgT,EAAIylC,YAAY/oB,EAAMp7B,IAAI0L,MAGpD,QAAQA,MAASA,EAAOC,OAAUA,GAGlC,OAAQD,MAAS,EAAGC,OAAU,IAUlC1N,EAAKoO,UAAUqyC,OAAS,WACtB,MAAmB19C,UAAflG,KAAK4Q,MACD5Q,KAAKmQ,EAAInQ,KAAK4Q,MAAO5Q,KAAKgpD,iBAAoBhpD,KAAK65C,cAAc1pC,GACjEnQ,KAAKmQ,EAAInQ,KAAK4Q,MAAO5Q,KAAKgpD,gBAAoBhpD,KAAK85C,kBAAkB3pC,GACrEnQ,KAAKoQ,EAAIpQ,KAAK6Q,OAAO7Q,KAAKgpD,iBAAoBhpD,KAAK65C,cAAczpC,GACjEpQ,KAAKoQ,EAAIpQ,KAAK6Q,OAAO7Q,KAAKgpD,gBAAoBhpD,KAAK85C,kBAAkB1pC,GAGpE,GAQXjN,EAAKoO,UAAUy/C,OAAS,WACtB,MAAQhxD,MAAKmQ,GAAKnQ,KAAK65C,cAAc1pC,GAC7BnQ,KAAKmQ,EAAInQ,KAAK85C,kBAAkB3pC,GAChCnQ,KAAKoQ,GAAKpQ,KAAK65C,cAAczpC,GAC7BpQ,KAAKoQ,EAAIpQ,KAAK85C,kBAAkB1pC,GAW1CjN,EAAKoO,UAAUoyC,eAAiB,SAAS7pC,EAAM+/B,EAAcC,GAC3D95C,KAAKgpD,gBAAkB,EAAIlvC,EAC3B9Z,KAAK4tD,aAAe9zC,EACpB9Z,KAAK65C,cAAgBA,EACrB75C,KAAK85C,kBAAoBA,GAS3B32C,EAAKoO,UAAUusB,SAAW,SAAShkB,GACjC9Z,KAAKgpD,gBAAkB,EAAIlvC,EAC3B9Z,KAAK4tD,aAAe9zC,GAQtB3W,EAAKoO,UAAU0/C,cAAgB,WAC7BjxD,KAAKktD,GAAK,EACVltD,KAAKmtD,GAAK,GASZhqD,EAAKoO,UAAU2/C,eAAiB,SAASC,GACvC,GAAIC,GAAepxD,KAAKktD,GAAKltD,KAAKktD,GAAKiE,CAEvCnxD,MAAKktD,GAAKtoD,KAAKkoB,KAAKskC,EAAapxD,KAAK8lD,MACtCsL,EAAepxD,KAAKmtD,GAAKntD,KAAKmtD,GAAKgE,EAEnCnxD,KAAKmtD,GAAKvoD,KAAKkoB,KAAKskC,EAAapxD,KAAK8lD,OAGxCjmD,EAAOD,QAAUuD,GAKb,SAAStD,GAWb,QAASuD,GAAMwT,EAAWzG,EAAGC,EAAGiW,EAAM7V,GAElCxQ,KAAK4W,UADHA,EACeA,EAGAhH,SAASkiB,KAId5rB,SAAVsK,IACe,gBAANL,IACTK,EAAQL,EACRA,EAAIjK,QACqB,gBAATmgB,IAChB7V,EAAQ6V,EACRA,EAAOngB,QAGPsK,GACEujC,UAAW,QACXC,SAAU,GACVC,SAAU,UACV1pC,OACEc,OAAQ,OACRD,WAAY,aAMpBpL,KAAKmQ,EAAI,EACTnQ,KAAKoQ,EAAI,EACTpQ,KAAK6gB,QAAU,EAEL3a,SAANiK,GAAyBjK,SAANkK,GACrBpQ,KAAK4hD,YAAYzxC,EAAGC,GAETlK,SAATmgB,GACFrmB,KAAK6hD,QAAQx7B,GAIfrmB,KAAKmc,MAAQvM,SAASK,cAAc,MACpC,IAAIohD,GAAYrxD,KAAKmc,MAAM3L,KAC3B6gD,GAAU5wC,SAAW,WACrB4wC,EAAUz6B,WAAa,SACvBy6B,EAAUhmD,OAAS,aAAemF,EAAMjG,MAAMc,OAC9CgmD,EAAU9mD,MAAQiG,EAAMujC,UACxBsd,EAAUrd,SAAWxjC,EAAMwjC,SAAW,KACtCqd,EAAUC,WAAa9gD,EAAMyjC,SAC7Bod,EAAUxwC,QAAU7gB,KAAK6gB,QAAU,KACnCwwC,EAAU70C,gBAAkBhM,EAAMjG,MAAMa,WACxCimD,EAAUlkC,aAAe,MACzBkkC,EAAUjiC,gBAAkB,MAC5BiiC,EAAUE,mBAAqB,MAC/BF,EAAUjkC,UAAY,wCACtBikC,EAAUG,WAAa,SACvBxxD,KAAK4W,UAAU9G,YAAY9P,KAAKmc,OAOlC/Y,EAAMmO,UAAUqwC,YAAc,SAASzxC,EAAGC,GACxCpQ,KAAKmQ,EAAIyX,SAASzX,GAClBnQ,KAAKoQ,EAAIwX,SAASxX,IAOpBhN,EAAMmO,UAAUswC,QAAU,SAASx7B,GACjCrmB,KAAKmc,MAAM2E,UAAYuF,GAOzBjjB,EAAMmO,UAAU8vB,KAAO,SAAUA,GAK/B,GAJan7B,SAATm7B,IACFA,GAAO,GAGLA,EAAM,CACR,GAAIxwB,GAAS7Q,KAAKmc,MAAMuF,aACpB9Q,EAAS5Q,KAAKmc,MAAME,YACpBsV,EAAY3xB,KAAKmc,MAAM3S,WAAWkY,aAClC+vC,EAAWzxD,KAAKmc,MAAM3S,WAAW6S,YAEjChV,EAAOrH,KAAKoQ,EAAIS,CAChBxJ,GAAMwJ,EAAS7Q,KAAK6gB,QAAU8Q,IAChCtqB,EAAMsqB,EAAY9gB,EAAS7Q,KAAK6gB,SAE9BxZ,EAAMrH,KAAK6gB,UACbxZ,EAAMrH,KAAK6gB,QAGb,IAAI5Z,GAAOjH,KAAKmQ,CACZlJ,GAAO2J,EAAQ5Q,KAAK6gB,QAAU4wC,IAChCxqD,EAAOwqD,EAAW7gD,EAAQ5Q,KAAK6gB,SAE7B5Z,EAAOjH,KAAK6gB,UACd5Z,EAAOjH,KAAK6gB,SAGd7gB,KAAKmc,MAAM3L,MAAMvJ,KAAOA,EAAO,KAC/BjH,KAAKmc,MAAM3L,MAAMnJ,IAAMA,EAAM,KAC7BrH,KAAKmc,MAAM3L,MAAMomB,WAAa,cAG9B52B,MAAKohC,QAOTh+B,EAAMmO,UAAU6vB,KAAO,WACrBphC,KAAKmc,MAAM3L,MAAMomB,WAAa,UAGhC/2B,EAAOD,QAAUwD,GAKb,SAASvD,EAAQD,GAarB,QAAS8xD,GAAU3gD,GAEjB,MADAkc,GAAMlc,EACC4gD,IAoCT,QAAS14B,KACPlxB,EAAQ,EACRtH,EAAIwsB,EAAIhL,OAAO,GAQjB,QAASiD,KACPnd,IACAtH,EAAIwsB,EAAIhL,OAAOla,GAOjB,QAAS6pD,KACP,MAAO3kC,GAAIhL,OAAOla,EAAQ,GAS5B,QAAS8pD,GAAepxD,GACtB,MAAOqxD,GAAkB7kD,KAAKxM,GAShC,QAASsxD,GAAO9sD,EAAGa,GAKjB,GAJKb,IACHA,MAGEa,EACF,IAAK,GAAIsO,KAAQtO,GACXA,EAAEN,eAAe4O,KACnBnP,EAAEmP,GAAQtO,EAAEsO,GAIlB,OAAOnP,GAeT,QAAS+Q,GAAS6J,EAAKskB,EAAMt9B,GAG3B,IAFA,GAAIgO,GAAOsvB,EAAKz8B,MAAM,KAClBsqD,EAAInyC,EACDhL,EAAKxP,QAAQ,CAClB,GAAIiD,GAAMuM,EAAKlF,OACXkF,GAAKxP,QAEF2sD,EAAE1pD,KACL0pD,EAAE1pD,OAEJ0pD,EAAIA,EAAE1pD,IAIN0pD,EAAE1pD,GAAOzB,GAWf,QAASorD,GAAQ1jC,EAAOitB,GAOtB,IANA,GAAIt2C,GAAGC,EACH8yB,EAAU,KAGVi6B,GAAU3jC,GACV7uB,EAAO6uB,EACJ7uB,EAAKy/B,QACV+yB,EAAOtqD,KAAKlI,EAAKy/B,QACjBz/B,EAAOA,EAAKy/B,MAId,IAAIz/B,EAAK+zC,MACP,IAAKvuC,EAAI,EAAGC,EAAMzF,EAAK+zC,MAAMpuC,OAAYF,EAAJD,EAASA,IAC5C,GAAIs2C,EAAKn7C,KAAOX,EAAK+zC,MAAMvuC,GAAG7E,GAAI,CAChC43B,EAAUv4B,EAAK+zC,MAAMvuC,EACrB,OAiBN,IAZK+yB,IAEHA,GACE53B,GAAIm7C,EAAKn7C,IAEPkuB,EAAMitB,OAERvjB,EAAQk6B,KAAOJ,EAAM95B,EAAQk6B,KAAM5jC,EAAMitB,QAKxCt2C,EAAIgtD,EAAO7sD,OAAS,EAAGH,GAAK,EAAGA,IAAK,CACvC,GAAI+G,GAAIimD,EAAOhtD,EAEV+G,GAAEwnC,QACLxnC,EAAEwnC,UAE4B,IAA5BxnC,EAAEwnC,MAAM9rC,QAAQswB,IAClBhsB,EAAEwnC,MAAM7rC,KAAKqwB,GAKbujB,EAAK2W,OACPl6B,EAAQk6B,KAAOJ,EAAM95B,EAAQk6B,KAAM3W,EAAK2W,OAS5C,QAASC,GAAQ7jC,EAAOkzB,GAKtB,GAJKlzB,EAAM6lB,QACT7lB,EAAM6lB,UAER7lB,EAAM6lB,MAAMxsC,KAAK65C,GACblzB,EAAMkzB,KAAM,CACd,GAAI0Q,GAAOJ,KAAUxjC,EAAMkzB,KAC3BA,GAAK0Q,KAAOJ,EAAMI,EAAM1Q,EAAK0Q,OAajC,QAASE,GAAW9jC,EAAOrI,EAAMC,EAAI7f,EAAM6rD,GACzC,GAAI1Q,IACFv7B,KAAMA,EACNC,GAAIA,EACJ7f,KAAMA,EAQR,OALIioB,GAAMkzB,OACRA,EAAK0Q,KAAOJ,KAAUxjC,EAAMkzB,OAE9BA,EAAK0Q,KAAOJ,EAAMtQ,EAAK0Q,SAAYA,GAE5B1Q,EAOT,QAAS6Q,KAKP,IAJAC,EAAYC,EAAUC,KACtBC,EAAQ,GAGI,KAALjyD,GAAiB,KAALA,GAAkB,MAALA,GAAkB,MAALA,GAC3CykB,GAGF,GAAG,CACD,GAAIytC,IAAY,CAGhB,IAAS,KAALlyD,EAAU,CAGZ,IADA,GAAIyE,GAAI6C,EAAQ,EACQ,KAAjBklB,EAAIhL,OAAO/c,IAA8B,KAAjB+nB,EAAIhL,OAAO/c,IACxCA,GAEF,IAAqB,MAAjB+nB,EAAIhL,OAAO/c,IAA+B,IAAjB+nB,EAAIhL,OAAO/c,GAAU,CAEhD,KAAY,IAALzE,GAAgB,MAALA,GAChBykB,GAEFytC,IAAY,GAGhB,GAAS,KAALlyD,GAA6B,KAAjBmxD,IAAsB,CAEpC,KAAY,IAALnxD,GAAgB,MAALA,GAChBykB,GAEFytC,IAAY,EAEd,GAAS,KAALlyD,GAA6B,KAAjBmxD,IAAsB,CAEpC,KAAY,IAALnxD,GAAS,CACd,GAAS,KAALA,GAA6B,KAAjBmxD,IAAsB,CAEpC1sC,IACAA,GACA,OAGAA,IAGJytC,GAAY,EAId,KAAY,KAALlyD,GAAiB,KAALA,GAAkB,MAALA,GAAkB,MAALA,GAC3CykB,UAGGytC,EAGP,IAAS,IAALlyD,EAGF,YADA8xD,EAAYC,EAAUI,UAKxB,IAAIC,GAAKpyD,EAAImxD,GACb,IAAIkB,EAAWD,GAKb,MAJAN,GAAYC,EAAUI,UACtBF,EAAQG,EACR3tC,QACAA,IAKF,IAAI4tC,EAAWryD,GAIb,MAHA8xD,GAAYC,EAAUI,UACtBF,EAAQjyD,MACRykB,IAMF,IAAI2sC,EAAepxD,IAAW,KAALA,EAAU,CAIjC,IAHAiyD,GAASjyD,EACTykB,IAEO2sC,EAAepxD,IACpBiyD,GAASjyD,EACTykB,GAYF,OAVa,SAATwtC,EACFA,GAAQ,EAEQ,QAATA,EACPA,GAAQ,EAEAtuD,MAAMR,OAAO8uD,MACrBA,EAAQ9uD,OAAO8uD,SAEjBH,EAAYC,EAAUO,YAKxB,GAAS,KAALtyD,EAAU,CAEZ,IADAykB,IACY,IAALzkB,IAAiB,KAALA,GAAkB,KAALA,GAA6B,KAAjBmxD,MAC1Cc,GAASjyD,EACA,KAALA,GACFykB,IAEFA,GAEF,IAAS,KAALzkB,EACF,KAAMuyD,GAAe,2BAIvB,OAFA9tC,UACAqtC,EAAYC,EAAUO,YAMxB,IADAR,EAAYC,EAAUS,QACV,IAALxyD,GACLiyD,GAASjyD,EACTykB,GAEF,MAAM,IAAIrO,aAAY,yBAA2Bq8C,EAAKR,EAAO,IAAM,KAOrE,QAASf,KACP,GAAIpjC,KAwBJ,IAtBA0K,IACAq5B,IAGa,UAATI,IACFnkC,EAAM4kC,QAAS,EACfb,MAIW,SAATI,GAA6B,WAATA,KACtBnkC,EAAMjoB,KAAOosD,EACbJ,KAIEC,GAAaC,EAAUO,aACzBxkC,EAAMluB,GAAKqyD,EACXJ,KAIW,KAATI,EACF,KAAMM,GAAe,2BAQvB,IANAV,IAGAc,EAAgB7kC,GAGH,KAATmkC,EACF,KAAMM,GAAe,2BAKvB,IAHAV,IAGc,KAAVI,EACF,KAAMM,GAAe,uBASvB,OAPAV,WAGO/jC,GAAMitB,WACNjtB,GAAMkzB,WACNlzB,GAAMA,MAENA,EAOT,QAAS6kC,GAAiB7kC,GACxB,KAAiB,KAAVmkC,GAAyB,KAATA,GACrBW,EAAe9kC,GACF,KAATmkC,GACFJ,IAWN,QAASe,GAAe9kC,GAEtB,GAAI+kC,GAAWC,EAAchlC,EAC7B,IAAI+kC,EAIF,WAFAE,GAAUjlC,EAAO+kC,EAMnB,IAAInB,GAAOsB,EAAwBllC,EACnC,KAAI4jC,EAAJ,CAKA,GAAII,GAAaC,EAAUO,WACzB,KAAMC,GAAe,sBAEvB,IAAI3yD,GAAKqyD,CAGT,IAFAJ,IAEa,KAATI,EAAc,CAGhB,GADAJ,IACIC,GAAaC,EAAUO,WACzB,KAAMC,GAAe,sBAEvBzkC,GAAMluB,GAAMqyD,EACZJ,QAIAoB,GAAmBnlC,EAAOluB,IAS9B,QAASkzD,GAAehlC,GACtB,GAAI+kC,GAAW,IAgBf,IAba,YAATZ,IACFY,KACAA,EAAShtD,KAAO,WAChBgsD,IAGIC,GAAaC,EAAUO,aACzBO,EAASjzD,GAAKqyD,EACdJ,MAKS,KAATI,EAAc,CAehB,GAdAJ,IAEKgB,IACHA,MAEFA,EAASn0B,OAAS5Q,EAClB+kC,EAAS9X,KAAOjtB,EAAMitB,KACtB8X,EAAS7R,KAAOlzB,EAAMkzB,KACtB6R,EAAS/kC,MAAQA,EAAMA,MAGvB6kC,EAAgBE,GAGH,KAATZ,EACF,KAAMM,GAAe,2BAEvBV,WAGOgB,GAAS9X,WACT8X,GAAS7R,WACT6R,GAAS/kC,YACT+kC,GAASn0B,OAGX5Q,EAAMolC,YACTplC,EAAMolC,cAERplC,EAAMolC,UAAU/rD,KAAK0rD,GAGvB,MAAOA,GAYT,QAASG,GAAyBllC,GAEhC,MAAa,QAATmkC,GACFJ,IAGA/jC,EAAMitB,KAAOoY,IACN,QAES,QAATlB,GACPJ,IAGA/jC,EAAMkzB,KAAOmS,IACN,QAES,SAATlB,GACPJ,IAGA/jC,EAAMA,MAAQqlC,IACP,SAGF,KAQT,QAASF,GAAmBnlC,EAAOluB,GAEjC,GAAIm7C,IACFn7C,GAAIA,GAEF8xD,EAAOyB,GACPzB,KACF3W,EAAK2W,KAAOA,GAEdF,EAAQ1jC,EAAOitB,GAGfgY,EAAUjlC,EAAOluB,GAQnB,QAASmzD,GAAUjlC,EAAOrI,GACxB,KAAgB,MAATwsC,GAA0B,MAATA,GAAe,CACrC,GAAIvsC,GACA7f,EAAOosD,CACXJ,IAEA,IAAIgB,GAAWC,EAAchlC,EAC7B,IAAI+kC,EACFntC,EAAKmtC,MAEF,CACH,GAAIf,GAAaC,EAAUO,WACzB,KAAMC,GAAe,kCAEvB7sC,GAAKusC,EACLT,EAAQ1jC,GACNluB,GAAI8lB,IAENmsC,IAIF,GAAIH,GAAOyB,IAGPnS,EAAO4Q,EAAW9jC,EAAOrI,EAAMC,EAAI7f,EAAM6rD,EAC7CC,GAAQ7jC,EAAOkzB,GAEfv7B,EAAOC,GASX,QAASytC,KAGP,IAFA,GAAIzB,GAAO,KAEK,KAATO,GAAc,CAGnB,IAFAJ,IACAH,KACiB,KAAVO,GAAyB,KAATA,GAAc,CACnC,GAAIH,GAAaC,EAAUO,WACzB,KAAMC,GAAe,0BAEvB,IAAI5+C,GAAOs+C,CAGX,IADAJ,IACa,KAATI,EACF,KAAMM,GAAe,wBAIvB,IAFAV,IAEIC,GAAaC,EAAUO,WACzB,KAAMC,GAAe,2BAEvB,IAAInsD,GAAQ6rD,CACZ18C,GAASm8C,EAAM/9C,EAAMvN,GAErByrD,IACY,KAARI,GACFJ,IAIJ,GAAa,KAATI,EACF,KAAMM,GAAe,qBAEvBV,KAGF,MAAOH,GAQT,QAASa,GAAea,GACtB,MAAO,IAAIh9C,aAAYg9C,EAAU,UAAYX,EAAKR,EAAO,IAAM,WAAa3qD,EAAQ,KAStF,QAASmrD,GAAM7sC,EAAMytC,GACnB,MAAQztC,GAAKhhB,QAAUyuD,EAAaztC,EAAQA,EAAK0tC,OAAO,EAAG,IAAM,MASnE,QAASC,GAASC,EAAQC,EAAQ5rB,GAC5B2rB,YAAkBtuD,OACpBsuD,EAAOhsD,QAAQ,SAAUksD,GACnBD,YAAkBvuD,OACpBuuD,EAAOjsD,QAAQ,SAAUmsD,GACvB9rB,EAAG6rB,EAAOC,KAIZ9rB,EAAG6rB,EAAOD,KAKVA,YAAkBvuD,OACpBuuD,EAAOjsD,QAAQ,SAAUmsD,GACvB9rB,EAAG2rB,EAAQG,KAIb9rB,EAAG2rB,EAAQC,GAWjB,QAAStX,GAAY7rC,GA+BjB,QAASsjD,GAAYC,GACnB,GAAIC,IACFruC,KAAMouC,EAAQpuC,KACdC,GAAImuC,EAAQnuC,GAId,OAFA4rC,GAAMwC,EAAWD,EAAQnC,MACzBoC,EAAU/jD,MAAyB,MAAhB8jD,EAAQhuD,KAAgB,QAAU,OAC9CiuD,EApCX,GAAI5X,GAAU+U,EAAS3gD,GACnByjD,GACF/gB,SACAW,SACA1mC,WAkFF,OA9EIivC,GAAQlJ,OACVkJ,EAAQlJ,MAAMxrC,QAAQ,SAAUwsD,GAC9B,GAAIC,IACFr0D,GAAIo0D,EAAQp0D,GACZklB,MAAOzhB,OAAO2wD,EAAQlvC,OAASkvC,EAAQp0D,IAEzC0xD,GAAM2C,EAAWD,EAAQtC,MACrBuC,EAAU7gB,QACZ6gB,EAAU9gB,MAAQ,SAEpB4gB,EAAU/gB,MAAM7rC,KAAK8sD,KAKrB/X,EAAQvI,OAgBVuI,EAAQvI,MAAMnsC,QAAQ,SAAUqsD,GAC9B,GAAIpuC,GAAMC,CAERD,GADEouC,EAAQpuC,eAAgBjgB,QACnBquD,EAAQpuC,KAAKutB,OAIlBpzC,GAAIi0D,EAAQpuC,MAKdC,EADEmuC,EAAQnuC,aAAclgB,QACnBquD,EAAQnuC,GAAGstB,OAIdpzC,GAAIi0D,EAAQnuC,IAIZmuC,EAAQpuC,eAAgBjgB,SAAUquD,EAAQpuC,KAAKkuB,OACjDkgB,EAAQpuC,KAAKkuB,MAAMnsC,QAAQ,SAAU0sD,GACnC,GAAIJ,GAAYF,EAAYM,EAC5BH,GAAUpgB,MAAMxsC,KAAK2sD,KAIzBP,EAAS9tC,EAAMC,EAAI,SAAUD,EAAMC,GACjC,GAAIwuC,GAAUtC,EAAWmC,EAAWtuC,EAAK7lB,GAAI8lB,EAAG9lB,GAAIi0D,EAAQhuD,KAAMguD,EAAQnC,MACtEoC,EAAYF,EAAYM,EAC5BH,GAAUpgB,MAAMxsC,KAAK2sD,KAGnBD,EAAQnuC,aAAclgB,SAAUquD,EAAQnuC,GAAGiuB,OAC7CkgB,EAAQnuC,GAAGiuB,MAAMnsC,QAAQ,SAAU0sD,GACjC,GAAIJ,GAAYF,EAAYM,EAC5BH,GAAUpgB,MAAMxsC,KAAK2sD,OAOzB5X,EAAQwV,OACVqC,EAAU9mD,QAAUivC,EAAQwV,MAGvBqC,EAnyBT,GAAIhC,IACFC,KAAO,EACPG,UAAY,EACZG,WAAY,EACZE,QAAU,GAIRH,GACF8B,KAAK,EACLC,KAAK,EACLC,KAAK,EACLC,KAAK,EACLC,KAAK,EACLC,KAAK,EACLC,KAAK,EAELC,MAAM,EACNC,MAAM,GAGJnoC,EAAM,GACNllB,EAAQ,EACRtH,EAAI,GACJiyD,EAAQ,GACRH,EAAYC,EAAUC,KAmCtBX,EAAoB,iBA2uBxBlyD,GAAQ8xD,SAAWA,EACnB9xD,EAAQg9C,WAAaA,GAKjB,SAAS/8C,EAAQD,EAASM,GAI9BL,EAAOD,QAA6B,mBAAXsH,SAA2BA,OAAe,QAAKhH,EAAoB,KAKxF,SAASL,EAAQD,EAASM,GAK5BL,EAAOD,QADa,mBAAXsH,QACQA,OAAe,QAAKhH,EAAoB,IAGxC,WACf,KAAMqD,OAAM,+DAOZ,SAAS1D,EAAQD,EAASM,GAE9B,GAAIgzB,GAAShzB,EAAoB,GAOjCN,GAAQu7B,YAAc,SAAS3yB,EAASU,GACtC,GAAImsD,GAAY,KAMZ75B,EAAUtI,EAAOhqB,MAAMosD,aAAapsD,EAAOmsD,GAC3C99B,EAAUrE,EAAOhqB,MAAMqsD,iBAAiBv1D,KAAMq1D,EAAW75B,EAAStyB,EAWtE;MAPI9E,OAAMmzB,EAAQtO,OAAOyR,SACvBnD,EAAQtO,OAAOyR,MAAQxxB,EAAMwxB,OAE3Bt2B,MAAMmzB,EAAQtO,OAAO0R,SACvBpD,EAAQtO,OAAO0R,MAAQzxB,EAAMyxB,OAGxBpD,IAML,WAKoC,mBAA7Bi+B,4BAKTA,yBAAyBjkD,UAAUg/C,OAAS,SAASpgD,EAAGC,EAAGpE,GACzDhM,KAAKykB,YACLzkB,KAAKyoB,IAAItY,EAAGC,EAAGpE,EAAG,EAAG,EAAEpH,KAAK8jB,IAAI,IASlC8sC,yBAAyBjkD,UAAUkkD,OAAS,SAAStlD,EAAGC,EAAGpE,GACzDhM,KAAKykB,YACLzkB,KAAK8Q,KAAKX,EAAInE,EAAGoE,EAAIpE,EAAO,EAAJA,EAAW,EAAJA,IASjCwpD,yBAAyBjkD,UAAU2a,SAAW,SAAS/b,EAAGC,EAAGpE,GAE3DhM,KAAKykB,WAEL,IAAI5Z,GAAQ,EAAJmB,EACJ0pD,EAAK7qD,EAAI,EACT8qD,EAAK/wD,KAAKkoB,KAAK,GAAK,EAAIjiB,EACxBD,EAAIhG,KAAKkoB,KAAKjiB,EAAIA,EAAI6qD,EAAKA,EAE/B11D,MAAK0kB,OAAOvU,EAAGC,GAAKxF,EAAI+qD,IACxB31D,KAAK2kB,OAAOxU,EAAIulD,EAAItlD,EAAIulD,GACxB31D,KAAK2kB,OAAOxU,EAAIulD,EAAItlD,EAAIulD,GACxB31D,KAAK2kB,OAAOxU,EAAGC,GAAKxF,EAAI+qD,IACxB31D,KAAK8kB,aASP0wC,yBAAyBjkD,UAAUqkD,aAAe,SAASzlD,EAAGC,EAAGpE,GAE/DhM,KAAKykB,WAEL,IAAI5Z,GAAQ,EAAJmB,EACJ0pD,EAAK7qD,EAAI,EACT8qD,EAAK/wD,KAAKkoB,KAAK,GAAK,EAAIjiB,EACxBD,EAAIhG,KAAKkoB,KAAKjiB,EAAIA,EAAI6qD,EAAKA,EAE/B11D,MAAK0kB,OAAOvU,EAAGC,GAAKxF,EAAI+qD,IACxB31D,KAAK2kB,OAAOxU,EAAIulD,EAAItlD,EAAIulD,GACxB31D,KAAK2kB,OAAOxU,EAAIulD,EAAItlD,EAAIulD,GACxB31D,KAAK2kB,OAAOxU,EAAGC,GAAKxF,EAAI+qD,IACxB31D,KAAK8kB,aASP0wC,yBAAyBjkD,UAAUskD,KAAO,SAAS1lD,EAAGC,EAAGpE,GAEvDhM,KAAKykB,WAEL,KAAK,GAAIqxC,GAAI,EAAO,GAAJA,EAAQA,IAAK,CAC3B,GAAIttC,GAAUstC,EAAI,IAAM,EAAS,IAAJ9pD,EAAc,GAAJA,CACvChM,MAAK2kB,OACDxU,EAAIqY,EAAS5jB,KAAKqW,IAAQ,EAAJ66C,EAAQlxD,KAAK8jB,GAAK,IACxCtY,EAAIoY,EAAS5jB,KAAKwW,IAAQ,EAAJ06C,EAAQlxD,KAAK8jB,GAAK,KAI9C1oB,KAAK8kB,aAMP0wC,yBAAyBjkD,UAAU6+C,UAAY,SAASjgD,EAAGC,EAAG8yC,EAAGt4C,EAAGoB,GAClE,GAAI+pD,GAAMnxD,KAAK8jB,GAAG,GACE,GAAhBw6B,EAAM,EAAIl3C,IAAYA,EAAMk3C,EAAI,GAChB,EAAhBt4C,EAAM,EAAIoB,IAAYA,EAAMpB,EAAI,GACpC5K,KAAKykB,YACLzkB,KAAK0kB,OAAOvU,EAAEnE,EAAEoE,GAChBpQ,KAAK2kB,OAAOxU,EAAE+yC,EAAEl3C,EAAEoE,GAClBpQ,KAAKyoB,IAAItY,EAAE+yC,EAAEl3C,EAAEoE,EAAEpE,EAAEA,EAAM,IAAJ+pD,EAAY,IAAJA,GAAQ,GACrC/1D,KAAK2kB,OAAOxU,EAAE+yC,EAAE9yC,EAAExF,EAAEoB,GACpBhM,KAAKyoB,IAAItY,EAAE+yC,EAAEl3C,EAAEoE,EAAExF,EAAEoB,EAAEA,EAAE,EAAM,GAAJ+pD,GAAO,GAChC/1D,KAAK2kB,OAAOxU,EAAEnE,EAAEoE,EAAExF,GAClB5K,KAAKyoB,IAAItY,EAAEnE,EAAEoE,EAAExF,EAAEoB,EAAEA,EAAM,GAAJ+pD,EAAW,IAAJA,GAAQ,GACpC/1D,KAAK2kB,OAAOxU,EAAEC,EAAEpE,GAChBhM,KAAKyoB,IAAItY,EAAEnE,EAAEoE,EAAEpE,EAAEA,EAAM,IAAJ+pD,EAAY,IAAJA,GAAQ,IAMrCP,yBAAyBjkD,UAAUk/C,QAAU,SAAStgD,EAAGC,EAAG8yC,EAAGt4C,GAC7D,GAAIorD,GAAQ,SACRC,EAAM/S,EAAI,EAAK8S,EACfE,EAAMtrD,EAAI,EAAKorD,EACfG,EAAKhmD,EAAI+yC,EACTkT,EAAKhmD,EAAIxF,EACTyrD,EAAKlmD,EAAI+yC,EAAI,EACboT,EAAKlmD,EAAIxF,EAAI,CAEjB5K,MAAKykB,YACLzkB,KAAK0kB,OAAOvU,EAAGmmD,GACft2D,KAAKu2D,cAAcpmD,EAAGmmD,EAAKJ,EAAIG,EAAKJ,EAAI7lD,EAAGimD,EAAIjmD,GAC/CpQ,KAAKu2D,cAAcF,EAAKJ,EAAI7lD,EAAG+lD,EAAIG,EAAKJ,EAAIC,EAAIG,GAChDt2D,KAAKu2D,cAAcJ,EAAIG,EAAKJ,EAAIG,EAAKJ,EAAIG,EAAIC,EAAID,GACjDp2D,KAAKu2D,cAAcF,EAAKJ,EAAIG,EAAIjmD,EAAGmmD,EAAKJ,EAAI/lD,EAAGmmD,IAQjDd,yBAAyBjkD,UAAU8+C,SAAW,SAASlgD,EAAGC,EAAG8yC,EAAGt4C,GAC9D,GAAImB,GAAI,EAAE,EACNyqD,EAAWtT,EACXuT,EAAW7rD,EAAImB,EAEfiqD,EAAQ,SACRC,EAAMO,EAAW,EAAKR,EACtBE,EAAMO,EAAW,EAAKT,EACtBG,EAAKhmD,EAAIqmD,EACTJ,EAAKhmD,EAAIqmD,EACTJ,EAAKlmD,EAAIqmD,EAAW,EACpBF,EAAKlmD,EAAIqmD,EAAW,EACpBC,EAAMtmD,GAAKxF,EAAI6rD,EAAS,GACxBE,EAAMvmD,EAAIxF,CAEd5K,MAAKykB,YACLzkB,KAAK0kB,OAAOyxC,EAAIG,GAEhBt2D,KAAKu2D,cAAcJ,EAAIG,EAAKJ,EAAIG,EAAKJ,EAAIG,EAAIC,EAAID,GACjDp2D,KAAKu2D,cAAcF,EAAKJ,EAAIG,EAAIjmD,EAAGmmD,EAAKJ,EAAI/lD,EAAGmmD,GAE/Ct2D,KAAKu2D,cAAcpmD,EAAGmmD,EAAKJ,EAAIG,EAAKJ,EAAI7lD,EAAGimD,EAAIjmD,GAC/CpQ,KAAKu2D,cAAcF,EAAKJ,EAAI7lD,EAAG+lD,EAAIG,EAAKJ,EAAIC,EAAIG,GAEhDt2D,KAAK2kB,OAAOwxC,EAAIO,GAEhB12D,KAAKu2D,cAAcJ,EAAIO,EAAMR,EAAIG,EAAKJ,EAAIU,EAAKN,EAAIM,GACnD32D,KAAKu2D,cAAcF,EAAKJ,EAAIU,EAAKxmD,EAAGumD,EAAMR,EAAI/lD,EAAGumD,GAEjD12D,KAAK2kB,OAAOxU,EAAGmmD,IAOjBd,yBAAyBjkD,UAAUy4C,MAAQ,SAAS75C,EAAGC,EAAG8xC,EAAO78C,GAE/D,GAAIuxD,GAAKzmD,EAAI9K,EAAST,KAAKwW,IAAI8mC,GAC3B2U,EAAKzmD,EAAI/K,EAAST,KAAKqW,IAAIinC,GAI3B4U,EAAK3mD,EAAa,GAAT9K,EAAeT,KAAKwW,IAAI8mC,GACjC6U,EAAK3mD,EAAa,GAAT/K,EAAeT,KAAKqW,IAAIinC,GAGjC8U,EAAKJ,EAAKvxD,EAAS,EAAIT,KAAKwW,IAAI8mC,EAAQ,GAAMt9C,KAAK8jB,IACnDuuC,EAAKJ,EAAKxxD,EAAS,EAAIT,KAAKqW,IAAIinC,EAAQ,GAAMt9C,KAAK8jB,IAGnDwuC,EAAKN,EAAKvxD,EAAS,EAAIT,KAAKwW,IAAI8mC,EAAQ,GAAMt9C,KAAK8jB,IACnDyuC,EAAKN,EAAKxxD,EAAS,EAAIT,KAAKqW,IAAIinC,EAAQ,GAAMt9C,KAAK8jB,GAEvD1oB,MAAKykB,YACLzkB,KAAK0kB,OAAOvU,EAAGC,GACfpQ,KAAK2kB,OAAOqyC,EAAIC,GAChBj3D,KAAK2kB,OAAOmyC,EAAIC,GAChB/2D,KAAK2kB,OAAOuyC,EAAIC,GAChBn3D,KAAK8kB,aASP0wC,yBAAyBjkD,UAAUs4C,WAAa,SAAS15C,EAAEC,EAAEq6C,EAAGC,EAAG0M,GAC5DA,IAAWA,GAAW,GAAG,IACd,GAAZC,IAAeA,EAAa,KAChC,IAAIC,GAAYF,EAAU/xD,MAC1BrF,MAAK0kB,OAAOvU,EAAGC,EAKf,KAJA,GAAIqL,GAAMgvC,EAAGt6C,EAAIuL,EAAMgvC,EAAGt6C,EACtBmnD,EAAQ77C,EAAGD,EACX+7C,EAAgB5yD,KAAKkoB,KAAMrR,EAAGA,EAAKC,EAAGA,GACtC+7C,EAAU,EAAG5T,GAAK,EACf2T,GAAe,IAAI,CACxB,GAAIH,GAAaD,EAAUK,IAAYH,EACnCD,GAAaG,IAAeH,EAAaG,EAC7C,IAAI7+C,GAAQ/T,KAAKkoB,KAAMuqC,EAAWA,GAAc,EAAIE,EAAMA,GACnD,GAAH97C,IAAM9C,GAASA,GACnBxI,GAAKwI,EACLvI,GAAKmnD,EAAM5+C,EACX3Y,KAAK6jD,EAAO,SAAW,UAAU1zC,EAAEC,GACnConD,GAAiBH,EACjBxT,GAAQA,MAUV,SAAShkD,EAAQD,EAASM,GAE9B,GAAIw3D,GAAex3D,EAAoB,IACnCy3D,EAAez3D,EAAoB,IACnC03D,EAAe13D,EAAoB,IACnC23D,EAAiB33D,EAAoB,IACrC43D,EAAoB53D,EAAoB,IACxC63D,EAAkB73D,EAAoB,IACtC83D,EAA0B93D,EAAoB,GAQlDN,GAAQq4D,WAAa,SAAUC,GAC7B,IAAK,GAAIC,KAAiBD,GACpBA,EAAe1yD,eAAe2yD,KAChCn4D,KAAKm4D,GAAiBD,EAAeC,KAY3Cv4D,EAAQw4D,YAAc,SAAUF,GAC9B,IAAK,GAAIC,KAAiBD,GACpBA,EAAe1yD,eAAe2yD,KAChCn4D,KAAKm4D,GAAiBjyD,SAW5BtG,EAAQs5C,mBAAqB,WAC3Bl5C,KAAKi4D,WAAWP,GAChB13D,KAAKq4D,2BACkC,GAAnCr4D,KAAKwzC,UAAUqB,kBACjB70C,KAAKs4D,6BAUT14D,EAAQw5C,mBAAqB,WAC3Bp5C,KAAKutD,eAAiB,EACtBvtD,KAAKu4D,aAAe,EACpBv4D,KAAKi4D,WAAWN,IASlB/3D,EAAQu5C,kBAAoB,WAC1Bn5C,KAAKgjD,WACLhjD,KAAKw4D,cAAgB,WACrBx4D,KAAKgjD,QAAgB,UACrBhjD,KAAKgjD,QAAgB,OAAE,YAAcvP,SACnCW,SACAwF,eACAiU,eAAkB,EAClB4K,YAAevyD,QACjBlG,KAAKgjD,QAAgB,UACrBhjD,KAAKgjD,QAAiB,SAAKvP,SACzBW,SACAwF,eACAiU,eAAkB,EAClB4K,YAAevyD,QAEjBlG,KAAK45C,YAAc55C,KAAKgjD,QAAgB,OAAE,WAAwB,YAElEhjD,KAAKi4D,WAAWL,IASlBh4D,EAAQy5C,qBAAuB,WAC7Br5C,KAAKu/C,cAAgB9L,SAAWW,UAEhCp0C,KAAKi4D,WAAWJ,IASlBj4D,EAAQ69C,wBAA0B,WAEhCz9C,KAAK04D,8BAA+B,EACpC14D,KAAK24D,sBAAuB,EAEmB,GAA3C34D,KAAKwzC,UAAUqD,iBAAiBlpC,SAELzH,SAAzBlG,KAAK8hD,kBACP9hD,KAAK8hD,gBAAkBlyC,SAASK,cAAc,OAC9CjQ,KAAK8hD,gBAAgBt6C,UAAY,0BACjCxH,KAAK8hD,gBAAgBzhD,GAAK,0BAExBL,KAAK8hD,gBAAgBtxC,MAAM+wB,QADR,GAAjBvhC,KAAKs9C,SAC8B,QAGA,OAEvCt9C,KAAK8W,iBAAiBk6B,aAAahxC,KAAK8hD,gBAAiB9hD,KAAKmc,QAGvCjW,SAArBlG,KAAK44D,cACP54D,KAAK44D,YAAchpD,SAASK,cAAc,OAC1CjQ,KAAK44D,YAAYpxD,UAAY,gCAC7BxH,KAAK44D,YAAYv4D,GAAK,gCAEpBL,KAAK44D,YAAYpoD,MAAM+wB,QADJ,GAAjBvhC,KAAKs9C,SAC0B,OAGA,QAEnCt9C,KAAK8W,iBAAiBk6B,aAAahxC,KAAK44D,YAAa54D,KAAKmc,QAGtCjW,SAAlBlG,KAAK64D,WACP74D,KAAK64D,SAAWjpD,SAASK,cAAc,OACvCjQ,KAAK64D,SAASrxD,UAAY,gCAC1BxH,KAAK64D,SAASx4D,GAAK,gCACnBL,KAAK64D,SAASroD,MAAM+wB,QAAUvhC,KAAK8hD,gBAAgBtxC,MAAM+wB,QACzDvhC,KAAK8W,iBAAiBk6B,aAAahxC,KAAK64D,SAAU74D,KAAKmc,QAIzDnc,KAAKi4D,WAAWH,GAGhB93D,KAAK2+C,yBAGwBz4C,SAAzBlG,KAAK8hD,kBAEP9hD,KAAK2+C,wBAEL3+C,KAAK8W,iBAAiBtH,YAAYxP,KAAK8hD,iBACvC9hD,KAAK8W,iBAAiBtH,YAAYxP,KAAK44D,aACvC54D,KAAK8W,iBAAiBtH,YAAYxP,KAAK64D,UAEvC74D,KAAK8hD,gBAAkB57C,OACvBlG,KAAK44D,YAAc1yD,OACnBlG,KAAK64D,SAAW3yD,OAEhBlG,KAAKo4D,YAAYN,KAWvBl4D,EAAQ49C,wBAA0B,WAChCx9C,KAAKi4D,WAAWF,GAGhB/3D,KAAK84D,mBACoC,GAArC94D,KAAKwzC,UAAUkD,WAAW/oC,SAC5B3N,KAAK+4D,2BAUTn5D,EAAQ05C,qBAAuB,WAC7Bt5C,KAAKi4D,WAAWD,KAMd,SAASn4D,GAeb,QAAS+Z,GAAQiG,GACf,MAAIA,GAAYqmC,EAAMrmC,GAAtB,OAWF,QAASqmC,GAAMrmC,GACb,IAAK,GAAIvX,KAAOsR,GAAQrI,UACtBsO,EAAIvX,GAAOsR,EAAQrI,UAAUjJ,EAE/B,OAAOuX,GAxBThgB,EAAOD,QAAUga,EAoCjBA,EAAQrI,UAAUC,GAClBoI,EAAQrI,UAAUhJ,iBAAmB,SAASW,EAAOo/B,GAInD,MAHAtoC,MAAKg5D,WAAah5D,KAAKg5D,gBACtBh5D,KAAKg5D,WAAW9vD,GAASlJ,KAAKg5D,WAAW9vD,QACvCtB,KAAK0gC,GACDtoC,MAaT4Z,EAAQrI,UAAU0nD,KAAO,SAAS/vD,EAAOo/B,GAIvC,QAAS92B,KACP0nD,EAAKvnD,IAAIzI,EAAOsI,GAChB82B,EAAGnyB,MAAMnW,KAAMoF,WALjB,GAAI8zD,GAAOl5D,IAUX,OATAA,MAAKg5D,WAAah5D,KAAKg5D,eAOvBxnD,EAAG82B,GAAKA,EACRtoC,KAAKwR,GAAGtI,EAAOsI,GACRxR,MAaT4Z,EAAQrI,UAAUI,IAClBiI,EAAQrI,UAAU4nD,eAClBv/C,EAAQrI,UAAU6nD,mBAClBx/C,EAAQrI,UAAUxI,oBAAsB,SAASG,EAAOo/B,GAItD,GAHAtoC,KAAKg5D,WAAah5D,KAAKg5D,eAGnB,GAAK5zD,UAAUC,OAEjB,MADArF,MAAKg5D,cACEh5D,IAIT,IAAIq5D,GAAYr5D,KAAKg5D,WAAW9vD,EAChC,KAAKmwD,EAAW,MAAOr5D,KAGvB,IAAI,GAAKoF,UAAUC,OAEjB,aADOrF,MAAKg5D,WAAW9vD,GAChBlJ,IAKT,KAAK,GADDs5D,GACKp0D,EAAI,EAAGA,EAAIm0D,EAAUh0D,OAAQH,IAEpC,GADAo0D,EAAKD,EAAUn0D,GACXo0D,IAAOhxB,GAAMgxB,EAAGhxB,KAAOA,EAAI,CAC7B+wB,EAAUrxD,OAAO9C,EAAG,EACpB,OAGJ,MAAOlF,OAWT4Z,EAAQrI,UAAUsZ,KAAO,SAAS3hB,GAChClJ,KAAKg5D,WAAah5D,KAAKg5D,cACvB,IAAI3kC,MAAUC,MAAM/zB,KAAK6E,UAAW,GAChCi0D,EAAYr5D,KAAKg5D,WAAW9vD,EAEhC,IAAImwD,EAAW,CACbA,EAAYA,EAAU/kC,MAAM,EAC5B,KAAK,GAAIpvB,GAAI,EAAGC,EAAMk0D,EAAUh0D,OAAYF,EAAJD,IAAWA,EACjDm0D,EAAUn0D,GAAGiR,MAAMnW,KAAMq0B,GAI7B,MAAOr0B,OAWT4Z,EAAQrI,UAAU4iB,UAAY,SAASjrB,GAErC,MADAlJ,MAAKg5D,WAAah5D,KAAKg5D,eAChBh5D,KAAKg5D,WAAW9vD,QAWzB0Q,EAAQrI,UAAUgoD,aAAe,SAASrwD,GACxC,QAAUlJ,KAAKm0B,UAAUjrB,GAAO7D,SAM9B,SAASxF,GA8MX,QAAS25D,GAAU71D,EAAQ2C,EAAM4B,GAC7B,MAAIvE,GAAO4E,iBACA5E,EAAO4E,iBAAiBjC,EAAM4B,GAAU,OAGnDvE,GAAOmF,YAAY,KAAOxC,EAAM4B,GASpC,QAASuxD,GAAoB3tD,GAGzB,MAAc,YAAVA,EAAExF,KACKxC,OAAO41D,aAAa5tD,EAAEyd,OAI7BowC,EAAK7tD,EAAEyd,OACAowC,EAAK7tD,EAAEyd,OAGdqwC,EAAa9tD,EAAEyd,OACRqwC,EAAa9tD,EAAEyd,OAInBzlB,OAAO41D,aAAa5tD,EAAEyd,OAAOm8B,cASxC,QAASmU,GAAM/tD,GACX,GAAItD,GAAUsD,EAAEzC,QAAUyC,EAAExC,WACxBwwD,EAAWtxD,EAAQuxD,OAGvB,QAAK,IAAMvxD,EAAQhB,UAAY,KAAKG,QAAQ,eAAiB,IAClD,EAIQ,SAAZmyD,GAAmC,UAAZA,GAAoC,YAAZA,GAA2BtxD,EAAQwxD,iBAA8C,QAA3BxxD,EAAQwxD,gBAUxH,QAASC,GAAgBC,EAAYC,GACjC,MAAOD,GAAW7lD,OAAOxM,KAAK,OAASsyD,EAAW9lD,OAAOxM,KAAK,KASlE,QAASuyD,GAAgBC,GACrBA,EAAeA,KAEf,IACI/xD,GADAgyD,GAAmB,CAGvB,KAAKhyD,IAAOiyD,GACJF,EAAa/xD,GACbgyD,GAAmB,EAGvBC,EAAiBjyD,GAAO,CAGvBgyD,KACDE,GAAmB,GAe3B,QAASC,GAAYC,EAAWC,EAAWlyD,EAAQ+L,EAAQomD,GACvD,GAAI11D,GACAgD,EACA2yD,IAGJ,KAAK7B,EAAW0B,GACZ,QAUJ,KANc,SAAVjyD,GAAqBqyD,EAAYJ,KACjCC,GAAaD,IAKZx1D,EAAI,EAAGA,EAAI8zD,EAAW0B,GAAWr1D,SAAUH,EAC5CgD,EAAW8wD,EAAW0B,GAAWx1D,GAI7BgD,EAAS6yD,KAAOR,EAAiBryD,EAAS6yD,MAAQ7yD,EAASgsC,OAM3DzrC,GAAUP,EAASO,SAOT,YAAVA,GAAwBwxD,EAAgBU,EAAWzyD,EAASyyD,cAIxDnmD,GAAUtM,EAAS8yD,OAASJ,GAC5B5B,EAAW0B,GAAW1yD,OAAO9C,EAAG,GAGpC21D,EAAQjzD,KAAKM,GAIrB,OAAO2yD,GASX,QAASI,GAAgBnvD,GACrB,GAAI6uD,KAkBJ,OAhBI7uD,GAAEg/B,UACF6vB,EAAU/yD,KAAK,SAGfkE,EAAEovD,QACFP,EAAU/yD,KAAK,OAGfkE,EAAE8+B,SACF+vB,EAAU/yD,KAAK,QAGfkE,EAAEqvD,SACFR,EAAU/yD,KAAK,QAGZ+yD,EAaX,QAASS,GAAclzD,EAAU4D,GACzB5D,EAAS4D,MAAO,IACZA,EAAE7C,gBACF6C,EAAE7C,iBAGF6C,EAAE4zB,iBACF5zB,EAAE4zB,kBAGN5zB,EAAE3C,aAAc,EAChB2C,EAAEuvD,cAAe,GAWzB,QAASC,GAAiBZ,EAAW5uD,GAGjC,IAAI+tD,EAAM/tD,GAAV,CAIA,GACI5G,GADAm0D,EAAYoB,EAAYC,EAAWO,EAAgBnvD,GAAIA,EAAExF,MAEzD+zD,KACAkB,GAA8B,CAGlC,KAAKr2D,EAAI,EAAGA,EAAIm0D,EAAUh0D,SAAUH,EAO5Bm0D,EAAUn0D,GAAG61D,KACbQ,GAA8B,EAG9BlB,EAAahB,EAAUn0D,GAAG61D,KAAO,EACjCK,EAAc/B,EAAUn0D,GAAGgD,SAAU4D,IAMpCyvD,GAAgCf,GACjCY,EAAc/B,EAAUn0D,GAAGgD,SAAU4D,EAOzCA,GAAExF,MAAQk0D,GAAqBM,EAAYJ,IAC3CN,EAAgBC,IAUxB,QAASmB,GAAW1vD,GAIhBA,EAAEyd,MAA0B,gBAAXzd,GAAEyd,MAAoBzd,EAAEyd,MAAQzd,EAAE2vD,OAEnD,IAAIf,GAAYjB,EAAoB3tD,EAGpC,IAAK4uD,EAIL,MAAc,SAAV5uD,EAAExF,MAAmBo1D,GAAsBhB,OAC3CgB,GAAqB,OAIzBJ,GAAiBZ,EAAW5uD,GAShC,QAASgvD,GAAYxyD,GACjB,MAAc,SAAPA,GAAyB,QAAPA,GAAwB,OAAPA,GAAuB,QAAPA,EAW9D,QAASqzD,KACLzwC,aAAa0wC,GACbA,EAAerwC,WAAW6uC,EAAiB,KAS/C,QAASyB,KACL,IAAKC,EAAc,CACfA,IACA,KAAK,GAAIxzD,KAAOqxD,GAIRrxD,EAAM,IAAY,IAANA,GAIZqxD,EAAKn0D,eAAe8C,KACpBwzD,EAAanC,EAAKrxD,IAAQA,GAItC,MAAOwzD,GAUX,QAASC,GAAgBzzD,EAAKqyD,EAAWlyD,GAcrC,MAVKA,KACDA,EAASozD,IAAiBvzD,GAAO,UAAY,YAKnC,YAAVG,GAAwBkyD,EAAUt1D,SAClCoD,EAAS,WAGNA,EAYX,QAASuzD,GAAchB,EAAOnmD,EAAM3M,EAAUO,GAI1C8xD,EAAiBS,GAAS,EAIrBvyD,IACDA,EAASszD,EAAgBlnD,EAAK,OAUlC,IA2BI3P,GA3BA+2D,EAAoB,WAChBzB,EAAmB/xD,IACjB8xD,EAAiBS,GACnBW,KAUJO,EAAoB,SAASpwD,GACzBsvD,EAAclzD,EAAU4D,GAKT,UAAXrD,IACAizD,EAAqBjC,EAAoB3tD,IAK7Cyf,WAAW6uC,EAAiB,IAOpC,KAAKl1D,EAAI,EAAGA,EAAI2P,EAAKxP,SAAUH,EAC3Bi3D,EAAYtnD,EAAK3P,GAAIA,EAAI2P,EAAKxP,OAAS,EAAI42D,EAAoBC,EAAmBzzD,EAAQuyD,EAAO91D,GAczG,QAASi3D,GAAYvB,EAAa1yD,EAAUO,EAAQ2zD,EAAeloB,GAG/D0mB,EAAcA,EAAYlvD,QAAQ,OAAQ,IAE1C,IACIxG,GACAoD,EACAuM,EAHAwnD,EAAWzB,EAAYlzD,MAAM,KAI7BizD,IAIJ,IAAI0B,EAASh3D,OAAS,EAClB,MAAO22D,GAAcpB,EAAayB,EAAUn0D,EAAUO,EAO1D,KAFAoM,EAAuB,MAAhB+lD,GAAuB,KAAOA,EAAYlzD,MAAM,KAElDxC,EAAI,EAAGA,EAAI2P,EAAKxP,SAAUH,EAC3BoD,EAAMuM,EAAK3P,GAGPo3D,EAAiBh0D,KACjBA,EAAMg0D,EAAiBh0D,IAMvBG,GAAoB,YAAVA,GAAwB8zD,EAAWj0D,KAC7CA,EAAMi0D,EAAWj0D,GACjBqyD,EAAU/yD,KAAK,UAIfkzD,EAAYxyD,IACZqyD,EAAU/yD,KAAKU,EAMvBG,GAASszD,EAAgBzzD,EAAKqyD,EAAWlyD,GAIpCuwD,EAAW1wD,KACZ0wD,EAAW1wD,OAIfmyD,EAAYnyD,EAAKqyD,EAAWlyD,GAAS2zD,EAAexB,GAQpD5B,EAAW1wD,GAAK8zD,EAAgB,UAAY,SACxCl0D,SAAUA,EACVyyD,UAAWA,EACXlyD,OAAQA,EACRsyD,IAAKqB,EACLloB,MAAOA,EACP8mB,MAAOJ,IAYf,QAAS4B,GAAcC,EAAcv0D,EAAUO,GAC3C,IAAK,GAAIvD,GAAI,EAAGA,EAAIu3D,EAAap3D,SAAUH,EACvCi3D,EAAYM,EAAav3D,GAAIgD,EAAUO,GAjhB/C,IAAK,GAlDDqzD,GA6BAF,EArIAjC,GACI+C,EAAG,YACHC,EAAG,MACHC,GAAI,QACJC,GAAI,QACJC,GAAI,OACJC,GAAI,MACJC,GAAI,WACJC,GAAI,MACJC,GAAI,QACJC,GAAI,SACJC,GAAI,WACJC,GAAI,MACJC,GAAI,OACJC,GAAI,OACJC,GAAI,KACJC,GAAI,QACJC,GAAI,OACJC,GAAI,MACJC,GAAI,MACJC,GAAI,OACJC,GAAI,OACJC,IAAK,QAWTnE,GACIoE,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAM,IACNC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,KACLC,IAAK,IACLC,IAAK,KAaTxC,GACIyC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,EAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,EAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAM,IACNC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,MAST5D,GACI7yD,OAAU,MACV02D,QAAW,OACXC,SAAU,QACVC,OAAU,OAiBdrH,KAOAsH,KAQA/F,KAcAmB,GAAqB,EAQrBlB,GAAmB,EAMdt1D,EAAI,EAAO,GAAJA,IAAUA,EACtBy0D,EAAK,IAAMz0D,GAAK,IAAMA,CAM1B,KAAKA,EAAI,EAAQ,GAALA,IAAUA,EAClBy0D,EAAKz0D,EAAI,IAAMA,CA8gBnBs0D,GAAU5pD,SAAU,WAAY4rD,GAChChC,EAAU5pD,SAAU,UAAW4rD,GAC/BhC,EAAU5pD,SAAU,QAAS4rD,EAE7B,IAAIvgB,IAiBAhpB,KAAM,SAASpd,EAAM3M,EAAUO,GAG3B,MAFA+zD,GAAc3nD,YAAgBlP,OAAQkP,GAAQA,GAAO3M,EAAUO,GAC/D63D,EAAYzrD,EAAO,IAAMpM,GAAUP,EAC5BlI,MAoBXugE,OAAQ,SAAS1rD,EAAMpM,GAKnB,MAJI63D,GAAYzrD,EAAO,IAAMpM,WAClB63D,GAAYzrD,EAAO,IAAMpM,GAChCzI,KAAKiyB,KAAKpd,EAAM,aAAepM,IAE5BzI,MAUXwgE,QAAS,SAAS3rD,EAAMpM,GAEpB,MADA63D,GAAYzrD,EAAO,IAAMpM,KAClBzI,MAUXi+C,MAAO,WAGH,MAFA+a,MACAsH,KACOtgE,MAIjBH,GAAOD,QAAUq7C,GAMb,SAASp7C,EAAQD,EAASM,GAE9B,GAAIugE,IAA0D,SAASC,EAAQ7gE,IAM/E,SAAWqG,GAoSP,QAASy6D,GAAI17D,EAAGa,EAAGrF,GACf,OAAQ2E,UAAUC,QACd,IAAK,GAAG,MAAY,OAALJ,EAAYA,EAAIa,CAC/B,KAAK,GAAG,MAAY,OAALb,EAAYA,EAAS,MAALa,EAAYA,EAAIrF,CAC/C,SAAS,KAAM,IAAI8C,OAAM,iBAIjC,QAASq9D,KAGL,OACIC,OAAQ,EACRC,gBACAC,eACArgD,SAAW,GACXsgD,cAAgB,EAChBC,WAAY,EACZC,aAAe,KACfC,eAAgB,EAChBC,iBAAkB,EAClBC,KAAK,GAIb,QAASC,GAAUC,EAAKj5B,GAEpB,QAASk5B,KACDh+D,GAAOi+D,+BAAgC,GAChB,mBAAZ9yD,UAA2BA,QAAQ+yD,MAC9C/yD,QAAQ+yD,KAAK,wBAA0BH,GAJ/C,GAAII,IAAY,CAOhB,OAAO38D,GAAO,WAKV,MAJI28D,KACAH,IACAG,GAAY,GAETr5B,EAAGnyB,MAAMnW,KAAMoF,YACvBkjC,GAGP,QAASs5B,GAASC,EAAMzsD,GACpB,MAAO,UAAUnQ,GACb,MAAO68D,GAAaD,EAAKthE,KAAKP,KAAMiF,GAAImQ,IAGhD,QAAS2sD,GAAgBF,EAAMG,GAC3B,MAAO,UAAU/8D,GACb,MAAOjF,MAAKiiE,OAAOC,QAAQL,EAAKthE,KAAKP,KAAMiF,GAAI+8D,IAmBvD,QAASG,MAKT,QAASC,GAAOC,GACZC,EAAcD,GACdr9D,EAAOhF,KAAMqiE,GAIjB,QAASE,GAASC,GACd,GAAIC,GAAkBC,EAAqBF,GACvCG,EAAQF,EAAgB9jC,MAAQ,EAChCikC,EAAWH,EAAgBI,SAAW,EACtCC,EAASL,EAAgBM,OAAS,EAClCC,EAAQP,EAAgBQ,MAAQ,EAChCC,EAAOT,EAAgBU,KAAO,EAC9BxpC,EAAQ8oC,EAAgBW,MAAQ,EAChCxpC,EAAU6oC,EAAgBY,QAAU,EACpCxpC,EAAU4oC,EAAgBa,QAAU,EACpCxpC,EAAe2oC,EAAgBc,aAAe,CAGlDvjE,MAAKwjE,eAAiB1pC,EACR,IAAVD,EACU,IAAVD,EACQ,KAARD,EAGJ35B,KAAKyjE,OAASP,EACF,EAARF,EAIJhjE,KAAK0jE,SAAWZ,EACD,EAAXF,EACQ,GAARD,EAEJ3iE,KAAKiR,SAELjR,KAAK2jE,UAQT,QAAS3+D,GAAOC,EAAGa,GACf,IAAK,GAAIZ,KAAKY,GACNA,EAAEN,eAAeN,KACjBD,EAAEC,GAAKY,EAAEZ,GAYjB,OARIY,GAAEN,eAAe,cACjBP,EAAEF,SAAWe,EAAEf,UAGfe,EAAEN,eAAe,aACjBP,EAAEuB,QAAUV,EAAEU,SAGXvB,EAGX,QAAS2+D,GAAYpjE,GACjB,GAAiB0E,GAAb4O,IACJ,KAAK5O,IAAK1E,GACFA,EAAEgF,eAAeN,IAAM2+D,GAAiBr+D,eAAeN,KACvD4O,EAAO5O,GAAK1E,EAAE0E,GAItB,OAAO4O,GAGX,QAASgwD,GAASC,GACd,MAAa,GAATA,EACOn/D,KAAKqqC,KAAK80B,GAEVn/D,KAAKC,MAAMk/D,GAM1B,QAASjC,GAAaiC,EAAQC,EAAcC,GAIxC,IAHA,GAAIC,GAAS,GAAKt/D,KAAK+iB,IAAIo8C,GACvB53C,EAAO43C,GAAU,EAEdG,EAAO7+D,OAAS2+D,GACnBE,EAAS,IAAMA,CAEnB,QAAQ/3C,EAAQ83C,EAAY,IAAM,GAAM,KAAOC,EAInD,QAASC,GAAgCC,EAAK5B,EAAU6B,EAAUC,GAC9D,GAAIxqC,GAAe0oC,EAASgB,cACxBN,EAAOV,EAASiB,MAChBX,EAASN,EAASkB,OACtBY,GAA+B,MAAhBA,GAAuB,EAAOA,EAEzCxqC,GACAsqC,EAAIG,GAAGC,SAASJ,EAAIG,GAAKzqC,EAAeuqC,GAExCnB,GACAuB,GAAUL,EAAK,OAAQM,GAAUN,EAAK,QAAUlB,EAAOmB,GAEvDvB,GACA6B,GAAeP,EAAKM,GAAUN,EAAK,SAAWtB,EAASuB,GAEvDC,GACA9gE,GAAO8gE,aAAaF,EAAKlB,GAAQJ,GAKzC,QAASl9D,GAAQg/D,GACb,MAAiD,mBAA1C3+D,OAAOsL,UAAUxM,SAASxE,KAAKqkE,GAG1C,QAAS7gE,GAAO6gE,GACZ,MAAkD,kBAA1C3+D,OAAOsL,UAAUxM,SAASxE,KAAKqkE,IAC/BA,YAAiB5gE,MAI7B,QAAS6gE,GAAc5Q,EAAQC,EAAQ4Q,GACnC,GAGI5/D,GAHAC,EAAMP,KAAKmG,IAAIkpD,EAAO5uD,OAAQ6uD,EAAO7uD,QACrC0/D,EAAangE,KAAK+iB,IAAIssC,EAAO5uD,OAAS6uD,EAAO7uD,QAC7C2/D,EAAQ,CAEZ,KAAK9/D,EAAI,EAAOC,EAAJD,EAASA,KACZ4/D,GAAe7Q,EAAO/uD,KAAOgvD,EAAOhvD,KACnC4/D,GAAeG,EAAMhR,EAAO/uD,MAAQ+/D,EAAM/Q,EAAOhvD,MACnD8/D,GAGR,OAAOA,GAAQD,EAGnB,QAASG,GAAeC,GACpB,GAAIA,EAAO,CACP,GAAIC,GAAUD,EAAMzf,cAAch6C,QAAQ,QAAS,KACnDy5D,GAAQE,GAAYF,IAAUG,GAAeF,IAAYA,EAE7D,MAAOD,GAGX,QAASzC,GAAqB6C,GAC1B,GACIC,GACAjgE,EAFAk9D,IAIJ,KAAKl9D,IAAQggE,GACLA,EAAY//D,eAAeD,KAC3BigE,EAAiBN,EAAe3/D,GAC5BigE,IACA/C,EAAgB+C,GAAkBD,EAAYhgE,IAK1D,OAAOk9D,GAGX,QAASgD,GAAS13D,GACd,GAAIqH,GAAOswD,CAEX,IAA8B,IAA1B33D,EAAMpG,QAAQ,QACdyN,EAAQ,EACRswD,EAAS,UAER,CAAA,GAA+B,IAA3B33D,EAAMpG,QAAQ,SAKnB,MAJAyN,GAAQ,GACRswD,EAAS,QAMbliE,GAAOuK,GAAS,SAAU8wB,EAAQ92B,GAC9B,GAAI7C,GAAGygE,EACHC,EAASpiE,GAAO8kC,GAAGu9B,MAAM93D,GACzB+3D,IAYJ,IAVsB,gBAAXjnC,KACP92B,EAAQ82B,EACRA,EAAS34B,GAGby/D,EAAS,SAAUzgE,GACf,GAAI1E,GAAIgD,KAASuiE,MAAMC,IAAIN,EAAQxgE,EACnC,OAAO0gE,GAAOrlE,KAAKiD,GAAO8kC,GAAGu9B,MAAOrlE,EAAGq+B,GAAU,KAGxC,MAAT92B,EACA,MAAO49D,GAAO59D,EAGd,KAAK7C,EAAI,EAAOkQ,EAAJlQ,EAAWA,IACnB4gE,EAAQl+D,KAAK+9D,EAAOzgE,GAExB,OAAO4gE,IAKnB,QAASb,GAAMgB,GACX,GAAIC,IAAiBD,EACjBp/D,EAAQ,CAUZ,OARsB,KAAlBq/D,GAAuBC,SAASD,KAE5Br/D,EADAq/D,GAAiB,EACTthE,KAAKC,MAAMqhE,GAEXthE,KAAKqqC,KAAKi3B,IAInBr/D,EAGX,QAASu/D,GAAYznC,EAAMokC,GACvB,MAAO,IAAI/+D,MAAKA,KAAKqiE,IAAI1nC,EAAMokC,EAAQ,EAAG,IAAIuD,aAGlD,QAASC,GAAY5nC,EAAM6nC,EAAKC,GAC5B,MAAOC,IAAWljE,IAAQm7B,EAAM,GAAI,GAAK6nC,EAAMC,IAAOD,EAAKC,GAAKxD,KAGpE,QAAS0D,GAAWhoC,GAChB,MAAOioC,GAAWjoC,GAAQ,IAAM,IAGpC,QAASioC,GAAWjoC,GAChB,MAAQA,GAAO,IAAM,GAAKA,EAAO,MAAQ,GAAMA,EAAO,MAAQ,EAGlE,QAAS2jC,GAAc9hE,GACnB,GAAIkgB,EACAlgB,GAAEqmE,IAAyB,KAAnBrmE,EAAEsmE,IAAIpmD,WACdA,EACIlgB,EAAEqmE,GAAG/pC,IAAS,GAAKt8B,EAAEqmE,GAAG/pC,IAAS,GAAKA,GACtCt8B,EAAEqmE,GAAGE,IAAQ,GAAKvmE,EAAEqmE,GAAGE,IAAQX,EAAY5lE,EAAEqmE,GAAG9pC,IAAOv8B,EAAEqmE,GAAG/pC,KAAUiqC,GACtEvmE,EAAEqmE,GAAGjqC,IAAQ,GAAKp8B,EAAEqmE,GAAGjqC,IAAQ,GAAKA,GACpCp8B,EAAEqmE,GAAGlqC,IAAU,GAAKn8B,EAAEqmE,GAAGlqC,IAAU,GAAKA,GACxCn8B,EAAEqmE,GAAGnqC,IAAU,GAAKl8B,EAAEqmE,GAAGnqC,IAAU,GAAKA,GACxCl8B,EAAEqmE,GAAGpqC,IAAe,GAAKj8B,EAAEqmE,GAAGpqC,IAAe,IAAMA,GACnD,GAEAj8B,EAAEsmE,IAAIE,qBAAkCjqC,GAAXrc,GAAmBA,EAAWqmD,MAC3DrmD,EAAWqmD,IAGfvmE,EAAEsmE,IAAIpmD,SAAWA,GAIzB,QAASumD,GAAQzmE,GAgBb,MAfkB,OAAdA,EAAE0mE,WACF1mE,EAAE0mE,UAAY9iE,MAAM5D,EAAE+jE,GAAG4C,YACrB3mE,EAAEsmE,IAAIpmD,SAAW,IAChBlgB,EAAEsmE,IAAIjG,QACNrgE,EAAEsmE,IAAI5F,eACN1gE,EAAEsmE,IAAI7F,YACNzgE,EAAEsmE,IAAI3F,gBACN3gE,EAAEsmE,IAAI1F,gBAEP5gE,EAAE4mE,UACF5mE,EAAE0mE,SAAW1mE,EAAE0mE,UACa,IAAxB1mE,EAAEsmE,IAAI9F,eACwB,IAA9BxgE,EAAEsmE,IAAIhG,aAAaz7D,SAGxB7E,EAAE0mE,SAGb,QAASG,GAAkB/+D,GACvB,MAAOA,GAAMA,EAAIo9C,cAAch6C,QAAQ,IAAK,KAAOpD,EAIvD,QAASg/D,GAAO1C,EAAO2C,GACnB,MAAOA,GAAMC,OAAShkE,GAAOohE,GAAO6C,KAAKF,EAAMG,SAAW,GACtDlkE,GAAOohE,GAAO+C,QAiMtB,QAASC,GAASt/D,EAAK4M,GAMnB,MALAA,GAAO2yD,KAAOv/D,EACTw/D,GAAUx/D,KACXw/D,GAAUx/D,GAAO,GAAI65D,IAEzB2F,GAAUx/D,GAAK09D,IAAI9wD,GACZ4yD,GAAUx/D,GAIrB,QAASy/D,GAAWz/D,SACTw/D,IAAUx/D,GASrB,QAAS0/D,GAAkB1/D,GACvB,GAAWqgB,GAAGs5C,EAAM/8C,EAAMxd,EAAtBxC,EAAI,EACJiO,EAAM,SAAU80D,GACZ,IAAKH,GAAUG,IAAMC,GACjB,IACIhoE,EAAoB,IAAI,KAAO+nE,GACjC,MAAOn8D,IAEb,MAAOg8D,IAAUG,GAGzB,KAAK3/D,EACD,MAAO9E,IAAO8kC,GAAGu9B,KAGrB,KAAKjgE,EAAQ0C,GAAM,CAGf,GADA25D,EAAO9uD,EAAI7K,GAEP,MAAO25D,EAEX35D,IAAOA,GAMX,KAAOpD,EAAIoD,EAAIjD,QAAQ,CAKnB,IAJAqC,EAAQ2/D,EAAkB/+D,EAAIpD,IAAIwC,MAAM,KACxCihB,EAAIjhB,EAAMrC,OACV6f,EAAOmiD,EAAkB/+D,EAAIpD,EAAI,IACjCggB,EAAOA,EAAOA,EAAKxd,MAAM,KAAO,KACzBihB,EAAI,GAAG,CAEV,GADAs5C,EAAO9uD,EAAIzL,EAAM4sB,MAAM,EAAG3L,GAAG9gB,KAAK,MAE9B,MAAOo6D,EAEX,IAAI/8C,GAAQA,EAAK7f,QAAUsjB,GAAKk8C,EAAcn9D,EAAOwd,GAAM,IAASyD,EAAI,EAEpE,KAEJA,KAEJzjB,IAEJ,MAAO1B,IAAO8kC,GAAGu9B,MAQrB,QAASsC,GAAuBvD,GAC5B,MAAIA,GAAM3gE,MAAM,YACL2gE,EAAMl5D,QAAQ,WAAY,IAE9Bk5D,EAAMl5D,QAAQ,MAAO,IAGhC,QAAS08D,GAAmBvpC,GACxB,GAA4C35B,GAAGG,EAA3C+C,EAAQy2B,EAAO56B,MAAMokE,GAEzB,KAAKnjE,EAAI,EAAGG,EAAS+C,EAAM/C,OAAYA,EAAJH,EAAYA,IAEvCkD,EAAMlD,GADNojE,GAAqBlgE,EAAMlD,IAChBojE,GAAqBlgE,EAAMlD,IAE3BijE,EAAuB//D,EAAMlD,GAIhD,OAAO,UAAUk/D,GACb,GAAIF,GAAS,EACb,KAAKh/D,EAAI,EAAOG,EAAJH,EAAYA,IACpBg/D,GAAU97D,EAAMlD,YAAcqjC,UAAWngC,EAAMlD,GAAG3E,KAAK6jE,EAAKvlC,GAAUz2B,EAAMlD,EAEhF,OAAOg/D,IAKf,QAASqE,GAAa/nE,EAAGq+B,GAErB,MAAKr+B,GAAEymE,WAIPpoC,EAAS2pC,EAAa3pC,EAAQr+B,EAAEyhE,QAE3BwG,GAAgB5pC,KACjB4pC,GAAgB5pC,GAAUupC,EAAmBvpC,IAG1C4pC,GAAgB5pC,GAAQr+B,IATpBA,EAAEyhE,OAAOyG,cAYxB,QAASF,GAAa3pC,EAAQojC,GAG1B,QAAS0G,GAA4B/D,GACjC,MAAO3C,GAAK2G,eAAehE,IAAUA,EAHzC,GAAI1/D,GAAI,CAOR,KADA2jE,GAAsBC,UAAY,EAC3B5jE,GAAK,GAAK2jE,GAAsB57D,KAAK4xB,IACxCA,EAASA,EAAOnzB,QAAQm9D,GAAuBF,GAC/CE,GAAsBC,UAAY,EAClC5jE,GAAK,CAGT,OAAO25B,GAUX,QAASkqC,GAAsBrW,EAAO2P,GAClC,GAAIp9D,GAAGkuD,EAASkP,EAAO+E,OACvB,QAAQ1U,GACR,IAAK,IACD,MAAOsW,GACX,KAAK,OACD,MAAOC,GACX,KAAK,OACL,IAAK,OACL,IAAK,OACD,MAAO9V,GAAS+V,GAAuBC,EAC3C,KAAK,IACL,IAAK,IACL,IAAK,IACD,MAAOC,GACX,KAAK,SACL,IAAK,QACL,IAAK,QACL,IAAK,QACD,MAAOjW,GAASkW,GAAsBC,EAC1C,KAAK,IACD,GAAInW,EAAU,MAAO6V,GAEzB,KAAK,KACD,GAAI7V,EAAU,MAAOoW,GAEzB,KAAK,MACD,GAAIpW,EAAU,MAAO8V,GAEzB,KAAK,MACD,MAAOO,GACX,KAAK,MACL,IAAK,OACL,IAAK,KACL,IAAK,MACL,IAAK,OACD,MAAOC,GACX,KAAK,IACL,IAAK,IACD,MAAOzB,GAAkB3F,EAAOqH,IAAIC,cACxC,KAAK,IACD,MAAOC,GACX,KAAK,IACL,IAAK,KACD,MAAOC,GACX,KAAK,IACD,MAAOC,GACX,KAAK,OACD,MAAOC,GACX,KAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACD,MAAO5W,GAASoW,GAAsBS,EAC1C,KAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACD,MAAOA,GACX,KAAK,KACD,MAAOC,GACX,SAEI,MADAhlE,GAAI,GAAIilE,QAAOC,EAAaC,EAAe1X,EAAMhnD,QAAQ,KAAM,KAAM,OAK7E,QAAS2+D,GAA0BC,GAC/BA,EAASA,GAAU,EACnB,IAAIC,GAAqBD,EAAOrmE,MAAM4lE,QAClCW,EAAUD,EAAkBA,EAAkBllE,OAAS,OACvDolE,GAASD,EAAU,IAAIvmE,MAAMymE,MAA0B,IAAK,EAAG,GAC/D9wC,IAAuB,GAAX6wC,EAAM,IAAWxF,EAAMwF,EAAM,GAE7C,OAAoB,MAAbA,EAAM,IAAc7wC,EAAUA,EAIzC,QAAS+wC,GAAwBjY,EAAOkS,EAAOvC,GAC3C,GAAIp9D,GAAG2lE,EAAgBvI,EAAOwE,EAE9B,QAAQnU,GAER,IAAK,IACY,MAATkS,IACAgG,EAAc9tC,IAA8B,GAApBmoC,EAAML,GAAS,GAE3C,MAEJ,KAAK,IACL,IAAK,KACY,MAATA,IACAgG,EAAc9tC,IAASmoC,EAAML,GAAS,EAE1C,MACJ,KAAK,MACL,IAAK,OACD3/D,EAAI+iE,EAAkB3F,EAAOqH,IAAImB,YAAYjG,GAEpC,MAAL3/D,EACA2lE,EAAc9tC,IAAS73B,EAEvBo9D,EAAOyE,IAAI5F,aAAe0D,CAE9B,MAEJ,KAAK,IACL,IAAK,KACY,MAATA,IACAgG,EAAc7D,IAAQ9B,EAAML,GAEhC,MACJ,KAAK,KACY,MAATA,IACAgG,EAAc7D,IAAQ9B,EAAMr9C,SAASg9C,EAAO,KAEhD,MAEJ,KAAK,MACL,IAAK,OACY,MAATA,IACAvC,EAAOyI,WAAa7F,EAAML,GAG9B,MAEJ,KAAK,KACDgG,EAAc7tC,IAAQv5B,GAAOunE,kBAAkBnG,EAC/C,MACJ,KAAK,OACL,IAAK,QACL,IAAK,SACDgG,EAAc7tC,IAAQkoC,EAAML,EAC5B,MAEJ,KAAK,IACL,IAAK,IACDvC,EAAO2I,MAAQhD,EAAkB3F,EAAOqH,IAAIuB,KAAKrG,EACjD,MAEJ,KAAK,IACL,IAAK,KACL,IAAK,IACL,IAAK,KACDgG,EAAchuC,IAAQqoC,EAAML,EAC5B,MAEJ,KAAK,IACL,IAAK,KACDgG,EAAcjuC,IAAUsoC,EAAML,EAC9B,MAEJ,KAAK,IACL,IAAK,KACDgG,EAAcluC,IAAUuoC,EAAML,EAC9B,MAEJ,KAAK,IACL,IAAK,KACL,IAAK,MACL,IAAK,OACDgG,EAAcnuC,IAAewoC,EAAuB,KAAhB,KAAOL,GAC3C,MAEJ,KAAK,IACDvC,EAAOkC,GAAK,GAAIvgE,MAAyB,IAApBke,WAAW0iD,GAChC,MAEJ,KAAK,IACL,IAAK,KACDvC,EAAO6I,SAAU,EACjB7I,EAAO8I,KAAOd,EAA0BzF,EACxC,MAEJ,KAAK,KACL,IAAK,MACL,IAAK,OACD3/D,EAAI+iE,EAAkB3F,EAAOqH,IAAI0B,cAAcxG,GAEtC,MAAL3/D,GACAo9D,EAAOgJ,GAAKhJ,EAAOgJ,OACnBhJ,EAAOgJ,GAAM,EAAIpmE,GAEjBo9D,EAAOyE,IAAIwE,eAAiB1G,CAEhC,MAEJ,KAAK,IACL,IAAK,KACL,IAAK,IACL,IAAK,KACL,IAAK,IACL,IAAK,IACL,IAAK,IACDlS,EAAQA,EAAMqB,OAAO,EAAG,EAE5B,KAAK,OACL,IAAK,OACL,IAAK,QACDrB,EAAQA,EAAMqB,OAAO,EAAG,GACpB6Q,IACAvC,EAAOgJ,GAAKhJ,EAAOgJ,OACnBhJ,EAAOgJ,GAAG3Y,GAASuS,EAAML,GAE7B,MACJ,KAAK,KACL,IAAK,KACDvC,EAAOgJ,GAAKhJ,EAAOgJ,OACnBhJ,EAAOgJ,GAAG3Y,GAASlvD,GAAOunE,kBAAkBnG,IAIpD,QAAS2G,GAAsBlJ,GAC3B,GAAInf,GAAGsoB,EAAUvI,EAAMwI,EAASjF,EAAKC,EAAKiF,EAAMzJ,CAEhD/e,GAAImf,EAAOgJ,GACC,MAARnoB,EAAEyoB,IAAqB,MAAPzoB,EAAE0oB,GAAoB,MAAP1oB,EAAE2oB,GACjCrF,EAAM,EACNC,EAAM,EAMN+E,EAAW7K,EAAIzd,EAAEyoB,GAAItJ,EAAOwE,GAAG9pC,IAAO2pC,GAAWljE,KAAU,EAAG,GAAGm7B,MACjEskC,EAAOtC,EAAIzd,EAAE0oB,EAAG,GAChBH,EAAU9K,EAAIzd,EAAE2oB,EAAG,KAEnB5J,EAAO+F,EAAkB3F,EAAOqH,IAChClD,EAAMvE,EAAK6J,MAAMtF,IACjBC,EAAMxE,EAAK6J,MAAMrF,IAEjB+E,EAAW7K,EAAIzd,EAAE6oB,GAAI1J,EAAOwE,GAAG9pC,IAAO2pC,GAAWljE,KAAUgjE,EAAKC,GAAK9nC,MACrEskC,EAAOtC,EAAIzd,EAAEA,EAAG,GAEL,MAAPA,EAAEr3C,GAEF4/D,EAAUvoB,EAAEr3C,EACE26D,EAAViF,KACExI,GAINwI,EAFc,MAAPvoB,EAAEp3C,EAECo3C,EAAEp3C,EAAI06D,EAGNA,GAGlBkF,EAAOM,GAAmBR,EAAUvI,EAAMwI,EAAShF,EAAKD,GAExDnE,EAAOwE,GAAG9pC,IAAQ2uC,EAAK/sC,KACvB0jC,EAAOyI,WAAaY,EAAKO,UAO7B,QAASC,GAAe7J,GACpB,GAAIn9D,GAAGw5B,EAAkBytC,EAAaC,EAAzBxH,IAEb,KAAIvC,EAAOkC,GAAX,CA6BA,IAzBA4H,EAAcE,EAAiBhK,GAG3BA,EAAOgJ,IAAyB,MAAnBhJ,EAAOwE,GAAGE,KAAqC,MAApB1E,EAAOwE,GAAG/pC,KAClDyuC,EAAsBlJ,GAItBA,EAAOyI,aACPsB,EAAYzL,EAAI0B,EAAOwE,GAAG9pC,IAAOovC,EAAYpvC,KAEzCslC,EAAOyI,WAAanE,EAAWyF,KAC/B/J,EAAOyE,IAAIE,oBAAqB,GAGpCtoC,EAAO4tC,GAAYF,EAAW,EAAG/J,EAAOyI,YACxCzI,EAAOwE,GAAG/pC,IAAS4B,EAAK6tC,cACxBlK,EAAOwE,GAAGE,IAAQroC,EAAK4nC,cAQtBphE,EAAI,EAAO,EAAJA,GAAyB,MAAhBm9D,EAAOwE,GAAG3hE,KAAcA,EACzCm9D,EAAOwE,GAAG3hE,GAAK0/D,EAAM1/D,GAAKinE,EAAYjnE,EAI1C,MAAW,EAAJA,EAAOA,IACVm9D,EAAOwE,GAAG3hE,GAAK0/D,EAAM1/D,GAAsB,MAAhBm9D,EAAOwE,GAAG3hE,GAAqB,IAANA,EAAU,EAAI,EAAKm9D,EAAOwE,GAAG3hE,EAGrFm9D,GAAOkC,IAAMlC,EAAO6I,QAAUoB,GAAcE,IAAUr2D,MAAM,KAAMyuD,GAG/C,MAAfvC,EAAO8I,MACP9I,EAAOkC,GAAGkI,cAAcpK,EAAOkC,GAAGmI,gBAAkBrK,EAAO8I,OAInE,QAASwB,GAAetK,GACpB,GAAII,EAEAJ,GAAOkC,KAIX9B,EAAkBC,EAAqBL,EAAOuK,IAC9CvK,EAAOwE,IACHpE,EAAgB9jC,KAChB8jC,EAAgBM,MAChBN,EAAgBU,IAChBV,EAAgBW,KAChBX,EAAgBY,OAChBZ,EAAgBa,OAChBb,EAAgBc,aAGpB2I,EAAe7J,IAGnB,QAASgK,GAAiBhK,GACtB,GAAI3oC,GAAM,GAAI11B,KACd,OAAIq+D,GAAO6I,SAEHxxC,EAAImzC,iBACJnzC,EAAI6yC,cACJ7yC,EAAI4sC,eAGA5sC,EAAIuD,cAAevD,EAAImE,WAAYnE,EAAIkE,WAKvD,QAASkvC,GAA4BzK,GAEjC,GAAIA,EAAO0K,KAAOvpE,GAAOwpE,SAErB,WADAC,GAAS5K,EAIbA,GAAOwE,MACPxE,EAAOyE,IAAIjG,OAAQ,CAGnB,IAEI37D,GAAGgoE,EAAaC,EAAQza,EAAO0a,EAF/BnL,EAAO+F,EAAkB3F,EAAOqH,IAChCY,EAAS,GAAKjI,EAAOuK,GAErBS,EAAe/C,EAAOjlE,OACtBioE,EAAyB,CAI7B,KAFAH,EAAS3E,EAAanG,EAAO0K,GAAI9K,GAAMh+D,MAAMokE,QAExCnjE,EAAI,EAAGA,EAAIioE,EAAO9nE,OAAQH,IAC3BwtD,EAAQya,EAAOjoE,GACfgoE,GAAe5C,EAAOrmE,MAAM8kE,EAAsBrW,EAAO2P,SAAgB,GACrE6K,IACAE,EAAU9C,EAAOvW,OAAO,EAAGuW,EAAO3iE,QAAQulE,IACtCE,EAAQ/nE,OAAS,GACjBg9D,EAAOyE,IAAI/F,YAAYn5D,KAAKwlE,GAEhC9C,EAASA,EAAOh2C,MAAMg2C,EAAO3iE,QAAQulE,GAAeA,EAAY7nE,QAChEioE,GAA0BJ,EAAY7nE,QAGtCijE,GAAqB5V,IACjBwa,EACA7K,EAAOyE,IAAIjG,OAAQ,EAGnBwB,EAAOyE,IAAIhG,aAAal5D,KAAK8qD,GAEjCiY,EAAwBjY,EAAOwa,EAAa7K,IAEvCA,EAAO+E,UAAY8F,GACxB7K,EAAOyE,IAAIhG,aAAal5D,KAAK8qD,EAKrC2P,GAAOyE,IAAI9F,cAAgBqM,EAAeC,EACtChD,EAAOjlE,OAAS,GAChBg9D,EAAOyE,IAAI/F,YAAYn5D,KAAK0iE,GAI5BjI,EAAO2I,OAAS3I,EAAOwE,GAAGjqC,IAAQ,KAClCylC,EAAOwE,GAAGjqC,KAAS,IAGnBylC,EAAO2I,SAAU,GAA6B,KAApB3I,EAAOwE,GAAGjqC,MACpCylC,EAAOwE,GAAGjqC,IAAQ,GAGtBsvC,EAAe7J,GACfC,EAAcD,GAGlB,QAAS+H,GAAev/D,GACpB,MAAOA,GAAEa,QAAQ,sCAAuC,SAAU6hE,EAASn+B,EAAIC,EAAIC,EAAIk+B,GACnF,MAAOp+B,IAAMC,GAAMC,GAAMk+B,IAKjC,QAASrD,GAAat/D,GAClB,MAAOA,GAAEa,QAAQ,yBAA0B,QAI/C,QAAS+hE,GAA2BpL,GAChC,GAAIqL,GACAC,EAEAC,EACA1oE,EACA2oE,CAEJ,IAAyB,IAArBxL,EAAO0K,GAAG1nE,OAGV,MAFAg9D,GAAOyE,IAAI3F,eAAgB,OAC3BkB,EAAOkC,GAAK,GAAIvgE,MAAK8pE,KAIzB,KAAK5oE,EAAI,EAAGA,EAAIm9D,EAAO0K,GAAG1nE,OAAQH,IAC9B2oE,EAAe,EACfH,EAAa1oE,KAAWq9D,GACxBqL,EAAW5G,IAAMlG,IACjB8M,EAAWX,GAAK1K,EAAO0K,GAAG7nE,GAC1B4nE,EAA4BY,GAEvBzG,EAAQyG,KAKbG,GAAgBH,EAAW5G,IAAI9F,cAG/B6M,GAAqD,GAArCH,EAAW5G,IAAIhG,aAAaz7D,OAE5CqoE,EAAW5G,IAAIiH,MAAQF,GAEJ,MAAfD,GAAsCA,EAAfC,KACvBD,EAAcC,EACdF,EAAaD,GAIrB1oE,GAAOq9D,EAAQsL,GAAcD,GAIjC,QAAST,GAAS5K,GACd,GAAIn9D,GAAG8oE,EACH1D,EAASjI,EAAOuK,GAChB3oE,EAAQgqE,GAAS9pE,KAAKmmE,EAE1B,IAAIrmE,EAAO,CAEP,IADAo+D,EAAOyE,IAAIzF,KAAM,EACZn8D,EAAI,EAAG8oE,EAAIE,GAAS7oE,OAAY2oE,EAAJ9oE,EAAOA,IACpC,GAAIgpE,GAAShpE,GAAG,GAAGf,KAAKmmE,GAAS,CAE7BjI,EAAO0K,GAAKmB,GAAShpE,GAAG,IAAMjB,EAAM,IAAM,IAC1C,OAGR,IAAKiB,EAAI,EAAG8oE,EAAIG,GAAS9oE,OAAY2oE,EAAJ9oE,EAAOA,IACpC,GAAIipE,GAASjpE,GAAG,GAAGf,KAAKmmE,GAAS,CAC7BjI,EAAO0K,IAAMoB,GAASjpE,GAAG,EACzB,OAGJolE,EAAOrmE,MAAM4lE,MACbxH,EAAO0K,IAAM,KAEjBD,EAA4BzK,OAE5BA,GAAO6E,UAAW,EAK1B,QAASkH,GAAmB/L,GACxB4K,EAAS5K,GACLA,EAAO6E,YAAa,UACb7E,GAAO6E,SACd1jE,GAAO6qE,wBAAwBhM,IAIvC,QAASiM,IAAkBjM,GACvB,GAAIuC,GAAQvC,EAAOuK,GACfW,EAAUgB,GAAgBpqE,KAAKygE,EAE/BA,KAAU1+D,EACVm8D,EAAOkC,GAAK,GAAIvgE,MACTupE,EACPlL,EAAOkC,GAAK,GAAIvgE,OAAMupE,EAAQ,IACN,gBAAV3I,GACdwJ,EAAmB/L,GACZz8D,EAAQg/D,IACfvC,EAAOwE,GAAKjC,EAAMtwC,MAAM,GACxB43C,EAAe7J,IACRt+D,EAAO6gE,GACdvC,EAAOkC,GAAK,GAAIvgE,OAAM4gE,GACG,gBAAZ,GACb+H,EAAetK,GACU,gBAAZ,GAEbA,EAAOkC,GAAK,GAAIvgE,MAAK4gE,GAErBphE,GAAO6qE,wBAAwBhM,GAIvC,QAASmK,IAASp8D,EAAG5P,EAAGqL,EAAGjB,EAAGmlC,EAAGllC,EAAG2jE,GAGhC,GAAI9vC,GAAO,GAAI16B,MAAKoM,EAAG5P,EAAGqL,EAAGjB,EAAGmlC,EAAGllC,EAAG2jE,EAMtC,OAHQ,MAAJp+D,GACAsuB,EAAK1B,YAAY5sB,GAEdsuB,EAGX,QAAS4tC,IAAYl8D,GACjB,GAAIsuB,GAAO,GAAI16B,MAAKA,KAAKqiE,IAAIlwD,MAAM,KAAM/Q,WAIzC,OAHQ,MAAJgL,GACAsuB,EAAK+vC,eAAer+D,GAEjBsuB,EAGX,QAASgwC,IAAa9J,EAAO+J,GACzB,GAAqB,gBAAV/J,GACP,GAAKxgE,MAAMwgE,IAKP,GADAA,EAAQ+J,EAASvD,cAAcxG,GACV,gBAAVA,GACP,MAAO,UALXA,GAAQh9C,SAASg9C,EAAO,GAShC,OAAOA,GASX,QAASgK,IAAkBtE,EAAQvG,EAAQ8K,EAAeC,EAAU7M,GAChE,MAAOA,GAAK8M,aAAahL,GAAU,IAAK8K,EAAevE,EAAQwE,GAGnE,QAASC,IAAaj1C,EAAc+0C,EAAe5M,GAC/C,GAAIpoC,GAAUlP,GAAM/lB,KAAK+iB,IAAImS,GAAgB,KACzCF,EAAUjP,GAAMkP,EAAU,IAC1BF,EAAQhP,GAAMiP,EAAU,IACxBspC,EAAOv4C,GAAMgP,EAAQ,IACrBgpC,EAAQh4C,GAAMu4C,EAAO,KACrB7uC,EAAOwF,EAAUm1C,GAAuBnkE,IAAO,IAAKgvB,IACpC,IAAZD,IAAkB,MAClBA,EAAUo1C,GAAuBxuE,IAAM,KAAMo5B,IACnC,IAAVD,IAAgB,MAChBA,EAAQq1C,GAAuBpkE,IAAM,KAAM+uB,IAClC,IAATupC,IAAe,MACfA,GAAQ8L,GAAuBC,KAAO,KAAM/L,IAC5CA,GAAQ8L,GAAuBE,KAAO,MACtChM,EAAO8L,GAAuBtzD,KAAO,KAAMiP,GAAMu4C,EAAO,MAC9C,IAAVP,IAAgB,OAAS,KAAMA,EAIvC,OAHAtuC,GAAK,GAAKw6C,EACVx6C,EAAK,GAAKyF,EAAe,EACzBzF,EAAK,GAAK4tC,EACH2M,GAAkBz4D,SAAUke,GAgBvC,QAASqyC,IAAWtC,EAAK+K,EAAgBC,GACrC,GAEIC,GAFAlqD,EAAMiqD,EAAuBD,EAC7BG,EAAkBF,EAAuBhL,EAAIjB,KAajD,OATImM,GAAkBnqD,IAClBmqD,GAAmB,GAGDnqD,EAAM,EAAxBmqD,IACAA,GAAmB,GAGvBD,EAAiB7rE,GAAO4gE,GAAK9yD,IAAI,IAAKg+D,IAElCrM,KAAMr+D,KAAKqqC,KAAKogC,EAAepD,YAAc,GAC7CttC,KAAM0wC,EAAe1wC,QAK7B,QAASqtC,IAAmBrtC,EAAMskC,EAAMwI,EAAS2D,EAAsBD,GACnE,GAA6CI,GAAWtD,EAApDpgE,EAAIygE,GAAY3tC,EAAM,EAAG,GAAG6wC,WAOhC,OALA3jE,GAAU,IAANA,EAAU,EAAIA,EAClB4/D,EAAqB,MAAXA,EAAkBA,EAAU0D,EACtCI,EAAYJ,EAAiBtjE,GAAKA,EAAIujE,EAAuB,EAAI,IAAUD,EAAJtjE,EAAqB,EAAI,GAChGogE,EAAY,GAAKhJ,EAAO,IAAMwI,EAAU0D,GAAkBI,EAAY,GAGlE5wC,KAAMstC,EAAY,EAAIttC,EAAOA,EAAO,EACpCstC,UAAWA,EAAY,EAAKA,EAAYtF,EAAWhoC,EAAO,GAAKstC,GAQvE,QAASwD,IAAWpN,GAChB,GAAIuC,GAAQvC,EAAOuK,GACf/tC,EAASwjC,EAAO0K,EAEpB,OAAc,QAAVnI,GAAmB/lC,IAAW34B,GAAuB,KAAV0+D,EACpCphE,GAAOksE,SAASzO,WAAW,KAGjB,gBAAV2D,KACPvC,EAAOuK,GAAKhI,EAAQoD,IAAoB2H,SAAS/K,IAGjDphE,GAAOiD,SAASm+D,IAChBvC,EAASuB,EAAYgB,GAErBvC,EAAOkC,GAAK,GAAIvgE,OAAM4gE,EAAML,KACrB1lC,EACHj5B,EAAQi5B,GACR4uC,EAA2BpL,GAE3ByK,EAA4BzK,GAGhCiM,GAAkBjM,GAGf,GAAID,GAAOC,IAwCtB,QAASuN,IAAOtnC,EAAIunC,GAChB,GAAIC,GAAK5qE,CAIT,IAHuB,IAAnB2qE,EAAQxqE,QAAgBO,EAAQiqE,EAAQ,MACxCA,EAAUA,EAAQ,KAEjBA,EAAQxqE,OACT,MAAO7B,KAGX,KADAssE,EAAMD,EAAQ,GACT3qE,EAAI,EAAGA,EAAI2qE,EAAQxqE,SAAUH,EAC1B2qE,EAAQ3qE,GAAGojC,GAAIwnC,KACfA,EAAMD,EAAQ3qE,GAGtB,OAAO4qE,GAqmBX,QAASnL,IAAeP,EAAKv9D,GACzB,GAAIkpE,EAGJ,OAAqB,gBAAVlpE,KACPA,EAAQu9D,EAAInC,OAAO4I,YAAYhkE,GAEV,gBAAVA,IACAu9D,GAIf2L,EAAanrE,KAAKmG,IAAIq5D,EAAI1lC,OAClB0nC,EAAYhC,EAAIzlC,OAAQ93B,IAChCu9D,EAAIG,GAAG,OAASH,EAAIoD,OAAS,MAAQ,IAAM,SAAS3gE,EAAOkpE,GACpD3L,GAGX,QAASM,IAAUN,EAAK4L,GACpB,MAAO5L,GAAIG,GAAG,OAASH,EAAIoD,OAAS,MAAQ,IAAMwI,KAGtD,QAASvL,IAAUL,EAAK4L,EAAMnpE,GAC1B,MAAa,UAATmpE,EACOrL,GAAeP,EAAKv9D,GAEpBu9D,EAAIG,GAAG,OAASH,EAAIoD,OAAS,MAAQ,IAAMwI,GAAMnpE,GAIhE,QAASopE,IAAaD,EAAME,GACxB,MAAO,UAAUrpE,GACb,MAAa,OAATA,GACA49D,GAAUzkE,KAAMgwE,EAAMnpE,GACtBrD,GAAO8gE,aAAatkE,KAAMkwE,GACnBlwE,MAEA0kE,GAAU1kE,KAAMgwE,IAwJnC,QAASG,IAAmB/7D,GACxB5Q,GAAOg/D,SAASl6B,GAAGl0B,GAAQ,WACvB,MAAOpU,MAAKiR,MAAMmD,IAI1B,QAASg8D,IAAqBh8D,EAAMgoC,GAChC54C,GAAOg/D,SAASl6B,GAAG,KAAOl0B,GAAQ,WAC9B,OAAQpU,KAAOo8C,GAwCvB,QAASi0B,IAAWC,GAEK,mBAAVC,SAGXC,GAAkBC,GAAYjtE,OAE1BitE,GAAYjtE,OADZ8sE,EACqBhP,EACb,uGAGA99D,IAEaA,IA9rE7B,IAnVA,GAAIA,IAIAgtE,GAEAtrE,GALAwrE,GAAU,QAEVD,GAAgC,mBAAX/P,GAAyBA,EAAS1gE,KAEvD2qB,GAAQ/lB,KAAK+lB,MAGboS,GAAO,EACPD,GAAQ,EACRiqC,GAAO,EACPnqC,GAAO,EACPD,GAAS,EACTD,GAAS,EACTD,GAAc,EAGdqrC,MAGAjE,IACI8M,iBAAkB,KAClB/D,GAAK,KACLG,GAAK,KACLrD,GAAK,KACLtC,QAAU,KACV+D,KAAO,KACP3D,OAAS,KACTE,QAAU,KACVZ,IAAM,KACNjB,MAAQ,MAIZqC,GAA+B,mBAAXroE,IAA0BA,EAAOD,QAGrD2uE,GAAkB,sBAClBqC,GAA0B,uDAI1BC,GAAmB,gIAGnBxI,GAAmB,mKACnBQ,GAAwB,yCAGxBmB,GAA2B,QAC3BR,GAA6B,UAC7BL,GAA4B,UAC5BG,GAA2B,gBAC3BS,GAAmB,MACnBN,GAAiB,mHACjBI,GAAqB,uBACrBC,GAAc,KACdF,GAAwB,yBACxBK,GAAoB,UAGpBjB,GAAqB,KACrBO,GAAsB,OACtBN,GAAwB,QACxBC,GAAuB,QACvBG,GAAsB,aACtBD,GAAyB,WAIzB6E,GAAW,4IAEX6C,GAAY,uBAEZ5C,KACK,eAAgB,0BAChB,aAAc,sBACd,eAAgB,oBAChB,aAAc,iBACd,WAAY,gBAIjBC,KACK,gBAAiB,6BACjB,WAAY,wBACZ,QAAS,mBACT,KAAM,cAIXzD,GAAuB,kBAIvBqG,IADyB,0CAA0CrpE,MAAM,MAErEspE,aAAiB,EACjBC,QAAY,IACZC,QAAY,IACZC,MAAU,KACVC,KAAS,MACTC,OAAW,OACXC,MAAU,UAGdjM,IACImJ,GAAK,cACL3jE,EAAI,SACJrK,EAAI,SACJoK,EAAI,OACJiB,EAAI,MACJ0lE,EAAI,OACJruB,EAAI,OACJ0oB,EAAI,UACJ77B,EAAI,QACJyhC,EAAI,UACJphE,EAAI,OACJqhE,IAAM,YACN3lE,EAAI,UACJ+/D,EAAI,aACJE,GAAI,WACJJ,GAAI,eAGRrG,IACIoM,UAAY,YACZC,WAAa,aACbC,QAAU,UACVC,SAAW,WACXC,YAAc,eAIlBrJ,MAGAuG,IACEnkE,EAAG,GACHrK,EAAG,GACHoK,EAAG,GACHqkE,GAAI,GACJC,GAAI,GACJxzD,GAAI,KAINq2D,GAAmB,gBAAgBrqE,MAAM,KACzCsqE,GAAe,kBAAkBtqE,MAAM,KAEvC4gE,IACIv4B,EAAO,WACH,MAAO/vC,MAAK+iE,QAAU,GAE1BkP,IAAO,SAAUpzC,GACb,MAAO7+B,MAAKiiE,OAAOiQ,YAAYlyE,KAAM6+B,IAEzCszC,KAAO,SAAUtzC,GACb,MAAO7+B,MAAKiiE,OAAOa,OAAO9iE,KAAM6+B,IAEpC0yC,EAAO,WACH,MAAOvxE,MAAK0+B,QAEhB+yC,IAAO,WACH,MAAOzxE,MAAKisE,aAEhBpgE,EAAO,WACH,MAAO7L,MAAKmjE,OAEhB8L,GAAO,SAAUpwC,GACb,MAAO7+B,MAAKiiE,OAAOmQ,YAAYpyE,KAAM6+B,IAEzCwzC,IAAO,SAAUxzC,GACb,MAAO7+B,MAAKiiE,OAAOqQ,cAActyE,KAAM6+B,IAE3C0zC,KAAO,SAAU1zC,GACb,MAAO7+B,MAAKiiE,OAAOuQ,SAASxyE,KAAM6+B,IAEtCqkB,EAAO,WACH,MAAOljD,MAAKijE,QAEhB2I,EAAO,WACH,MAAO5rE,MAAKyyE,WAEhBC,GAAO,WACH,MAAO5Q,GAAa9hE,KAAK2+B,OAAS,IAAK,IAE3Cg0C,KAAO,WACH,MAAO7Q,GAAa9hE,KAAK2+B,OAAQ,IAErCi0C,MAAQ,WACJ,MAAO9Q,GAAa9hE,KAAK2+B,OAAQ,IAErCk0C,OAAS,WACL,GAAIziE,GAAIpQ,KAAK2+B,OAAQxS,EAAO/b,GAAK,EAAI,IAAM,GAC3C,OAAO+b,GAAO21C,EAAal9D,KAAK+iB,IAAIvX,GAAI,IAE5C27D,GAAO,WACH,MAAOjK,GAAa9hE,KAAKwrE,WAAa,IAAK,IAE/CsH,KAAO,WACH,MAAOhR,GAAa9hE,KAAKwrE,WAAY,IAEzCuH,MAAQ,WACJ,MAAOjR,GAAa9hE,KAAKwrE,WAAY,IAEzCG,GAAO,WACH,MAAO7J,GAAa9hE,KAAKgzE,cAAgB,IAAK,IAElDC,KAAO,WACH,MAAOnR,GAAa9hE,KAAKgzE,cAAe,IAE5CE,MAAQ,WACJ,MAAOpR,GAAa9hE,KAAKgzE,cAAe,IAE5ClnE,EAAI,WACA,MAAO9L,MAAKyrE,WAEhBI,EAAI,WACA,MAAO7rE,MAAKmzE,cAEhBluE,EAAO,WACH,MAAOjF,MAAKiiE,OAAOmR,SAASpzE,KAAK25B,QAAS35B,KAAK45B,WAAW,IAE9DiW,EAAO,WACH,MAAO7vC,MAAKiiE,OAAOmR,SAASpzE,KAAK25B,QAAS35B,KAAK45B,WAAW,IAE9D1S,EAAO,WACH,MAAOlnB,MAAK25B,SAEhB/uB,EAAO,WACH,MAAO5K,MAAK25B,QAAU,IAAM,IAEhCn5B,EAAO,WACH,MAAOR,MAAK45B,WAEhB/uB,EAAO,WACH,MAAO7K,MAAK65B,WAEhB1S,EAAO,WACH,MAAO89C,GAAMjlE,KAAK85B,eAAiB,MAEvCu5C,GAAO,WACH,MAAOvR,GAAamD,EAAMjlE,KAAK85B,eAAiB,IAAK,IAEzDw5C,IAAO,WACH,MAAOxR,GAAa9hE,KAAK85B,eAAgB,IAE7Cy5C,KAAO,WACH,MAAOzR,GAAa9hE,KAAK85B,eAAgB,IAE7C05C,EAAO,WACH,GAAIvuE,IAAKjF,KAAKynE,OACV3hE,EAAI,GAKR,OAJQ,GAAJb,IACAA,GAAKA,EACLa,EAAI,KAEDA,EAAIg8D,EAAamD,EAAMhgE,EAAI,IAAK,GAAK,IAAM68D,EAAamD,EAAMhgE,GAAK,GAAI,IAElFwuE,GAAO,WACH,GAAIxuE,IAAKjF,KAAKynE,OACV3hE,EAAI,GAKR,OAJQ,GAAJb,IACAA,GAAKA,EACLa,EAAI,KAEDA,EAAIg8D,EAAamD,EAAMhgE,EAAI,IAAK,GAAK68D,EAAamD,EAAMhgE,GAAK,GAAI,IAE5E8U,EAAI,WACA,MAAO/Z,MAAK0zE,YAEhBC,GAAK,WACD,MAAO3zE,MAAK4zE,YAEhBlsD,EAAO,WACH,MAAO1nB,MAAK6zE,QAEhBrC,EAAI,WACA,MAAOxxE,MAAK6iE,YAIpBiR,IAAS,SAAU,cAAe,WAAY,gBAAiB,eAyD5D/B,GAAiB1sE,QACpBH,GAAI6sE,GAAiBpgC,MACrB22B,GAAqBpjE,GAAI,KAAO68D,EAAgBuG,GAAqBpjE,IAAIA,GAE7E,MAAO8sE,GAAa3sE,QAChBH,GAAI8sE,GAAargC,MACjB22B,GAAqBpjE,GAAIA,IAAK08D,EAAS0G,GAAqBpjE,IAAI,EAmgDpE,KAjgDAojE,GAAqByL,KAAOnS,EAAS0G,GAAqBmJ,IAAK,GA+S/DzsE,EAAOm9D,EAAS5wD,WAEZy0D,IAAM,SAAU3D,GACZ,GAAI98D,GAAML,CACV,KAAKA,IAAKm9D,GACN98D,EAAO88D,EAAOn9D,GACM,kBAATK,GACPvF,KAAKkF,GAAKK,EAEVvF,KAAK,IAAMkF,GAAKK,GAK5Bm+D,QAAU,wFAAwFh8D,MAAM,KACxGo7D,OAAS,SAAUtiE,GACf,MAAOR,MAAK0jE,QAAQljE,EAAEuiE,UAG1BiR,aAAe,kDAAkDtsE,MAAM,KACvEwqE,YAAc,SAAU1xE,GACpB,MAAOR,MAAKg0E,aAAaxzE,EAAEuiE,UAG/B8H,YAAc,SAAUoJ,GACpB,GAAI/uE,GAAGk/D,EAAK8P,CAMZ,KAJKl0E,KAAKm0E,eACNn0E,KAAKm0E,iBAGJjvE,EAAI,EAAO,GAAJA,EAAQA,IAQhB,GANKlF,KAAKm0E,aAAajvE,KACnBk/D,EAAM5gE,GAAOuiE,KAAK,IAAM7gE,IACxBgvE,EAAQ,IAAMl0E,KAAK8iE,OAAOsB,EAAK,IAAM,KAAOpkE,KAAKkyE,YAAY9N,EAAK,IAClEpkE,KAAKm0E,aAAajvE,GAAK,GAAIglE,QAAOgK,EAAMxoE,QAAQ,IAAK,IAAK,MAG1D1L,KAAKm0E,aAAajvE,GAAG+H,KAAKgnE,GAC1B,MAAO/uE,IAKnBkvE,UAAY,2DAA2D1sE,MAAM,KAC7E8qE,SAAW,SAAUhyE,GACjB,MAAOR,MAAKo0E,UAAU5zE,EAAE2iE,QAG5BkR,eAAiB,8BAA8B3sE,MAAM,KACrD4qE,cAAgB,SAAU9xE,GACtB,MAAOR,MAAKq0E,eAAe7zE,EAAE2iE,QAGjCmR,aAAe,uBAAuB5sE,MAAM,KAC5C0qE,YAAc,SAAU5xE,GACpB,MAAOR,MAAKs0E,aAAa9zE,EAAE2iE,QAG/BiI,cAAgB,SAAUmJ,GACtB,GAAIrvE,GAAGk/D,EAAK8P,CAMZ,KAJKl0E,KAAKw0E,iBACNx0E,KAAKw0E,mBAGJtvE,EAAI,EAAO,EAAJA,EAAOA,IAQf,GANKlF,KAAKw0E,eAAetvE,KACrBk/D,EAAM5gE,IAAQ,IAAM,IAAI2/D,IAAIj+D,GAC5BgvE,EAAQ,IAAMl0E,KAAKwyE,SAASpO,EAAK,IAAM,KAAOpkE,KAAKsyE,cAAclO,EAAK,IAAM,KAAOpkE,KAAKoyE,YAAYhO,EAAK,IACzGpkE,KAAKw0E,eAAetvE,GAAK,GAAIglE,QAAOgK,EAAMxoE,QAAQ,IAAK,IAAK,MAG5D1L,KAAKw0E,eAAetvE,GAAG+H,KAAKsnE,GAC5B,MAAOrvE,IAKnBuvE,iBACIC,GAAK,SACLC,EAAI,aACJC,GAAK,cACLC,IAAM,iBACNC,KAAO,wBAEXlM,eAAiB,SAAUtgE,GACvB,GAAI47D,GAASlkE,KAAKy0E,gBAAgBnsE,EAOlC,QANK47D,GAAUlkE,KAAKy0E,gBAAgBnsE,EAAIqD,iBACpCu4D,EAASlkE,KAAKy0E,gBAAgBnsE,EAAIqD,eAAeD,QAAQ,mBAAoB,SAAUqpE,GACnF,MAAOA,GAAIzgD,MAAM,KAErBt0B,KAAKy0E,gBAAgBnsE,GAAO47D,GAEzBA,GAGX+G,KAAO,SAAUrG,GAGb,MAAiD,OAAxCA,EAAQ,IAAIlf,cAAczjC,OAAO,IAG9C0nD,eAAiB,gBACjByJ,SAAW,SAAUz5C,EAAOC,EAASo7C,GACjC,MAAIr7C,GAAQ,GACDq7C,EAAU,KAAO,KAEjBA,EAAU,KAAO,MAIhCC,WACIC,QAAU,gBACVC,QAAU,mBACVC,SAAW,eACXC,QAAU,oBACVC,SAAW,sBACXC,SAAW,KAEfC,SAAW,SAAUltE,EAAK87D,GACtB,GAAIF,GAASlkE,KAAKi1E,UAAU3sE,EAC5B,OAAyB,kBAAX47D,GAAwBA,EAAO/tD,MAAMiuD,GAAOF,GAG9DuR,eACIC,OAAS,QACTC,KAAO,SACP9qE,EAAI,gBACJrK,EAAI,WACJo1E,GAAK,aACLhrE,EAAI,UACJirE,GAAK,WACLhqE,EAAI,QACJojE,GAAK,UACLl/B,EAAI,UACJ+lC,GAAK,YACL1lE,EAAI,SACJ2lE,GAAK,YAEThH,aAAe,SAAUhL,EAAQ8K,EAAevE,EAAQwE,GACpD,GAAI5K,GAASlkE,KAAKy1E,cAAcnL,EAChC,OAA0B,kBAAXpG,GACXA,EAAOH,EAAQ8K,EAAevE,EAAQwE,GACtC5K,EAAOx4D,QAAQ,MAAOq4D,IAE9BiS,WAAa,SAAU5sD,EAAM86C,GACzB,GAAIrlC,GAAS7+B,KAAKy1E,cAAcrsD,EAAO,EAAI,SAAW,OACtD,OAAyB,kBAAXyV,GAAwBA,EAAOqlC,GAAUrlC,EAAOnzB,QAAQ,MAAOw4D,IAGjFhC,QAAU,SAAU6B,GAChB,MAAO/jE,MAAKi2E,SAASvqE,QAAQ,KAAMq4D,IAEvCkS,SAAW,KAEXtG,SAAW,SAAUrF,GACjB,MAAOA,IAGX4L,WAAa,SAAU5L,GACnB,MAAOA,IAGXrH,KAAO,SAAUmB,GACb,MAAOsC,IAAWtC,EAAKpkE,KAAK8rE,MAAMtF,IAAKxmE,KAAK8rE,MAAMrF,KAAKxD,MAG3D6I,OACItF,IAAM,EACNC,IAAM,GAGV0P,aAAc,eACdzN,YAAa,WACT,MAAO1oE,MAAKm2E,gBAo0BpB3yE,GAAS,SAAUohE,EAAO/lC,EAAQojC,EAAM9O,GACpC,GAAI1yD,EAiBJ,OAfqB,iBAAX,KACN0yD,EAAS8O,EACTA,EAAO/7D,GAIXzF,KACAA,EAAEkwE,kBAAmB,EACrBlwE,EAAEmsE,GAAKhI,EACPnkE,EAAEssE,GAAKluC,EACPp+B,EAAEipE,GAAKzH,EACPxhE,EAAE2mE,QAAUjU,EACZ1yD,EAAE+mE,QAAS,EACX/mE,EAAEqmE,IAAMlG,IAED6O,GAAWhvE,IAGtB+C,GAAOi+D,6BAA8B,EAErCj+D,GAAO6qE,wBAA0B/M,EACzB,4LAIA,SAAUe,GACdA,EAAOkC,GAAK,GAAIvgE,MAAKq+D,EAAOuK,MAyBhCppE,GAAOuH,IAAM,WACT,GAAIspB,MAAUC,MAAM/zB,KAAK6E,UAAW,EAEpC,OAAOwqE,IAAO,WAAYv7C,IAG9B7wB,GAAOiJ,IAAM,WACT,GAAI4nB,MAAUC,MAAM/zB,KAAK6E,UAAW,EAEpC,OAAOwqE,IAAO,UAAWv7C,IAI7B7wB,GAAOuiE,IAAM,SAAUnB,EAAO/lC,EAAQojC,EAAM9O,GACxC,GAAI1yD,EAkBJ,OAhBqB,iBAAX,KACN0yD,EAAS8O,EACTA,EAAO/7D,GAIXzF,KACAA,EAAEkwE,kBAAmB,EACrBlwE,EAAEyqE,SAAU,EACZzqE,EAAE+mE,QAAS,EACX/mE,EAAEipE,GAAKzH,EACPxhE,EAAEmsE,GAAKhI,EACPnkE,EAAEssE,GAAKluC,EACPp+B,EAAE2mE,QAAUjU,EACZ1yD,EAAEqmE,IAAMlG,IAED6O,GAAWhvE,GAAGslE,OAIzBviE,GAAOqwE,KAAO,SAAUjP,GACpB,MAAOphE,IAAe,IAARohE,IAIlBphE,GAAOg/D,SAAW,SAAUoC,EAAOt8D,GAC/B,GAGI6jB,GACAiqD,EACAC,EALA7T,EAAWoC,EAEX3gE,EAAQ,IAuDZ,OAlDIT,IAAO8yE,WAAW1R,GAClBpC,GACIgM,GAAI5J,EAAMpB,cACV33D,EAAG+4D,EAAMnB,MACT1zB,EAAG60B,EAAMlB,SAEW,gBAAVkB,IACdpC,KACIl6D,EACAk6D,EAASl6D,GAAOs8D,EAEhBpC,EAAS1oC,aAAe8qC,IAElB3gE,EAAQ2sE,GAAwBzsE,KAAKygE,KAC/Cz4C,EAAqB,MAAbloB,EAAM,GAAc,GAAK,EACjCu+D,GACIpyD,EAAG,EACHvE,EAAGo5D,EAAMhhE,EAAM8iE,KAAS56C,EACxBvhB,EAAGq6D,EAAMhhE,EAAM24B,KAASzQ,EACxB3rB,EAAGykE,EAAMhhE,EAAM04B,KAAWxQ,EAC1BthB,EAAGo6D,EAAMhhE,EAAMy4B,KAAWvQ,EAC1BqiD,GAAIvJ,EAAMhhE,EAAMw4B,KAAgBtQ,KAE1BloB,EAAQ4sE,GAAiB1sE,KAAKygE,MACxCz4C,EAAqB,MAAbloB,EAAM,GAAc,GAAK,EACjCoyE,EAAW,SAAUE,GAIjB,GAAIzG,GAAMyG,GAAOr0D,WAAWq0D,EAAI7qE,QAAQ,IAAK,KAE7C,QAAQtH,MAAM0rE,GAAO,EAAIA,GAAO3jD,GAEpCq2C,GACIpyD,EAAGimE,EAASpyE,EAAM,IAClB8rC,EAAGsmC,EAASpyE,EAAM,IAClB4H,EAAGwqE,EAASpyE,EAAM,IAClB2G,EAAGyrE,EAASpyE,EAAM,IAClBzD,EAAG61E,EAASpyE,EAAM,IAClB4G,EAAGwrE,EAASpyE,EAAM,IAClBi/C,EAAGmzB,EAASpyE,EAAM,MAI1BmyE,EAAM,GAAI7T,GAASC,GAEfh/D,GAAO8yE,WAAW1R,IAAUA,EAAMp/D,eAAe,WACjD4wE,EAAIvQ,MAAQjB,EAAMiB,OAGfuQ,GAIX5yE,GAAOgzE,QAAU9F,GAGjBltE,GAAOizE,cAAgB3F,GAGvBttE,GAAOwpE,SAAW,aAIlBxpE,GAAOqgE,iBAAmBA,GAI1BrgE,GAAO8gE,aAAe,aAGtB9gE,GAAOkzE,sBAAwB,SAASC,EAAWC,GACjD,MAAI5H,IAAuB2H,KAAezwE,GACjC,GAET8oE,GAAuB2H,GAAaC,GAC7B,IAMTpzE,GAAOy+D,KAAO,SAAU35D,EAAK4M,GACzB,GAAIlJ,EACJ,OAAK1D,IAGD4M,EACA0yD,EAASP,EAAkB/+D,GAAM4M,GACf,OAAXA,GACP6yD,EAAWz/D,GACXA,EAAM,MACEw/D,GAAUx/D,IAClB0/D,EAAkB1/D,GAEtB0D,EAAIxI,GAAOg/D,SAASl6B,GAAGu9B,MAAQriE,GAAO8kC,GAAGu9B,MAAQmC,EAAkB1/D,GAC5D0D,EAAE6qE,OAXErzE,GAAO8kC,GAAGu9B,MAAMgR,OAe/BrzE,GAAOszE,SAAW,SAAUxuE,GAIxB,MAHIA,IAAOA,EAAIu9D,OAASv9D,EAAIu9D,MAAMgR,QAC9BvuE,EAAMA,EAAIu9D,MAAMgR,OAEb7O,EAAkB1/D,IAI7B9E,GAAOiD,SAAW,SAAUoZ,GACxB,MAAOA,aAAeuiD,IACV,MAAPviD,GAAgBA,EAAIra,eAAe,qBAI5ChC,GAAO8yE,WAAa,SAAUz2D,GAC1B,MAAOA,aAAe0iD,IAGrBr9D,GAAI4uE,GAAMzuE,OAAS,EAAGH,IAAK,IAAKA,GACjCugE,EAASqO,GAAM5uE,IAGnB1B,IAAO0hE,eAAiB,SAAUC,GAC9B,MAAOD,GAAeC,IAG1B3hE,GAAOksE,QAAU,SAAUqH,GACvB,GAAIv2E,GAAIgD,GAAOuiE,IAAI+H,IAQnB,OAPa,OAATiJ,EACA/xE,EAAOxE,EAAEsmE,IAAKiQ,GAGdv2E,EAAEsmE,IAAI1F,iBAAkB,EAGrB5gE,GAGXgD,GAAOwzE,UAAY,WACf,MAAOxzE,IAAO2S,MAAM,KAAM/Q,WAAW4xE,aAGzCxzE,GAAOunE,kBAAoB,SAAUnG,GACjC,MAAOK,GAAML,IAAUK,EAAML,GAAS,GAAK,KAAO,MAQtD5/D,EAAOxB,GAAO8kC,GAAK85B,EAAO7wD,WAEtBwoB,MAAQ,WACJ,MAAOv2B,IAAOxD,OAGlBwG,QAAU,WACN,OAAQxG,KAAKukE,GAA4B,KAArBvkE,KAAK0nE,SAAW,IAGxCmM,KAAO,WACH,MAAOjvE,MAAKC,OAAO7E,KAAO,MAG9B+E,SAAW,WACP,MAAO/E,MAAK+5B,QAAQkoC,KAAK,MAAMpjC,OAAO,qCAG1Cn4B,OAAS,WACL,MAAO1G,MAAK0nE,QAAU,GAAI1jE,OAAMhE,MAAQA,KAAKukE,IAGjD39D,YAAc,WACV,GAAIpG,GAAIgD,GAAOxD,MAAM+lE,KACrB,OAAI,GAAIvlE,EAAEm+B,QAAUn+B,EAAEm+B,QAAU,KACrB4pC,EAAa/nE,EAAG,gCAEhB+nE,EAAa/nE,EAAG,mCAI/B2H,QAAU,WACN,GAAI3H,GAAIR,IACR,QACIQ,EAAEm+B,OACFn+B,EAAEuiE,QACFviE,EAAEk+B,OACFl+B,EAAEm5B,QACFn5B,EAAEo5B,UACFp5B,EAAEq5B,UACFr5B,EAAEs5B,iBAIVmtC,QAAU,WACN,MAAOA,GAAQjnE,OAGnBi3E,aAAe,WAEX,MAAIj3E,MAAK6mE,GACE7mE,KAAKinE,WAAapC,EAAc7kE,KAAK6mE,IAAK7mE,KAAKwnE,OAAShkE,GAAOuiE,IAAI/lE,KAAK6mE,IAAMrjE,GAAOxD,KAAK6mE,KAAK1+D,WAAa,GAGhH,GAGX+uE,aAAe,WACX,MAAOlyE,MAAWhF,KAAK8mE,MAG3BqQ,UAAW,WACP,MAAOn3E,MAAK8mE,IAAIpmD,UAGpBqlD,IAAM,WACF,MAAO/lE,MAAKynE,KAAK,IAGrBE,MAAQ,WAGJ,MAFA3nE,MAAKynE,KAAK,GACVznE,KAAKwnE,QAAS,EACPxnE,MAGX6+B,OAAS,SAAUu4C,GACf,GAAIlT,GAASqE,EAAavoE,KAAMo3E,GAAe5zE,GAAOizE,cACtD,OAAOz2E,MAAKiiE,OAAOiU,WAAWhS,IAGlC5yD,IAAM,SAAUszD,EAAOmQ,GACnB,GAAIsC,EAUJ,OAPIA,GADiB,gBAAVzS,IAAqC,gBAARmQ,GAC9BvxE,GAAOg/D,SAASp+D,OAAO2wE,IAAQnQ,GAASmQ,EAAK3wE,OAAO2wE,GAAOA,EAAMnQ,GAC/C,gBAAVA,GACRphE,GAAOg/D,UAAUuS,EAAKnQ,GAEtBphE,GAAOg/D,SAASoC,EAAOmQ,GAEjC5Q,EAAgCnkE,KAAMq3E,EAAK,GACpCr3E,MAGXooB,SAAW,SAAUw8C,EAAOmQ,GACxB,GAAIsC,EAUJ,OAPIA,GADiB,gBAAVzS,IAAqC,gBAARmQ,GAC9BvxE,GAAOg/D,SAASp+D,OAAO2wE,IAAQnQ,GAASmQ,EAAK3wE,OAAO2wE,GAAOA,EAAMnQ,GAC/C,gBAAVA,GACRphE,GAAOg/D,UAAUuS,EAAKnQ,GAEtBphE,GAAOg/D,SAASoC,EAAOmQ,GAEjC5Q,EAAgCnkE,KAAMq3E,EAAK,IACpCr3E;EAGXopB,KAAO,SAAUw7C,EAAOO,EAAOmS,GAC3B,GAEIluD,GAAM86C,EAFNqT,EAAOjQ,EAAO1C,EAAO5kE,MACrBw3E,EAAyC,KAA7Bx3E,KAAKynE,OAAS8P,EAAK9P,OA6BnC,OA1BAtC,GAAQD,EAAeC,GAET,SAAVA,GAA8B,UAAVA,GAEpB/7C,EAAmD,OAA3CppB,KAAKomE,cAAgBmR,EAAKnR,eAElClC,EAAwC,IAA7BlkE,KAAK2+B,OAAS44C,EAAK54C,SAAiB3+B,KAAK+iE,QAAUwU,EAAKxU,SAGnEmB,IAAYlkE,KAAOwD,GAAOxD,MAAMy3E,QAAQ,UAC/BF,EAAO/zE,GAAO+zE,GAAME,QAAQ,WAAaruD,EAElD86C,GACgE,KADpDlkE,KAAKynE,OAASjkE,GAAOxD,MAAMy3E,QAAQ,SAAShQ,QAC/C8P,EAAK9P,OAASjkE,GAAO+zE,GAAME,QAAQ,SAAShQ,SAAiBr+C,EACxD,SAAV+7C,IACAjB,GAAkB,MAGtB96C,EAAQppB,KAAOu3E,EACfrT,EAAmB,WAAViB,EAAqB/7C,EAAO,IACvB,WAAV+7C,EAAqB/7C,EAAO,IAClB,SAAV+7C,EAAmB/7C,EAAO,KAChB,QAAV+7C,GAAmB/7C,EAAOouD,GAAY,MAC5B,SAAVrS,GAAoB/7C,EAAOouD,GAAY,OACvCpuD,GAEDkuD,EAAUpT,EAASJ,EAASI,IAGvCh+C,KAAO,SAAU6O,EAAM85C,GACnB,MAAOrrE,IAAOg/D,SAASxiE,KAAKopB,KAAK2L,IAAOktC,KAAKjiE,KAAKiiE,OAAO4U,OAAOa,UAAU7I,IAG9E8I,QAAU,SAAU9I,GAChB,MAAO7uE,MAAKkmB,KAAK1iB,KAAUqrE,IAG/B2G,SAAW,SAAUzgD,GAGjB,GAAI2E,GAAM3E,GAAQvxB,KACdo0E,EAAMtQ,EAAO5tC,EAAK15B,MAAMy3E,QAAQ,OAChCruD,EAAOppB,KAAKopB,KAAKwuD,EAAK,QAAQ,GAC9B/4C,EAAgB,GAAPzV,EAAY,WACV,GAAPA,EAAY,WACL,EAAPA,EAAW,UACJ,EAAPA,EAAW,UACJ,EAAPA,EAAW,UACJ,EAAPA,EAAW,WAAa,UAChC,OAAOppB,MAAK6+B,OAAO7+B,KAAKiiE,OAAOuT,SAAS32C,EAAQ7+B,QAGpD4mE,WAAa,WACT,MAAOA,GAAW5mE,KAAK2+B,SAG3Bk5C,MAAQ,WACJ,MAAQ73E,MAAKynE,OAASznE,KAAK+5B,QAAQgpC,MAAM,GAAG0E,QACxCznE,KAAKynE,OAASznE,KAAK+5B,QAAQgpC,MAAM,GAAG0E,QAG5CtE,IAAM,SAAUyB,GACZ,GAAIzB,GAAMnjE,KAAKwnE,OAASxnE,KAAKukE,GAAGiL,YAAcxvE,KAAKukE,GAAGuT,QACtD,OAAa,OAATlT,GACAA,EAAQ8J,GAAa9J,EAAO5kE,KAAKiiE,QAC1BjiE,KAAKsR,KAAMzF,EAAI+4D,EAAQzB,KAEvBA,GAIfJ,MAAQkN,GAAa,SAAS,GAE9BwH,QAAS,SAAUtS,GAIf,OAHAA,EAAQD,EAAeC,IAIvB,IAAK,OACDnlE,KAAK+iE,MAAM,EAEf,KAAK,UACL,IAAK,QACD/iE,KAAK0+B,KAAK,EAEd,KAAK,OACL,IAAK,UACL,IAAK,MACD1+B,KAAK25B,MAAM,EAEf,KAAK,OACD35B,KAAK45B,QAAQ,EAEjB,KAAK,SACD55B,KAAK65B,QAAQ,EAEjB,KAAK,SACD75B,KAAK85B,aAAa,GAgBtB,MAXc,SAAVqrC,EACAnlE,KAAKyrE,QAAQ,GACI,YAAVtG,GACPnlE,KAAKmzE,WAAW,GAIN,YAAVhO,GACAnlE,KAAK+iE,MAAqC,EAA/Bn+D,KAAKC,MAAM7E,KAAK+iE,QAAU,IAGlC/iE,MAGX+3E,MAAO,SAAU5S,GAEb,MADAA,GAAQD,EAAeC,GAChBnlE,KAAKy3E,QAAQtS,GAAO7zD,IAAe,YAAV6zD,EAAsB,OAASA,EAAQ,GAAG/8C,SAAS,KAAM,IAG7F4vD,QAAS,SAAUpT,EAAOO,GAEtB,MADAA,GAAyB,mBAAVA,GAAwBA,EAAQ,eACvCnlE,KAAK+5B,QAAQ09C,QAAQtS,IAAU3hE,GAAOohE,GAAO6S,QAAQtS,IAGjE8S,SAAU,SAAUrT,EAAOO,GAEvB,MADAA,GAAyB,mBAAVA,GAAwBA,EAAQ,eACvCnlE,KAAK+5B,QAAQ09C,QAAQtS,IAAU3hE,GAAOohE,GAAO6S,QAAQtS,IAGjE+S,OAAQ,SAAUtT,EAAOO,GAErB,MADAA,GAAQA,GAAS,MACTnlE,KAAK+5B,QAAQ09C,QAAQtS,MAAYmC,EAAO1C,EAAO5kE,MAAMy3E,QAAQtS,IAGzEp6D,IAAKu2D,EACI,mGACA,SAAUh8D,GAEN,MADAA,GAAQ9B,GAAO2S,MAAM,KAAM/Q,WACZpF,KAARsF,EAAetF,KAAOsF,IAI1CmH,IAAK60D,EACG,mGACA,SAAUh8D,GAEN,MADAA,GAAQ9B,GAAO2S,MAAM,KAAM/Q,WACpBE,EAAQtF,KAAOA,KAAOsF,IAczCmiE,KAAO,SAAU7C,EAAOsL,GACpB,GAAIzpD,GAASzmB,KAAK0nE,SAAW,CAC7B,OAAa,OAAT9C,EAoBO5kE,KAAKwnE,OAAS/gD,EAASzmB,KAAKukE,GAAG4T,qBAnBjB,gBAAVvT,KACPA,EAAQyF,EAA0BzF,IAElChgE,KAAK+iB,IAAIi9C,GAAS,KAClBA,EAAgB,GAARA,GAEZ5kE,KAAK0nE,QAAU9C,EACf5kE,KAAKwnE,QAAS,EACV/gD,IAAWm+C,KACNsL,GAAYlwE,KAAKo4E,kBAClBjU,EAAgCnkE,KACxBwD,GAAOg/D,SAAS/7C,EAASm+C,EAAO,KAAM,GAAG,GACzC5kE,KAAKo4E,oBACbp4E,KAAKo4E,mBAAoB,EACzB50E,GAAO8gE,aAAatkE,MAAM,GAC1BA,KAAKo4E,kBAAoB,OAM9Bp4E,OAGX0zE,SAAW,WACP,MAAO1zE,MAAKwnE,OAAS,MAAQ,IAGjCoM,SAAW,WACP,MAAO5zE,MAAKwnE,OAAS,6BAA+B,IAGxDwP,UAAY,WAMR,MALIh3E,MAAKmrE,KACLnrE,KAAKynE,KAAKznE,KAAKmrE,MACW,gBAAZnrE,MAAK4sE,IACnB5sE,KAAKynE,KAAKznE,KAAK4sE,IAEZ5sE,MAGXq4E,qBAAuB,SAAUzT,GAQ7B,MAHIA,GAJCA,EAIOphE,GAAOohE,GAAO6C,OAHd,GAMJznE,KAAKynE,OAAS7C,GAAS,KAAO,GAG1CwB,YAAc,WACV,MAAOA,GAAYpmE,KAAK2+B,OAAQ3+B,KAAK+iE,UAGzCkJ,UAAY,SAAUrH,GAClB,GAAIqH,GAAYthD,IAAOnnB,GAAOxD,MAAMy3E,QAAQ,OAASj0E,GAAOxD,MAAMy3E,QAAQ,SAAW,OAAS,CAC9F,OAAgB,OAAT7S,EAAgBqH,EAAYjsE,KAAKsR,IAAI,IAAMszD,EAAQqH,IAG9DpJ,QAAU,SAAU+B,GAChB,MAAgB,OAATA,EAAgBhgE,KAAKqqC,MAAMjvC,KAAK+iE,QAAU,GAAK,GAAK/iE,KAAK+iE,MAAoB,GAAb6B,EAAQ,GAAS5kE,KAAK+iE,QAAU,IAG3GyI,SAAW,SAAU5G,GACjB,GAAIjmC,GAAO+nC,GAAW1mE,KAAMA,KAAKiiE,OAAO6J,MAAMtF,IAAKxmE,KAAKiiE,OAAO6J,MAAMrF,KAAK9nC,IAC1E,OAAgB,OAATimC,EAAgBjmC,EAAO3+B,KAAKsR,IAAI,IAAMszD,EAAQjmC,IAGzDq0C,YAAc,SAAUpO,GACpB,GAAIjmC,GAAO+nC,GAAW1mE,KAAM,EAAG,GAAG2+B,IAClC,OAAgB,OAATimC,EAAgBjmC,EAAO3+B,KAAKsR,IAAI,IAAMszD,EAAQjmC,IAGzDskC,KAAO,SAAU2B,GACb,GAAI3B,GAAOjjE,KAAKiiE,OAAOgB,KAAKjjE,KAC5B,OAAgB,OAAT4kE,EAAgB3B,EAAOjjE,KAAKsR,IAAI,IAAsB,GAAhBszD,EAAQ3B,KAGzDwP,QAAU,SAAU7N,GAChB,GAAI3B,GAAOyD,GAAW1mE,KAAM,EAAG,GAAGijE,IAClC,OAAgB,OAAT2B,EAAgB3B,EAAOjjE,KAAKsR,IAAI,IAAsB,GAAhBszD,EAAQ3B,KAGzDwI,QAAU,SAAU7G,GAChB,GAAI6G,IAAWzrE,KAAKmjE,MAAQ,EAAInjE,KAAKiiE,OAAO6J,MAAMtF,KAAO,CACzD,OAAgB,OAAT5B,EAAgB6G,EAAUzrE,KAAKsR,IAAI,IAAKszD,EAAQ6G,IAG3D0H,WAAa,SAAUvO,GAInB,MAAgB,OAATA,EAAgB5kE,KAAKmjE,OAAS,EAAInjE,KAAKmjE,IAAInjE,KAAKmjE,MAAQ,EAAIyB,EAAQA,EAAQ,IAGvF0T,eAAiB,WACb,MAAO/R,GAAYvmE,KAAK2+B,OAAQ,EAAG,IAGvC4nC,YAAc,WACV,GAAIgS,GAAWv4E,KAAK6lE,MAAMiG,KAC1B,OAAOvF,GAAYvmE,KAAK2+B,OAAQ45C,EAAS/R,IAAK+R,EAAS9R,MAG3DtzD,IAAM,SAAUgyD,GAEZ,MADAA,GAAQD,EAAeC,GAChBnlE,KAAKmlE,MAGhBa,IAAM,SAAUb,EAAOt+D,GAKnB,MAJAs+D,GAAQD,EAAeC,GACI,kBAAhBnlE,MAAKmlE,IACZnlE,KAAKmlE,GAAOt+D,GAET7G,MAMXiiE,KAAO,SAAU35D,GACb,MAAIA,KAAQpC,EACDlG,KAAK6lE,OAEZ7lE,KAAK6lE,MAAQmC,EAAkB1/D,GACxBtI,SA+CnBwD,GAAO8kC,GAAGi7B,YAAc//D,GAAO8kC,GAAGxO,aAAem2C,GAAa,gBAAgB,GAC9EzsE,GAAO8kC,GAAGg7B,OAAS9/D,GAAO8kC,GAAGzO,QAAUo2C,GAAa,WAAW,GAC/DzsE,GAAO8kC,GAAG+6B,OAAS7/D,GAAO8kC,GAAG1O,QAAUq2C,GAAa,WAAW,GAK/DzsE,GAAO8kC,GAAG86B,KAAO5/D,GAAO8kC,GAAG3O,MAAQs2C,GAAa,SAAS,GAEzDzsE,GAAO8kC,GAAG5J,KAAOuxC,GAAa,QAAQ,GACtCzsE,GAAO8kC,GAAGkwC,MAAQlX,EAAU,kDAAmD2O,GAAa,QAAQ,IACpGzsE,GAAO8kC,GAAG3J,KAAOsxC,GAAa,YAAY,GAC1CzsE,GAAO8kC,GAAGq6B,MAAQrB,EAAU,kDAAmD2O,GAAa,YAAY,IAGxGzsE,GAAO8kC,GAAG46B,KAAO1/D,GAAO8kC,GAAG66B,IAC3B3/D,GAAO8kC,GAAGw6B,OAASt/D,GAAO8kC,GAAGy6B,MAC7Bv/D,GAAO8kC,GAAG06B,MAAQx/D,GAAO8kC,GAAG26B,KAC5Bz/D,GAAO8kC,GAAGmwC,SAAWj1E,GAAO8kC,GAAGmqC,QAC/BjvE,GAAO8kC,GAAGs6B,SAAWp/D,GAAO8kC,GAAGu6B,QAG/Br/D,GAAO8kC,GAAGowC,OAASl1E,GAAO8kC,GAAG1hC,YAO7B5B,EAAOxB,GAAOg/D,SAASl6B,GAAKi6B,EAAShxD,WAEjCoyD,QAAU,WACN,GAII9pC,GAASD,EAASD,EAAOgpC,EAJzB7oC,EAAe95B,KAAKwjE,cACpBN,EAAOljE,KAAKyjE,MACZX,EAAS9iE,KAAK0jE,QACd3yD,EAAO/Q,KAAKiR,KAKhBF,GAAK+oB,aAAeA,EAAe,IAEnCD,EAAUiqC,EAAShqC,EAAe,KAClC/oB,EAAK8oB,QAAUA,EAAU,GAEzBD,EAAUkqC,EAASjqC,EAAU,IAC7B9oB,EAAK6oB,QAAUA,EAAU,GAEzBD,EAAQmqC,EAASlqC,EAAU,IAC3B7oB,EAAK4oB,MAAQA,EAAQ,GAErBupC,GAAQY,EAASnqC,EAAQ,IACzB5oB,EAAKmyD,KAAOA,EAAO,GAEnBJ,GAAUgB,EAASZ,EAAO,IAC1BnyD,EAAK+xD,OAASA,EAAS,GAEvBH,EAAQmB,EAAShB,EAAS,IAC1B/xD,EAAK4xD,MAAQA,GAGjBK,MAAQ,WACJ,MAAOc,GAAS9jE,KAAKkjE,OAAS,IAGlC18D,QAAU,WACN,MAAOxG,MAAKwjE,cACG,MAAbxjE,KAAKyjE,MACJzjE,KAAK0jE,QAAU,GAAM,OACK,QAA3BuB,EAAMjlE,KAAK0jE,QAAU,KAG3BgU,SAAW,SAAUiB,GACjB,GAAIC,IAAc54E,KACdkkE,EAAS6K,GAAa6J,GAAaD,EAAY34E,KAAKiiE,OAMxD,OAJI0W,KACAzU,EAASlkE,KAAKiiE,OAAO+T,WAAW4C,EAAY1U,IAGzClkE,KAAKiiE,OAAOiU,WAAWhS,IAGlC5yD,IAAM,SAAUszD,EAAOmQ,GAEnB,GAAIsC,GAAM7zE,GAAOg/D,SAASoC,EAAOmQ,EAQjC,OANA/0E,MAAKwjE,eAAiB6T,EAAI7T,cAC1BxjE,KAAKyjE,OAAS4T,EAAI5T,MAClBzjE,KAAK0jE,SAAW2T,EAAI3T,QAEpB1jE,KAAK2jE,UAEE3jE,MAGXooB,SAAW,SAAUw8C,EAAOmQ,GACxB,GAAIsC,GAAM7zE,GAAOg/D,SAASoC,EAAOmQ,EAQjC,OANA/0E,MAAKwjE,eAAiB6T,EAAI7T,cAC1BxjE,KAAKyjE,OAAS4T,EAAI5T,MAClBzjE,KAAK0jE,SAAW2T,EAAI3T,QAEpB1jE,KAAK2jE,UAEE3jE,MAGXmT,IAAM,SAAUgyD,GAEZ,MADAA,GAAQD,EAAeC,GAChBnlE,KAAKmlE,EAAMzf,cAAgB,QAGtCt5B,GAAK,SAAU+4C,GAEX,MADAA,GAAQD,EAAeC,GAChBnlE,KAAK,KAAOmlE,EAAMljD,OAAO,GAAGtW,cAAgBw5D,EAAM7wC,MAAM,GAAK,QAGxE2tC,KAAOz+D,GAAO8kC,GAAG25B,KAEjB4W,YAAc,WAEV,GAAIlW,GAAQ/9D,KAAK+iB,IAAI3nB,KAAK2iE,SACtBG,EAASl+D,KAAK+iB,IAAI3nB,KAAK8iE,UACvBI,EAAOt+D,KAAK+iB,IAAI3nB,KAAKkjE,QACrBvpC,EAAQ/0B,KAAK+iB,IAAI3nB,KAAK25B,SACtBC,EAAUh1B,KAAK+iB,IAAI3nB,KAAK45B,WACxBC,EAAUj1B,KAAK+iB,IAAI3nB,KAAK65B,UAAY75B,KAAK85B,eAAiB,IAE9D,OAAK95B,MAAK84E,aAMF94E,KAAK84E,YAAc,EAAI,IAAM,IACjC,KACCnW,EAAQA,EAAQ,IAAM,KACtBG,EAASA,EAAS,IAAM,KACxBI,EAAOA,EAAO,IAAM,KACnBvpC,GAASC,GAAWC,EAAW,IAAM,KACtCF,EAAQA,EAAQ,IAAM,KACtBC,EAAUA,EAAU,IAAM,KAC1BC,EAAUA,EAAU,IAAM,IAXpB,QA2BnB,KAAK30B,KAAK6rE,IACFA,GAAuBvrE,eAAeN,MACtCkrE,GAAqBlrE,GAAG6rE,GAAuB7rE,KAC/CirE,GAAmBjrE,GAAEwgD,eAI7B0qB,IAAqB,QAAS,QAC9B5sE,GAAOg/D,SAASl6B,GAAGywC,SAAW,WAC1B,QAAS/4E,KAAsB,QAAfA,KAAK2iE,SAAqB,OAAwB,GAAf3iE,KAAK2iE,SAU5Dn/D,GAAOy+D,KAAK,MACRC,QAAU,SAAU6B,GAChB,GAAIj+D,GAAIi+D,EAAS,GACbG,EAAuC,IAA7Be,EAAMlB,EAAS,IAAM,IAAa,KACrC,IAANj+D,EAAW,KACL,IAANA,EAAW,KACL,IAANA,EAAW,KAAO,IACvB,OAAOi+D,GAASG,KA4BpBgE,GACAroE,EAAOD,QAAU4D,IAEfi9D,EAAiC,SAAUuY,EAASp5E,EAASC,GAM3D,MALIA,GAAOwiE,QAAUxiE,EAAOwiE,UAAYxiE,EAAOwiE,SAAS4W,YAAa,IAEjExI,GAAYjtE,OAASgtE,IAGlBhtE,IACTjD,KAAKX,EAASM,EAAqBN,EAASC,KAAU4gE,IAAkCv6D,IAAcrG,EAAOD,QAAU6gE,IACzH4P,IAAW,MAIhB9vE,KAAKP,QAEqBO,KAAKX,EAAU,WAAa,MAAOI,SAAYE,EAAoB,IAAIL,KAIhG,SAASA,EAAQD,EAASM,GAE9B,GAAIugE,IAMJ,SAAUv5D,EAAQhB,GAChB,YA2OF,SAASgzE,KACFhmD,EAAOimD,QAKVC,EAAMC,sBAGNC,EAAMC,KAAKrmD,EAAOsmD,SAAU,SAASjiD,GACjCkiD,EAAUC,SAASniD,KAIvB6hD,EAAMO,QAAQzmD,EAAO0mD,SAAUC,EAAYJ,EAAUK,QACrDV,EAAMO,QAAQzmD,EAAO0mD,SAAUG,EAAWN,EAAUK,QAGpD5mD,EAAOimD,OAAQ,GAxOnB,GAAIjmD,GAAS,QAASA,GAAO1qB,EAASkF,GAClC,MAAO,IAAIwlB,GAAO8mD,SAASxxE,EAASkF,OAUxCwlB,GAAOw9C,QAAU,QAgBjBx9C,EAAO+mD,UAOHC,UAQIC,WAAY,OASZC,YAAa,QAUbC,aAAc,OAQdC,eAAgB,OAShBC,SAAU,OAaVC,kBAAmB,kBAU3BtnD,EAAO0mD,SAAWhqE,SAOlBsjB,EAAOunD,kBAAoB7xE,UAAU8xE,gBAAkB9xE,UAAU+xE,iBAOjEznD,EAAO0nD,gBAAmB,gBAAkB1zE,GAO5CgsB,EAAO2nD,UAAY,6CAA6C5tE,KAAKrE,UAAUC,WAO/EqqB,EAAO4nD,eAAkB5nD,EAAO0nD,iBAAmB1nD,EAAO2nD,WAAc3nD,EAAOunD,kBAQ/EvnD,EAAO6nD,mBAAqB,EAU5B,IAAIC,MASAC,EAAiB/nD,EAAO+nD,eAAiB,OACzCC,EAAiBhoD,EAAOgoD,eAAiB,OACzCC,EAAejoD,EAAOioD,aAAe,KACrCC,EAAkBloD,EAAOkoD,gBAAkB,QAS3CC,EAAgBnoD,EAAOmoD,cAAgB,QACvCC,EAAgBpoD,EAAOooD,cAAgB,QACvCC,EAAcroD,EAAOqoD,YAAc,MASnCC,EAActoD,EAAOsoD,YAAc,QACnC3B,EAAa3mD,EAAO2mD,WAAa,OACjCE,EAAY7mD,EAAO6mD,UAAY,MAC/B0B,EAAgBvoD,EAAOuoD,cAAgB,UACvCC,EAAcxoD,EAAOwoD,YAAc,OASvCxoD,GAAOimD,OAAQ,EAOfjmD,EAAOyoD,QAAUzoD,EAAOyoD,YAQxBzoD,EAAOsmD,SAAWtmD,EAAOsmD,YAkCzB,IAAIF,GAAQpmD,EAAO0oD,OAUf52E,OAAQ,SAAgB62E,EAAMvgC,EAAKyW,GAC/B,IAAI,GAAIzpD,KAAOgzC,IACPA,EAAI91C,eAAe8C,IAASuzE,EAAKvzE,KAASpC,GAAa6rD,IAG3D8pB,EAAKvzE,GAAOgzC,EAAIhzC,GAEpB,OAAOuzE,IAUXrqE,GAAI,SAAYhJ,EAASlC,EAAMw1E,GAC3BtzE,EAAQD,iBAAiBjC,EAAMw1E,GAAS,IAU5CnqE,IAAK,SAAanJ,EAASlC,EAAMw1E,GAC7BtzE,EAAQO,oBAAoBzC,EAAMw1E,GAAS,IAa/CvC,KAAM,SAAc15D,EAAKk8D,EAAUC,GAC/B,GAAI92E,GAAGC,CAGP,IAAG,WAAa0a,GACZA,EAAI5X,QAAQ8zE,EAAUC,OAEnB,IAAGn8D,EAAIxa,SAAWa,GACrB,IAAIhB,EAAI,EAAGC,EAAM0a,EAAIxa,OAAYF,EAAJD,EAASA,IAClC,GAAG62E,EAASx7E,KAAKy7E,EAASn8D,EAAI3a,GAAIA,EAAG2a,MAAS,EAC1C,WAKR,KAAI3a,IAAK2a,GACL,GAAGA,EAAIra,eAAeN,IAClB62E,EAASx7E,KAAKy7E,EAASn8D,EAAI3a,GAAIA,EAAG2a,MAAS,EAC3C,QAahBo8D,MAAO,SAAe3gC,EAAK4gC,GACvB,MAAO5gC,GAAI3zC,QAAQu0E,GAAQ,IAU/BC,QAAS,SAAiB7gC,EAAK4gC,GAC3B,GAAG5gC,EAAI3zC,QAAS,CACZ,GAAII,GAAQuzC,EAAI3zC,QAAQu0E,EACxB,OAAkB,KAAVn0E,GAAgB,EAAQA,EAEhC,IAAI,GAAI7C,GAAI,EAAGC,EAAMm2C,EAAIj2C,OAAYF,EAAJD,EAASA,IACtC,GAAGo2C,EAAIp2C,KAAOg3E,EACV,MAAOh3E,EAGf,QAAO,GAUfiD,QAAS,SAAiB0X,GACtB,MAAOla,OAAM4L,UAAU+iB,MAAM/zB,KAAKsf,EAAK,IAU3Cu8D,UAAW,SAAmB5gC,EAAMrc,GAChC,KAAMqc,GAAM,CACR,GAAGA,GAAQrc,EACP,OAAO,CAEXqc,GAAOA,EAAKhyC,WAEhB,OAAO,GASX6yE,UAAW,SAAmB7gD,GAC1B,GAAId,MACAC,KACA9M,KACAE,KACAhjB,EAAMnG,KAAKmG,IACX0B,EAAM7H,KAAK6H,GAGf,OAAsB,KAAnB+uB,EAAQn2B,QAEHq1B,MAAOc,EAAQ,GAAGd,MAClBC,MAAOa,EAAQ,GAAGb,MAClB9M,QAAS2N,EAAQ,GAAG3N,QACpBE,QAASyN,EAAQ,GAAGzN,UAI5BurD,EAAMC,KAAK/9C,EAAS,SAAS/G,GACzBiG,EAAM9yB,KAAK6sB,EAAMiG,OACjBC,EAAM/yB,KAAK6sB,EAAMkG,OACjB9M,EAAQjmB,KAAK6sB,EAAM5G,SACnBE,EAAQnmB,KAAK6sB,EAAM1G,YAInB2M,OAAQ3vB,EAAIoL,MAAMvR,KAAM81B,GAASjuB,EAAI0J,MAAMvR,KAAM81B,IAAU,EAC3DC,OAAQ5vB,EAAIoL,MAAMvR,KAAM+1B,GAASluB,EAAI0J,MAAMvR,KAAM+1B,IAAU,EAC3D9M,SAAU9iB,EAAIoL,MAAMvR,KAAMipB,GAAWphB,EAAI0J,MAAMvR,KAAMipB,IAAY,EACjEE,SAAUhjB,EAAIoL,MAAMvR,KAAMmpB,GAAWthB,EAAI0J,MAAMvR,KAAMmpB,IAAY,KAYzEuuD,YAAa,SAAqBC,EAAWthD,EAAQzD,GACjD,OACIrnB,EAAGvL,KAAK+iB,IAAIsT,EAASshD,IAAc,EACnCnsE,EAAGxL,KAAK+iB,IAAI6P,EAAS+kD,IAAc,IAW3CC,SAAU,SAAkBC,EAAQC,GAChC,GAAIvsE,GAAIusE,EAAO7uD,QAAU4uD,EAAO5uD,QAC5Bzd,EAAIssE,EAAO3uD,QAAU0uD,EAAO1uD,OAEhC,OAA0B,KAAnBnpB,KAAKmlD,MAAM35C,EAAGD,GAAWvL,KAAK8jB,IAUzCi0D,aAAc,SAAsBF,EAAQC,GACxC,GAAIvsE,GAAIvL,KAAK+iB,IAAI80D,EAAO5uD,QAAU6uD,EAAO7uD,SACrCzd,EAAIxL,KAAK+iB,IAAI80D,EAAO1uD,QAAU2uD,EAAO3uD,QAEzC,OAAG5d,IAAKC,EACGqsE,EAAO5uD,QAAU6uD,EAAO7uD,QAAU,EAAIqtD,EAAiBE,EAE3DqB,EAAO1uD,QAAU2uD,EAAO3uD,QAAU,EAAIotD,EAAeF,GAUhEprB,YAAa,SAAqB4sB,EAAQC,GACtC,GAAIvsE,GAAIusE,EAAO7uD,QAAU4uD,EAAO5uD,QAC5Bzd,EAAIssE,EAAO3uD,QAAU0uD,EAAO1uD,OAEhC,OAAOnpB,MAAKkoB,KAAM3c,EAAIA,EAAMC,EAAIA,IAWpCwsE,SAAU,SAAkBluE,EAAOyW,GAE/B,MAAGzW,GAAMrJ,QAAU,GAAK8f,EAAI9f,QAAU,EAC3BrF,KAAK6vD,YAAY1qC,EAAI,GAAIA,EAAI,IAAMnlB,KAAK6vD,YAAYnhD,EAAM,GAAIA,EAAM,IAExE,GAUXmuE,YAAa,SAAqBnuE,EAAOyW,GAErC,MAAGzW,GAAMrJ,QAAU,GAAK8f,EAAI9f,QAAU,EAC3BrF,KAAKw8E,SAASr3D,EAAI,GAAIA,EAAI,IAAMnlB,KAAKw8E,SAAS9tE,EAAM,GAAIA,EAAM,IAElE,GASXouE,WAAY,SAAoB9iD,GAC5B,MAAOA,IAAamhD,GAAgBnhD,GAAaihD,GAWrD8B,eAAgB,SAAwBv0E,EAASjD,EAAMsB,EAAOm2E,GAC1D,GAAIC,IAAY,GAAI,SAAU,MAAO,IAAK,KAC1C13E,GAAO+zE,EAAM4D,YAAY33E,EAEzB,KAAI,GAAIL,GAAI,EAAGA,EAAI+3E,EAAS53E,OAAQH,IAAK,CACrC,GAAIxE,GAAI6E,CAOR,IALG03E,EAAS/3E,KACRxE,EAAIu8E,EAAS/3E,GAAKxE,EAAE4zB,MAAM,EAAG,GAAG3oB,cAAgBjL,EAAE4zB,MAAM,IAIzD5zB,IAAK8H,GAAQgI,MAAO,CACnBhI,EAAQgI,MAAM9P,IAAgB,MAAVs8E,GAAkBA,IAAWn2E,GAAS,EAC1D,UAeZs2E,eAAgB,SAAwB30E,EAAS9C,EAAOs3E,GACpD,GAAIt3E,GAAU8C,GAAYA,EAAQgI,MAAlC,CAKA8oE,EAAMC,KAAK7zE,EAAO,SAASmB,EAAOtB,GAC9B+zE,EAAMyD,eAAev0E,EAASjD,EAAMsB,EAAOm2E,IAG/C,IAAII,GAAUJ,GAAU,WACpB,OAAO,EAIY,SAApBt3E,EAAMy0E,aACL3xE,EAAQ60E,cAAgBD,GAGP,QAAlB13E,EAAM60E,WACL/xE,EAAQ80E,YAAcF,KAU9BF,YAAa,SAAqBK,GAC9B,MAAOA,GAAI7xE,QAAQ,eAAgB,SAASb,GACxC,MAAOA,GAAE,GAAGc,kBAapBytE,EAAQlmD,EAAOhqB,OAQfs0E,oBAAoB,EAQpBC,SAAS,EAQTC,cAAc,EAWdlsE,GAAI,SAAYhJ,EAASlC,EAAMw1E,EAAS6B,GACpC,GAAIroE,GAAQhP,EAAKoB,MAAM,IACvB4xE,GAAMC,KAAKjkE,EAAO,SAAShP,GACvBgzE,EAAM9nE,GAAGhJ,EAASlC,EAAMw1E,GACxB6B,GAAQA,EAAKr3E,MAarBqL,IAAK,SAAanJ,EAASlC,EAAMw1E,EAAS6B,GACtC,GAAIroE,GAAQhP,EAAKoB,MAAM,IACvB4xE,GAAMC,KAAKjkE,EAAO,SAAShP,GACvBgzE,EAAM3nE,IAAInJ,EAASlC,EAAMw1E,GACzB6B,GAAQA,EAAKr3E,MAarBqzE,QAAS,SAAiBnxE,EAAS6sD,EAAWymB,GAC1C,GAAI5iB,GAAOl5D,KAEP49E,EAAiB,SAAwBC,GACzC,GAGIC,GAHAC,EAAUF,EAAGv3E,KAAKo/C,cAClBs4B,EAAY9qD,EAAOunD,kBACnBwD,EAAU3E,EAAM2C,MAAM8B,EAAS,QAKhCE,IAAW/kB,EAAKskB,qBAITS,GAAW5oB,GAAammB,GAA6B,IAAdqC,EAAGr0D,QAChD0vC,EAAKskB,oBAAqB,EAC1BtkB,EAAKwkB,cAAe,GACdM,GAAa3oB,GAAammB,EAChCtiB,EAAKwkB,aAA+B,IAAfG,EAAGK,SAAiBC,EAAaC,UAAU9C,EAAeuC,GAExEI,GAAW5oB,GAAammB,IAC/BtiB,EAAKskB,oBAAqB,EAC1BtkB,EAAKwkB,cAAe,GAIrBM,GAAa3oB,GAAa0kB,GACzBoE,EAAaE,cAAchpB,EAAWwoB,GAIvC3kB,EAAKwkB,eACJI,EAAc5kB,EAAKolB,SAAS/9E,KAAK24D,EAAM2kB,EAAIxoB,EAAW7sD,EAASszE,IAKhEgC,GAAe/D,IACd7gB,EAAKskB,oBAAqB,EAC1BtkB,EAAKwkB,cAAe,EACpBS,EAAalgC,SAId+/B,GAAa3oB,GAAa0kB,GACzBoE,EAAaE,cAAchpB,EAAWwoB,IAK9C,OADA79E,MAAKwR,GAAGhJ,EAASwyE,EAAY3lB,GAAYuoB,GAClCA,GAaXU,SAAU,SAAkBT,EAAIxoB,EAAW7sD,EAASszE,GAChD,GAAIyC,GAAYv+E,KAAKs1D,aAAauoB,EAAIxoB,GAClCmpB,EAAkBD,EAAUl5E,OAC5By4E,EAAczoB,EACdopB,EAAgBF,EAAU/d,QAC1Bke,EAAgBF,CAGjBnpB,IAAammB,EACZiD,EAAgB/C,EAEVrmB,GAAa0kB,IACnB0E,EAAgBhD,EAGhBiD,EAAgBH,EAAUl5E,QAAWw4E,EAAiB,eAAIA,EAAGc,eAAet5E,OAAS,IAMtFq5E,EAAgB,GAAK1+E,KAAKy9E,UACzBK,EAAcjE,GAIlB75E,KAAKy9E,SAAU,CAGf,IAAImB,GAAS5+E,KAAKu1D,iBAAiB/sD,EAASs1E,EAAaS,EAAWV,EA4BpE,OAxBGxoB,IAAa0kB,GACZ+B,EAAQv7E,KAAKk5E,EAAWmF,GAIzBH,IACCG,EAAOF,cAAgBA,EACvBE,EAAOvpB,UAAYopB,EAEnB3C,EAAQv7E,KAAKk5E,EAAWmF,GAExBA,EAAOvpB,UAAYyoB,QACZc,GAAOF,eAIfZ,GAAe/D,IACd+B,EAAQv7E,KAAKk5E,EAAWmF,GAIxB5+E,KAAKy9E,SAAU,GAGZK,GAUXzE,oBAAqB,WACjB,GAAI/jE,EAgCJ,OA7BQA,GAFL4d,EAAOunD,kBACHvzE,EAAOi3E,cAEF,cACA,cACA,+CAIA,gBACA,gBACA,oDAGFjrD,EAAO4nD,gBAET,aACA,YACA,yBAIA,uBACA,sBACA,gCAIRE,EAAYQ,GAAelmE,EAAM,GACjC0lE,EAAYnB,GAAcvkE,EAAM,GAChC0lE,EAAYjB,GAAazkE,EAAM,GACxB0lE,GAUX1lB,aAAc,SAAsBuoB,EAAIxoB,GAEpC,GAAGniC,EAAOunD,kBACN,MAAO0D,GAAa7oB,cAIxB,IAAGuoB,EAAGriD,QAAS,CACX,GAAG65B,GAAawkB,EACZ,MAAOgE,GAAGriD,OAGd,IAAIqjD,MACA5sE,KAAYA,OAAOqnE,EAAMnxE,QAAQ01E,EAAGriD,SAAU89C,EAAMnxE,QAAQ01E,EAAGc,iBAC/DJ,IASJ,OAPAjF,GAAMC,KAAKtnE,EAAQ,SAASwiB,GACrB6kD,EAAM6C,QAAQ0C,EAAapqD,EAAMqqD,eAAgB,GAChDP,EAAU32E,KAAK6sB,GAEnBoqD,EAAYj3E,KAAK6sB,EAAMqqD,cAGpBP,EAKX,MADAV,GAAGiB,WAAa,GACRjB,IAYZtoB,iBAAkB,SAA0B/sD,EAAS6sD,EAAW75B,EAASqiD,GAErE,GAAIkB,GAAczD,CAOlB,OANGhC,GAAM2C,MAAM4B,EAAGv3E,KAAM,UAAY63E,EAAaC,UAAU/C,EAAewC,GACtEkB,EAAc1D,EACR8C,EAAaC,UAAU7C,EAAasC,KAC1CkB,EAAcxD,IAIdtyD,OAAQqwD,EAAM+C,UAAU7gD,GACxBwjD,UAAWh7E,KAAK01B,MAChBrwB,OAAQw0E,EAAGx0E,OACXmyB,QAASA,EACT65B,UAAWA,EACX0pB,YAAaA,EACbl0C,SAAUgzC,EAMV50E,eAAgB,WACZ,GAAI4hC,GAAW7qC,KAAK6qC,QACpBA,GAASo0C,qBAAuBp0C,EAASo0C,sBACzCp0C,EAAS5hC,gBAAkB4hC,EAAS5hC,kBAMxCy2B,gBAAiB,WACb1/B,KAAK6qC,SAASnL,mBAQlBw/C,WAAY,WACR,MAAOzF,GAAUyF,iBAa7Bf,EAAejrD,EAAOirD,cAMtBgB,YAOA7pB,aAAc,WACV,GAAI8pB,KAKJ,OAHA9F,GAAMC,KAAKv5E,KAAKm/E,SAAU,SAAS/jD,GAC/BgkD,EAAUx3E,KAAKwzB,KAEZgkD,GASXf,cAAe,SAAuBhpB,EAAWgqB,GAC1ChqB,GAAa0kB,GAAc1kB,GAAa0kB,GAAsC,IAAzBsF,EAAanB,cAC1Dl+E,MAAKm/E,SAASE,EAAaC,YAElCD,EAAaP,WAAaO,EAAaC,UACvCt/E,KAAKm/E,SAASE,EAAaC,WAAaD,IAUhDjB,UAAW,SAAmBW,EAAalB,GACvC,IAAIA,EAAGkB,YACH,OAAO,CAGX,IAAIQ,GAAK1B,EAAGkB,YACRzpE,IAKJ,OAHAA,GAAM+lE,GAAkBkE,KAAQ1B,EAAG2B,sBAAwBnE,GAC3D/lE,EAAMgmE,GAAkBiE,KAAQ1B,EAAG4B,sBAAwBnE,GAC3DhmE,EAAMimE,GAAgBgE,KAAQ1B,EAAG6B,oBAAsBnE,GAChDjmE,EAAMypE,IAOjB9gC,MAAO,WACHj+C,KAAKm/E,cAWT1F,EAAYvmD,EAAOysD,WAEnBnG,YAGAvhD,QAAS,KAITuB,SAAU,KAGVomD,SAAS,EAQTC,YAAa,SAAqBC,EAAMC,GAEjC//E,KAAKi4B,UAIRj4B,KAAK4/E,SAAU,EAGf5/E,KAAKi4B,SACD6nD,KAAMA,EACNE,WAAY1G,EAAMt0E,UAAW+6E,GAC7BE,WAAW,EACXC,eAAe,EACfC,iBAAiB,EACjBC,gBACAhsE,KAAM,IAGVpU,KAAK85E,OAAOiG,KAShBjG,OAAQ,SAAgBiG,GACpB,GAAI//E,KAAKi4B,UAAWj4B,KAAK4/E,QAAzB,CAKAG,EAAY//E,KAAKqgF,gBAAgBN,EAGjC,IAAID,GAAO9/E,KAAKi4B,QAAQ6nD,KACpBQ,EAAcR,EAAKpyE,OAmBvB,OAhBA4rE,GAAMC,KAAKv5E,KAAKw5E,SAAU,SAAwBjiD,IAE1Cv3B,KAAK4/E,SAAWE,EAAKnyE,SAAW2yE,EAAY/oD,EAAQnjB,OACpDmjB,EAAQukD,QAAQv7E,KAAKg3B,EAASwoD,EAAWD,IAE9C9/E,MAGAA,KAAKi4B,UACJj4B,KAAKi4B,QAAQgoD,UAAYF,GAG1BA,EAAU1qB,WAAa0kB,GACtB/5E,KAAKk/E,aAGFa,IASXb,WAAY,WAGRl/E,KAAKw5B,SAAW8/C,EAAMt0E,UAAWhF,KAAKi4B,SAGtCj4B,KAAKi4B,QAAU,KACfj4B,KAAK4/E,SAAU,GAYnBW,kBAAmB,SAA2B1C,EAAI50D,EAAQszD,EAAWthD,EAAQzD,GACzE,GAAI0Z,GAAMlxC,KAAKi4B,QACXuoD,GAAS,EACTC,EAASvvC,EAAIgvC,cACbQ,EAAWxvC,EAAIkvC,YAEhBK,IAAU5C,EAAGmB,UAAYyB,EAAOzB,UAAY9rD,EAAO6nD,qBAClD9xD,EAASw3D,EAAOx3D,OAChBszD,EAAYsB,EAAGmB,UAAYyB,EAAOzB,UAClC/jD,EAAS4iD,EAAG50D,OAAO4E,QAAU4yD,EAAOx3D,OAAO4E,QAC3C2J,EAASqmD,EAAG50D,OAAO8E,QAAU0yD,EAAOx3D,OAAO8E,QAC3CyyD,GAAS,IAGV3C,EAAGxoB,WAAaqmB,GAAemC,EAAGxoB,WAAaomB,KAC9CvqC,EAAIivC,gBAAkBtC,KAGtB3sC,EAAIgvC,eAAiBM,KACrBE,EAASC,SAAWrH,EAAMgD,YAAYC,EAAWthD,EAAQzD,GACzDkpD,EAASx+B,MAAQo3B,EAAMkD,SAASvzD,EAAQ40D,EAAG50D,QAC3Cy3D,EAAS1mD,UAAYs/C,EAAMqD,aAAa1zD,EAAQ40D,EAAG50D,QAEnDioB,EAAIgvC,cAAgBhvC,EAAIivC,iBAAmBtC,EAC3C3sC,EAAIivC,gBAAkBtC,GAG1BA,EAAG+C,UAAYF,EAASC,SAASxwE,EACjC0tE,EAAGgD,UAAYH,EAASC,SAASvwE,EACjCytE,EAAGiD,aAAeJ,EAASx+B,MAC3B27B,EAAGkD,iBAAmBL,EAAS1mD,WASnCqmD,gBAAiB,SAAyBxC,GACtC,GAAI3sC,GAAMlxC,KAAKi4B,QACX+oD,EAAU9vC,EAAI8uC,WACdiB,EAAS/vC,EAAI+uC,WAAae,GAG3BnD,EAAGxoB,WAAaqmB,GAAemC,EAAGxoB,WAAaomB,KAC9CuF,EAAQxlD,WACR89C,EAAMC,KAAKsE,EAAGriD,QAAS,SAAS/G,GAC5BusD,EAAQxlD,QAAQ5zB,MACZimB,QAAS4G,EAAM5G,QACfE,QAAS0G,EAAM1G,YAK3B,IAAIwuD,GAAYsB,EAAGmB,UAAYgC,EAAQhC,UACnC/jD,EAAS4iD,EAAG50D,OAAO4E,QAAUmzD,EAAQ/3D,OAAO4E,QAC5C2J,EAASqmD,EAAG50D,OAAO8E,QAAUizD,EAAQ/3D,OAAO8E,OAkBhD,OAhBA/tB,MAAKugF,kBAAkB1C,EAAIoD,EAAOh4D,OAAQszD,EAAWthD,EAAQzD,GAE7D8hD,EAAMt0E,OAAO64E,GACTmC,WAAYgB,EAEZzE,UAAWA,EACXthD,OAAQA,EACRzD,OAAQA,EAERhV,SAAU82D,EAAMzpB,YAAYmxB,EAAQ/3D,OAAQ40D,EAAG50D,QAC/Ci5B,MAAOo3B,EAAMkD,SAASwE,EAAQ/3D,OAAQ40D,EAAG50D,QACzC+Q,UAAWs/C,EAAMqD,aAAaqE,EAAQ/3D,OAAQ40D,EAAG50D,QACjDnP,MAAOw/D,EAAMsD,SAASoE,EAAQxlD,QAASqiD,EAAGriD,SAC1C0lD,SAAU5H,EAAMuD,YAAYmE,EAAQxlD,QAASqiD,EAAGriD,WAG7CqiD,GASXnE,SAAU,SAAkBniD,GAExB,GAAI7pB,GAAU6pB,EAAQ0iD,YAyBtB,OAxBGvsE,GAAQ6pB,EAAQnjB,QAAUlO,IACzBwH,EAAQ6pB,EAAQnjB,OAAQ,GAI5BklE,EAAMt0E,OAAOkuB,EAAO+mD,SAAUvsE,GAAS,GAGvC6pB,EAAQxvB,MAAQwvB,EAAQxvB,OAAS,IAGjC/H,KAAKw5E,SAAS5xE,KAAK2vB,GAGnBv3B,KAAKw5E,SAASnlE,KAAK,SAASpP,EAAGa,GAC3B,MAAGb,GAAE8C,MAAQjC,EAAEiC,MACJ,GAER9C,EAAE8C,MAAQjC,EAAEiC,MACJ,EAEJ,IAGJ/H,KAAKw5E,UAmBpBtmD,GAAO8mD,SAAW,SAASxxE,EAASkF,GAChC,GAAIwrD,GAAOl5D,IAIXk5E,KAMAl5E,KAAKwI,QAAUA,EAOfxI,KAAK2N,SAAU,EAQf2rE,EAAMC,KAAK7rE,EAAS,SAAS7G,EAAOuN,SACzB1G,GAAQ0G,GACf1G,EAAQ4rE,EAAM4D,YAAY9oE,IAASvN,IAGvC7G,KAAK0N,QAAU4rE,EAAMt0E,OAAOs0E,EAAMt0E,UAAWkuB,EAAO+mD,UAAWvsE,OAG5D1N,KAAK0N,QAAQwsE,UACZZ,EAAM6D,eAAen9E,KAAKwI,QAASxI,KAAK0N,QAAQwsE,UAAU,GAQ9Dl6E,KAAKmhF,kBAAoB/H,EAAMO,QAAQnxE,EAASgzE,EAAa,SAASqC,GAC/D3kB,EAAKvrD,SAAWkwE,EAAGxoB,WAAammB,EAC/B/B,EAAUoG,YAAY3mB,EAAM2kB,GACtBA,EAAGxoB,WAAaqmB,GACtBjC,EAAUK,OAAO+D,KASzB79E,KAAKohF,kBAGTluD,EAAO8mD,SAASzoE,WASZC,GAAI,SAAiBgoE,EAAUsC,GAC3B,GAAI5iB,GAAOl5D,IAIX,OAHAo5E,GAAM5nE,GAAG0nD,EAAK1wD,QAASgxE,EAAUsC,EAAS,SAASx1E,GAC/C4yD,EAAKkoB,cAAcx5E,MAAO2vB,QAASjxB,EAAMw1E,QAASA,MAE/C5iB,GAUXvnD,IAAK,SAAkB6nE,EAAUsC,GAC7B,GAAI5iB,GAAOl5D,IAQX,OANAo5E,GAAMznE,IAAIunD,EAAK1wD,QAASgxE,EAAUsC,EAAS,SAASx1E,GAChD,GAAIyB,GAAQuxE,EAAM6C,SAAU5kD,QAASjxB,EAAMw1E,QAASA,GACjD/zE,MAAU,GACTmxD,EAAKkoB,cAAcp5E,OAAOD,EAAO,KAGlCmxD,GAUXsH,QAAS,SAAsBjpC,EAASwoD,GAEhCA,IACAA,KAIJ,IAAI72E,GAAQgqB,EAAO0mD,SAASyH,YAAY,QACxCn4E,GAAMo4E,UAAU/pD,GAAS,GAAM,GAC/BruB,EAAMquB,QAAUwoD,CAIhB,IAAIv3E,GAAUxI,KAAKwI,OAMnB,OALG8wE,GAAM8C,UAAU2D,EAAU12E,OAAQb,KACjCA,EAAUu3E,EAAU12E,QAGxBb,EAAQ+4E,cAAcr4E,GACflJ,MASXk+B,OAAQ,SAAgBsjD,GAEpB,MADAxhF,MAAK2N,QAAU6zE,EACRxhF,MAQXyhF,QAAS,WACL,GAAIv8E,GAAGw8E,CAMP,KAHApI,EAAM6D,eAAen9E,KAAKwI,QAASxI,KAAK0N,QAAQwsE,UAAU,GAGtDh1E,EAAI,GAAKw8E,EAAK1hF,KAAKohF,gBAAgBl8E,IACnCo0E,EAAM3nE,IAAI3R,KAAKwI,QAASk5E,EAAGnqD,QAASmqD,EAAG5F,QAQ3C,OALA97E,MAAKohF,iBAGLhI,EAAMznE,IAAI3R,KAAKwI,QAASwyE,EAAYQ,GAAcx7E,KAAKmhF,mBAEhD,OAqDf,SAAU/sE,GAGN,QAASutE,GAAY9D,EAAIiC,GACrB,GAAI5uC,GAAMuoC,EAAUxhD,OAGpB,MAAG6nD,EAAKpyE,QAAQk0E,eAAiB,GAC7B/D,EAAGriD,QAAQn2B,OAASy6E,EAAKpyE,QAAQk0E,gBAIrC,OAAO/D,EAAGxoB,WACN,IAAKmmB,GACDqG,GAAY,CACZ,MAEJ,KAAKhI,GAGD,GAAGgE,EAAGr7D,SAAWs9D,EAAKpyE,QAAQo0E,iBAC1B5wC,EAAI98B,MAAQA,EACZ,MAGJ,IAAI2tE,GAAc7wC,EAAI8uC,WAAW/2D,MAGjC,IAAGioB,EAAI98B,MAAQA,IACX88B,EAAI98B,KAAOA,EACR0rE,EAAKpyE,QAAQs0E,wBAA0BnE,EAAGr7D,SAAW,GAAG,CAIvD,GAAI45B,GAASx3C,KAAK+iB,IAAIm4D,EAAKpyE,QAAQo0E,gBAAkBjE,EAAGr7D,SACxDu/D,GAAYrnD,OAASmjD,EAAG5iD,OAASmhB,EACjC2lC,EAAYpnD,OAASkjD,EAAGrmD,OAAS4kB,EACjC2lC,EAAYl0D,SAAWgwD,EAAG5iD,OAASmhB,EACnC2lC,EAAYh0D,SAAW8vD,EAAGrmD,OAAS4kB,EAGnCyhC,EAAKpE,EAAU4G,gBAAgBxC,IAKpC3sC,EAAI+uC,UAAUgC,gBACXnC,EAAKpyE,QAAQu0E,gBACXnC,EAAKpyE,QAAQw0E,qBAAuBrE,EAAGr7D,YAE3Cq7D,EAAGoE,gBAAiB,EAIxB,IAAIE,GAAgBjxC,EAAI+uC,UAAUjmD,SAC/B6jD,GAAGoE,gBAAkBE,IAAkBtE,EAAG7jD,YAErC6jD,EAAG7jD,UADJs/C,EAAMwD,WAAWqF,GACAtE,EAAGrmD,OAAS,EAAK2jD,EAAeF,EAEhC4C,EAAG5iD,OAAS,EAAKigD,EAAiBE,GAKtDyG,IACA/B,EAAKtf,QAAQpsD,EAAO,QAASypE,GAC7BgE,GAAY,GAIhB/B,EAAKtf,QAAQpsD,EAAMypE,GACnBiC,EAAKtf,QAAQpsD,EAAOypE,EAAG7jD,UAAW6jD,EAElC,IAAIf,GAAaxD,EAAMwD,WAAWe,EAAG7jD,YAGjC8lD,EAAKpyE,QAAQ00E,mBAAqBtF,GACjCgD,EAAKpyE,QAAQ20E,sBAAwBvF,IACtCe,EAAG50E,gBAEP,MAEJ,KAAKwyE,GACEoG,GAAahE,EAAGa,eAAiBoB,EAAKpyE,QAAQk0E,iBAC7C9B,EAAKtf,QAAQpsD,EAAO,MAAOypE,GAC3BgE,GAAY,EAEhB,MAEJ,KAAK9H,GACD8H,GAAY,GAzFxB,GAAIA,IAAY,CA8FhB3uD,GAAOsmD,SAAS8I,MACZluE,KAAMA,EACNrM,MAAO,GACP+zE,QAAS6F,EACT1H,UAOI6H,gBAAiB,GAWjBE,wBAAwB,EAQxBJ,eAAgB,EAUhBS,qBAAqB,EAQrBD,mBAAmB,EASnBH,gBAAgB,EAShBC,oBAAqB,MAG9B,QAgBHhvD,EAAOsmD,SAAS+I,SACZnuE,KAAM,UACNrM,MAAO,KACP+zE,QAAS,SAAwB+B,EAAIiC,GACjCA,EAAKtf,QAAQxgE,KAAKoU,KAAMypE,KAqBhC,SAAUzpE,GAGN,QAASouE,GAAY3E,EAAIiC,GACrB,GAAIpyE,GAAUoyE,EAAKpyE,QACfuqB,EAAUwhD,EAAUxhD,OAExB,QAAO4lD,EAAGxoB,WACN,IAAKmmB,GACDtwD,aAAa2vB,GAGb5iB,EAAQ7jB,KAAOA,EAIfymC,EAAQtvB,WAAW,WACZ0M,GAAWA,EAAQ7jB,MAAQA,GAC1B0rE,EAAKtf,QAAQpsD,EAAMypE,IAExBnwE,EAAQ+0E,YACX,MAEJ,KAAK5I,GACEgE,EAAGr7D,SAAW9U,EAAQg1E,eACrBx3D,aAAa2vB,EAEjB,MAEJ,KAAK4gC,GACDvwD,aAAa2vB,IA7BzB,GAAIA,EAkCJ3nB,GAAOsmD,SAASmJ,MACZvuE,KAAMA,EACNrM,MAAO,GACPkyE,UAMIwI,YAAa,IAQbC,cAAe,GAEnB5G,QAAS0G,IAEd,QAeHtvD,EAAOsmD,SAASoJ,SACZxuE,KAAM,UACNrM,MAAO86E,IACP/G,QAAS,SAAwB+B,EAAIiC,GAC9BjC,EAAGxoB,WAAaomB,GACfqE,EAAKtf,QAAQxgE,KAAKoU,KAAMypE,KAyCpC3qD,EAAOsmD,SAASsJ,OACZ1uE,KAAM,QACNrM,MAAO,GACPkyE,UAMI8I,gBAAiB,EAOjBC,gBAAiB,EAQjBC,eAAgB,GAQhBC,eAAgB,IAGpBpH,QAAS,SAAsB+B,EAAIiC,GAC/B,GAAGjC,EAAGxoB,WAAaomB,EAAe,CAC9B,GAAIjgD,GAAUqiD,EAAGriD,QAAQn2B,OACrBqI,EAAUoyE,EAAKpyE,OAGnB,IAAG8tB,EAAU9tB,EAAQq1E,iBACjBvnD,EAAU9tB,EAAQs1E,gBAClB,QAKDnF,EAAG+C,UAAYlzE,EAAQu1E,gBACtBpF,EAAGgD,UAAYnzE,EAAQw1E,kBAEvBpD,EAAKtf,QAAQxgE,KAAKoU,KAAMypE,GACxBiC,EAAKtf,QAAQxgE,KAAKoU,KAAOypE,EAAG7jD,UAAW6jD,OA2BvD,SAAUzpE,GAGN,QAAS+uE,GAAWtF,EAAIiC,GACpB,GAGIsD,GACAC,EAJA31E,EAAUoyE,EAAKpyE,QACfuqB,EAAUwhD,EAAUxhD,QACpB/I,EAAOuqD,EAAUjgD,QAIrB,QAAOqkD,EAAGxoB,WACN,IAAKmmB,GACD8H,GAAW,CACX,MAEJ,KAAKzJ,GACDyJ,EAAWA,GAAazF,EAAGr7D,SAAW9U,EAAQ61E,cAC9C,MAEJ,KAAKxJ,IACGT,EAAM2C,MAAM4B,EAAGhzC,SAASvkC,KAAM,WAAau3E,EAAGtB,UAAY7uE,EAAQ81E,aAAeF,IAEjFF,EAAYl0D,GAAQA,EAAK+wD,WAAapC,EAAGmB,UAAY9vD,EAAK+wD,UAAUjB,UACpEqE,GAAe,EAGZn0D,GAAQA,EAAK9a,MAAQA,GACnBgvE,GAAaA,EAAY11E,EAAQ+1E,mBAClC5F,EAAGr7D,SAAW9U,EAAQg2E,oBACtB5D,EAAKtf,QAAQ,YAAaqd,GAC1BwF,GAAe,KAIfA,GAAgB31E,EAAQi2E,aACxB1rD,EAAQ7jB,KAAOA,EACf0rE,EAAKtf,QAAQvoC,EAAQ7jB,KAAMypE,MAnC/C,GAAIyF,IAAW,CA0CfpwD,GAAOsmD,SAASoK,KACZxvE,KAAMA,EACNrM,MAAO,IACP+zE,QAASqH,EACTlJ,UAOIuJ,WAAY,IAQZD,eAAgB,GAQhBI,WAAW,EAQXD,kBAAmB,GAQnBD,kBAAmB,OAG5B,OAeHvwD,EAAOsmD,SAASqK,OACZzvE,KAAM,QACNrM,OAAQ86E,IACR5I,UASIhxE,gBAAgB,EAQhB66E,cAAc,GAElBhI,QAAS,SAAsB+B,EAAIiC,GAC/B,MAAGA,GAAKpyE,QAAQo2E,cAAgBjG,EAAGkB,aAAe1D,MAC9CwC,GAAGqB,cAIJY,EAAKpyE,QAAQzE,gBACZ40E,EAAG50E,sBAGJ40E,EAAGxoB,WAAaqmB,GACfoE,EAAKtf,QAAQ,QAASqd,OA4ClC,SAAUzpE,GAGN,QAAS2vE,GAAiBlG,EAAIiC,GAC1B,OAAOjC,EAAGxoB,WACN,IAAKmmB,GACDqG,GAAY,CACZ,MAEJ,KAAKhI,GAED,GAAGgE,EAAGriD,QAAQn2B,OAAS,EACnB,MAGJ,IAAI2+E,GAAiBp/E,KAAK+iB,IAAI,EAAIk2D,EAAG/jE,OACjCmqE,EAAoBr/E,KAAK+iB,IAAIk2D,EAAGqD,SAIpC,IAAG8C,EAAiBlE,EAAKpyE,QAAQw2E,mBAC7BD,EAAoBnE,EAAKpyE,QAAQy2E,qBACjC,MAIJ1K,GAAUxhD,QAAQ7jB,KAAOA,EAGrBytE,IACA/B,EAAKtf,QAAQpsD,EAAO,QAASypE,GAC7BgE,GAAY,GAGhB/B,EAAKtf,QAAQpsD,EAAMypE,GAGhBoG,EAAoBnE,EAAKpyE,QAAQy2E,sBAChCrE,EAAKtf,QAAQ,SAAUqd,GAIxBmG,EAAiBlE,EAAKpyE,QAAQw2E,oBAC7BpE,EAAKtf,QAAQ,QAASqd,GACtBiC,EAAKtf,QAAQ,SAAWqd,EAAG/jE,MAAQ,EAAI,KAAO,OAAQ+jE,GAE1D,MAEJ,KAAKpC,GACEoG,GAAahE,EAAGa,cAAgB,IAC/BoB,EAAKtf,QAAQpsD,EAAO,MAAOypE,GAC3BgE,GAAY,IAlD5B,GAAIA,IAAY,CAwDhB3uD,GAAOsmD,SAAS4K,WACZhwE,KAAMA,EACNrM,MAAO,GACPkyE,UAOIiK,kBAAmB,IAQnBC,qBAAsB,GAG1BrI,QAASiI,IAEd,aAQGtjB,EAAiC,WAC/B,MAAOvtC,IACT3yB,KAAKX,EAASM,EAAqBN,EAASC,KAAU4gE,IAAkCv6D,IAAcrG,EAAOD,QAAU6gE,KAS1Hv5D,SAIC,SAASrH,EAAQD,GAYrBA,EAAQo7C,oBAAsB,WAE7Bh7C,KAAKqkF,aAAarkF,KAAKwzC,UAAUiC,WAAWC,iBAAiB,GAG7D11C,KAAKuiD,eAIDviD,KAAKizC,WACPjzC,KAAKg9C,aAEPh9C,KAAK0O,SASN9O,EAAQykF,aAAe,SAASC,EAAkBC,GAOhD,IANA,GAAIpoC,GAAgBn8C,KAAK45C,YAAYv0C,OAEjCm/E,EAAY,GACZtwC,EAAQ,EAGLiI,EAAgBmoC,GAA4BE,EAARtwC,GACrCA,EAAQ,GAAK,GACfl0C,KAAKykF,oBAAmB,GACxBzkF,KAAK0kF,0BAGL1kF,KAAK2kF,uBAGPxoC,EAAgBn8C,KAAK45C,YAAYv0C,OACjC6uC,GAAS,CAIPA,GAAQ,GAAmB,GAAdqwC,GACfvkF,KAAK4kF,kBAEP5kF,KAAKoiD,2BASPxiD,EAAQilF,YAAc,SAASrpC,GAC7B,GAAIspC,GAA2B9kF,KAAK46C,MACpC,IAAIY,EAAKsS,YAAc9tD,KAAKwzC,UAAUiC,WAAWM,iBAAmB/1C,KAAK+kF,kBAAkBvpC,KACrE,WAAlBx7C,KAAKglF,WAAqD,GAA3BhlF,KAAK45C,YAAYv0C,QAAc,CAEhErF,KAAKilF,WAAWzpC,EAIhB,KAHA,GAAItH,GAAQ,EAGJl0C,KAAK45C,YAAYv0C,OAASrF,KAAKwzC,UAAUiC,WAAWC,iBAA6B,GAARxB,GAC/El0C,KAAKklF,uBACLhxC,GAAS,MAKXl0C,MAAKmlF,mBAAmB3pC,GAAK,GAAM,GAGnCx7C,KAAKw8C,uBACLx8C,KAAKolF,sBACLplF,KAAKoiD,0BACLpiD,KAAKuiD,cAIHviD,MAAK46C,QAAUkqC,GACjB9kF,KAAK0O,SAQT9O,EAAQ8gD,sBAAwB,WACW,GAArC1gD,KAAKwzC,UAAUiC,WAAW9nC,SAC5B3N,KAAKqlF,eAAe,GAAE,GAAM,IAUhCzlF,EAAQ+kF,qBAAuB,WAC7B3kF,KAAKqlF,eAAe,IAAG,GAAM,IAS/BzlF,EAAQslF,qBAAuB,WAC7BllF,KAAKqlF,eAAe,GAAE,GAAM,IAgB9BzlF,EAAQylF,eAAiB,SAASC,EAAcC,EAAUvpD,EAAMwpD,GAC9D,GAAIV,GAA2B9kF,KAAK46C,OAChC6qC,EAAgBzlF,KAAK45C,YAAYv0C,MAGjCrF,MAAKi6C,cAAgBj6C,KAAK8Z,OAA0B,GAAjBwrE,GACrCtlF,KAAK0lF,kBAIH1lF,KAAKi6C,cAAgBj6C,KAAK8Z,OAA0B,IAAjBwrE,EAGrCtlF,KAAK2lF,cAAc3pD,IAEZh8B,KAAKi6C,cAAgBj6C,KAAK8Z,OAA0B,GAAjBwrE,KAC7B,GAATtpD,EAGFh8B,KAAK4lF,cAAcL,EAAUvpD,GAI7Bh8B,KAAK6lF,uBAGT7lF,KAAKw8C,uBAGDx8C,KAAK45C,YAAYv0C,QAAUogF,IAAkBzlF,KAAKi6C,cAAgBj6C,KAAK8Z,OAA0B,IAAjBwrE,KAClFtlF,KAAK8lF,eAAe9pD,GACpBh8B,KAAKw8C,yBAIHx8C,KAAKi6C,cAAgBj6C,KAAK8Z,OAA0B,IAAjBwrE,KACrCtlF,KAAK+lF,eACL/lF,KAAKw8C,wBAGPx8C,KAAKi6C,cAAgBj6C,KAAK8Z,MAG1B9Z,KAAKolF,sBACLplF,KAAKuiD,eAGDviD,KAAK45C,YAAYv0C,OAASogF,IAC5BzlF,KAAKutD,gBAAkB,EAEvBvtD,KAAK0kF,2BAGW,GAAdc,GAAsCt/E,SAAfs/E,IAErBxlF,KAAK46C,QAAUkqC,GACjB9kF,KAAK0O,QAIT1O,KAAKoiD,2BAMPxiD,EAAQmmF,aAAe,WAErB,GAAIC,GAAkBhmF,KAAKimF,mBACvBD,GAAkBhmF,KAAKwzC,UAAUiC,WAAWI,gBAC9C71C,KAAKkmF,sBAAsB,EAAIlmF,KAAKwzC,UAAUiC,WAAWI,eAAiBmwC,IAW9EpmF,EAAQkmF,eAAiB,SAAS9pD,GAChCh8B,KAAKmmF,cACLnmF,KAAKomF,mBAAmBpqD,GAAM,IAQhCp8B,EAAQ6kF,mBAAqB,SAASe,GACpC,GAAIV,GAA2B9kF,KAAK46C,OAChC6qC,EAAgBzlF,KAAK45C,YAAYv0C,MAErCrF,MAAK8lF,gBAAe,GAGpB9lF,KAAKw8C,uBACLx8C,KAAKolF,sBACLplF,KAAKuiD,eAGDviD,KAAK45C,YAAYv0C,QAAUogF,IAC7BzlF,KAAKutD,gBAAkB,IAGP,GAAdi4B,GAAsCt/E,SAAfs/E,IAErBxlF,KAAK46C,QAAUkqC,GACjB9kF,KAAK0O,SAUX9O,EAAQimF,oBAAsB,WAC5B,IAAK,GAAIhqC,KAAU77C,MAAKyzC,MACtB,GAAIzzC,KAAKyzC,MAAMjuC,eAAeq2C,GAAS,CACrC,GAAIL,GAAOx7C,KAAKyzC,MAAMoI,EACD,IAAjBL,EAAKwV,WACFxV,EAAK5qC,MAAM5Q,KAAK8Z,MAAQ9Z,KAAKwzC,UAAUiC,WAAWO,oBAAsBh2C,KAAKmc,MAAMC,OAAOC,aAC1Fm/B,EAAK3qC,OAAO7Q,KAAK8Z,MAAQ9Z,KAAKwzC,UAAUiC,WAAWO,oBAAsBh2C,KAAKmc,MAAMC,OAAOsF,eAC9F1hB,KAAK6kF,YAAYrpC,KAc3B57C,EAAQgmF,cAAgB,SAASL,EAAUvpD,GACzC,IAAK,GAAI92B,GAAI,EAAGA,EAAIlF,KAAK45C,YAAYv0C,OAAQH,IAAK,CAChD,GAAIs2C,GAAOx7C,KAAKyzC,MAAMzzC,KAAK45C,YAAY10C,GACvClF,MAAKmlF,mBAAmB3pC,EAAK+pC,EAAUvpD,GACvCh8B,KAAKoiD,4BAeTxiD,EAAQulF,mBAAqB,SAAS37E,EAAY+7E,EAAWvpD,EAAOqqD,GAElE,GAAI78E,EAAWskD,YAAc,IAEvBtkD,EAAWskD,YAAc9tD,KAAKwzC,UAAUiC,WAAWM,kBACrDswC,GAAU,GAEZd,EAAYc,GAAU,EAAOd,EAGzB/7E,EAAWqkD,eAAiB7tD,KAAK8Z,OAAkB,GAATkiB,GAE5C,IAAK,GAAIsqD,KAAmB98E,GAAWukD,eACrC,GAAIvkD,EAAWukD,eAAevoD,eAAe8gF,GAAkB,CAC7D,GAAIC,GAAY/8E,EAAWukD,eAAeu4B,EAI7B,IAATtqD,GACEuqD,EAAUh5B,gBAAkB/jD,EAAWykD,gBAAgBzkD,EAAWykD,gBAAgB5oD,OAAO,IACtFghF,IACLrmF,KAAKwmF,sBAAsBh9E,EAAW88E,EAAgBf,EAAUvpD,EAAMqqD,GAIpErmF,KAAK+kF,kBAAkBv7E,IACzBxJ,KAAKwmF,sBAAsBh9E,EAAW88E,EAAgBf,EAAUvpD,EAAMqqD,KAwBpFzmF,EAAQ4mF,sBAAwB,SAASh9E,EAAY88E,EAAiBf,EAAWvpD,EAAOqqD,GACtF,GAAIE,GAAY/8E,EAAWukD,eAAeu4B,EAG1C,IAAIC,EAAU14B,eAAiB7tD,KAAK8Z,OAAkB,GAATkiB,EAAe,CAE1Dh8B,KAAKymF,eAGLzmF,KAAKyzC,MAAM6yC,GAAmBC,EAG9BvmF,KAAK0mF,uBAAuBl9E,EAAW+8E,GAGvCvmF,KAAK2mF,wBAAwBn9E,EAAW+8E,GAGxCvmF,KAAK4mF,eAAep9E,GAGpBA,EAAWs8C,MAAQygC,EAAUzgC,KAC7Bt8C,EAAWskD,aAAey4B,EAAUz4B,YACpCtkD,EAAWwqC,SAAWpvC,KAAKmG,IAAI/K,KAAKwzC,UAAUiC,WAAWS,YAAal2C,KAAKwzC,UAAUC,MAAMO,SAAWh0C,KAAKwzC,UAAUiC,WAAWQ,mBAAmBzsC,EAAWskD,aAC9JtkD,EAAW8jD,mBAAqB9jD,EAAW+iD,aAAalnD,OAGxDkhF,EAAUp2E,EAAI3G,EAAW2G,EAAI3G,EAAWmkD,iBAAmB,GAAM/oD,KAAKE,UACtEyhF,EAAUn2E,EAAI5G,EAAW4G,EAAI5G,EAAWmkD,iBAAmB,GAAM/oD,KAAKE,gBAG/D0E,GAAWukD,eAAeu4B,EAGjC,IAAIO,IAAgB,CACpB,KAAK,GAAIC,KAAet9E,GAAWukD,eACjC,GAAIvkD,EAAWukD,eAAevoD,eAAeshF,IACvCt9E,EAAWukD,eAAe+4B,GAAav5B,gBAAkBg5B,EAAUh5B,eAAgB,CACrFs5B,GAAgB,CAChB,OAKe,GAAjBA,GACFr9E,EAAWykD,gBAAgBtc,MAG7B3xC,KAAK+mF,uBAAuBR,GAI5BA,EAAUh5B,eAAiB,EAG3B/jD,EAAWimD,iBAGXzvD,KAAK46C,QAAS,EAIC,GAAb2qC,GACFvlF,KAAKmlF,mBAAmBoB,EAAUhB,EAAUvpD,EAAMqqD,IAWtDzmF,EAAQmnF,uBAAyB,SAASvrC,GACxC,IAAK,GAAIt2C,GAAI,EAAGA,EAAIs2C,EAAK+Q,aAAalnD,OAAQH,IAC5Cs2C,EAAK+Q,aAAarnD,GAAG+gD,sBAczBrmD,EAAQ+lF,cAAgB,SAAS3pD,GAClB,GAATA,EACFh8B,KAAKgnF,sBAGLhnF,KAAKinF,wBAUTrnF,EAAQonF,oBAAsB,WAC5B,GAAIvrE,GAAGC,EAAGrW,EACN6hF,EAAYlnF,KAAKwzC,UAAUiC,WAAWK,qBAAqB91C,KAAK8Z,KAIpE,KAAK,GAAIonC,KAAUlhD,MAAKo0C,MACtB,GAAIp0C,KAAKo0C,MAAM5uC,eAAe07C,GAAS,CACrC,GAAIO,GAAOzhD,KAAKo0C,MAAM8M,EACtB,IAAIO,EAAKC,WACHD,EAAKoF,MAAQpF,EAAKmF,SACpBnrC,EAAMgmC,EAAKt7B,GAAGhW,EAAIsxC,EAAKv7B,KAAK/V,EAC5BuL,EAAM+lC,EAAKt7B,GAAG/V,EAAIqxC,EAAKv7B,KAAK9V,EAC5B/K,EAAST,KAAKkoB,KAAKrR,EAAKA,EAAKC,EAAKA,GAGrBwrE,EAAT7hF,GAAoB,CAEtB,GAAImE,GAAai4C,EAAKv7B,KAClBqgE,EAAY9kC,EAAKt7B,EACjBs7B,GAAKt7B,GAAG2/B,KAAOrE,EAAKv7B,KAAK4/B,OAC3Bt8C,EAAai4C,EAAKt7B,GAClBogE,EAAY9kC,EAAKv7B,MAGiB,GAAhCqgE,EAAUj5B,mBACZttD,KAAKmnF,cAAc39E,EAAW+8E,GAAU,GAEA,GAAjC/8E,EAAW8jD,oBAClBttD,KAAKmnF,cAAcZ,EAAU/8E,GAAW,MAetD5J,EAAQqnF,qBAAuB,WAC7B,IAAK,GAAIprC,KAAU77C,MAAKyzC,MAEtB,GAAIzzC,KAAKyzC,MAAMjuC,eAAeq2C,GAAS,CACrC,GAAI0qC,GAAYvmF,KAAKyzC,MAAMoI,EAG3B,IAAoC,GAAhC0qC,EAAUj5B,oBAA4D,GAAjCi5B,EAAUh6B,aAAalnD,OAAa,CAC3E,GAAIo8C,GAAO8kC,EAAUh6B,aAAa,GAC9B/iD,EAAci4C,EAAKoF,MAAQ0/B,EAAUlmF,GAAML,KAAKyzC,MAAMgO,EAAKmF,QAAU5mD,KAAKyzC,MAAMgO,EAAKoF,KAGrF0/B,GAAUlmF,IAAMmJ,EAAWnJ,KACzBmJ,EAAWs8C,KAAOygC,EAAUzgC,KAC9B9lD,KAAKmnF,cAAc39E,EAAW+8E,GAAU,GAGxCvmF,KAAKmnF,cAAcZ,EAAU/8E,GAAW,OAgBpD5J,EAAQwnF,4BAA8B,SAAS5rC,GAG7C,IAAK,GAFD6rC,GAAoB,GACpBC,EAAwB,KACnBpiF,EAAI,EAAGA,EAAIs2C,EAAK+Q,aAAalnD,OAAQH,IAC5C,GAA6BgB,SAAzBs1C,EAAK+Q,aAAarnD,GAAkB,CACtC,GAAIqiF,GAAY,IACZ/rC,GAAK+Q,aAAarnD,GAAG0hD,QAAUpL,EAAKn7C,GACtCknF,EAAY/rC,EAAK+Q,aAAarnD,GAAGghB,KAE1Bs1B,EAAK+Q,aAAarnD,GAAG2hD,MAAQrL,EAAKn7C,KACzCknF,EAAY/rC,EAAK+Q,aAAarnD,GAAGihB,IAIlB,MAAbohE,GAAqBF,EAAoBE,EAAUt5B,gBAAgB5oD,SACrEgiF,EAAoBE,EAAUt5B,gBAAgB5oD,OAC9CiiF,EAAwBC,GAKb,MAAbA,GAAkDrhF,SAA7BlG,KAAKyzC,MAAM8zC,EAAUlnF,KAC5CL,KAAKmnF,cAAcI,EAAW/rC,GAAM,IAYxC57C,EAAQwmF,mBAAqB,SAASpqD,EAAOwrD,GAE3C,IAAK,GAAI3rC,KAAU77C,MAAKyzC,MAElBzzC,KAAKyzC,MAAMjuC,eAAeq2C,IAC5B77C,KAAKynF,oBAAoBznF,KAAKyzC,MAAMoI,GAAQ7f,EAAMwrD,IAcxD5nF,EAAQ6nF,oBAAsB,SAASC,EAAS1rD,EAAOwrD,EAAWG,GAKhE,GAJ6BzhF,SAAzByhF,IACFA,EAAuB,GAGpBD,EAAQp6B,oBAAsBttD,KAAKu4D,cAA6B,GAAbivB,GACrDE,EAAQp6B,oBAAsBttD,KAAKu4D,cAA6B,GAAbivB,EAAoB,CASxE,IAAK,GAPD/rE,GAAGC,EAAGrW,EACN6hF,EAAYlnF,KAAKwzC,UAAUiC,WAAWK,qBAAqB91C,KAAK8Z,MAChE8tE,GAAe,EAGfC,KACAC,EAAuBJ,EAAQn7B,aAAalnD,OACvCsjB,EAAI,EAAOm/D,EAAJn/D,EAA0BA,IACxCk/D,EAAajgF,KAAK8/E,EAAQn7B,aAAa5jC,GAAGtoB,GAK5C,IAAa,GAAT27B,EAEF,IADA4rD,GAAe,EACVj/D,EAAI,EAAOm/D,EAAJn/D,EAA0BA,IAAK,CACzC,GAAI84B,GAAOzhD,KAAKo0C,MAAMyzC,EAAal/D,GACnC,IAAaziB,SAATu7C,GACEA,EAAKC,WACHD,EAAKoF,MAAQpF,EAAKmF,SACpBnrC,EAAMgmC,EAAKt7B,GAAGhW,EAAIsxC,EAAKv7B,KAAK/V,EAC5BuL,EAAM+lC,EAAKt7B,GAAG/V,EAAIqxC,EAAKv7B,KAAK9V,EAC5B/K,EAAST,KAAKkoB,KAAKrR,EAAKA,EAAKC,EAAKA,GAErBwrE,EAAT7hF,GAAoB,CACtBuiF,GAAe,CACf,QASZ,IAAM5rD,GAAS4rD,GAAiB5rD,EAE9B,IAAKrT,EAAI,EAAOm/D,EAAJn/D,EAA0BA,IAGpC,GAFA84B,EAAOzhD,KAAKo0C,MAAMyzC,EAAal/D,IAElBziB,SAATu7C,EAAoB,CACtB,GAAI8kC,GAAYvmF,KAAKyzC,MAAOgO,EAAKmF,QAAU8gC,EAAQrnF,GAAMohD,EAAKoF,KAAOpF,EAAKmF,OAErE2/B,GAAUh6B,aAAalnD,QAAWrF,KAAKu4D,aAAeovB,GACtDpB,EAAUlmF,IAAMqnF,EAAQrnF,IAC3BL,KAAKmnF,cAAcO,EAAQnB,EAAUvqD,MAkBjDp8B,EAAQunF,cAAgB,SAAS39E,EAAY+8E,EAAWvqD,GAEtDxyB,EAAWukD,eAAew4B,EAAUlmF,IAAMkmF,CAG1C,KAAK,GAAIrhF,GAAI,EAAGA,EAAIqhF,EAAUh6B,aAAalnD,OAAQH,IAAK,CACtD,GAAIu8C,GAAO8kC,EAAUh6B,aAAarnD,EAC9Bu8C,GAAKoF,MAAQr9C,EAAWnJ,IAAMohD,EAAKmF,QAAUp9C,EAAWnJ,GAC1DL,KAAK+nF,qBAAqBv+E,EAAW+8E,EAAU9kC,GAG/CzhD,KAAKgoF,sBAAsBx+E,EAAW+8E,EAAU9kC,GAIpD8kC,EAAUh6B,gBAGVvsD,KAAKioF,8BAA8Bz+E,EAAW+8E,SAIvCvmF,MAAKyzC,MAAM8yC,EAAUlmF,GAG5B,IAAI6nF,GAAa1+E,EAAWs8C,IAC5BygC,GAAUh5B,eAAiBvtD,KAAKutD,eAChC/jD,EAAWs8C,MAAQygC,EAAUzgC,KAC7Bt8C,EAAWskD,aAAey4B,EAAUz4B,YACpCtkD,EAAWwqC,SAAWpvC,KAAKmG,IAAI/K,KAAKwzC,UAAUiC,WAAWS,YAAal2C,KAAKwzC,UAAUC,MAAMO,SAAWh0C,KAAKwzC,UAAUiC,WAAWQ,mBAAmBzsC,EAAWskD,aAG1JtkD,EAAWykD,gBAAgBzkD,EAAWykD,gBAAgB5oD,OAAS,IAAMrF,KAAKutD,gBAC5E/jD,EAAWykD,gBAAgBrmD,KAAK5H,KAAKutD,gBAMrC/jD,EAAWqkD,eAFA,GAAT7xB,EAE0B,EAGAh8B,KAAK8Z,MAInCtQ,EAAWimD,iBAGXjmD,EAAWukD,eAAew4B,EAAUlmF,IAAIwtD,eAAiBrkD,EAAWqkD,eAGpE04B,EAAUt1B,gBAGVznD,EAAW0nD,eAAeg3B,GAG1BloF,KAAK46C,QAAS,GAUhBh7C,EAAQwlF,oBAAsB,WAC5B,IAAK,GAAIlgF,GAAI,EAAGA,EAAIlF,KAAK45C,YAAYv0C,OAAQH,IAAK,CAChD,GAAIs2C,GAAOx7C,KAAKyzC,MAAMzzC,KAAK45C,YAAY10C,GACvCs2C,GAAK8R,mBAAqB9R,EAAK+Q,aAAalnD,MAG5C,IAAI8iF,GAAa,CACjB,IAAI3sC,EAAK8R,mBAAqB,EAC5B,IAAK,GAAI3kC,GAAI,EAAGA,EAAI6yB,EAAK8R,mBAAqB,EAAG3kC,IAG/C,IAAK,GAFDy/D,GAAW5sC,EAAK+Q,aAAa5jC,GAAGk+B,KAChCwhC,EAAa7sC,EAAK+Q,aAAa5jC,GAAGi+B,OAC7BqhB,EAAIt/C,EAAE,EAAGs/C,EAAIzsB,EAAK8R,mBAAoB2a,KACxCzsB,EAAK+Q,aAAa0b,GAAGphB,MAAQuhC,GAAY5sC,EAAK+Q,aAAa0b,GAAGrhB,QAAUyhC,GACxE7sC,EAAK+Q,aAAa0b,GAAGrhB,QAAUwhC,GAAY5sC,EAAK+Q,aAAa0b,GAAGphB,MAAQwhC,KAC3EF,GAAc,EAKtB3sC,GAAK8R,oBAAsB66B,IAa/BvoF,EAAQmoF,qBAAuB,SAASv+E,EAAY+8E,EAAW9kC,GAEvDj4C,EAAWwkD,eAAexoD,eAAe+gF,EAAUlmF,MACvDmJ,EAAWwkD,eAAeu4B,EAAUlmF,QAGtCmJ,EAAWwkD,eAAeu4B,EAAUlmF,IAAIuH,KAAK65C,SAGtCzhD,MAAKo0C,MAAMqN,EAAKphD,GAGvB,KAAK,GAAI6E,GAAI,EAAGA,EAAIsE,EAAW+iD,aAAalnD,OAAQH,IAClD,GAAIsE,EAAW+iD,aAAarnD,GAAG7E,IAAMohD,EAAKphD,GAAI,CAC5CmJ,EAAW+iD,aAAavkD,OAAO9C,EAAE,EACjC,SAcNtF,EAAQooF,sBAAwB,SAASx+E,EAAY+8E,EAAW9kC,GAE1DA,EAAKoF,MAAQpF,EAAKmF,OACpB5mD,KAAK+nF,qBAAqBv+E,EAAY+8E,EAAW9kC,IAG7CA,EAAKoF,MAAQ0/B,EAAUlmF,IACzBohD,EAAKwF,aAAar/C,KAAK2+E,EAAUlmF,IACjCohD,EAAKt7B,GAAK3c,EACVi4C,EAAKoF,KAAOr9C,EAAWnJ,KAIvBohD,EAAKuF,eAAep/C,KAAK2+E,EAAUlmF,IACnCohD,EAAKv7B,KAAO1c,EACZi4C,EAAKmF,OAASp9C,EAAWnJ,IAG3BL,KAAKsoF,oBAAoB9+E,EAAW+8E,EAAU9kC,KAalD7hD,EAAQqoF,8BAAgC,SAASz+E,EAAY+8E,GAE3D,IAAK,GAAIrhF,GAAI,EAAGA,EAAIsE,EAAW+iD,aAAalnD,OAAQH,IAAK,CACvD,GAAIu8C,GAAOj4C,EAAW+iD,aAAarnD,EAE/Bu8C,GAAKoF,MAAQpF,EAAKmF,QACpB5mD,KAAK+nF,qBAAqBv+E,EAAY+8E,EAAW9kC,KAcvD7hD,EAAQ0oF,oBAAsB,SAAS9+E,EAAY+8E,EAAW9kC,GAGtDj4C,EAAWgjD,cAAchnD,eAAe+gF,EAAUlmF,MACtDmJ,EAAWgjD,cAAc+5B,EAAUlmF,QAErCmJ,EAAWgjD,cAAc+5B,EAAUlmF,IAAIuH,KAAK65C,GAG5Cj4C,EAAW+iD,aAAa3kD,KAAK65C,IAY/B7hD,EAAQ+mF,wBAA0B,SAASn9E,EAAY+8E,GACrD,GAAI/8E,EAAWgjD,cAAchnD,eAAe+gF,EAAUlmF,IAAK,CACzD,IAAK,GAAI6E,GAAI,EAAGA,EAAIsE,EAAWgjD,cAAc+5B,EAAUlmF,IAAIgF,OAAQH,IAAK,CACtE,GAAIu8C,GAAOj4C,EAAWgjD,cAAc+5B,EAAUlmF,IAAI6E,EAC9Cu8C,GAAKuF,eAAevF,EAAKuF,eAAe3hD,OAAO,IAAMkhF,EAAUlmF,IACjEohD,EAAKuF,eAAerV,MACpB8P,EAAKmF,OAAS2/B,EAAUlmF,GACxBohD,EAAKv7B,KAAOqgE,IAGZ9kC,EAAKwF,aAAatV,MAClB8P,EAAKoF,KAAO0/B,EAAUlmF,GACtBohD,EAAKt7B,GAAKogE,GAIZA,EAAUh6B,aAAa3kD,KAAK65C,EAG5B,KAAK,GAAI94B,GAAI,EAAGA,EAAInf,EAAW+iD,aAAalnD,OAAQsjB,IAClD,GAAInf,EAAW+iD,aAAa5jC,GAAGtoB,IAAMohD,EAAKphD,GAAI,CAC5CmJ,EAAW+iD,aAAavkD,OAAO2gB,EAAE,EACjC,cAKCnf,GAAWgjD,cAAc+5B,EAAUlmF,MAa9CT,EAAQgnF,eAAiB,SAASp9E,GAChC,IAAK,GAAItE,GAAI,EAAGA,EAAIsE,EAAW+iD,aAAalnD,OAAQH,IAAK,CACvD,GAAIu8C,GAAOj4C,EAAW+iD,aAAarnD,EAC/BsE,GAAWnJ,IAAMohD,EAAKoF,MAAQr9C,EAAWnJ,IAAMohD,EAAKmF,QACtDp9C,EAAW+iD,aAAavkD,OAAO9C,EAAE,KAcvCtF,EAAQ8mF,uBAAyB,SAASl9E,EAAY+8E,GACpD,IAAK,GAAIrhF,GAAI,EAAGA,EAAIsE,EAAWwkD,eAAeu4B,EAAUlmF,IAAIgF,OAAQH,IAAK,CACvE,GAAIu8C,GAAOj4C,EAAWwkD,eAAeu4B,EAAUlmF,IAAI6E,EAGnDlF,MAAKo0C,MAAMqN,EAAKphD,IAAMohD,EAGtB8kC,EAAUh6B,aAAa3kD,KAAK65C,GAC5Bj4C,EAAW+iD,aAAa3kD,KAAK65C,SAGxBj4C,GAAWwkD,eAAeu4B,EAAUlmF,KAa7CT,EAAQ2iD,aAAe,WACrB,GAAI1G,EAEJ,KAAKA,IAAU77C,MAAKyzC,MAClB,GAAIzzC,KAAKyzC,MAAMjuC,eAAeq2C,GAAS,CACrC,GAAIL,GAAOx7C,KAAKyzC,MAAMoI,EAClBL,GAAKsS,YAAc,IACrBtS,EAAKj2B,MAAQ,IAAItT,OAAOnO,OAAO03C,EAAKsS,aAAa,MAMvD,IAAKjS,IAAU77C,MAAKyzC,MACdzzC,KAAKyzC,MAAMjuC,eAAeq2C,KAC5BL,EAAOx7C,KAAKyzC,MAAMoI,GACM,GAApBL,EAAKsS,cAELtS,EAAKj2B,MADoBrf,SAAvBs1C,EAAK0S,cACM1S,EAAK0S,cAGLpqD,OAAO03C,EAAKn7C,OAuBnCT,EAAQ8kF,uBAAyB,WAC/B,GAGI7oC,GAHA0sC,EAAW,EACXC,EAAW,IACXC,EAAe,CAInB,KAAK5sC,IAAU77C,MAAKyzC,MACdzzC,KAAKyzC,MAAMjuC,eAAeq2C,KAC5B4sC,EAAezoF,KAAKyzC,MAAMoI,GAAQoS,gBAAgB5oD,OACnCojF,EAAXF,IAA0BA,EAAWE,GACrCD,EAAWC,IAAeD,EAAWC,GAI7C,IAAIF,EAAWC,EAAWxoF,KAAKwzC,UAAUiC,WAAWgB,uBAAwB,CAC1E,GAAIgvC,GAAgBzlF,KAAK45C,YAAYv0C,OACjCqjF,EAAcH,EAAWvoF,KAAKwzC,UAAUiC,WAAWgB,sBAEvD,KAAKoF,IAAU77C,MAAKyzC,MACdzzC,KAAKyzC,MAAMjuC,eAAeq2C,IACxB77C,KAAKyzC,MAAMoI,GAAQoS,gBAAgB5oD,OAASqjF,GAC9C1oF,KAAKonF,4BAA4BpnF,KAAKyzC,MAAMoI,GAIlD77C,MAAKw8C,uBACLx8C,KAAKolF,sBAEDplF,KAAK45C,YAAYv0C,QAAUogF,IAC7BzlF,KAAKutD,gBAAkB,KAe7B3tD,EAAQmlF,kBAAoB,SAASvpC,GACnC,MACE52C,MAAK+iB,IAAI6zB,EAAKrrC,EAAInQ,KAAKg6C,WAAW7pC,IAAMnQ,KAAKwzC,UAAUiC,WAAWe,kBAAkBx2C,KAAK8Z,OAEzFlV,KAAK+iB,IAAI6zB,EAAKprC,EAAIpQ,KAAKg6C,WAAW5pC,IAAMpQ,KAAKwzC,UAAUiC,WAAWe,kBAAkBx2C,KAAK8Z,OAU7Fla,EAAQglF,gBAAkB,WACxB,IAAK,GAAI1/E,GAAI,EAAGA,EAAIlF,KAAK45C,YAAYv0C,OAAQH,IAAK,CAChD,GAAIs2C,GAAOx7C,KAAKyzC,MAAMzzC,KAAK45C,YAAY10C,GACvC,IAAoB,GAAfs2C,EAAKgE,QAAkC,GAAfhE,EAAKiE,OAAkB,CAClD,GAAIj3B,GAAS,EAASxoB,KAAK45C,YAAYv0C,OAAST,KAAKmG,IAAI,IAAIywC,EAAKsK,MAC9D5D,EAAQ,EAAIt9C,KAAK8jB,GAAK9jB,KAAKE,QACZ,IAAf02C,EAAKgE,SAAkBhE,EAAKrrC,EAAIqY,EAAS5jB,KAAKwW,IAAI8mC,IACnC,GAAf1G,EAAKiE,SAAkBjE,EAAKprC,EAAIoY,EAAS5jB,KAAKqW,IAAIinC,IACtDliD,KAAK+mF,uBAAuBvrC,MAYlC57C,EAAQumF,YAAc,WAMpB,IAAK,GALDwC,GAAU,EACVC,EAAiB,EACjBC,EAAa,EACbC,EAAa,EAER5jF,EAAI,EAAGA,EAAIlF,KAAK45C,YAAYv0C,OAAQH,IAAK,CAEhD,GAAIs2C,GAAOx7C,KAAKyzC,MAAMzzC,KAAK45C,YAAY10C,GACnCs2C,GAAK8R,mBAAqBw7B,IAC5BA,EAAattC,EAAK8R,oBAEpBq7B,GAAWntC,EAAK8R,mBAChBs7B,GAAkBhkF,KAAKusB,IAAIqqB,EAAK8R,mBAAmB,GACnDu7B,GAAc,EAEhBF,GAAoBE,EACpBD,GAAkCC,CAElC,IAAIE,GAAWH,EAAiBhkF,KAAKusB,IAAIw3D,EAAQ,GAE7CK,EAAoBpkF,KAAKkoB,KAAKi8D,EAElC/oF,MAAKu4D,aAAe3zD,KAAKC,MAAM8jF,EAAU,EAAEK,GAGvChpF,KAAKu4D,aAAeuwB,IACtB9oF,KAAKu4D,aAAeuwB,IAexBlpF,EAAQsmF,sBAAwB,SAAS+C,GACvCjpF,KAAKu4D,aAAe,CACpB,IAAI2wB,GAAetkF,KAAKC,MAAM7E,KAAK45C,YAAYv0C,OAAS4jF,EACxD,KAAK,GAAIptC,KAAU77C,MAAKyzC,MAClBzzC,KAAKyzC,MAAMjuC,eAAeq2C,IACiB,GAAzC77C,KAAKyzC,MAAMoI,GAAQyR,oBAA2BttD,KAAKyzC,MAAMoI,GAAQ0Q,aAAalnD,QAAU,GACtF6jF,EAAe,IACjBlpF,KAAKynF,oBAAoBznF,KAAKyzC,MAAMoI,IAAQ,GAAK,EAAK,GACtDqtC,GAAgB,IAa1BtpF,EAAQqmF,kBAAoB,WAC1B,GAAIkD,GAAS,EACTC,EAAQ,CACZ,KAAK,GAAIvtC,KAAU77C,MAAKyzC,MAClBzzC,KAAKyzC,MAAMjuC,eAAeq2C,KACiB,GAAzC77C,KAAKyzC,MAAMoI,GAAQyR,oBAA2BttD,KAAKyzC,MAAMoI,GAAQ0Q,aAAalnD,QAAU,IAC1F8jF,GAAU,GAEZC,GAAS,EAGb,OAAOD,GAAOC,IAMZ,SAASvpF,EAAQD,EAASM,GAE9B,GAAIS,GAAOT,EAAoB,EAgB/BN,GAAQm9C,iBAAmB,WACzB/8C,KAAKgjD,QAAgB,OAAEhjD,KAAKglF,WAAWvxC,MAAQzzC,KAAKyzC,MACpDzzC,KAAKgjD,QAAgB,OAAEhjD,KAAKglF,WAAW5wC,MAAQp0C,KAAKo0C,MACpDp0C,KAAKgjD,QAAgB,OAAEhjD,KAAKglF,WAAWprC,YAAc55C,KAAK45C;EAa5Dh6C,EAAQypF,gBAAkB,SAASC,EAAUC,GACxBrjF,SAAfqjF,GAA0C,UAAdA,EAC9BvpF,KAAKwpF,sBAAsBF,GAG3BtpF,KAAKypF,sBAAsBH,IAY/B1pF,EAAQ4pF,sBAAwB,SAASF,GACvCtpF,KAAK45C,YAAc55C,KAAKgjD,QAAgB,OAAEsmC,GAAuB,YACjEtpF,KAAKyzC,MAAczzC,KAAKgjD,QAAgB,OAAEsmC,GAAiB,MAC3DtpF,KAAKo0C,MAAcp0C,KAAKgjD,QAAgB,OAAEsmC,GAAiB,OAU7D1pF,EAAQ8pF,uBAAyB,WAC/B1pF,KAAK45C,YAAc55C,KAAKgjD,QAAiB,QAAe,YACxDhjD,KAAKyzC,MAAczzC,KAAKgjD,QAAiB,QAAS,MAClDhjD,KAAKo0C,MAAcp0C,KAAKgjD,QAAiB,QAAS,OAWpDpjD,EAAQ6pF,sBAAwB,SAASH,GACvCtpF,KAAK45C,YAAc55C,KAAKgjD,QAAgB,OAAEsmC,GAAuB,YACjEtpF,KAAKyzC,MAAczzC,KAAKgjD,QAAgB,OAAEsmC,GAAiB,MAC3DtpF,KAAKo0C,MAAcp0C,KAAKgjD,QAAgB,OAAEsmC,GAAiB,OAU7D1pF,EAAQ+pF,kBAAoB,WAC1B3pF,KAAKqpF,gBAAgBrpF,KAAKglF,YAU5BplF,EAAQolF,QAAU,WAChB,MAAOhlF,MAAKw4D,aAAax4D,KAAKw4D,aAAanzD,OAAO,IAUpDzF,EAAQgqF,gBAAkB,WACxB,GAAI5pF,KAAKw4D,aAAanzD,OAAS,EAC7B,MAAOrF,MAAKw4D,aAAax4D,KAAKw4D,aAAanzD,OAAO,EAGlD,MAAM,IAAIU,WAAU,iEAaxBnG,EAAQiqF,iBAAmB,SAASC,GAClC9pF,KAAKw4D,aAAa5wD,KAAKkiF,IAUzBlqF,EAAQmqF,kBAAoB,WAC1B/pF,KAAKw4D,aAAa7mB,OAWpB/xC,EAAQoqF,iBAAmB,SAASF,GAElC9pF,KAAKgjD,QAAgB,OAAE8mC,IAAUr2C,SACAW,SACAwF,eACAiU,eAAkB7tD,KAAK8Z,MACvB2+C,YAAevyD,QAGhDlG,KAAKgjD,QAAgB,OAAE8mC,GAAoB,YAAI,GAAI3mF,OAC9C9C,GAAGypF,EACFv/E,OACEa,WAAY,UACZC,OAAQ,iBAEJrL,KAAKwzC,WACjBxzC,KAAKgjD,QAAgB,OAAE8mC,GAAoB,YAAEh8B,YAAc,GAW7DluD,EAAQqqF,oBAAsB,SAASX,SAC9BtpF,MAAKgjD,QAAgB,OAAEsmC,IAWhC1pF,EAAQsqF,oBAAsB,SAASZ,SAC9BtpF,MAAKgjD,QAAgB,OAAEsmC,IAWhC1pF,EAAQuqF,cAAgB,SAASb,GAE/BtpF,KAAKgjD,QAAgB,OAAEsmC,GAAYtpF,KAAKgjD,QAAgB,OAAEsmC,GAG1DtpF,KAAKiqF,oBAAoBX,IAW3B1pF,EAAQwqF,gBAAkB,SAASd,GAEjCtpF,KAAKgjD,QAAgB,OAAEsmC,GAAYtpF,KAAKgjD,QAAgB,OAAEsmC,GAG1DtpF,KAAKkqF,oBAAoBZ,IAa3B1pF,EAAQyqF,qBAAuB,SAASf,GAEtC,IAAK,GAAIztC,KAAU77C,MAAKyzC,MAClBzzC,KAAKyzC,MAAMjuC,eAAeq2C,KAC5B77C,KAAKgjD,QAAgB,OAAEsmC,GAAiB,MAAEztC,GAAU77C,KAAKyzC,MAAMoI,GAKnE,KAAK,GAAIqF,KAAUlhD,MAAKo0C,MAClBp0C,KAAKo0C,MAAM5uC,eAAe07C,KAC5BlhD,KAAKgjD,QAAgB,OAAEsmC,GAAiB,MAAEpoC,GAAUlhD,KAAKo0C,MAAM8M,GAKnE,KAAK,GAAIh8C,GAAI,EAAGA,EAAIlF,KAAK45C,YAAYv0C,OAAQH,IAC3ClF,KAAKgjD,QAAgB,OAAEsmC,GAAuB,YAAE1hF,KAAK5H,KAAK45C,YAAY10C,KAW1EtF,EAAQ0qF,6BAA+B,WACrCtqF,KAAKqkF,aAAa,GAAE,IAUtBzkF,EAAQqlF,WAAa,SAASzpC,GAE5B,GAAI+uC,GAASvqF,KAAKglF,gBAWXhlF,MAAKyzC,MAAM+H,EAAKn7C,GAEvB,IAAImqF,GAAmB7pF,EAAK+D,YAG5B1E,MAAKmqF,cAAcI,GAGnBvqF,KAAKgqF,iBAAiBQ,GAGtBxqF,KAAK6pF,iBAAiBW,GAGtBxqF,KAAKqpF,gBAAgBrpF,KAAKglF,WAG1BhlF,KAAKyzC,MAAM+H,EAAKn7C,IAAMm7C,GAUxB57C,EAAQ8lF,gBAAkB,WAExB,GAAI6E,GAASvqF,KAAKglF,SAGlB,IAAc,WAAVuF,IAC8B,GAA3BvqF,KAAK45C,YAAYv0C,QACpBrF,KAAKgjD,QAAgB,OAAEunC,GAAqB,YAAE35E,MAAM5Q,KAAK8Z,MAAQ9Z,KAAKwzC,UAAUiC,WAAWO,oBAAsBh2C,KAAKmc,MAAMC,OAAOC,aACnIrc,KAAKgjD,QAAgB,OAAEunC,GAAqB,YAAE15E,OAAO7Q,KAAK8Z,MAAQ9Z,KAAKwzC,UAAUiC,WAAWO,oBAAsBh2C,KAAKmc,MAAMC,OAAOsF,cAAe,CACnJ,GAAI+oE,GAAiBzqF,KAAK4pF,iBAG1B5pF,MAAKsqF,+BAILtqF,KAAKqqF,qBAAqBI,GAI1BzqF,KAAKiqF,oBAAoBM,GAGzBvqF,KAAKoqF,gBAAgBK,GAGrBzqF,KAAKqpF,gBAAgBoB,GAGrBzqF,KAAK+pF,oBAGL/pF,KAAKw8C,uBAGLx8C,KAAKoiD,4BAeXxiD,EAAQklD,sBAAwB,SAAS4lC,EAAYC,GACnD,GAAiBzkF,SAAbykF,EACF,IAAK,GAAIJ,KAAUvqF,MAAKgjD,QAAgB,OAClChjD,KAAKgjD,QAAgB,OAAEx9C,eAAe+kF,KAExCvqF,KAAKwpF,sBAAsBe,GAC3BvqF,KAAK0qF,UAKT,KAAK,GAAIH,KAAUvqF,MAAKgjD,QAAgB,OACtC,GAAIhjD,KAAKgjD,QAAgB,OAAEx9C,eAAe+kF,GAAS,CAEjDvqF,KAAKwpF,sBAAsBe,EAC3B,IAAIl2D,GAAO1uB,MAAM4L,UAAUvJ,OAAOzH,KAAK6E,UAAW,EAC9CivB,GAAKhvB,OAAS,EAChBrF,KAAK0qF,GAAar2D,EAAK,GAAGA,EAAK,IAG/Br0B,KAAK0qF,GAAaC,GAM1B3qF,KAAK2pF,qBAaP/pF,EAAQmlD,mBAAqB,SAAS2lC,EAAYC,GAChD,GAAiBzkF,SAAbykF,EACF3qF,KAAK0pF,yBACL1pF,KAAK0qF,SAEF,CACH1qF,KAAK0pF,wBACL,IAAIr1D,GAAO1uB,MAAM4L,UAAUvJ,OAAOzH,KAAK6E,UAAW,EAC9CivB,GAAKhvB,OAAS,EAChBrF,KAAK0qF,GAAar2D,EAAK,GAAGA,EAAK,IAG/Br0B,KAAK0qF,GAAaC,GAItB3qF,KAAK2pF,qBAaP/pF,EAAQgrF,sBAAwB,SAASF,EAAYC,GACnD,GAAiBzkF,SAAbykF,EACF,IAAK,GAAIJ,KAAUvqF,MAAKgjD,QAAgB,OAClChjD,KAAKgjD,QAAgB,OAAEx9C,eAAe+kF,KAExCvqF,KAAKypF,sBAAsBc,GAC3BvqF,KAAK0qF,UAKT,KAAK,GAAIH,KAAUvqF,MAAKgjD,QAAgB,OACtC,GAAIhjD,KAAKgjD,QAAgB,OAAEx9C,eAAe+kF,GAAS,CAEjDvqF,KAAKypF,sBAAsBc,EAC3B,IAAIl2D,GAAO1uB,MAAM4L,UAAUvJ,OAAOzH,KAAK6E,UAAW,EAC9CivB,GAAKhvB,OAAS,EAChBrF,KAAK0qF,GAAar2D,EAAK,GAAGA,EAAK,IAG/Br0B,KAAK0qF,GAAaC,GAK1B3qF,KAAK2pF,qBAaP/pF,EAAQyjD,gBAAkB,SAASqnC,EAAYC,GAC7C,GAAIt2D,GAAO1uB,MAAM4L,UAAUvJ,OAAOzH,KAAK6E,UAAW,EACjCc,UAAbykF,GACF3qF,KAAK8kD,sBAAsB4lC,GAC3B1qF,KAAK4qF,sBAAsBF,IAGvBr2D,EAAKhvB,OAAS,GAChBrF,KAAK8kD,sBAAsB4lC,EAAYr2D,EAAK,GAAGA,EAAK,IACpDr0B,KAAK4qF,sBAAsBF,EAAYr2D,EAAK,GAAGA,EAAK,MAGpDr0B,KAAK8kD,sBAAsB4lC,EAAYC,GACvC3qF,KAAK4qF,sBAAsBF,EAAYC,KAY7C/qF,EAAQ68C,oBAAsB,WAC5B,GAAI8tC,GAASvqF,KAAKglF,SAClBhlF,MAAKgjD,QAAgB,OAAEunC,GAAqB,eAC5CvqF,KAAK45C,YAAc55C,KAAKgjD,QAAgB,OAAEunC,GAAqB,aAWjE3qF,EAAQirF,iBAAmB,SAASjnE,EAAI2lE,GACtC,GAAsD/tC,GAAlDC,EAAO,IAAKC,EAAO,KAAMC,EAAO,IAAKC,EAAO,IAChD,KAAK,GAAI2uC,KAAUvqF,MAAKgjD,QAAQumC,GAC9B,GAAIvpF,KAAKgjD,QAAQumC,GAAY/jF,eAAe+kF,IACcrkF,SAApDlG,KAAKgjD,QAAQumC,GAAYgB,GAAqB,YAAiB,CAEjEvqF,KAAKqpF,gBAAgBkB,EAAOhB,GAE5B9tC,EAAO,IAAKC,EAAO,KAAMC,EAAO,IAAKC,EAAO,IAC5C,KAAK,GAAIC,KAAU77C,MAAKyzC,MAClBzzC,KAAKyzC,MAAMjuC,eAAeq2C,KAC5BL,EAAOx7C,KAAKyzC,MAAMoI,GAClBL,EAAKqN,OAAOjlC,GACR+3B,EAAOH,EAAKrrC,EAAI,GAAMqrC,EAAK5qC,QAAQ+qC,EAAOH,EAAKrrC,EAAI,GAAMqrC,EAAK5qC,OAC9DgrC,EAAOJ,EAAKrrC,EAAI,GAAMqrC,EAAK5qC,QAAQgrC,EAAOJ,EAAKrrC,EAAI,GAAMqrC,EAAK5qC,OAC9D6qC,EAAOD,EAAKprC,EAAI,GAAMorC,EAAK3qC,SAAS4qC,EAAOD,EAAKprC,EAAI,GAAMorC,EAAK3qC,QAC/D6qC,EAAOF,EAAKprC,EAAI,GAAMorC,EAAK3qC,SAAS6qC,EAAOF,EAAKprC,EAAI,GAAMorC,EAAK3qC,QAGvE2qC,GAAOx7C,KAAKgjD,QAAQumC,GAAYgB,GAAqB,YACrD/uC,EAAKrrC,EAAI,IAAOyrC,EAAOD,GACvBH,EAAKprC,EAAI,IAAOsrC,EAAOD,GACvBD,EAAK5qC,MAAQ,GAAK4qC,EAAKrrC,EAAIwrC,GAC3BH,EAAK3qC,OAAS,GAAK2qC,EAAKprC,EAAIqrC,GAC5BD,EAAKhzB,OAAS5jB,KAAKkoB,KAAKloB,KAAKusB,IAAI,GAAIqqB,EAAK5qC,MAAM,GAAKhM,KAAKusB,IAAI,GAAIqqB,EAAK3qC,OAAO,IAC9E2qC,EAAK1d,SAAS99B,KAAK8Z,OACnB0hC,EAAKkT,YAAY9qC,KAMzBhkB,EAAQkrF,oBAAsB,SAASlnE,GACrC5jB,KAAK6qF,iBAAiBjnE,EAAI,UAC1B5jB,KAAK6qF,iBAAiBjnE,EAAI,UAC1B5jB,KAAK2pF,sBAMH,SAAS9pF,EAAQD,EAASM,GAE9B,GAAIiD,GAAOjD,EAAoB,GAS/BN,GAAQmrF,yBAA2B,SAASpnF,EAAQqnF,GAClD,GAAIv3C,GAAQzzC,KAAKyzC,KACjB,KAAK,GAAIoI,KAAUpI,GACbA,EAAMjuC,eAAeq2C,IACnBpI,EAAMoI,GAAQ2F,kBAAkB79C,IAClCqnF,EAAiBpjF,KAAKi0C,IAY9Bj8C,EAAQqrF,4BAA8B,SAAUtnF,GAC9C,GAAIqnF,KAEJ,OADAhrF,MAAK8kD,sBAAsB,2BAA2BnhD,EAAOqnF,GACtDA,GAWTprF,EAAQsrF,yBAA2B,SAAS9vD,GAC1C,GAAIjrB,GAAInQ,KAAK2/C,qBAAqBvkB,EAAQjrB,GACtCC,EAAIpQ,KAAK6/C,qBAAqBzkB,EAAQhrB,EAE1C,QACEnJ,KAAQkJ,EACR9I,IAAQ+I,EACR8T,MAAQ/T,EACRgQ,OAAQ/P,IAYZxQ,EAAQs/C,WAAa,SAAU9jB,GAE7B,GAAI+vD,GAAiBnrF,KAAKkrF,yBAAyB9vD,GAC/C4vD,EAAmBhrF,KAAKirF,4BAA4BE,EAIxD,OAAIH,GAAiB3lF,OAAS,EACpBrF,KAAKyzC,MAAMu3C,EAAiBA,EAAiB3lF,OAAS,IAGvD,MAWXzF,EAAQwrF,yBAA2B,SAAUznF,EAAQ0nF,GACnD,GAAIj3C,GAAQp0C,KAAKo0C,KACjB,KAAK,GAAI8M,KAAU9M,GACbA,EAAM5uC,eAAe07C,IACnB9M,EAAM8M,GAAQM,kBAAkB79C,IAClC0nF,EAAiBzjF,KAAKs5C,IAa9BthD,EAAQ0rF,4BAA8B,SAAU3nF,GAC9C,GAAI0nF,KAEJ,OADArrF,MAAK8kD,sBAAsB,2BAA2BnhD,EAAO0nF,GACtDA,GAWTzrF,EAAQuhD,WAAa,SAAS/lB,GAC5B,GAAI+vD,GAAiBnrF,KAAKkrF,yBAAyB9vD,GAC/CiwD,EAAmBrrF,KAAKsrF,4BAA4BH,EAExD,OAAIE,GAAiBhmF,OAAS,EACrBrF,KAAKo0C,MAAMi3C,EAAiBA,EAAiBhmF,OAAS,IAGtD,MAWXzF,EAAQ2rF,gBAAkB,SAAS1rE,GAC7BA,YAAe1c,GACjBnD,KAAKu/C,aAAa9L,MAAM5zB,EAAIxf,IAAMwf,EAGlC7f,KAAKu/C,aAAanL,MAAMv0B,EAAIxf,IAAMwf,GAUtCjgB,EAAQ4rF,YAAc,SAAS3rE,GACzBA,YAAe1c,GACjBnD,KAAK04C,SAASjF,MAAM5zB,EAAIxf,IAAMwf,EAG9B7f,KAAK04C,SAAStE,MAAMv0B,EAAIxf,IAAMwf,GAWlCjgB,EAAQ6rF,qBAAuB,SAAS5rE,GAClCA,YAAe1c,SACVnD,MAAKu/C,aAAa9L,MAAM5zB,EAAIxf,UAG5BL,MAAKu/C,aAAanL,MAAMv0B,EAAIxf,KAUvCT,EAAQ6mF,aAAe,SAASiF,GACTxlF,SAAjBwlF,IACFA,GAAe,EAEjB,KAAI,GAAI7vC,KAAU77C,MAAKu/C,aAAa9L,MAC/BzzC,KAAKu/C,aAAa9L,MAAMjuC,eAAeq2C,IACxC77C,KAAKu/C,aAAa9L,MAAMoI,GAAQpT,UAGpC,KAAI,GAAIyY,KAAUlhD,MAAKu/C,aAAanL,MAC/Bp0C,KAAKu/C,aAAanL,MAAM5uC,eAAe07C,IACxClhD,KAAKu/C,aAAanL,MAAM8M,GAAQzY,UAIpCzoC,MAAKu/C,cAAgB9L,SAASW,UAEV,GAAhBs3C,GACF1rF,KAAK6qB,KAAK,SAAU7qB,KAAKg2B,iBAU7Bp2B,EAAQ+rF,kBAAoB,SAASD,GACdxlF,SAAjBwlF,IACFA,GAAe,EAGjB,KAAK,GAAI7vC,KAAU77C,MAAKu/C,aAAa9L,MAC/BzzC,KAAKu/C,aAAa9L,MAAMjuC,eAAeq2C,IACrC77C,KAAKu/C,aAAa9L,MAAMoI,GAAQiS,YAAc,IAChD9tD,KAAKu/C,aAAa9L,MAAMoI,GAAQpT,WAChCzoC,KAAKyrF,qBAAqBzrF,KAAKu/C,aAAa9L,MAAMoI,IAKpC,IAAhB6vC,GACF1rF,KAAK6qB,KAAK,SAAU7qB,KAAKg2B,iBAW7Bp2B,EAAQgsF,sBAAwB,WAC9B,GAAIx2E,GAAQ,CACZ,KAAK,GAAIymC,KAAU77C,MAAKu/C,aAAa9L,MAC/BzzC,KAAKu/C,aAAa9L,MAAMjuC,eAAeq2C,KACzCzmC,GAAS,EAGb,OAAOA,IASTxV,EAAQisF,iBAAmB,WACzB,IAAK,GAAIhwC,KAAU77C,MAAKu/C,aAAa9L,MACnC,GAAIzzC,KAAKu/C,aAAa9L,MAAMjuC,eAAeq2C,GACzC,MAAO77C,MAAKu/C,aAAa9L,MAAMoI,EAGnC,OAAO,OASTj8C,EAAQksF,iBAAmB,WACzB,IAAK,GAAI5qC,KAAUlhD,MAAKu/C,aAAanL,MACnC,GAAIp0C,KAAKu/C,aAAanL,MAAM5uC,eAAe07C,GACzC,MAAOlhD,MAAKu/C,aAAanL,MAAM8M,EAGnC,OAAO,OAUTthD,EAAQmsF,sBAAwB,WAC9B,GAAI32E,GAAQ,CACZ,KAAK,GAAI8rC,KAAUlhD,MAAKu/C,aAAanL,MAC/Bp0C,KAAKu/C,aAAanL,MAAM5uC,eAAe07C,KACzC9rC,GAAS,EAGb,OAAOA,IAUTxV,EAAQosF,wBAA0B,WAChC,GAAI52E,GAAQ,CACZ,KAAI,GAAIymC,KAAU77C,MAAKu/C,aAAa9L,MAC/BzzC,KAAKu/C,aAAa9L,MAAMjuC,eAAeq2C,KACxCzmC,GAAS,EAGb,KAAI,GAAI8rC,KAAUlhD,MAAKu/C,aAAanL,MAC/Bp0C,KAAKu/C,aAAanL,MAAM5uC,eAAe07C,KACxC9rC,GAAS,EAGb,OAAOA,IASTxV,EAAQqsF,kBAAoB,WAC1B,IAAI,GAAIpwC,KAAU77C,MAAKu/C,aAAa9L,MAClC,GAAGzzC,KAAKu/C,aAAa9L,MAAMjuC,eAAeq2C,GACxC,OAAO,CAGX,KAAI,GAAIqF,KAAUlhD,MAAKu/C,aAAanL,MAClC,GAAGp0C,KAAKu/C,aAAanL,MAAM5uC,eAAe07C,GACxC,OAAO,CAGX,QAAO,GAUTthD,EAAQssF,oBAAsB,WAC5B,IAAI,GAAIrwC,KAAU77C,MAAKu/C,aAAa9L,MAClC,GAAGzzC,KAAKu/C,aAAa9L,MAAMjuC,eAAeq2C,IACpC77C,KAAKu/C,aAAa9L,MAAMoI,GAAQiS,YAAc,EAChD,OAAO,CAIb,QAAO,GASTluD,EAAQusF,sBAAwB,SAAS3wC,GACvC,IAAK,GAAIt2C,GAAI,EAAGA,EAAIs2C,EAAK+Q,aAAalnD,OAAQH,IAAK,CACjD,GAAIu8C,GAAOjG,EAAK+Q,aAAarnD,EAC7Bu8C,GAAK/Y,SACL1oC,KAAKurF,gBAAgB9pC,KAUzB7hD,EAAQwsF,qBAAuB,SAAS5wC,GACtC,IAAK,GAAIt2C,GAAI,EAAGA,EAAIs2C,EAAK+Q,aAAalnD,OAAQH,IAAK,CACjD,GAAIu8C,GAAOjG,EAAK+Q,aAAarnD,EAC7Bu8C,GAAKl2C,OAAQ,EACbvL,KAAKwrF,YAAY/pC,KAWrB7hD,EAAQysF,wBAA0B,SAAS7wC,GACzC,IAAK,GAAIt2C,GAAI,EAAGA,EAAIs2C,EAAK+Q,aAAalnD,OAAQH,IAAK,CACjD,GAAIu8C,GAAOjG,EAAK+Q,aAAarnD,EAC7Bu8C,GAAKhZ,WACLzoC,KAAKyrF,qBAAqBhqC,KAgB9B7hD,EAAQy/C,cAAgB,SAAS17C,EAAQ2oF,EAAQZ,EAAca,GACxCrmF,SAAjBwlF,IACFA,GAAe,GAEMxlF,SAAnBqmF,IACFA,GAAiB,GAGa,GAA5BvsF,KAAKisF,qBAA0C,GAAVK,GAAgD,GAA7BtsF,KAAK24D,sBAC/D34D,KAAKymF,cAAa,GAGG,GAAnB9iF,EAAO2mC,UACT3mC,EAAO+kC,SACP1oC,KAAKurF,gBAAgB5nF,GACjBA,YAAkBR,IAA6C,GAArCnD,KAAK04D,8BAA2D,GAAlB6zB,GAC1EvsF,KAAKmsF,sBAAsBxoF,KAI7BA,EAAO8kC,WACPzoC,KAAKyrF,qBAAqB9nF,IAGR,GAAhB+nF,GACF1rF,KAAK6qB,KAAK,SAAU7qB,KAAKg2B,iBAY7Bp2B,EAAQyhD,YAAc,SAAS19C,GACT,GAAhBA,EAAO4H,QACT5H,EAAO4H,OAAQ,EACfvL,KAAK6qB,KAAK,YAAY2wB,KAAK73C,EAAOtD,OAWtCT,EAAQwhD,aAAe,SAASz9C,GACV,GAAhBA,EAAO4H,QACT5H,EAAO4H,OAAQ,EACfvL,KAAKwrF,YAAY7nF,GACbA,YAAkBR,IACpBnD,KAAK6qB,KAAK,aAAa2wB,KAAK73C,EAAOtD,MAGnCsD,YAAkBR,IACpBnD,KAAKosF,qBAAqBzoF,IAa9B/D,EAAQo/C,aAAe,aAUvBp/C,EAAQmgD,WAAa,SAAS3kB,GAC5B,GAAIogB,GAAOx7C,KAAKk/C,WAAW9jB,EAC3B,IAAY,MAARogB,EACFx7C,KAAKq/C,cAAc7D,GAAK,OAErB,CACH,GAAIiG,GAAOzhD,KAAKmhD,WAAW/lB,EACf,OAARqmB,EACFzhD,KAAKq/C,cAAcoC,GAAK,GAGxBzhD,KAAKymF,eAGTzmF,KAAK6qB,KAAK,QAAS7qB,KAAKg2B,gBACxBh2B,KAAK84C,WAUPl5C,EAAQogD,iBAAmB,SAAS5kB,GAClC,GAAIogB,GAAOx7C,KAAKk/C,WAAW9jB,EACf,OAARogB,GAAyBt1C,SAATs1C,IAElBx7C,KAAKg6C,YAAe7pC,EAAMnQ,KAAK2/C,qBAAqBvkB,EAAQjrB,GACxCC,EAAMpQ,KAAK6/C,qBAAqBzkB,EAAQhrB,IAC5DpQ,KAAK6kF,YAAYrpC,IAEnBx7C,KAAK6qB,KAAK,cAAe7qB,KAAKg2B,iBAUhCp2B,EAAQqgD,cAAgB,SAAS7kB,GAC/B,GAAIogB,GAAOx7C,KAAKk/C,WAAW9jB,EAC3B,IAAY,MAARogB,EACFx7C,KAAKq/C,cAAc7D,GAAK,OAErB,CACH,GAAIiG,GAAOzhD,KAAKmhD,WAAW/lB,EACf,OAARqmB,GACFzhD,KAAKq/C,cAAcoC,GAAK,GAG5BzhD,KAAK84C,WASPl5C,EAAQsgD,iBAAmB,aAW3BtgD,EAAQo2B,aAAe,WACrB,GAAIw2D,GAAUxsF,KAAKysF,mBACfC,EAAU1sF,KAAK2sF,kBACnB,QAAQl5C,MAAM+4C,EAASp4C,MAAMs4C,IAS/B9sF,EAAQ6sF,iBAAmB,WACzB,GAAIG,KACJ,KAAI,GAAI/wC,KAAU77C,MAAKu/C,aAAa9L,MAC/BzzC,KAAKu/C,aAAa9L,MAAMjuC,eAAeq2C,IACxC+wC,EAAQhlF,KAAKi0C,EAGjB,OAAO+wC,IASThtF,EAAQ+sF,iBAAmB,WACzB,GAAIC,KACJ,KAAI,GAAI1rC,KAAUlhD,MAAKu/C,aAAanL,MAC/Bp0C,KAAKu/C,aAAanL,MAAM5uC,eAAe07C,IACxC0rC,EAAQhlF,KAAKs5C,EAGjB,OAAO0rC,IASThtF,EAAQm2B,aAAe,SAAS6R,GAC9B,GAAI1iC,GAAG+2B,EAAM57B,CAEb,KAAKunC,GAAkC1hC,QAApB0hC,EAAUviC,OAC3B,KAAM,qCAKR,KAFArF,KAAKymF,cAAa,GAEbvhF,EAAI,EAAG+2B,EAAO2L,EAAUviC,OAAY42B,EAAJ/2B,EAAUA,IAAK,CAClD7E,EAAKunC,EAAU1iC,EAEf,IAAIs2C,GAAOx7C,KAAKyzC,MAAMpzC,EACtB,KAAKm7C,EACH,KAAM,IAAIqxC,YAAW,iBAAmBxsF,EAAK,cAE/CL,MAAKq/C,cAAc7D,GAAK,GAAK,GAG/B7sC,QAAQC,IAAI,+DAEZ5O,KAAKse,UAUP1e,EAAQktF,YAAc,SAASllD,EAAW2kD,GACxC,GAAIrnF,GAAG+2B,EAAM57B,CAEb,KAAKunC,GAAkC1hC,QAApB0hC,EAAUviC,OAC3B,KAAM,qCAKR,KAFArF,KAAKymF,cAAa,GAEbvhF,EAAI,EAAG+2B,EAAO2L,EAAUviC,OAAY42B,EAAJ/2B,EAAUA,IAAK,CAClD7E,EAAKunC,EAAU1iC,EAEf,IAAIs2C,GAAOx7C,KAAKyzC,MAAMpzC,EACtB,KAAKm7C,EACH,KAAM,IAAIqxC,YAAW,iBAAmBxsF,EAAK,cAE/CL,MAAKq/C,cAAc7D,GAAK,GAAK,EAAK+wC,GAEpCvsF,KAAKse,UASP1e,EAAQmtF,YAAc,SAASnlD,GAC7B,GAAI1iC,GAAG+2B,EAAM57B,CAEb,KAAKunC,GAAkC1hC,QAApB0hC,EAAUviC,OAC3B,KAAM,qCAKR,KAFArF,KAAKymF,cAAa,GAEbvhF,EAAI,EAAG+2B,EAAO2L,EAAUviC,OAAY42B,EAAJ/2B,EAAUA,IAAK,CAClD7E,EAAKunC,EAAU1iC,EAEf,IAAIu8C,GAAOzhD,KAAKo0C,MAAM/zC,EACtB,KAAKohD,EACH,KAAM,IAAIorC,YAAW,iBAAmBxsF,EAAK,cAE/CL,MAAKq/C,cAAcoC,GAAK,GAAK,EAAK8qC,gBAEpCvsF,KAAKse,UAOP1e,EAAQqiD,iBAAmB,WACzB,IAAI,GAAIpG,KAAU77C,MAAKu/C,aAAa9L,MAC/BzzC,KAAKu/C,aAAa9L,MAAMjuC,eAAeq2C,KACnC77C,KAAKyzC,MAAMjuC,eAAeq2C,UACtB77C,MAAKu/C,aAAa9L,MAAMoI,GAIrC,KAAI,GAAIqF,KAAUlhD,MAAKu/C,aAAanL,MAC/Bp0C,KAAKu/C,aAAanL,MAAM5uC,eAAe07C,KACnClhD,KAAKo0C,MAAM5uC,eAAe07C,UACtBlhD,MAAKu/C,aAAanL,MAAM8M,MASnC,SAASrhD,EAAQD,EAASM,GAE9B,GAAIS,GAAOT,EAAoB,GAC3BiD,EAAOjD,EAAoB,IAC3B8C,EAAO9C,EAAoB,GAO/BN,GAAQotF,qBAAuB,WAC7B,KAAOhtF,KAAK8hD,gBAAgBvhC,iBAC1BvgB,KAAK8hD,gBAAgBtyC,YAAYxP,KAAK8hD,gBAAgBthC,aAW1D5gB,EAAQqtF,4BAA8B,WACpC,IAAK,GAAIC,KAAgBltF,MAAKy5C,gBACxBz5C,KAAKy5C,gBAAgBj0C,eAAe0nF,KACtCltF,KAAKktF,GAAgBltF,KAAKy5C,gBAAgByzC,KAUhDttF,EAAQutF,gBAAkB,WACxBntF,KAAKs9C,UAAYt9C,KAAKs9C,QACtB,IAAI8vC,GAAUx9E,SAASy9E,eAAe,2BAClCx0B,EAAWjpD,SAASy9E,eAAe,iCACnCz0B,EAAchpD,SAASy9E,eAAe,gCACrB,IAAjBrtF,KAAKs9C,UACP8vC,EAAQ58E,MAAM+wB,QAAQ,QACtBs3B,EAASroD,MAAM+wB,QAAQ,QACvBq3B,EAAYpoD,MAAM+wB,QAAQ,OAC1Bs3B,EAASvpC,QAAUtvB,KAAKmtF,gBAAgBl7D,KAAKjyB,QAG7CotF,EAAQ58E,MAAM+wB,QAAQ,OACtBs3B,EAASroD,MAAM+wB,QAAQ,OACvBq3B,EAAYpoD,MAAM+wB,QAAQ,QAC1Bs3B,EAASvpC,QAAU,MAErBtvB,KAAK2+C,yBAQP/+C,EAAQ++C,sBAAwB,WAuB9B,GArBI3+C,KAAKstF,eACPttF,KAAK2R,IAAI,SAAU3R,KAAKstF,eAGGpnF,SAAzBlG,KAAKutF,kBACPvtF,KAAKutF,gBAAgB9hC,uBACrBzrD,KAAKutF,gBAAkBrnF,OACvBlG,KAAKwtF,oBAAsB,KAC3BxtF,KAAK24C,oBAAqB,GAI5B34C,KAAKitF,8BAGLjtF,KAAKw5C,kBAAmB,EAGxBx5C,KAAK04D,8BAA+B,EACpC14D,KAAK24D,sBAAuB,EAEP,GAAjB34D,KAAKs9C,SAAkB,CACzB,KAAOt9C,KAAK8hD,gBAAgBvhC,iBAC1BvgB,KAAK8hD,gBAAgBtyC,YAAYxP,KAAK8hD,gBAAgBthC,WAGxDxgB,MAAK8hD,gBAAgBhhC,UAAY,oHAEc9gB,KAAKwzC,UAAUjT,OAAY,IAAG,mLAG9BvgC,KAAKwzC,UAAUjT,OAAa,KAAG,iBAC1C,GAAhCvgC,KAAK4rF,yBAAgC5rF,KAAKmzC,iBAAiBC,KAC7DpzC,KAAK8hD,gBAAgBhhC,WAAa,+JAGa9gB,KAAKwzC,UAAUjT,OAAiB,SAAG,iBAE3C,GAAhCvgC,KAAK+rF,yBAAgE,GAAhC/rF,KAAK4rF,0BACjD5rF,KAAK8hD,gBAAgBhhC,WAAa,+JAGW9gB,KAAKwzC,UAAUjT,OAAiB,SAAG,kBAElD,GAA5BvgC,KAAKisF,sBACPjsF,KAAK8hD,gBAAgBhhC,WAAa,+JAGa9gB,KAAKwzC,UAAUjT,OAAY,IAAG,iBAK/E,IAAIktD,GAAgB79E,SAASy9E,eAAe,6BAC5CI,GAAcn+D,QAAUtvB,KAAK0tF,sBAAsBz7D,KAAKjyB,KACxD,IAAI2tF,GAAgB/9E,SAASy9E,eAAe,iCAE5C,IADAM,EAAcr+D,QAAUtvB,KAAK4tF,sBAAsB37D,KAAKjyB,MACpB,GAAhCA,KAAK4rF,yBAAgC5rF,KAAKmzC,iBAAiBC,KAAM,CACnE,GAAIy6C,GAAaj+E,SAASy9E,eAAe,8BACzCQ,GAAWv+D,QAAUtvB,KAAK8tF,UAAU77D,KAAKjyB,UAEtC,IAAoC,GAAhCA,KAAK+rF,yBAAgE,GAAhC/rF,KAAK4rF,wBAA8B,CAC/E,GAAIiC,GAAaj+E,SAASy9E,eAAe,8BACzCQ,GAAWv+D,QAAUtvB,KAAK+tF,uBAAuB97D,KAAKjyB,MAExD,GAAgC,GAA5BA,KAAKisF,oBAA8B,CACrC,GAAIj6C,GAAepiC,SAASy9E,eAAe,4BAC3Cr7C,GAAa1iB,QAAUtvB,KAAK4+C,gBAAgB3sB,KAAKjyB,MAEnD,GAAI64D,GAAWjpD,SAASy9E,eAAe,gCACvCx0B,GAASvpC,QAAUtvB,KAAKmtF,gBAAgBl7D,KAAKjyB,MAE7CA,KAAKstF,cAAgBttF,KAAK2+C,sBAAsB1sB,KAAKjyB,MACrDA,KAAKwR,GAAG,SAAUxR,KAAKstF,mBAEpB,CACHttF,KAAK44D,YAAY93C,UAAY,qIAEkB9gB,KAAKwzC,UAAUjT,OAAa,KAAI,gBAC/E,IAAIytD,GAAiBp+E,SAASy9E,eAAe,oCAC7CW,GAAe1+D,QAAUtvB,KAAKmtF,gBAAgBl7D,KAAKjyB,QAWvDJ,EAAQ8tF,sBAAwB,WAE9B1tF,KAAKgtF,uBACDhtF,KAAKstF,eACPttF,KAAK2R,IAAI,SAAU3R,KAAKstF,eAI1BttF,KAAK8hD,gBAAgBhhC,UAAY,kHAEc9gB,KAAKwzC,UAAUjT,OAAa,KAAI,wMAGFvgC,KAAKwzC,UAAUjT,OAAuB,eAAI,gBAGvH,IAAI0tD,GAAar+E,SAASy9E,eAAe,0BACzCY,GAAW3+D,QAAUtvB,KAAK2+C,sBAAsB1sB,KAAKjyB,MAGrDA,KAAKstF,cAAgBttF,KAAKkuF,SAASj8D,KAAKjyB,MACxCA,KAAKwR,GAAG,SAAUxR,KAAKstF,gBASzB1tF,EAAQguF,sBAAwB,WAE9B5tF,KAAKgtF,uBACLhtF,KAAKymF,cAAa,GAClBzmF,KAAKw5C,kBAAmB,EAEpBx5C,KAAKstF,eACPttF,KAAK2R,IAAI,SAAU3R,KAAKstF,eAG1BttF,KAAKymF,eACLzmF,KAAK24D,sBAAuB,EAC5B34D,KAAK04D,8BAA+B,EAEpC14D,KAAK8hD,gBAAgBhhC,UAAY,kHAEgB9gB,KAAKwzC,UAAUjT,OAAa,KAAI,wMAGFvgC,KAAKwzC,UAAUjT,OAAwB,gBAAI,gBAG1H,IAAI0tD,GAAar+E,SAASy9E,eAAe,0BACzCY,GAAW3+D,QAAUtvB,KAAK2+C,sBAAsB1sB,KAAKjyB,MAGrDA,KAAKstF,cAAgBttF,KAAKmuF,eAAel8D,KAAKjyB,MAC9CA,KAAKwR,GAAG,SAAUxR,KAAKstF,eAGvBttF,KAAKy5C,gBAA8B,aAAIz5C,KAAKg/C,aAC5Ch/C,KAAKy5C,gBAAkC,iBAAIz5C,KAAKkgD,iBAChDlgD,KAAKg/C,aAAeh/C,KAAKmuF,eACzBnuF,KAAKkgD,iBAAmBlgD,KAAKouF,eAG7BpuF,KAAK84C,WAQPl5C,EAAQmuF,uBAAyB,WAE/B/tF,KAAKgtF,uBACLhtF,KAAK24C,oBAAqB,EAEtB34C,KAAKstF,eACPttF,KAAK2R,IAAI,SAAU3R,KAAKstF,eAG1BttF,KAAKutF,gBAAkBvtF,KAAK8rF,mBAC5B9rF,KAAKutF,gBAAgB/hC,sBAErBxrD,KAAK8hD,gBAAgBhhC,UAAY,kHAEc9gB,KAAKwzC,UAAUjT,OAAa,KAAI,wMAGFvgC,KAAKwzC,UAAUjT,OAA4B,oBAAI,gBAG5H,IAAI0tD,GAAar+E,SAASy9E,eAAe,0BACzCY,GAAW3+D,QAAUtvB,KAAK2+C,sBAAsB1sB,KAAKjyB,MAGrDA,KAAKy5C,gBAA8B,aAASz5C,KAAKg/C,aACjDh/C,KAAKy5C,gBAAkC,iBAAKz5C,KAAKkgD,iBACjDlgD,KAAKy5C,gBAA4B,WAAWz5C,KAAK+/C,WACjD//C,KAAKy5C,gBAAkC,iBAAKz5C,KAAKi/C,iBACjDj/C,KAAKy5C,gBAA+B,cAAQz5C,KAAK0/C,cACjD1/C,KAAKg/C,aAAmBh/C,KAAKquF,mBAC7BruF,KAAK+/C,WAAmB,aACxB//C,KAAK0/C,cAAmB1/C,KAAKsuF,iBAC7BtuF,KAAKi/C,iBAAmB,aACxBj/C,KAAKkgD,iBAAmBlgD,KAAKuuF,oBAG7BvuF,KAAK84C,WAaPl5C,EAAQyuF,mBAAqB,SAASjzD,GACpCp7B,KAAKutF,gBAAgBlmC,aAAanhC,KAAKuiB,WACvCzoC,KAAKutF,gBAAgBlmC,aAAalhC,GAAGsiB,WACrCzoC,KAAKwtF,oBAAsBxtF,KAAKutF,gBAAgB7hC,wBAAwB1rD,KAAK2/C,qBAAqBvkB,EAAQjrB,GAAGnQ,KAAK6/C,qBAAqBzkB,EAAQhrB,IAC9G,OAA7BpQ,KAAKwtF,sBACPxtF,KAAKwtF,oBAAoB9kD,SACzB1oC,KAAKw5C,kBAAmB,GAE1Bx5C,KAAK84C,WASPl5C,EAAQ0uF,iBAAmB,SAASplF,GAClC,GAAIkyB,GAAUp7B,KAAK6+C,YAAY31C,EAAMquB,QAAQtO,OACZ,QAA7BjpB,KAAKwtF,qBAA6DtnF,SAA7BlG,KAAKwtF,sBAC5CxtF,KAAKwtF,oBAAoBr9E,EAAInQ,KAAK2/C,qBAAqBvkB,EAAQjrB,GAC/DnQ,KAAKwtF,oBAAoBp9E,EAAIpQ,KAAK6/C,qBAAqBzkB,EAAQhrB,IAEjEpQ,KAAK84C,WAGPl5C,EAAQ2uF,oBAAsB,SAASnzD,GACrC,GAAIozD,GAAUxuF,KAAKk/C,WAAW9jB,EACf,OAAXozD,GACqD,GAAnDxuF,KAAKutF,gBAAgBlmC,aAAanhC,KAAKokB,WACzCtqC,KAAKyuF,UAAUD,EAAQnuF,GAAIL,KAAKutF,gBAAgBpnE,GAAG9lB,IACnDL,KAAKutF,gBAAgBlmC,aAAanhC,KAAKuiB,YAEY,GAAjDzoC,KAAKutF,gBAAgBlmC,aAAalhC,GAAGmkB,WACvCtqC,KAAKyuF,UAAUzuF,KAAKutF,gBAAgBrnE,KAAK7lB,GAAImuF,EAAQnuF,IACrDL,KAAKutF,gBAAgBlmC,aAAalhC,GAAGsiB,aAIvCzoC,KAAKutF,gBAAgB1hC,uBAEvB7rD,KAAKw5C,kBAAmB,EACxBx5C,KAAK84C,WASPl5C,EAAQuuF,eAAiB,SAAS/yD,GAChC,GAAoC,GAAhCp7B,KAAK4rF,wBAA8B,CACrC,GAAIpwC,GAAOx7C,KAAKk/C,WAAW9jB,EACf,OAARogB,IACEA,EAAKsS,YAAc,EACrB4gC,MAAM,sCAGN1uF,KAAKq/C,cAAc7D,GAAK,GAExBx7C,KAAKgjD,QAAiB,QAAS,MAAc,WAAI,GAAI7/C,IAAM9C,GAAG,oBAAoBL,KAAKwzC,WACvFxzC,KAAKgjD,QAAiB,QAAS,MAAc,WAAE7yC,EAAIqrC,EAAKrrC,EACxDnQ,KAAKgjD,QAAiB,QAAS,MAAc,WAAE5yC,EAAIorC,EAAKprC,EACxDpQ,KAAKgjD,QAAiB,QAAS,MAAiB,cAAI,GAAI7/C,IAAM9C,GAAG,uBAAuBL,KAAKwzC,WAC7FxzC,KAAKgjD,QAAiB,QAAS,MAAiB,cAAE7yC,EAAIqrC,EAAKrrC,EAC3DnQ,KAAKgjD,QAAiB,QAAS,MAAiB,cAAE5yC,EAAIorC,EAAKprC,EAC3DpQ,KAAKgjD,QAAiB,QAAS,MAAiB,cAAEgD,aAAe,iBAGjEhmD,KAAKo0C,MAAsB,eAAI,GAAIpxC,IAAM3C,GAAG,iBAAiB6lB,KAAKs1B,EAAKn7C,GAAG8lB,GAAGnmB,KAAKgjD,QAAiB,QAAS,MAAc,WAAE3iD,IAAKL,KAAMA,KAAKwzC,WAC5IxzC,KAAKo0C,MAAsB,eAAEluB,KAAOs1B,EACpCx7C,KAAKo0C,MAAsB,eAAEsN,WAAY,EACzC1hD,KAAKo0C,MAAsB,eAAEyR,QAAS,EACtC7lD,KAAKo0C,MAAsB,eAAE9J,UAAW,EACxCtqC,KAAKo0C,MAAsB,eAAEjuB,GAAKnmB,KAAKgjD,QAAiB,QAAS,MAAc,WAC/EhjD,KAAKo0C,MAAsB,eAAE2O,IAAM/iD,KAAKgjD,QAAiB,QAAS,MAAiB,cAEnFhjD,KAAKy5C,gBAA+B,cAAIz5C,KAAK0/C,cAC7C1/C,KAAK0/C,cAAgB,SAASx2C,GAC5B,GAAIkyB,GAAUp7B,KAAK6+C,YAAY31C,EAAMquB,QAAQtO,OAC7CjpB,MAAKgjD,QAAiB,QAAS,MAAc,WAAE7yC,EAAInQ,KAAK2/C,qBAAqBvkB,EAAQjrB,GACrFnQ,KAAKgjD,QAAiB,QAAS,MAAc,WAAE5yC,EAAIpQ,KAAK6/C,qBAAqBzkB,EAAQhrB,GACrFpQ,KAAKgjD,QAAiB,QAAS,MAAiB,cAAE7yC,EAAI,IAAOnQ,KAAK2/C,qBAAqBvkB,EAAQjrB,GAAKnQ,KAAKo0C,MAAsB,eAAEluB,KAAK/V,GACtInQ,KAAKgjD,QAAiB,QAAS,MAAiB,cAAE5yC,EAAIpQ,KAAK6/C,qBAAqBzkB,EAAQhrB,IAG1FpQ,KAAK46C,QAAS,EACd56C,KAAK0O,YAMb9O,EAAQwuF,eAAiB,SAAShzD,GAChC,GAAoC,GAAhCp7B,KAAK4rF,wBAA8B,CAGrC5rF,KAAK0/C,cAAgB1/C,KAAKy5C,gBAA+B,oBAClDz5C,MAAKy5C,gBAA+B,aAG3C,IAAIk1C,GAAgB3uF,KAAKo0C,MAAsB,eAAEwS,aAG1C5mD,MAAKo0C,MAAsB,qBAC3Bp0C,MAAKgjD,QAAiB,QAAS,MAAc,iBAC7ChjD,MAAKgjD,QAAiB,QAAS,MAAiB,aAEvD,IAAIxH,GAAOx7C,KAAKk/C,WAAW9jB,EACf,OAARogB,IACEA,EAAKsS,YAAc,EACrB4gC,MAAM,sCAGN1uF,KAAK4uF,YAAYD,EAAcnzC,EAAKn7C,IACpCL,KAAK2+C,0BAGT3+C,KAAKymF,iBAQT7mF,EAAQsuF,SAAW,WACjB,GAAIluF,KAAKisF,qBAAwC,GAAjBjsF,KAAKs9C,SAAkB,CACrD,GAAI6tC,GAAiBnrF,KAAKkrF,yBAAyBlrF,KAAK+5C,iBACpD80C,GAAexuF,GAAGM,EAAK+D,aAAayL,EAAEg7E,EAAelkF,KAAKmJ,EAAE+6E,EAAe9jF,IAAIke,MAAM,MAAM8gC,gBAAe,EAAKC,gBAAe,EAClI,IAAItmD,KAAKmzC,iBAAiB7hC,IACxB,GAAwC,GAApCtR,KAAKmzC,iBAAiB7hC,IAAIjM,OAAa,CACzC,GAAI+M,GAAKpS,IACTA,MAAKmzC,iBAAiB7hC,IAAIu9E,EAAa,SAASC,GAC9C18E,EAAG8nC,UAAU5oC,IAAIw9E,GACjB18E,EAAGusC,wBACHvsC,EAAGwoC,QAAS,EACZxoC,EAAG1D,cAILggF,OAAM1uF,KAAKwzC,UAAUjT,OAAiB,UACtCvgC,KAAK2+C,wBACL3+C,KAAK46C,QAAS,EACd56C,KAAK0O,YAIP1O,MAAKk6C,UAAU5oC,IAAIu9E,GACnB7uF,KAAK2+C,wBACL3+C,KAAK46C,QAAS,EACd56C,KAAK0O,UAWX9O,EAAQgvF,YAAc,SAASG,EAAaC,GAC1C,GAAqB,GAAjBhvF,KAAKs9C,SAAkB,CACzB,GAAIuxC,IAAe3oE,KAAK6oE,EAAc5oE,GAAG6oE,EACzC,IAAIhvF,KAAKmzC,iBAAiBG,QACxB,GAA4C,GAAxCtzC,KAAKmzC,iBAAiBG,QAAQjuC,OAAa,CAC7C,GAAI+M,GAAKpS,IACTA,MAAKmzC,iBAAiBG,QAAQu7C,EAAa,SAASC,GAClD18E,EAAG+nC,UAAU7oC,IAAIw9E,GACjB18E,EAAGwoC,QAAS,EACZxoC,EAAG1D,cAILggF,OAAM1uF,KAAKwzC,UAAUjT,OAAkB,WACvCvgC,KAAK46C,QAAS,EACd56C,KAAK0O,YAIP1O,MAAKm6C,UAAU7oC,IAAIu9E,GACnB7uF,KAAK46C,QAAS,EACd56C,KAAK0O,UAUX9O,EAAQ6uF,UAAY,SAASM,EAAaC,GACxC,GAAqB,GAAjBhvF,KAAKs9C,SAAkB,CACzB,GAAIuxC,IAAexuF,GAAIL,KAAKutF,gBAAgBltF,GAAI6lB,KAAK6oE,EAAc5oE,GAAG6oE,EACtE,IAAIhvF,KAAKmzC,iBAAiBE,SACxB,GAA6C,GAAzCrzC,KAAKmzC,iBAAiBE,SAAShuC,OAAa,CAC9C,GAAI+M,GAAKpS,IACTA,MAAKmzC,iBAAiBE,SAASw7C,EAAa,SAASC,GACnD18E,EAAG+nC,UAAUpnC,OAAO+7E,GACpB18E,EAAGwoC,QAAS,EACZxoC,EAAG1D,cAILggF,OAAM1uF,KAAKwzC,UAAUjT,OAAkB,WACvCvgC,KAAK46C,QAAS,EACd56C,KAAK0O,YAIP1O,MAAKm6C,UAAUpnC,OAAO87E,GACtB7uF,KAAK46C,QAAS,EACd56C,KAAK0O,UAUX9O,EAAQkuF,UAAY,WAClB,GAAI9tF,KAAKmzC,iBAAiBC,MAAyB,GAAjBpzC,KAAKs9C,SAAkB,CACvD,GAAI9B,GAAOx7C,KAAK6rF,mBACZ96E,GAAQ1Q,GAAGm7C,EAAKn7C,GAClBklB,MAAOi2B,EAAKj2B,MACZlV,MAAOmrC,EAAKnrC,MACZujC,MAAO4H,EAAK5H,MACZrpC,OACEa,WAAWowC,EAAKjxC,MAAMa,WACtBC,OAAOmwC,EAAKjxC,MAAMc,OAClBC,WACEF,WAAWowC,EAAKjxC,MAAMe,UAAUF,WAChCC,OAAOmwC,EAAKjxC,MAAMe,UAAUD,SAGlC,IAAyC,GAArCrL,KAAKmzC,iBAAiBC,KAAK/tC,OAAa,CAC1C,GAAI+M,GAAKpS,IACTA,MAAKmzC,iBAAiBC,KAAKriC,EAAM,SAAU+9E,GACzC18E,EAAG8nC,UAAUnnC,OAAO+7E,GACpB18E,EAAGusC,wBACHvsC,EAAGwoC,QAAS,EACZxoC,EAAG1D,cAILggF,OAAM1uF,KAAKwzC,UAAUjT,OAAkB,eAIzCmuD,OAAM1uF,KAAKwzC,UAAUjT,OAAuB,iBAYhD3gC,EAAQg/C,gBAAkB,WACxB,IAAK5+C,KAAKisF,qBAAwC,GAAjBjsF,KAAKs9C,SACpC,GAAKt9C,KAAKksF,sBA4BRwC,MAAM1uF,KAAKwzC,UAAUjT,OAA2B,wBA5BjB,CAC/B,GAAI0uD,GAAgBjvF,KAAKysF,mBACrByC,EAAgBlvF,KAAK2sF,kBACzB,IAAI3sF,KAAKmzC,iBAAiBI,IAAK,CAC7B,GAAInhC,GAAKpS,KACL+Q,GAAQ0iC,MAAOw7C,EAAe76C,MAAO86C,IACrClvF,KAAKmzC,iBAAiBI,IAAIluC,OAAS,GACrCrF,KAAKmzC,iBAAiBI,IAAIxiC,EAAM,SAAU+9E,GACxC18E,EAAG+nC,UAAU3lC,OAAOs6E,EAAc16C,OAClChiC,EAAG8nC,UAAU1lC,OAAOs6E,EAAcr7C,OAClCrhC,EAAGq0E,eACHr0E,EAAGwoC,QAAS,EACZxoC,EAAG1D,UAILggF,MAAM1uF,KAAKwzC,UAAUjT,OAAoB,iBAI3CvgC,MAAKm6C,UAAU3lC,OAAO06E,GACtBlvF,KAAKk6C,UAAU1lC,OAAOy6E,GACtBjvF,KAAKymF,eACLzmF,KAAK46C,QAAS,EACd56C,KAAK0O,WAYT,SAAS7O,EAAQD,EAASM,GAE9B,GAAIS,GAAOT,EAAoB,EAE/BN,GAAQk5D,iBAAmB,WAEzB,GAAIq2B,GAAUv/E,SAASy9E,eAAe,6BACvB,OAAX8B,GACFnvF,KAAK8W,iBAAiBtH,YAAY2/E,GAEpCv/E,SAASwa,UAAY,MAWvBxqB,EAAQm5D,wBAA0B,WAChC/4D,KAAK84D,mBAEL94D,KAAK+hD,iBACL,IAAIA,IAAkB,KAAK,OAAO,OAAO,QAAQ,SAAS,UAAU,eAChEqtC,GAAwB,UAAU,YAAY,YAAY,aAAa,UAAU,WAAW,aAEhGpvF,MAAK+hD,eAAwB,QAAInyC,SAASK,cAAc,OACxDjQ,KAAK+hD,eAAwB,QAAE1hD,GAAK,6BACpCL,KAAK+hD,eAAwB,QAAEvxC,MAAMiQ,SAAW,WAChDzgB,KAAK+hD,eAAwB,QAAEvxC,MAAMI,MAAQ5Q,KAAKmc,MAAMC,OAAOC,YAAc,KAC7Erc,KAAK+hD,eAAwB,QAAEvxC,MAAMK,OAAS7Q,KAAKmc,MAAMC,OAAOsF,aAAe,KAC/E1hB,KAAK8W,iBAAiBk6B,aAAahxC,KAAK+hD,eAAwB,QAAE/hD,KAAKmc,MAEvE,KAAK,GAAIjX,GAAI,EAAGA,EAAI68C,EAAe18C,OAAQH,IACzClF,KAAK+hD,eAAeA,EAAe78C,IAAM0K,SAASK,cAAc,OAChEjQ,KAAK+hD,eAAeA,EAAe78C,IAAI7E,GAAK,sBAAwB0hD,EAAe78C,GACnFlF,KAAK+hD,eAAeA,EAAe78C,IAAIsC,UAAY,sBAAwBu6C,EAAe78C,GAC1FlF,KAAK+hD,eAAwB,QAAEjyC,YAAY9P,KAAK+hD,eAAeA,EAAe78C,KAC9ElF,KAAK+hD,eAAeA,EAAe78C,IAAI6b,YAAc/gB,KAAKovF,EAAqBlqF,IAAI+sB,KAAKjyB,KAG1F4P,UAASwa,UAAYpqB,KAAKqvF,cAAcp9D,KAAKjyB,OAQ/CJ,EAAQyvF,cAAgB,WACtBrvF,KAAKs+C,eACLt+C,KAAKm+C,eACLn+C,KAAKy+C,aAYP7+C,EAAQs+C,QAAU,SAASh1C,GACzBlJ,KAAKg5C,WAAah5C,KAAKwzC,UAAUmD,SAASC,MAAMxmC,EAChDpQ,KAAK0O,QACL/N,EAAKsI,eAAeC,GAChBlJ,KAAK+hD,iBACP/hD,KAAK+hD,eAAmB,GAAEv6C,WAAa,YAS3C5H,EAAQw+C,UAAY,SAASl1C,GAC3BlJ,KAAKg5C,YAAch5C,KAAKwzC,UAAUmD,SAASC,MAAMxmC,EACjDpQ,KAAK0O,QACL/N,EAAKsI,eAAeC,GAChBlJ,KAAK+hD,iBACP/hD,KAAK+hD,eAAqB,KAAEv6C,WAAa,YAS7C5H,EAAQy+C,UAAY,SAASn1C,GAC3BlJ,KAAK+4C,WAAa/4C,KAAKwzC,UAAUmD,SAASC,MAAMzmC,EAChDnQ,KAAK0O,QACL/N,EAAKsI,eAAeC,GAChBlJ,KAAK+hD,iBACP/hD,KAAK+hD,eAAqB,KAAEv6C,WAAa,YAS7C5H,EAAQ2+C,WAAa,SAASr1C,GAC5BlJ,KAAK+4C,YAAc/4C,KAAKwzC,UAAUmD,SAASC,MAAMxmC,EACjDpQ,KAAK0O,QACL/N,EAAKsI,eAAeC,GAChBlJ,KAAK+hD,iBACP/hD,KAAK+hD,eAAsB,MAAEv6C,WAAa,YAS9C5H,EAAQ4+C,QAAU,SAASt1C,GACzBlJ,KAAKi5C,cAAgBj5C,KAAKwzC,UAAUmD,SAASC,MAAMrb,KACnDv7B,KAAK0O,QACL/N,EAAKsI,eAAeC,GAChBlJ,KAAK+hD,iBACP/hD,KAAK+hD,eAAuB,OAAEv6C,WAAa,YAS/C5H,EAAQ8+C,SAAW,WACjB1+C,KAAKi5C,eAAiBj5C,KAAKwzC,UAAUmD,SAASC,MAAMrb,KACpDv7B,KAAK0O,QACL/N,EAAKsI,eAAeC,OAChBlJ,KAAK+hD,iBACP/hD,KAAK+hD,eAAwB,QAAEv6C,WAAa,YAShD5H,EAAQ6+C,UAAY,WAClBz+C,KAAKi5C,cAAgB,EACjBj5C,KAAK+hD,iBACP/hD,KAAK+hD,eAAuB,OAAEv6C,UAAYxH,KAAK+hD,eAAuB,OAAEv6C,UAAUkE,QAAQ,UAAU,IACpG1L,KAAK+hD,eAAwB,QAAEv6C,UAAYxH,KAAK+hD,eAAwB,QAAEv6C,UAAUkE,QAAQ,UAAU,MAS1G9L,EAAQu+C,aAAe,WACrBn+C,KAAKg5C,WAAa,EACdh5C,KAAK+hD,iBACP/hD,KAAK+hD,eAAmB,GAAEv6C,UAAYxH,KAAK+hD,eAAmB,GAAEv6C,UAAUkE,QAAQ,UAAU,IAC5F1L,KAAK+hD,eAAqB,KAAEv6C,UAAYxH,KAAK+hD,eAAqB,KAAEv6C,UAAUkE,QAAQ,UAAU,MASpG9L,EAAQ0+C,aAAe,WACrBt+C,KAAK+4C,WAAa,EACd/4C,KAAK+hD,iBACP/hD,KAAK+hD,eAAqB,KAAEv6C,UAAYxH,KAAK+hD,eAAqB,KAAEv6C,UAAUkE,QAAQ,UAAU,IAChG1L,KAAK+hD,eAAsB,MAAEv6C,UAAYxH,KAAK+hD,eAAsB,MAAEv6C,UAAUkE,QAAQ,UAAU,OAOlG,SAAS7L,EAAQD,GAErBA,EAAQuiD,aAAe,WACrB,IAAK,GAAItG,KAAU77C,MAAKyzC,MACtB,GAAIzzC,KAAKyzC,MAAMjuC,eAAeq2C,GAAS,CACrC,GAAIL,GAAOx7C,KAAKyzC,MAAMoI,EACO,IAAzBL,EAAKsR,mBACPtR,EAAKtH,MAAQ,MAYrBt0C,EAAQk7C,yBAA2B,WACjC,GAAiD,GAA7C96C,KAAKwzC,UAAUuD,mBAAmBppC,SAAmB3N,KAAK45C,YAAYv0C,OAAS,EAAG,CACjC,MAA/CrF,KAAKwzC,UAAUuD,mBAAmB/c,WAAoE,MAA/Ch6B,KAAKwzC,UAAUuD,mBAAmB/c,UAC3Fh6B,KAAKwzC,UAAUuD,mBAAmBC,iBAAmB,GAGrDh3C,KAAKwzC,UAAUuD,mBAAmBC,gBAAkBpyC,KAAK+iB,IAAI3nB,KAAKwzC,UAAUuD,mBAAmBC,iBAG9C,MAA/Ch3C,KAAKwzC,UAAUuD,mBAAmB/c,WAAoE,MAA/Ch6B,KAAKwzC,UAAUuD,mBAAmB/c,UAChD,GAAvCh6B,KAAKwzC,UAAU2D,aAAaxpC,UAC9B3N,KAAKwzC,UAAU2D,aAAa7wC,KAAO,YAIM,GAAvCtG,KAAKwzC,UAAU2D,aAAaxpC,UAC9B3N,KAAKwzC,UAAU2D,aAAa7wC,KAAO,aAIvC,IACIk1C,GAAMK,EADNyzC,EAAU,EAEVC,GAAe,EACfC,GAAiB,CAErB,KAAK3zC,IAAU77C,MAAKyzC,MACdzzC,KAAKyzC,MAAMjuC,eAAeq2C,KAC5BL,EAAOx7C,KAAKyzC,MAAMoI,GACA,IAAdL,EAAKtH,MACPq7C,GAAe,EAGfC,GAAiB,EAEfF,EAAU9zC,EAAKpH,MAAM/uC,SACvBiqF,EAAU9zC,EAAKpH,MAAM/uC,QAM3B,IAAsB,GAAlBmqF,GAA0C,GAAhBD,EAC5Bb,MAAM,yHACN1uF,KAAK+6C,YAAW,EAAK/6C,KAAKwzC,UAAUiC,WAAW9nC,SAC1C3N,KAAKwzC,UAAUiC,WAAW9nC,SAC7B3N,KAAK0O,YAGJ,CAEH1O,KAAKyvF,mBAGiB,GAAlBD,GACFxvF,KAAK0vF,iBAAiBJ,EAGxB,IAAIK,GAAe3vF,KAAK4vF,kBAGxB5vF,MAAK6vF,uBAAuBF,GAG5B3vF,KAAK0O,WAYX9O,EAAQiwF,uBAAyB,SAASF,GACxC,GAAI9zC,GAAQL,CAGZ,KAAK,GAAItH,KAASy7C,GAChB,GAAIA,EAAanqF,eAAe0uC,GAE9B,IAAK2H,IAAU8zC,GAAaz7C,GAAOT,MAC7Bk8C,EAAaz7C,GAAOT,MAAMjuC,eAAeq2C,KAC3CL,EAAOm0C,EAAaz7C,GAAOT,MAAMoI,GACkB,MAA/C77C,KAAKwzC,UAAUuD,mBAAmB/c,WAAoE,MAA/Ch6B,KAAKwzC,UAAUuD,mBAAmB/c,UACvFwhB,EAAKgE,SACPhE,EAAKrrC,EAAIw/E,EAAaz7C,GAAO47C,OAC7Bt0C,EAAKgE,QAAS,EAEdmwC,EAAaz7C,GAAO47C,QAAUH,EAAaz7C,GAAO+C,aAIhDuE,EAAKiE,SACPjE,EAAKprC,EAAIu/E,EAAaz7C,GAAO47C,OAC7Bt0C,EAAKiE,QAAS,EAEdkwC,EAAaz7C,GAAO47C,QAAUH,EAAaz7C,GAAO+C,aAGtDj3C,KAAK+vF,kBAAkBv0C,EAAKpH,MAAMoH,EAAKn7C,GAAGsvF,EAAan0C,EAAKtH,OAOpEl0C,MAAKg9C,cAUPp9C,EAAQgwF,iBAAmB,WACzB,GACI/zC,GAAQL,EAAMtH,EADdy7C,IAKJ,KAAK9zC,IAAU77C,MAAKyzC,MACdzzC,KAAKyzC,MAAMjuC,eAAeq2C,KAC5BL,EAAOx7C,KAAKyzC,MAAMoI,GAClBL,EAAKgE,QAAS,EACdhE,EAAKiE,QAAS,EACqC,MAA/Cz/C,KAAKwzC,UAAUuD,mBAAmB/c,WAAoE,MAA/Ch6B,KAAKwzC,UAAUuD,mBAAmB/c,UAC3FwhB,EAAKprC,EAAIpQ,KAAKwzC,UAAUuD,mBAAmBC,gBAAgBwE,EAAKtH,MAGhEsH,EAAKrrC,EAAInQ,KAAKwzC,UAAUuD,mBAAmBC,gBAAgBwE,EAAKtH,MAEjChuC,SAA7BypF,EAAan0C,EAAKtH,SACpBy7C,EAAan0C,EAAKtH,QAAU87C,OAAQ,EAAGv8C,SAAWq8C,OAAO,EAAG74C,YAAY,IAE1E04C,EAAan0C,EAAKtH,OAAO87C,QAAU,EACnCL,EAAan0C,EAAKtH,OAAOT,MAAMoI,GAAUL,EAK7C,IAAIy0C,GAAW,CACf,KAAK/7C,IAASy7C,GACRA,EAAanqF,eAAe0uC,IAC1B+7C,EAAWN,EAAaz7C,GAAO87C,SACjCC,EAAWN,EAAaz7C,GAAO87C,OAMrC,KAAK97C,IAASy7C,GACRA,EAAanqF,eAAe0uC,KAC9By7C,EAAaz7C,GAAO+C,aAAeg5C,EAAW,GAAKjwF,KAAKwzC,UAAUuD,mBAAmBE,YACrF04C,EAAaz7C,GAAO+C,aAAgB04C,EAAaz7C,GAAO87C,OAAS,EACjEL,EAAaz7C,GAAO47C,OAASH,EAAaz7C,GAAO+C,YAAe,IAAO04C,EAAaz7C,GAAO87C,OAAS,GAAKL,EAAaz7C,GAAO+C,YAIjI,OAAO04C,IAUT/vF,EAAQ8vF,iBAAmB,SAASJ,GAClC,GAAIzzC,GAAQL,CAGZ,KAAKK,IAAU77C,MAAKyzC,MACdzzC,KAAKyzC,MAAMjuC,eAAeq2C,KAC5BL,EAAOx7C,KAAKyzC,MAAMoI,GACdL,EAAKpH,MAAM/uC,QAAUiqF,IACvB9zC,EAAKtH,MAAQ,GAMnB,KAAK2H,IAAU77C,MAAKyzC,MACdzzC,KAAKyzC,MAAMjuC,eAAeq2C,KAC5BL,EAAOx7C,KAAKyzC,MAAMoI,GACA,GAAdL,EAAKtH,OACPl0C,KAAKkwF,UAAU,EAAE10C,EAAKpH,MAAMoH,EAAKn7C,MAgBzCT,EAAQ6vF,iBAAmB,WACzBzvF,KAAKwzC,UAAUiC,WAAW9nC,SAAU,EACpC3N,KAAKwzC,UAAUsB,QAAQC,UAAUpnC,SAAU,EAC3C3N,KAAKwzC,UAAUsB,QAAQU,sBAAsB7nC,SAAU,EACvD3N,KAAKq4D,2BACsC,GAAvCr4D,KAAKwzC,UAAU2D,aAAaxpC,UAC9B3N,KAAKwzC,UAAU2D,aAAaC,SAAU,GAExCp3C,KAAK09C,0BAcP99C,EAAQmwF,kBAAoB,SAAS37C,EAAO+7C,EAAUR,EAAcS,GAClE,IAAK,GAAIlrF,GAAI,EAAGA,EAAIkvC,EAAM/uC,OAAQH,IAAK,CACrC,GAAIqhF,GAAY,IAEdA,GADEnyC,EAAMlvC,GAAG2hD,MAAQspC,EACP/7C,EAAMlvC,GAAGghB,KAGTkuB,EAAMlvC,GAAGihB,EAIvB,IAAIkqE,IAAY,CACmC,OAA/CrwF,KAAKwzC,UAAUuD,mBAAmB/c,WAAoE,MAA/Ch6B,KAAKwzC,UAAUuD,mBAAmB/c,UACvFusD,EAAU/mC,QAAU+mC,EAAUryC,MAAQk8C,IACxC7J,EAAU/mC,QAAS,EACnB+mC,EAAUp2E,EAAIw/E,EAAapJ,EAAUryC,OAAO47C,OAC5CO,GAAY,GAIV9J,EAAU9mC,QAAU8mC,EAAUryC,MAAQk8C,IACxC7J,EAAU9mC,QAAS,EACnB8mC,EAAUn2E,EAAIu/E,EAAapJ,EAAUryC,OAAO47C,OAC5CO,GAAY,GAIC,GAAbA,IACFV,EAAapJ,EAAUryC,OAAO47C,QAAUH,EAAapJ,EAAUryC,OAAO+C,YAClEsvC,EAAUnyC,MAAM/uC,OAAS,GAC3BrF,KAAK+vF,kBAAkBxJ,EAAUnyC,MAAMmyC,EAAUlmF,GAAGsvF,EAAapJ,EAAUryC,UAenFt0C,EAAQswF,UAAY,SAASh8C,EAAOE,EAAO+7C,GACzC,IAAK,GAAIjrF,GAAI,EAAGA,EAAIkvC,EAAM/uC,OAAQH,IAAK,CACrC,GAAIqhF,GAAY,IAEdA,GADEnyC,EAAMlvC,GAAG2hD,MAAQspC,EACP/7C,EAAMlvC,GAAGghB,KAGTkuB,EAAMlvC,GAAGihB,IAEA,IAAnBogE,EAAUryC,OAAeqyC,EAAUryC,MAAQA,KAC7CqyC,EAAUryC,MAAQA,EACdE,EAAM/uC,OAAS,GACjBrF,KAAKkwF,UAAUh8C,EAAM,EAAGqyC,EAAUnyC,MAAOmyC,EAAUlmF,OAY3DT,EAAQ0wF,cAAgB,WACtB,IAAK,GAAIz0C,KAAU77C,MAAKyzC,MAClBzzC,KAAKyzC,MAAMjuC,eAAeq2C,KAC5B77C,KAAKyzC,MAAMoI,GAAQ2D,QAAS,EAC5Bx/C,KAAKyzC,MAAMoI,GAAQ4D,QAAS,KAQ9B,SAAS5/C,EAAQD,EAASM,GAuf9B,QAASqwF,KACPvwF,KAAKwzC,UAAU2D,aAAaxpC,SAAW3N,KAAKwzC,UAAU2D,aAAaxpC,OACnE,IAAI6iF,GAAqB5gF,SAASy9E,eAAe,qBACCmD,GAAmBhgF,MAAMpF,WAAhC,GAAvCpL,KAAKwzC,UAAU2D,aAAaxpC,QAAwD,UACR,UAEhF3N,KAAK09C,wBAAuB,GAO9B,QAAS+yC,KACP,IAAK,GAAI50C,KAAU77C,MAAK05C,iBAClB15C,KAAK05C,iBAAiBl0C,eAAeq2C,KACvC77C,KAAK05C,iBAAiBmC,GAAQqR,GAAK,EAAIltD,KAAK05C,iBAAiBmC,GAAQsR,GAAK,EAC1EntD,KAAK05C,iBAAiBmC,GAAQmR,GAAK,EAAIhtD,KAAK05C,iBAAiBmC,GAAQoR,GAAK,EAG7B,IAA7CjtD,KAAKwzC,UAAUuD,mBAAmBppC,SACpC3N,KAAK86C,2BACL41C,EAAiBnwF,KAAKP,KAAM,aAAc,EAAG,8CAC7C0wF,EAAiBnwF,KAAKP,KAAM,aAAc,EAAG,0BAC7C0wF,EAAiBnwF,KAAKP,KAAM,aAAc,EAAG,0BAC7C0wF,EAAiBnwF,KAAKP,KAAM,aAAc,EAAG,wBAC7C0wF,EAAiBnwF,KAAKP,KAAM,eAAgB,EAAG,oBAG/CA,KAAK4kF,kBAEP5kF,KAAK46C,QAAS,EACd56C,KAAK0O;CAMP,QAASiiF,KACP,GAAIjjF,GAAU,gDACVkjF,KACAC,EAAejhF,SAASy9E,eAAe,wBACvCyD,EAAelhF,SAASy9E,eAAe,uBAC3C,IAA4B,GAAxBwD,EAAaE,QAAiB,CAMhC,GALI/wF,KAAKwzC,UAAUsB,QAAQC,UAAUE,uBAAyBj1C,KAAKgxF,gBAAgBl8C,QAAQC,UAAUE,uBAAwB27C,EAAgBhpF,KAAK,0BAA4B5H,KAAKwzC,UAAUsB,QAAQC,UAAUE,uBAC3Mj1C,KAAKwzC,UAAUsB,QAAQI,gBAAkBl1C,KAAKgxF,gBAAgBl8C,QAAQC,UAAUG,gBAAyC07C,EAAgBhpF,KAAK,mBAAqB5H,KAAKwzC,UAAUsB,QAAQI,gBAC1Ll1C,KAAKwzC,UAAUsB,QAAQK,cAAgBn1C,KAAKgxF,gBAAgBl8C,QAAQC,UAAUI,cAA2Cy7C,EAAgBhpF,KAAK,iBAAmB5H,KAAKwzC,UAAUsB,QAAQK,cACxLn1C,KAAKwzC,UAAUsB,QAAQM,gBAAkBp1C,KAAKgxF,gBAAgBl8C,QAAQC,UAAUK,gBAAyCw7C,EAAgBhpF,KAAK,mBAAqB5H,KAAKwzC,UAAUsB,QAAQM,gBAC1Lp1C,KAAKwzC,UAAUsB,QAAQO,SAAWr1C,KAAKgxF,gBAAgBl8C,QAAQC,UAAUM,SAAgDu7C,EAAgBhpF,KAAK,YAAc5H,KAAKwzC,UAAUsB,QAAQO,SACzJ,GAA1Bu7C,EAAgBvrF,OAAa,CAC/BqI,EAAU,kBACVA,GAAW,wBACX,KAAK,GAAIxI,GAAI,EAAGA,EAAI0rF,EAAgBvrF,OAAQH,IAC1CwI,GAAWkjF,EAAgB1rF,GACvBA,EAAI0rF,EAAgBvrF,OAAS,IAC/BqI,GAAW,KAGfA,IAAW,KAET1N,KAAKwzC,UAAU2D,aAAaxpC,SAAW3N,KAAKgxF,gBAAgB75C,aAAaxpC,UAC7C,GAA1BijF,EAAgBvrF,OAAcqI,EAAU,kBACtCA,GAAW,KACjBA,GAAW,iBAAmB1N,KAAKwzC,UAAU2D,aAAaxpC,SAE7C,iDAAXD,IACFA,GAAW,UAGV,IAA4B,GAAxBojF,EAAaC,QAAiB,CAQrC,GAPArjF,EAAU,kBACVA,GAAW,wCACP1N,KAAKwzC,UAAUsB,QAAQQ,UAAUC,cAAgBv1C,KAAKgxF,gBAAgBl8C,QAAQQ,UAAUC,cAAgBq7C,EAAgBhpF,KAAK,iBAAmB5H,KAAKwzC,UAAUsB,QAAQQ,UAAUC,cACjLv1C,KAAKwzC,UAAUsB,QAAQI,gBAAkBl1C,KAAKgxF,gBAAgBl8C,QAAQQ,UAAUJ,gBAAwB07C,EAAgBhpF,KAAK,mBAAqB5H,KAAKwzC,UAAUsB,QAAQI,gBACzKl1C,KAAKwzC,UAAUsB,QAAQK,cAAgBn1C,KAAKgxF,gBAAgBl8C,QAAQQ,UAAUH,cAA0By7C,EAAgBhpF,KAAK,iBAAmB5H,KAAKwzC,UAAUsB,QAAQK,cACvKn1C,KAAKwzC,UAAUsB,QAAQM,gBAAkBp1C,KAAKgxF,gBAAgBl8C,QAAQQ,UAAUF,gBAAwBw7C,EAAgBhpF,KAAK,mBAAqB5H,KAAKwzC,UAAUsB,QAAQM,gBACzKp1C,KAAKwzC,UAAUsB,QAAQO,SAAWr1C,KAAKgxF,gBAAgBl8C,QAAQQ,UAAUD,SAA+Bu7C,EAAgBhpF,KAAK,YAAc5H,KAAKwzC,UAAUsB,QAAQO,SACxI,GAA1Bu7C,EAAgBvrF,OAAa,CAC/BqI,GAAW,gBACX,KAAK,GAAIxI,GAAI,EAAGA,EAAI0rF,EAAgBvrF,OAAQH,IAC1CwI,GAAWkjF,EAAgB1rF,GACvBA,EAAI0rF,EAAgBvrF,OAAS,IAC/BqI,GAAW,KAGfA,IAAW,KAEiB,GAA1BkjF,EAAgBvrF,SAAcqI,GAAW,KACzC1N,KAAKwzC,UAAU2D,cAAgBn3C,KAAKgxF,gBAAgB75C,eACtDzpC,GAAW,mBAAqB1N,KAAKwzC,UAAU2D,cAEjDzpC,GAAW,SAER,CAOH,GANAA,EAAU,kBACN1N,KAAKwzC,UAAUsB,QAAQU,sBAAsBD,cAAgBv1C,KAAKgxF,gBAAgBl8C,QAAQU,sBAAsBD,cAAgBq7C,EAAgBhpF,KAAK,iBAAmB5H,KAAKwzC,UAAUsB,QAAQU,sBAAsBD,cACrNv1C,KAAKwzC,UAAUsB,QAAQI,gBAAkBl1C,KAAKgxF,gBAAgBl8C,QAAQU,sBAAsBN,gBAAwB07C,EAAgBhpF,KAAK,mBAAqB5H,KAAKwzC,UAAUsB,QAAQI,gBACrLl1C,KAAKwzC,UAAUsB,QAAQK,cAAgBn1C,KAAKgxF,gBAAgBl8C,QAAQU,sBAAsBL,cAA0By7C,EAAgBhpF,KAAK,iBAAmB5H,KAAKwzC,UAAUsB,QAAQK,cACnLn1C,KAAKwzC,UAAUsB,QAAQM,gBAAkBp1C,KAAKgxF,gBAAgBl8C,QAAQU,sBAAsBJ,gBAAwBw7C,EAAgBhpF,KAAK,mBAAqB5H,KAAKwzC,UAAUsB,QAAQM,gBACrLp1C,KAAKwzC,UAAUsB,QAAQO,SAAWr1C,KAAKgxF,gBAAgBl8C,QAAQU,sBAAsBH,SAA+Bu7C,EAAgBhpF,KAAK,YAAc5H,KAAKwzC,UAAUsB,QAAQO,SACpJ,GAA1Bu7C,EAAgBvrF,OAAa,CAC/BqI,GAAW,oCACX,KAAK,GAAIxI,GAAI,EAAGA,EAAI0rF,EAAgBvrF,OAAQH,IAC1CwI,GAAWkjF,EAAgB1rF,GACvBA,EAAI0rF,EAAgBvrF,OAAS,IAC/BqI,GAAW,KAGfA,IAAW,MAOb,GALAA,GAAW,wBACXkjF,KACI5wF,KAAKwzC,UAAUuD,mBAAmB/c,WAAah6B,KAAKgxF,gBAAgBj6C,mBAAmB/c,WAAkC42D,EAAgBhpF,KAAK,cAAgB5H,KAAKwzC,UAAUuD,mBAAmB/c,WAChMp1B,KAAK+iB,IAAI3nB,KAAKwzC,UAAUuD,mBAAmBC,kBAAoBh3C,KAAKgxF,gBAAgBj6C,mBAAmBC,iBAAkB45C,EAAgBhpF,KAAK,oBAAsB5H,KAAKwzC,UAAUuD,mBAAmBC,iBACtMh3C,KAAKwzC,UAAUuD,mBAAmBE,aAAej3C,KAAKgxF,gBAAgBj6C,mBAAmBE,aAAgC25C,EAAgBhpF,KAAK,gBAAkB5H,KAAKwzC,UAAUuD,mBAAmBE,aACxK,GAA1B25C,EAAgBvrF,OAAa,CAC/B,IAAK,GAAIH,GAAI,EAAGA,EAAI0rF,EAAgBvrF,OAAQH,IAC1CwI,GAAWkjF,EAAgB1rF,GACvBA,EAAI0rF,EAAgBvrF,OAAS,IAC/BqI,GAAW,KAGfA,IAAW,QAGXA,IAAW,eAEbA,IAAW,KAIb1N,KAAKixF,WAAWnwE,UAAYpT,EAO9B,QAASwjF,KACP,GAAI99E,IAAO,iBAAkB,gBAAiB,iBAC1C+9E,EAAcvhF,SAASwhF,cAAc,6CAA6CvqF,MAClFwqF,EAAU,SAAWF,EAAc,SACnCG,EAAQ1hF,SAASy9E,eAAegE,EACpCC,GAAM9gF,MAAM+wB,QAAU,OACtB,KAAK,GAAIr8B,GAAI,EAAGA,EAAIkO,EAAI/N,OAAQH,IAC1BkO,EAAIlO,IAAMmsF,IACZC,EAAQ1hF,SAASy9E,eAAej6E,EAAIlO,IACpCosF,EAAM9gF,MAAM+wB,QAAU,OAG1BvhC,MAAKswF,gBACc,KAAfa,GACFnxF,KAAKwzC,UAAUuD,mBAAmBppC,SAAU,EAC5C3N,KAAKwzC,UAAUsB,QAAQU,sBAAsB7nC,SAAU,EACvD3N,KAAKwzC,UAAUsB,QAAQC,UAAUpnC,SAAU,GAErB,KAAfwjF,EAC0C,GAA7CnxF,KAAKwzC,UAAUuD,mBAAmBppC,UACpC3N,KAAKwzC,UAAUuD,mBAAmBppC,SAAU,EAC5C3N,KAAKwzC,UAAUsB,QAAQU,sBAAsB7nC,SAAU,EACvD3N,KAAKwzC,UAAUsB,QAAQC,UAAUpnC,SAAU,EAC3C3N,KAAKwzC,UAAU2D,aAAaxpC,SAAU,EACtC3N,KAAK86C,6BAIP96C,KAAKwzC,UAAUuD,mBAAmBppC,SAAU,EAC5C3N,KAAKwzC,UAAUsB,QAAQU,sBAAsB7nC,SAAU,EACvD3N,KAAKwzC,UAAUsB,QAAQC,UAAUpnC,SAAU,GAE7C3N,KAAKq4D,0BACL,IAAIm4B,GAAqB5gF,SAASy9E,eAAe,qBACCmD,GAAmBhgF,MAAMpF,WAAhC,GAAvCpL,KAAKwzC,UAAU2D,aAAaxpC,QAAwD,UACR,UAChF3N,KAAK46C,QAAS,EACd56C,KAAK0O,QAWP,QAASgiF,GAAkBrwF,EAAG4T,EAAIs9E,GAChC,GAAIC,GAAUnxF,EAAK,SACfoxF,EAAa7hF,SAASy9E,eAAehtF,GAAIwG,KAEzCoN,aAAetO,QACjBiK,SAASy9E,eAAemE,GAAS3qF,MAAQoN,EAAI2T,SAAS6pE,IACtDzxF,KAAK0xF,yBAAyBH,EAAsBt9E,EAAI2T,SAAS6pE,OAGjE7hF,SAASy9E,eAAemE,GAAS3qF,MAAQ+gB,SAAS3T,GAAOiO,WAAWuvE,GACpEzxF,KAAK0xF,yBAAyBH,EAAuB3pE,SAAS3T,GAAOiO,WAAWuvE,MAGrD,gCAAzBF,GACuB,sCAAzBA,GACyB,kCAAzBA,IACAvxF,KAAK86C,2BAEP96C,KAAK46C,QAAS,EACd56C,KAAK0O,QAlsBP,GAAI/N,GAAOT,EAAoB,GAC3ByxF,EAAiBzxF,EAAoB,IACrC0xF,EAA4B1xF,EAAoB,IAChD2xF,EAAiB3xF,EAAoB,GAOzCN,GAAQkyF,iBAAmB,WACzB9xF,KAAKwzC,UAAUsB,QAAQC,UAAUpnC,SAAW3N,KAAKwzC,UAAUsB,QAAQC,UAAUpnC,QAC7E3N,KAAKq4D,2BACLr4D,KAAK46C,QAAS,EACd56C,KAAK0O,SASP9O,EAAQy4D,yBAA2B,WAEe,GAA5Cr4D,KAAKwzC,UAAUsB,QAAQC,UAAUpnC,SACnC3N,KAAKo4D,YAAYu5B,GACjB3xF,KAAKo4D,YAAYw5B,GAEjB5xF,KAAKwzC,UAAUsB,QAAQI,eAAiBl1C,KAAKwzC,UAAUsB,QAAQC,UAAUG,eACzEl1C,KAAKwzC,UAAUsB,QAAQK,aAAen1C,KAAKwzC,UAAUsB,QAAQC,UAAUI,aACvEn1C,KAAKwzC,UAAUsB,QAAQM,eAAiBp1C,KAAKwzC,UAAUsB,QAAQC,UAAUK,eACzEp1C,KAAKwzC,UAAUsB,QAAQO,QAAUr1C,KAAKwzC,UAAUsB,QAAQC,UAAUM,QAElEr1C,KAAKi4D,WAAW45B,IAE+C,GAAxD7xF,KAAKwzC,UAAUsB,QAAQU,sBAAsB7nC,SACpD3N,KAAKo4D,YAAYy5B,GACjB7xF,KAAKo4D,YAAYu5B,GAEjB3xF,KAAKwzC,UAAUsB,QAAQI,eAAiBl1C,KAAKwzC,UAAUsB,QAAQU,sBAAsBN,eACrFl1C,KAAKwzC,UAAUsB,QAAQK,aAAen1C,KAAKwzC,UAAUsB,QAAQU,sBAAsBL,aACnFn1C,KAAKwzC,UAAUsB,QAAQM,eAAiBp1C,KAAKwzC,UAAUsB,QAAQU,sBAAsBJ,eACrFp1C,KAAKwzC,UAAUsB,QAAQO,QAAUr1C,KAAKwzC,UAAUsB,QAAQU,sBAAsBH,QAE9Er1C,KAAKi4D,WAAW25B,KAGhB5xF,KAAKo4D,YAAYy5B,GACjB7xF,KAAKo4D,YAAYw5B,GACjB5xF,KAAK+xF,cAAgB7rF,OAErBlG,KAAKwzC,UAAUsB,QAAQI,eAAiBl1C,KAAKwzC,UAAUsB,QAAQQ,UAAUJ,eACzEl1C,KAAKwzC,UAAUsB,QAAQK,aAAen1C,KAAKwzC,UAAUsB,QAAQQ,UAAUH,aACvEn1C,KAAKwzC,UAAUsB,QAAQM,eAAiBp1C,KAAKwzC,UAAUsB,QAAQQ,UAAUF,eACzEp1C,KAAKwzC,UAAUsB,QAAQO,QAAUr1C,KAAKwzC,UAAUsB,QAAQQ,UAAUD,QAElEr1C,KAAKi4D,WAAW05B,KAUpB/xF,EAAQoyF,4BAA8B,WAEL,GAA3BhyF,KAAK45C,YAAYv0C,OACnBrF,KAAKyzC,MAAMzzC,KAAK45C,YAAY,IAAI8V,UAAU,EAAG,IAIzC1vD,KAAK45C,YAAYv0C,OAASrF,KAAKwzC,UAAUiC,WAAWE,kBAAyD,GAArC31C,KAAKwzC,UAAUiC,WAAW9nC,SACpG3N,KAAKqkF,aAAarkF,KAAKwzC,UAAUiC,WAAWG,eAAe,GAI7D51C,KAAKiyF,qBAUTryF,EAAQqyF,iBAAmB,WAKzBjyF,KAAKkyF,gCACLlyF,KAAKmyF,uBAEDnyF,KAAKwzC,UAAUsB,QAAQM,eAAiB,IACC,GAAvCp1C,KAAKwzC,UAAU2D,aAAaxpC,SAA0D,GAAvC3N,KAAKwzC,UAAU2D,aAAaC,QAC7Ep3C,KAAKoyF,oCAGuD,GAAxDpyF,KAAKwzC,UAAUsB,QAAQU,sBAAsB7nC,QAC/C3N,KAAKqyF,qCAGLryF,KAAKsyF,2BAeb1yF,EAAQwiD,wBAA0B,WAChC,GAA2C,GAAvCpiD,KAAKwzC,UAAU2D,aAAaxpC,SAA0D,GAAvC3N,KAAKwzC,UAAU2D,aAAaC,QAAiB,CAC9Fp3C,KAAK05C,oBACL15C,KAAK25C,yBAEL,KAAK,GAAIkC,KAAU77C,MAAKyzC,MAClBzzC,KAAKyzC,MAAMjuC,eAAeq2C,KAC5B77C,KAAK05C,iBAAiBmC,GAAU77C,KAAKyzC,MAAMoI,GAG/C,IAAI02C,GAAevyF,KAAKgjD,QAAiB,QAAS,KAClD,KAAK,GAAIwvC,KAAiBD,GACpBA,EAAa/sF,eAAegtF,KAC1BxyF,KAAKo0C,MAAM5uC,eAAe+sF,EAAaC,GAAexsC,cACxDhmD,KAAK05C,iBAAiB84C,GAAiBD,EAAaC,GAGpDD,EAAaC,GAAe9iC,UAAU,EAAG,GAK/C,KAAK,GAAIhT,KAAO18C,MAAK05C,iBACf15C,KAAK05C,iBAAiBl0C,eAAek3C,IACvC18C,KAAK25C,uBAAuB/xC,KAAK80C,OAKrC18C,MAAK05C,iBAAmB15C,KAAKyzC,MAC7BzzC,KAAK25C,uBAAyB35C,KAAK45C,aAUvCh6C,EAAQsyF,8BAAgC,WACtC,GAAIz2E,GAAIC,EAAI8G,EAAUg5B,EAAMt2C,EACxBuuC,EAAQzzC,KAAK05C,iBACb+4C,EAAUzyF,KAAKwzC,UAAUsB,QAAQI,eACjCw9C,EAAe,CAEnB,KAAKxtF,EAAI,EAAGA,EAAIlF,KAAK25C,uBAAuBt0C,OAAQH,IAClDs2C,EAAO/H,EAAMzzC,KAAK25C,uBAAuBz0C,IACzCs2C,EAAKnG,QAAUr1C,KAAKwzC,UAAUsB,QAAQO,QAEhB,WAAlBr1C,KAAKglF,WAAqC,GAAXyN,GACjCh3E,GAAM+/B,EAAKrrC,EACXuL,GAAM8/B,EAAKprC,EACXoS,EAAW5d,KAAKkoB,KAAKrR,EAAKA,EAAKC,EAAKA,GAEpCg3E,EAA4B,GAAZlwE,EAAiB,EAAKiwE,EAAUjwE,EAChDg5B,EAAKwR,GAAKvxC,EAAKi3E,EACfl3C,EAAKyR,GAAKvxC,EAAKg3E,IAGfl3C,EAAKwR,GAAK,EACVxR,EAAKyR,GAAK,IAahBrtD,EAAQ0yF,uBAAyB,WAC/B,GAAIK,GAAYlxC,EAAMP,EAClBzlC,EAAIC,EAAIsxC,EAAIC,EAAI2lC,EAAapwE,EAC7B4xB,EAAQp0C,KAAKo0C,KAGjB,KAAK8M,IAAU9M,GACTA,EAAM5uC,eAAe07C,KACvBO,EAAOrN,EAAM8M,GACTO,EAAKC,WAEH1hD,KAAKyzC,MAAMjuC,eAAei8C,EAAKoF,OAAS7mD,KAAKyzC,MAAMjuC,eAAei8C,EAAKmF,UACzE+rC,EAAalxC,EAAKsF,aAAetF,EAAKp8C,OAASrF,KAAKwzC,UAAUsB,QAAQK,aAEtEw9C,IAAelxC,EAAKt7B,GAAG2nC,YAAcrM,EAAKv7B,KAAK4nC,YAAc,GAAK9tD,KAAKwzC,UAAUiC,WAAWY,WAE5F56B,EAAMgmC,EAAKv7B,KAAK/V,EAAIsxC,EAAKt7B,GAAGhW,EAC5BuL,EAAM+lC,EAAKv7B,KAAK9V,EAAIqxC,EAAKt7B,GAAG/V,EAC5BoS,EAAW5d,KAAKkoB,KAAKrR,EAAKA,EAAKC,EAAKA,GAEpB,GAAZ8G,IACFA,EAAW,KAIbowE,EAAc5yF,KAAKwzC,UAAUsB,QAAQM,gBAAkBu9C,EAAanwE,GAAYA,EAEhFwqC,EAAKvxC,EAAKm3E,EACV3lC,EAAKvxC,EAAKk3E,EAEVnxC,EAAKv7B,KAAK8mC,IAAMA,EAChBvL,EAAKv7B,KAAK+mC,IAAMA,EAChBxL,EAAKt7B,GAAG6mC,IAAMA,EACdvL,EAAKt7B,GAAG8mC,IAAMA,KAexBrtD,EAAQwyF,kCAAoC,WAC1C,GAAIO,GAAYlxC,EAAMP,EAAQ2xC,EAC1Bz+C,EAAQp0C,KAAKo0C,KAGjB,KAAK8M,IAAU9M,GACb,GAAIA,EAAM5uC,eAAe07C,KACvBO,EAAOrN,EAAM8M,GACTO,EAAKC,WAEH1hD,KAAKyzC,MAAMjuC,eAAei8C,EAAKoF,OAAS7mD,KAAKyzC,MAAMjuC,eAAei8C,EAAKmF,SACzD,MAAZnF,EAAKsB,KAAa,CACpB,GAAI+vC,GAAQrxC,EAAKt7B,GACb4sE,EAAQtxC,EAAKsB,IACbiwC,EAAQvxC,EAAKv7B,IAEjBysE,GAAalxC,EAAKsF,aAAetF,EAAKp8C,OAASrF,KAAKwzC,UAAUsB,QAAQK,aAEtE09C,EAAsBC,EAAMhlC,YAAcklC,EAAMllC,YAAc,EAG9D6kC,GAAcE,EAAsB7yF,KAAKwzC,UAAUiC,WAAWY,WAC9Dr2C,KAAKizF,sBAAsBH,EAAOC,EAAO,GAAMJ,GAC/C3yF,KAAKizF,sBAAsBF,EAAOC,EAAO,GAAML,KAiB3D/yF,EAAQqzF,sBAAwB,SAAUH,EAAOC,EAAOJ,GACtD,GAAIl3E,GAAIC,EAAIsxC,EAAIC,EAAI2lC,EAAapwE,CAEjC/G,GAAMq3E,EAAM3iF,EAAI4iF,EAAM5iF,EACtBuL,EAAMo3E,EAAM1iF,EAAI2iF,EAAM3iF,EACtBoS,EAAW5d,KAAKkoB,KAAKrR,EAAKA,EAAKC,EAAKA,GAEpB,GAAZ8G,IACFA,EAAW,KAIbowE,EAAc5yF,KAAKwzC,UAAUsB,QAAQM,gBAAkBu9C,EAAanwE,GAAYA,EAEhFwqC,EAAKvxC,EAAKm3E,EACV3lC,EAAKvxC,EAAKk3E,EAEVE,EAAM9lC,IAAMA,EACZ8lC,EAAM7lC,IAAMA,EACZ8lC,EAAM/lC,IAAMA,EACZ+lC,EAAM9lC,IAAMA,GAQdrtD,EAAQ04D,0BAA4B,WAClC,GAAkCpyD,SAA9BlG,KAAKkzF,qBAAoC,CAC3ClzF,KAAKgxF,mBACLrwF,EAAKwF,WAAWnG,KAAKgxF,gBAAgBhxF,KAAKwzC,UAE1C,IAAI2/C,IAAgC,KAAM,KAAM,KAAM,KACtDnzF,MAAKkzF,qBAAuBtjF,SAASK,cAAc,OACnDjQ,KAAKkzF,qBAAqB1rF,UAAY,uBACtCxH,KAAKkzF,qBAAqBpyE,UAAY,onBAW2E,GAAK9gB,KAAKwzC,UAAUsB,QAAQC,UAAUE,sBAAyB,wGAA2G,GAAKj1C,KAAKwzC,UAAUsB,QAAQC,UAAUE,sBAAyB,4JAGpPj1C,KAAKwzC,UAAUsB,QAAQC,UAAUG,eAAiB,wFAA0Fl1C,KAAKwzC,UAAUsB,QAAQC,UAAUG,eAAiB,2JAG/Ll1C,KAAKwzC,UAAUsB,QAAQC,UAAUI,aAAe,sFAAwFn1C,KAAKwzC,UAAUsB,QAAQC,UAAUI,aAAe,6JAGtLn1C,KAAKwzC,UAAUsB,QAAQC,UAAUK,eAAiB,0FAA4Fp1C,KAAKwzC,UAAUsB,QAAQC,UAAUK,eAAiB,sJAGvMp1C,KAAKwzC,UAAUsB,QAAQC,UAAUM,QAAU,4FAA8Fr1C,KAAKwzC,UAAUsB,QAAQC,UAAUM,QAAU,sPAM/Kr1C,KAAKwzC,UAAUsB,QAAQQ,UAAUC,aAAe,kGAAoGv1C,KAAKwzC,UAAUsB,QAAQQ,UAAUC,aAAe,2JAGnMv1C,KAAKwzC,UAAUsB,QAAQQ,UAAUJ,eAAiB,uFAAyFl1C,KAAKwzC,UAAUsB,QAAQQ,UAAUJ,eAAiB,0JAG9Ll1C,KAAKwzC,UAAUsB,QAAQQ,UAAUH,aAAe,qFAAuFn1C,KAAKwzC,UAAUsB,QAAQQ,UAAUH,aAAe,4JAGrLn1C,KAAKwzC,UAAUsB,QAAQQ,UAAUF,eAAiB,yFAA2Fp1C,KAAKwzC,UAAUsB,QAAQQ,UAAUF,eAAiB,qJAGtMp1C,KAAKwzC,UAAUsB,QAAQQ,UAAUD,QAAU,2FAA6Fr1C,KAAKwzC,UAAUsB,QAAQQ,UAAUD,QAAU,oQAM9Kr1C,KAAKwzC,UAAUsB,QAAQU,sBAAsBD,aAAe,kGAAoGv1C,KAAKwzC,UAAUsB,QAAQU,sBAAsBD,aAAe,2JAG3Nv1C,KAAKwzC,UAAUsB,QAAQU,sBAAsBN,eAAiB,uFAAyFl1C,KAAKwzC,UAAUsB,QAAQU,sBAAsBN,eAAiB,0JAGtNl1C,KAAKwzC,UAAUsB,QAAQU,sBAAsBL,aAAe,qFAAuFn1C,KAAKwzC,UAAUsB,QAAQU,sBAAsBL,aAAe,4JAG7Mn1C,KAAKwzC,UAAUsB,QAAQU,sBAAsBJ,eAAiB,yFAA2Fp1C,KAAKwzC,UAAUsB,QAAQU,sBAAsBJ,eAAiB,qJAG9Np1C,KAAKwzC,UAAUsB,QAAQU,sBAAsBH,QAAU,2FAA6Fr1C,KAAKwzC,UAAUsB,QAAQU,sBAAsBH,QAAU,uJAG3M89C,EAA6BxrF,QAAQ3H,KAAKwzC,UAAUuD,mBAAmB/c,WAAa,0FAA4Fh6B,KAAKwzC,UAAUuD,mBAAmB/c,UAAY,oKAGtNh6B,KAAKwzC,UAAUuD,mBAAmBC,gBAAkB,yFAA2Fh3C,KAAKwzC,UAAUuD,mBAAmBC,gBAAkB,6JAGvMh3C,KAAKwzC,UAAUuD,mBAAmBE,YAAc,wFAA0Fj3C,KAAKwzC,UAAUuD,mBAAmBE,YAAc,odAU9Rj3C,KAAK8W,iBAAiBs8E,cAAcpiD,aAAahxC,KAAKkzF,qBAAsBlzF,KAAK8W,kBACjF9W,KAAKixF,WAAarhF,SAASK,cAAc,OACzCjQ,KAAKixF,WAAWzgF,MAAMwjC,SAAW,OACjCh0C,KAAKixF,WAAWzgF,MAAM8gD,WAAa,UACnCtxD,KAAK8W,iBAAiBs8E,cAAcpiD,aAAahxC,KAAKixF,WAAYjxF,KAAK8W,iBAEvE,IAAIu8E,EACJA,GAAezjF,SAASy9E,eAAe,eACvCgG,EAAa1tE,SAAW+qE,EAAiBz+D,KAAKjyB,KAAM,cAAe,GAAI,2CACvEqzF,EAAezjF,SAASy9E,eAAe,eACvCgG,EAAa1tE,SAAW+qE,EAAiBz+D,KAAKjyB,KAAM,cAAe,EAAG,0BACtEqzF,EAAezjF,SAASy9E,eAAe,eACvCgG,EAAa1tE,SAAW+qE,EAAiBz+D,KAAKjyB,KAAM,cAAe,EAAG,0BACtEqzF,EAAezjF,SAASy9E,eAAe,eACvCgG,EAAa1tE,SAAW+qE,EAAiBz+D,KAAKjyB,KAAM,cAAe,EAAG,wBACtEqzF,EAAezjF,SAASy9E,eAAe,iBACvCgG,EAAa1tE,SAAW+qE,EAAiBz+D,KAAKjyB,KAAM,gBAAiB,EAAG,mBAExEqzF,EAAezjF,SAASy9E,eAAe,cACvCgG,EAAa1tE,SAAW+qE,EAAiBz+D,KAAKjyB,KAAM,aAAc,EAAG,kCACrEqzF,EAAezjF,SAASy9E,eAAe,cACvCgG,EAAa1tE,SAAW+qE,EAAiBz+D,KAAKjyB,KAAM,aAAc,EAAG,0BACrEqzF,EAAezjF,SAASy9E,eAAe,cACvCgG,EAAa1tE,SAAW+qE,EAAiBz+D,KAAKjyB,KAAM,aAAc,EAAG,0BACrEqzF,EAAezjF,SAASy9E,eAAe,cACvCgG,EAAa1tE,SAAW+qE,EAAiBz+D,KAAKjyB,KAAM,aAAc,EAAG,wBACrEqzF,EAAezjF,SAASy9E,eAAe,gBACvCgG,EAAa1tE,SAAW+qE,EAAiBz+D,KAAKjyB,KAAM,eAAgB,EAAG,mBAEvEqzF,EAAezjF,SAASy9E,eAAe,cACvCgG,EAAa1tE,SAAW+qE,EAAiBz+D,KAAKjyB,KAAM,aAAc,EAAG,8CACrEqzF,EAAezjF,SAASy9E,eAAe,cACvCgG,EAAa1tE,SAAW+qE,EAAiBz+D,KAAKjyB,KAAM,aAAc,EAAG,0BACrEqzF,EAAezjF,SAASy9E,eAAe,cACvCgG,EAAa1tE,SAAW+qE,EAAiBz+D,KAAKjyB,KAAM,aAAc,EAAG,0BACrEqzF,EAAezjF,SAASy9E,eAAe,cACvCgG,EAAa1tE,SAAW+qE,EAAiBz+D,KAAKjyB,KAAM,aAAc,EAAG,wBACrEqzF,EAAezjF,SAASy9E,eAAe,gBACvCgG,EAAa1tE,SAAW+qE,EAAiBz+D,KAAKjyB,KAAM,eAAgB,EAAG,mBACvEqzF,EAAezjF,SAASy9E,eAAe,qBACvCgG,EAAa1tE,SAAW+qE,EAAiBz+D,KAAKjyB,KAAM,oBAAqBmzF,EAA8B,gCACvGE,EAAezjF,SAASy9E,eAAe,kBACvCgG,EAAa1tE,SAAW+qE,EAAiBz+D,KAAKjyB,KAAM,iBAAkB,EAAG,sCACzEqzF,EAAezjF,SAASy9E,eAAe,iBACvCgG,EAAa1tE,SAAW+qE,EAAiBz+D,KAAKjyB,KAAM,gBAAiB,EAAG,iCAExE,IAAI6wF,GAAejhF,SAASy9E,eAAe,wBACvCyD,EAAelhF,SAASy9E,eAAe,wBACvCiG,EAAe1jF,SAASy9E,eAAe,uBAC3CyD,GAAaC,SAAU,EACnB/wF,KAAKwzC,UAAUsB,QAAQC,UAAUpnC,UACnCkjF,EAAaE,SAAU,GAErB/wF,KAAKwzC,UAAUuD,mBAAmBppC,UACpC2lF,EAAavC,SAAU,EAGzB,IAAIP,GAAqB5gF,SAASy9E,eAAe,sBAC7CkG,EAAwB3jF,SAASy9E,eAAe,yBAChDmG,EAAwB5jF,SAASy9E,eAAe,wBAEpDmD,GAAmBlhE,QAAUihE,EAAwBt+D,KAAKjyB,MAC1DuzF,EAAsBjkE,QAAUmhE,EAAqBx+D,KAAKjyB,MAC1DwzF,EAAsBlkE,QAAUqhE,EAAqB1+D,KAAKjyB,MAExDwwF,EAAmBhgF,MAAMpF,WADQ,GAA/BpL,KAAKwzC,UAAU2D,cAA8D,GAAtCn3C,KAAKwzC,UAAU8D,oBAClB,UAGA,UAIxC45C,EAAqB/6E,MAAMnW,MAE3B6wF,EAAalrE,SAAWurE,EAAqBj/D,KAAKjyB,MAClD8wF,EAAanrE,SAAWurE,EAAqBj/D,KAAKjyB,MAClDszF,EAAa3tE,SAAWurE,EAAqBj/D,KAAKjyB,QAWtDJ,EAAQ8xF,yBAA2B,SAAUH,EAAuB1qF,GAClE,GAAI4sF,GAAYlC,EAAsB7pF,MAAM,IACpB,IAApB+rF,EAAUpuF,OACZrF,KAAKwzC,UAAUigD,EAAU,IAAM5sF,EAEJ,GAApB4sF,EAAUpuF,OACjBrF,KAAKwzC,UAAUigD,EAAU,IAAIA,EAAU,IAAM5sF,EAElB,GAApB4sF,EAAUpuF,SACjBrF,KAAKwzC,UAAUigD,EAAU,IAAIA,EAAU,IAAIA,EAAU,IAAM5sF,KA2N3D,SAAShH,EAAQD,EAASM,GAG9B,QAASwzF,GAAeC,GACvB,MAAOzzF,GAAoB0zF,EAAsBD,IAElD,QAASC,GAAsBD,GAC9B,MAAO1/E,GAAI0/E,IAAS,WAAa,KAAM,IAAIpwF,OAAM,uBAAyBowF,EAAM,SALjF,GAAI1/E,KAOJy/E,GAAe7+E,KAAO,WACrB,MAAO5O,QAAO4O,KAAKZ,IAEpBy/E,EAAeG,QAAUD,EACzB/zF,EAAOD,QAAU8zF,GAKb,SAAS7zF,EAAQD,GAQrBA,EAAQuyF,qBAAuB,WAC7B,GAAI12E,GAAIC,EAAW8G,EAAUwqC,EAAIC,EAAI4lC,EACnCiB,EAAgBhB,EAAOC,EAAO7tF,EAAGyjB,EAE/B8qB,EAAQzzC,KAAK05C,iBACbE,EAAc55C,KAAK25C,uBAGnBo6C,EAAS,GAAK,EACdjuF,EAAI,EAAI,EAGRyvC,EAAev1C,KAAKwzC,UAAUsB,QAAQQ,UAAUC,aAChDy+C,EAAkBz+C,CAItB,KAAKrwC,EAAI,EAAGA,EAAI00C,EAAYv0C,OAAS,EAAGH,IAEtC,IADA4tF,EAAQr/C,EAAMmG,EAAY10C,IACrByjB,EAAIzjB,EAAI,EAAGyjB,EAAIixB,EAAYv0C,OAAQsjB,IAAK,CAC3CoqE,EAAQt/C,EAAMmG,EAAYjxB,IAC1BkqE,EAAsBC,EAAMhlC,YAAcilC,EAAMjlC,YAAc,EAE9DryC,EAAKs3E,EAAM5iF,EAAI2iF,EAAM3iF,EACrBuL,EAAKq3E,EAAM3iF,EAAI0iF,EAAM1iF,EACrBoS,EAAW5d,KAAKkoB,KAAKrR,EAAKA,EAAKC,EAAKA,GAEpCs4E,EAA0C,GAAvBnB,EAA4Bt9C,EAAgBA,GAAgB,EAAIs9C,EAAsB7yF,KAAKwzC,UAAUiC,WAAWW,sBACnI,IAAInxC,GAAI8uF,EAASC,CACF,GAAIA,EAAfxxE,IAEAsxE,EADa,GAAME,EAAjBxxE,EACe,EAGAvd,EAAIud,EAAW1c,EAIlCguF,GAA0C,GAAvBjB,EAA4B,EAAI,EAAIA,EAAsB7yF,KAAKwzC,UAAUiC,WAAWU,mBACvG29C,GAAkCtxE,EAElCwqC,EAAKvxC,EAAKq4E,EACV7mC,EAAKvxC,EAAKo4E,EAEVhB,EAAM9lC,IAAMA,EACZ8lC,EAAM7lC,IAAMA,EACZ8lC,EAAM/lC,IAAMA,EACZ+lC,EAAM9lC,IAAMA,MAShB,SAASptD,EAAQD,GAQrBA,EAAQuyF,qBAAuB,WAC7B,GAAI12E,GAAIC,EAAI8G,EAAUwqC,EAAIC,EACxB6mC,EAAgBhB,EAAOC,EAAO7tF,EAAGyjB,EAE/B8qB,EAAQzzC,KAAK05C,iBACbE,EAAc55C,KAAK25C,uBAGnBpE,EAAev1C,KAAKwzC,UAAUsB,QAAQU,sBAAsBD,YAIhE,KAAKrwC,EAAI,EAAGA,EAAI00C,EAAYv0C,OAAS,EAAGH,IAEtC,IADA4tF,EAAQr/C,EAAMmG,EAAY10C,IACrByjB,EAAIzjB,EAAI,EAAGyjB,EAAIixB,EAAYv0C,OAAQsjB,IAItC,GAHAoqE,EAAQt/C,EAAMmG,EAAYjxB,IAGtBmqE,EAAM5+C,OAAS6+C,EAAM7+C,MAAO,CAE9Bz4B,EAAKs3E,EAAM5iF,EAAI2iF,EAAM3iF,EACrBuL,EAAKq3E,EAAM3iF,EAAI0iF,EAAM1iF,EACrBoS,EAAW5d,KAAKkoB,KAAKrR,EAAKA,EAAKC,EAAKA,EAGpC,IAAIu4E,GAAY,GAEdH,GADav+C,EAAX/yB,GACgB5d,KAAKusB,IAAI8iE,EAAUzxE,EAAS,GAAK5d,KAAKusB,IAAI8iE,EAAU1+C,EAAa,GAGlE,EAGD,GAAZ/yB,EACFA,EAAW,IAGXsxE,GAAkCtxE,EAEpCwqC,EAAKvxC,EAAKq4E,EACV7mC,EAAKvxC,EAAKo4E,EAEVhB,EAAM9lC,IAAMA,EACZ8lC,EAAM7lC,IAAMA,EACZ8lC,EAAM/lC,IAAMA,EACZ+lC,EAAM9lC,IAAMA,IAYtBrtD,EAAQyyF,mCAAqC,WAS3C,IAAK,GARDM,GAAYlxC,EAAMP,EAClBzlC,EAAIC,EAAIsxC,EAAIC,EAAI2lC,EAAapwE,EAC7B4xB,EAAQp0C,KAAKo0C,MAEbX,EAAQzzC,KAAK05C,iBACbE,EAAc55C,KAAK25C,uBAGdz0C,EAAI,EAAGA,EAAI00C,EAAYv0C,OAAQH,IAAK,CAC3C,GAAI4tF,GAAQr/C,EAAMmG,EAAY10C,GAC9B4tF,GAAMoB,SAAW,EACjBpB,EAAMqB,SAAW,EAKnB,IAAKjzC,IAAU9M,GACb,GAAIA,EAAM5uC,eAAe07C,KACvBO,EAAOrN,EAAM8M,GACTO,EAAKC,WAEH1hD,KAAKyzC,MAAMjuC,eAAei8C,EAAKoF,OAAS7mD,KAAKyzC,MAAMjuC,eAAei8C,EAAKmF,SAqBzE,GApBA+rC,EAAalxC,EAAKsF,aAAetF,EAAKp8C,OAASrF,KAAKwzC,UAAUsB,QAAQK,aAEtEw9C,IAAelxC,EAAKt7B,GAAG2nC,YAAcrM,EAAKv7B,KAAK4nC,YAAc,GAAK9tD,KAAKwzC,UAAUiC,WAAWY,WAE5F56B,EAAMgmC,EAAKv7B,KAAK/V,EAAIsxC,EAAKt7B,GAAGhW,EAC5BuL,EAAM+lC,EAAKv7B,KAAK9V,EAAIqxC,EAAKt7B,GAAG/V,EAC5BoS,EAAW5d,KAAKkoB,KAAKrR,EAAKA,EAAKC,EAAKA,GAEpB,GAAZ8G,IACFA,EAAW,KAIbowE,EAAc5yF,KAAKwzC,UAAUsB,QAAQM,gBAAkBu9C,EAAanwE,GAAYA,EAEhFwqC,EAAKvxC,EAAKm3E,EACV3lC,EAAKvxC,EAAKk3E,EAINnxC,EAAKt7B,GAAG+tB,OAASuN,EAAKv7B,KAAKguB,MAC7BuN,EAAKt7B,GAAG+tE,UAAYlnC,EACpBvL,EAAKt7B,GAAGguE,UAAYlnC,EACpBxL,EAAKv7B,KAAKguE,UAAYlnC,EACtBvL,EAAKv7B,KAAKiuE,UAAYlnC,MAEnB,CACH,GAAI7Q,GAAS,EACbqF,GAAKt7B,GAAG6mC,IAAM5Q,EAAO4Q,EACrBvL,EAAKt7B,GAAG8mC,IAAM7Q,EAAO6Q,EACrBxL,EAAKv7B,KAAK8mC,IAAM5Q,EAAO4Q,EACvBvL,EAAKv7B,KAAK+mC,IAAM7Q,EAAO6Q,EAQjC,GACIinC,GAAUC,EADVvB,EAAc,CAElB,KAAK1tF,EAAI,EAAGA,EAAI00C,EAAYv0C,OAAQH,IAAK,CACvC,GAAIs2C,GAAO/H,EAAMmG,EAAY10C,GAC7BgvF,GAAWtvF,KAAKmG,IAAI6nF,EAAYhuF,KAAK6H,KAAKmmF,EAAYp3C,EAAK04C,WAC3DC,EAAWvvF,KAAKmG,IAAI6nF,EAAYhuF,KAAK6H,KAAKmmF,EAAYp3C,EAAK24C,WAE3D34C,EAAKwR,IAAMknC,EACX14C,EAAKyR,IAAMknC,EAIb,GAAIC,GAAU,EACVC,EAAU,CACd,KAAKnvF,EAAI,EAAGA,EAAI00C,EAAYv0C,OAAQH,IAAK,CACvC,GAAIs2C,GAAO/H,EAAMmG,EAAY10C,GAC7BkvF,IAAW54C,EAAKwR,GAChBqnC,GAAW74C,EAAKyR,GAElB,GAAIqnC,GAAeF,EAAUx6C,EAAYv0C,OACrCkvF,EAAeF,EAAUz6C,EAAYv0C,MAEzC,KAAKH,EAAI,EAAGA,EAAI00C,EAAYv0C,OAAQH,IAAK,CACvC,GAAIs2C,GAAO/H,EAAMmG,EAAY10C,GAC7Bs2C,GAAKwR,IAAMsnC,EACX94C,EAAKyR,IAAMsnC,KAOX,SAAS10F,EAAQD,GAQrBA,EAAQuyF,qBAAuB,WAC7B,GAA8D,GAA1DnyF,KAAKwzC,UAAUsB,QAAQC,UAAUE,sBAA4B,CAC/D,GAAIuG,GACA/H,EAAQzzC,KAAK05C,iBACbE,EAAc55C,KAAK25C,uBACnB66C,EAAY56C,EAAYv0C,MAE5BrF,MAAKy0F,mBAAmBhhD,EAAMmG,EAK9B,KAAK,GAHDm4C,GAAgB/xF,KAAK+xF,cAGhB7sF,EAAI,EAAOsvF,EAAJtvF,EAAeA,IAC7Bs2C,EAAO/H,EAAMmG,EAAY10C,IAEzBlF,KAAK00F,sBAAsB3C,EAAcryF,KAAKi1F,SAASC,GAAGp5C,GAC1Dx7C,KAAK00F,sBAAsB3C,EAAcryF,KAAKi1F,SAASE,GAAGr5C,GAC1Dx7C,KAAK00F,sBAAsB3C,EAAcryF,KAAKi1F,SAASG,GAAGt5C,GAC1Dx7C,KAAK00F,sBAAsB3C,EAAcryF,KAAKi1F,SAASI,GAAGv5C,KAchE57C,EAAQ80F,sBAAwB,SAASM,EAAax5C,GAEpD,GAAIw5C,EAAaC,cAAgB,EAAG,CAClC,GAAIx5E,GAAGC,EAAG8G,CAUV,IAPA/G,EAAKu5E,EAAaE,aAAa/kF,EAAIqrC,EAAKrrC,EACxCuL,EAAKs5E,EAAaE,aAAa9kF,EAAIorC,EAAKprC,EACxCoS,EAAW5d,KAAKkoB,KAAKrR,EAAKA,EAAKC,EAAKA,GAKhC8G,EAAWwyE,EAAaG,SAAWn1F,KAAKwzC,UAAUsB,QAAQC,UAAUC,MAAO,CAE7D,GAAZxyB,IACFA,EAAW,GAAI5d,KAAKE,SACpB2W,EAAK+G,EAEP,IAAIkwE,GAAe1yF,KAAKwzC,UAAUsB,QAAQC,UAAUE,sBAAwB+/C,EAAalvC,KAAOtK,EAAKsK,MAAQtjC,EAAWA,EAAWA,GAC/HwqC,EAAKvxC,EAAKi3E,EACVzlC,EAAKvxC,EAAKg3E,CACdl3C,GAAKwR,IAAMA,EACXxR,EAAKyR,IAAMA,MAIX,IAAkC,GAA9B+nC,EAAaC,cACfj1F,KAAK00F,sBAAsBM,EAAaL,SAASC,GAAGp5C,GACpDx7C,KAAK00F,sBAAsBM,EAAaL,SAASE,GAAGr5C,GACpDx7C,KAAK00F,sBAAsBM,EAAaL,SAASG,GAAGt5C,GACpDx7C,KAAK00F,sBAAsBM,EAAaL,SAASI,GAAGv5C,OAGpD,IAAIw5C,EAAaL,SAAS5jF,KAAK1Q,IAAMm7C,EAAKn7C,GAAI,CAE5B,GAAZmiB,IACFA,EAAW,GAAI5d,KAAKE,SACpB2W,EAAK+G,EAEP,IAAIkwE,GAAe1yF,KAAKwzC,UAAUsB,QAAQC,UAAUE,sBAAwB+/C,EAAalvC,KAAOtK,EAAKsK,MAAQtjC,EAAWA,EAAWA,GAC/HwqC,EAAKvxC,EAAKi3E,EACVzlC,EAAKvxC,EAAKg3E,CACdl3C,GAAKwR,IAAMA,EACXxR,EAAKyR,IAAMA,KAcrBrtD,EAAQ60F,mBAAqB,SAAShhD,EAAMmG,GAU1C,IAAK,GATD4B,GACAg5C,EAAY56C,EAAYv0C,OAExBs2C,EAAO/3C,OAAOwxF,UAChB35C,EAAO73C,OAAOwxF,UACdx5C,GAAOh4C,OAAOwxF,UACd15C,GAAO93C,OAAOwxF,UAGPlwF,EAAI,EAAOsvF,EAAJtvF,EAAeA,IAAK,CAClC,GAAIiL,GAAIsjC,EAAMmG,EAAY10C,IAAIiL,EAC1BC,EAAIqjC,EAAMmG,EAAY10C,IAAIkL,CACtBurC,GAAJxrC,IAAYwrC,EAAOxrC,GACnBA,EAAIyrC,IAAQA,EAAOzrC,GACfsrC,EAAJrrC,IAAYqrC,EAAOrrC,GACnBA,EAAIsrC,IAAQA,EAAOtrC,GAGzB,GAAIilF,GAAWzwF,KAAK+iB,IAAIi0B,EAAOD,GAAQ/2C,KAAK+iB,IAAI+zB,EAAOD,EACnD45C,GAAW,GAAI55C,GAAQ,GAAM45C,EAAU35C,GAAQ,GAAM25C,IACtC15C,GAAQ,GAAM05C,EAAUz5C,GAAQ,GAAMy5C,EAGzD,IAAIC,GAAkB,KAClBC,EAAW3wF,KAAK6H,IAAI6oF,EAAgB1wF,KAAK+iB,IAAIi0B,EAAOD,IACpD65C,EAAe,GAAMD,EACrBE,EAAU,IAAO95C,EAAOC,GAAO85C,EAAU,IAAOj6C,EAAOC,GAGvDq2C,GACFryF,MACEw1F,cAAe/kF,EAAE,EAAGC,EAAE,GACtB01C,KAAK,EACLh4C,OACE6tC,KAAM85C,EAAQD,EAAa55C,KAAK65C,EAAQD,EACxC/5C,KAAMi6C,EAAQF,EAAa95C,KAAKg6C,EAAQF,GAE1C9kF,KAAM6kF,EACNJ,SAAU,EAAII,EACdZ,UAAY5jF,KAAK,MACjB0gD,SAAU,EACVvd,MAAO,EACP+gD,cAAe,GAMnB,KAHAj1F,KAAK21F,aAAa5D,EAAcryF,MAG3BwF,EAAI,EAAOsvF,EAAJtvF,EAAeA,IACzBs2C,EAAO/H,EAAMmG,EAAY10C,IACzBlF,KAAK41F,aAAa7D,EAAcryF,KAAK87C,EAIvCx7C,MAAK+xF,cAAgBA,GAWvBnyF,EAAQi2F,kBAAoB,SAASb,EAAcx5C,GACjD,GAAIs6C,GAAYd,EAAalvC,KAAOtK,EAAKsK,KACrCiwC,EAAe,EAAED,CAErBd,GAAaE,aAAa/kF,EAAI6kF,EAAaE,aAAa/kF,EAAI6kF,EAAalvC,KAAOtK,EAAKrrC,EAAIqrC,EAAKsK,KAC9FkvC,EAAaE,aAAa/kF,GAAK4lF,EAE/Bf,EAAaE,aAAa9kF,EAAI4kF,EAAaE,aAAa9kF,EAAI4kF,EAAalvC,KAAOtK,EAAKprC,EAAIorC,EAAKsK,KAC9FkvC,EAAaE,aAAa9kF,GAAK2lF,EAE/Bf,EAAalvC,KAAOgwC,CACpB,IAAIE,GAAcpxF,KAAK6H,IAAI7H,KAAK6H,IAAI+uC,EAAK3qC,OAAO2qC,EAAKhzB,QAAQgzB,EAAK5qC,MAClEokF,GAAavjC,SAAYujC,EAAavjC,SAAWukC,EAAeA,EAAchB,EAAavjC,UAa7F7xD,EAAQg2F,aAAe,SAASZ,EAAax5C,EAAKy6C,IAC1B,GAAlBA,GAA6C/vF,SAAnB+vF,IAE5Bj2F,KAAK61F,kBAAkBb,EAAax5C,GAGlCw5C,EAAaL,SAASC,GAAG9mF,MAAM8tC,KAAOJ,EAAKrrC,EACzC6kF,EAAaL,SAASC,GAAG9mF,MAAM4tC,KAAOF,EAAKprC,EAC7CpQ,KAAKk2F,eAAelB,EAAax5C,EAAK,MAGtCx7C,KAAKk2F,eAAelB,EAAax5C,EAAK,MAIpCw5C,EAAaL,SAASC,GAAG9mF,MAAM4tC,KAAOF,EAAKprC,EAC7CpQ,KAAKk2F,eAAelB,EAAax5C,EAAK,MAGtCx7C,KAAKk2F,eAAelB,EAAax5C,EAAK,OAc5C57C,EAAQs2F,eAAiB,SAASlB,EAAax5C,EAAK26C,GAClD,OAAQnB,EAAaL,SAASwB,GAAQlB,eACpC,IAAK,GACHD,EAAaL,SAASwB,GAAQxB,SAAS5jF,KAAOyqC,EAC9Cw5C,EAAaL,SAASwB,GAAQlB,cAAgB,EAC9Cj1F,KAAK61F,kBAAkBb,EAAaL,SAASwB,GAAQ36C,EACrD,MACF,KAAK,GAGCw5C,EAAaL,SAASwB,GAAQxB,SAAS5jF,KAAKZ,GAAKqrC,EAAKrrC,GACtD6kF,EAAaL,SAASwB,GAAQxB,SAAS5jF,KAAKX,GAAKorC,EAAKprC,GACxDorC,EAAKrrC,GAAKvL,KAAKE,SACf02C,EAAKprC,GAAKxL,KAAKE,WAGf9E,KAAK21F,aAAaX,EAAaL,SAASwB,IACxCn2F,KAAK41F,aAAaZ,EAAaL,SAASwB,GAAQ36C,GAElD,MACF,KAAK,GACHx7C,KAAK41F,aAAaZ,EAAaL,SAASwB,GAAQ36C,KAatD57C,EAAQ+1F,aAAe,SAASX,GAE9B,GAAIoB,GAAgB,IACc,IAA9BpB,EAAaC,gBACfmB,EAAgBpB,EAAaL,SAAS5jF,KACtCikF,EAAalvC,KAAO,EAAGkvC,EAAaE,aAAa/kF,EAAI,EAAG6kF,EAAaE,aAAa9kF,EAAI,GAExF4kF,EAAaC,cAAgB,EAC7BD,EAAaL,SAAS5jF,KAAO,KAC7B/Q,KAAKq2F,cAAcrB,EAAa,MAChCh1F,KAAKq2F,cAAcrB,EAAa,MAChCh1F,KAAKq2F,cAAcrB,EAAa,MAChCh1F,KAAKq2F,cAAcrB,EAAa,MAEX,MAAjBoB,GACFp2F,KAAK41F,aAAaZ,EAAaoB,IAenCx2F,EAAQy2F,cAAgB,SAASrB,EAAcmB,GAC7C,GAAIx6C,GAAKC,EAAKH,EAAKC,EACf46C,EAAY,GAAMtB,EAAatkF,IACnC,QAAQylF,GACN,IAAK,KACHx6C,EAAOq5C,EAAalnF,MAAM6tC,KAC1BC,EAAOo5C,EAAalnF,MAAM6tC,KAAO26C,EACjC76C,EAAOu5C,EAAalnF,MAAM2tC,KAC1BC,EAAOs5C,EAAalnF,MAAM2tC,KAAO66C,CACjC,MACF,KAAK,KACH36C,EAAOq5C,EAAalnF,MAAM6tC,KAAO26C,EACjC16C,EAAOo5C,EAAalnF,MAAM8tC,KAC1BH,EAAOu5C,EAAalnF,MAAM2tC,KAC1BC,EAAOs5C,EAAalnF,MAAM2tC,KAAO66C,CACjC,MACF,KAAK,KACH36C,EAAOq5C,EAAalnF,MAAM6tC,KAC1BC,EAAOo5C,EAAalnF,MAAM6tC,KAAO26C,EACjC76C,EAAOu5C,EAAalnF,MAAM2tC,KAAO66C,EACjC56C,EAAOs5C,EAAalnF,MAAM4tC,IAC1B,MACF,KAAK,KACHC,EAAOq5C,EAAalnF,MAAM6tC,KAAO26C,EACjC16C,EAAOo5C,EAAalnF,MAAM8tC,KAC1BH,EAAOu5C,EAAalnF,MAAM2tC,KAAO66C,EACjC56C,EAAOs5C,EAAalnF,MAAM4tC,KAK9Bs5C,EAAaL,SAASwB,IACpBjB,cAAc/kF,EAAE,EAAEC,EAAE,GACpB01C,KAAK,EACLh4C,OAAO6tC,KAAKA,EAAKC,KAAKA,EAAKH,KAAKA,EAAKC,KAAKA,GAC1ChrC,KAAM,GAAMskF,EAAatkF,KACzBykF,SAAU,EAAIH,EAAaG,SAC3BR,UAAW5jF,KAAK,MAChB0gD,SAAU,EACVvd,MAAO8gD,EAAa9gD,MAAM,EAC1B+gD,cAAe,IAYnBr1F,EAAQ22F,UAAY,SAAS3yE,EAAIrZ,GACJrE,SAAvBlG,KAAK+xF,gBAEPnuE,EAAIO,UAAY,EAEhBnkB,KAAKw2F,YAAYx2F,KAAK+xF,cAAcryF,KAAKkkB,EAAIrZ,KAajD3K,EAAQ42F,YAAc,SAASC,EAAO7yE,EAAIrZ,GAC1BrE,SAAVqE,IACFA,EAAQ,WAGkB,GAAxBksF,EAAOxB,gBACTj1F,KAAKw2F,YAAYC,EAAO9B,SAASC,GAAGhxE,GACpC5jB,KAAKw2F,YAAYC,EAAO9B,SAASE,GAAGjxE,GACpC5jB,KAAKw2F,YAAYC,EAAO9B,SAASI,GAAGnxE,GACpC5jB,KAAKw2F,YAAYC,EAAO9B,SAASG,GAAGlxE,IAEtCA,EAAIY,YAAcja,EAClBqZ,EAAIa,YACJb,EAAIc,OAAO+xE,EAAO3oF,MAAM6tC,KAAK86C,EAAO3oF,MAAM2tC,MAC1C73B,EAAIe,OAAO8xE,EAAO3oF,MAAM8tC,KAAK66C,EAAO3oF,MAAM2tC,MAC1C73B,EAAIlH,SAEJkH,EAAIa,YACJb,EAAIc,OAAO+xE,EAAO3oF,MAAM8tC,KAAK66C,EAAO3oF,MAAM2tC,MAC1C73B,EAAIe,OAAO8xE,EAAO3oF,MAAM8tC,KAAK66C,EAAO3oF,MAAM4tC,MAC1C93B,EAAIlH,SAEJkH,EAAIa,YACJb,EAAIc,OAAO+xE,EAAO3oF,MAAM8tC,KAAK66C,EAAO3oF,MAAM4tC,MAC1C93B,EAAIe,OAAO8xE,EAAO3oF,MAAM6tC,KAAK86C,EAAO3oF,MAAM4tC,MAC1C93B,EAAIlH,SAEJkH,EAAIa,YACJb,EAAIc,OAAO+xE,EAAO3oF,MAAM6tC,KAAK86C,EAAO3oF,MAAM4tC,MAC1C93B,EAAIe,OAAO8xE,EAAO3oF,MAAM6tC,KAAK86C,EAAO3oF,MAAM2tC,MAC1C73B,EAAIlH,WAaF,SAAS7c,GAEbA,EAAOD,QAAU,SAASC,GAQzB,MAPIA,GAAO62F,kBACV72F,EAAOyhE,UAAY,aACnBzhE,EAAO82F,SAEP92F,EAAO80F,YACP90F,EAAO62F,gBAAkB,GAEnB72F"} \ No newline at end of file diff --git a/dist/vis.min.js b/dist/vis.min.js index 10dcadcf..927ec3d1 100644 --- a/dist/vis.min.js +++ b/dist/vis.min.js @@ -22,19 +22,16 @@ * License for the specific language governing permissions and limitations under * the License. */ -!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):"object"==typeof exports?exports.vis=e():t.vis=e()}(this,function(){return function(t){function e(s){if(i[s])return i[s].exports;var n=i[s]={exports:{},id:s,loaded:!1};return t[s].call(n.exports,n,n.exports,e),n.loaded=!0,n.exports}var i={};return e.m=t,e.c=i,e.p="",e(0)}([function(t,e,i){e.util=i(1),e.DOMutil=i(2),e.DataSet=i(3),e.DataView=i(4),e.Graph3d=i(5),e.graph3d={Camera:i(6),Filter:i(7),Point2d:i(8),Point3d:i(9),Slider:i(10),StepNumber:i(11)},e.Timeline=i(12),e.Graph2d=i(13),e.timeline={DataStep:i(14),Range:i(15),stack:i(16),TimeStep:i(17),components:{items:{Item:i(28),ItemBox:i(29),ItemPoint:i(30),ItemRange:i(31)},Component:i(18),CurrentTime:i(19),CustomTime:i(20),DataAxis:i(21),GraphGroup:i(22),Group:i(23),ItemSet:i(24),Legend:i(25),LineGraph:i(26),TimeAxis:i(27)}},e.Network=i(32),e.network={Edge:i(33),Groups:i(34),Images:i(35),Node:i(36),Popup:i(37),dotparser:i(38)},e.Graph=function(){throw new Error("Graph is renamed to Network. Please create a graph as new vis.Network(...)")}},function(module,exports,__webpack_require__){var moment=__webpack_require__(41);exports.isNumber=function(t){return t instanceof Number||"number"==typeof t},exports.isString=function(t){return t instanceof String||"string"==typeof t},exports.isDate=function(t){if(t instanceof Date)return!0;if(exports.isString(t)){var e=ASPDateRegex.exec(t);if(e)return!0;if(!isNaN(Date.parse(t)))return!0}return!1},exports.isDataTable=function(t){return"undefined"!=typeof google&&google.visualization&&google.visualization.DataTable&&t instanceof google.visualization.DataTable},exports.randomUUID=function(){var t=function(){return Math.floor(65536*Math.random()).toString(16)};return t()+t()+"-"+t()+"-"+t()+"-"+t()+"-"+t()+t()+t()},exports.extend=function(t){for(var e=1,i=arguments.length;i>e;e++){var s=arguments[e];for(var n in s)s.hasOwnProperty(n)&&(t[n]=s[n])}return t},exports.selectiveExtend=function(t,e){if(!Array.isArray(t))throw new Error("Array with property names expected as first argument");for(var i=2;ii;i++)if(t[i]!=e[i])return!1;return!0},exports.convert=function(t,e){var i;if(void 0===t)return void 0;if(null===t)return null;if(!e)return t;if("string"!=typeof e&&!(e instanceof String))throw new Error("Type must be a string");switch(e){case"boolean":case"Boolean":return Boolean(t);case"number":case"Number":return Number(t.valueOf());case"string":case"String":return String(t);case"Date":if(exports.isNumber(t))return new Date(t);if(t instanceof Date)return new Date(t.valueOf());if(moment.isMoment(t))return new Date(t.valueOf());if(exports.isString(t))return i=ASPDateRegex.exec(t),i?new Date(Number(i[1])):moment(t).toDate();throw new Error("Cannot convert object of type "+exports.getType(t)+" to type Date");case"Moment":if(exports.isNumber(t))return moment(t);if(t instanceof Date)return moment(t.valueOf());if(moment.isMoment(t))return moment(t);if(exports.isString(t))return i=ASPDateRegex.exec(t),moment(i?Number(i[1]):t);throw new Error("Cannot convert object of type "+exports.getType(t)+" to type Date");case"ISODate":if(exports.isNumber(t))return new Date(t);if(t instanceof Date)return t.toISOString();if(moment.isMoment(t))return t.toDate().toISOString();if(exports.isString(t))return i=ASPDateRegex.exec(t),i?new Date(Number(i[1])).toISOString():new Date(t).toISOString();throw new Error("Cannot convert object of type "+exports.getType(t)+" to type ISODate");case"ASPDate":if(exports.isNumber(t))return"/Date("+t+")/";if(t instanceof Date)return"/Date("+t.valueOf()+")/";if(exports.isString(t)){i=ASPDateRegex.exec(t);var s;return s=i?new Date(Number(i[1])).valueOf():new Date(t).valueOf(),"/Date("+s+")/"}throw new Error("Cannot convert object of type "+exports.getType(t)+" to type ASPDate");default:throw new Error('Unknown type "'+e+'"')}};var ASPDateRegex=/^\/?Date\((\-?\d+)/i;exports.getType=function(t){var e=typeof t;return"object"==e?null==t?"null":t instanceof Boolean?"Boolean":t instanceof Number?"Number":t instanceof String?"String":t instanceof Array?"Array":t instanceof Date?"Date":"Object":"number"==e?"Number":"boolean"==e?"Boolean":"string"==e?"String":e},exports.getAbsoluteLeft=function(t){return t.getBoundingClientRect().left+window.pageXOffset},exports.getAbsoluteTop=function(t){return t.getBoundingClientRect().top+window.pageYOffset},exports.addClassName=function(t,e){var i=t.className.split(" ");-1==i.indexOf(e)&&(i.push(e),t.className=i.join(" "))},exports.removeClassName=function(t,e){var i=t.className.split(" "),s=i.indexOf(e);-1!=s&&(i.splice(s,1),t.className=i.join(" "))},exports.forEach=function(t,e){var i,s;if(t instanceof Array)for(i=0,s=t.length;s>i;i++)e(t[i],i,t);else for(i in t)t.hasOwnProperty(i)&&e(t[i],i,t)},exports.toArray=function(t){var e=[];for(var i in t)t.hasOwnProperty(i)&&e.push(t[i]);return e},exports.updateProperty=function(t,e,i){return t[e]!==i?(t[e]=i,!0):!1},exports.addEventListener=function(t,e,i,s){t.addEventListener?(void 0===s&&(s=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.addEventListener(e,i,s)):t.attachEvent("on"+e,i)},exports.removeEventListener=function(t,e,i,s){t.removeEventListener?(void 0===s&&(s=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.removeEventListener(e,i,s)):t.detachEvent("on"+e,i)},exports.preventDefault=function(t){t||(t=window.event),t.preventDefault?t.preventDefault():t.returnValue=!1},exports.getTarget=function(t){t||(t=window.event);var e;return t.target?e=t.target:t.srcElement&&(e=t.srcElement),void 0!=e.nodeType&&3==e.nodeType&&(e=e.parentNode),e},exports.option={},exports.option.asBoolean=function(t,e){return"function"==typeof t&&(t=t()),null!=t?0!=t:e||null},exports.option.asNumber=function(t,e){return"function"==typeof t&&(t=t()),null!=t?Number(t)||e||null:e||null},exports.option.asString=function(t,e){return"function"==typeof t&&(t=t()),null!=t?String(t):e||null},exports.option.asSize=function(t,e){return"function"==typeof t&&(t=t()),exports.isString(t)?t:exports.isNumber(t)?t+"px":e||null},exports.option.asElement=function(t,e){return"function"==typeof t&&(t=t()),t||e||null},exports.GiveDec=function(Hex){var Value;return Value="A"==Hex?10:"B"==Hex?11:"C"==Hex?12:"D"==Hex?13:"E"==Hex?14:"F"==Hex?15:eval(Hex)},exports.GiveHex=function(t){var e;return e=10==t?"A":11==t?"B":12==t?"C":13==t?"D":14==t?"E":15==t?"F":""+t},exports.parseColor=function(t){var e;if(exports.isString(t))if(exports.isValidHex(t)){var i=exports.hexToHSV(t),s={h:i.h,s:.45*i.s,v:Math.min(1,1.05*i.v)},n={h:i.h,s:Math.min(1,1.25*i.v),v:.6*i.v},o=exports.HSVToHex(n.h,n.h,n.v),r=exports.HSVToHex(s.h,s.s,s.v);e={background:t,border:o,highlight:{background:r,border:o},hover:{background:r,border:o}}}else e={background:t,border:t,highlight:{background:t,border:t},hover:{background:t,border:t}};else e={},e.background=t.background||"white",e.border=t.border||e.background,exports.isString(t.highlight)?e.highlight={border:t.highlight,background:t.highlight}:(e.highlight={},e.highlight.background=t.highlight&&t.highlight.background||e.background,e.highlight.border=t.highlight&&t.highlight.border||e.border),exports.isString(t.hover)?e.hover={border:t.hover,background:t.hover}:(e.hover={},e.hover.background=t.hover&&t.hover.background||e.background,e.hover.border=t.hover&&t.hover.border||e.border);return e},exports.hexToRGB=function(t){t=t.replace("#","").toUpperCase();var e=exports.GiveDec(t.substring(0,1)),i=exports.GiveDec(t.substring(1,2)),s=exports.GiveDec(t.substring(2,3)),n=exports.GiveDec(t.substring(3,4)),o=exports.GiveDec(t.substring(4,5)),r=exports.GiveDec(t.substring(5,6)),a=16*e+i,h=16*s+n,i=16*o+r;return{r:a,g:h,b:i}},exports.RGBToHex=function(t,e,i){var s=exports.GiveHex(Math.floor(t/16)),n=exports.GiveHex(t%16),o=exports.GiveHex(Math.floor(e/16)),r=exports.GiveHex(e%16),a=exports.GiveHex(Math.floor(i/16)),h=exports.GiveHex(i%16),d=s+n+o+r+a+h;return"#"+d},exports.RGBToHSV=function(t,e,i){t/=255,e/=255,i/=255;var s=Math.min(t,Math.min(e,i)),n=Math.max(t,Math.max(e,i));if(s==n)return{h:0,s:0,v:s};var o=t==s?e-i:i==s?t-e:i-t,r=t==s?3:i==s?1:5,a=60*(r-o/(n-s))/360,h=(n-s)/n,d=n;return{h:a,s:h,v:d}},exports.HSVToRGB=function(t,e,i){var s,n,o,r=Math.floor(6*t),a=6*t-r,h=i*(1-e),d=i*(1-a*e),l=i*(1-(1-a)*e);switch(r%6){case 0:s=i,n=l,o=h;break;case 1:s=d,n=i,o=h;break;case 2:s=h,n=i,o=l;break;case 3:s=h,n=d,o=i;break;case 4:s=l,n=h,o=i;break;case 5:s=i,n=h,o=d}return{r:Math.floor(255*s),g:Math.floor(255*n),b:Math.floor(255*o)}},exports.HSVToHex=function(t,e,i){var s=exports.HSVToRGB(t,e,i);return exports.RGBToHex(s.r,s.g,s.b)},exports.hexToHSV=function(t){var e=exports.hexToRGB(t);return exports.RGBToHSV(e.r,e.g,e.b)},exports.isValidHex=function(t){var e=/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(t);return e},exports.selectiveBridgeObject=function(t,e){if("object"==typeof e){for(var i=Object.create(e),s=0;sa;)n=void 0===s?o[p][i]:o[p][i][s],o[p].isVisible(e)?h=!0:(n=r&&console.log("BinarySearch too many iterations. Aborting.")}return p},exports.binarySearchGeneric=function(t,e,i,s){var n,o,r,a,h=1e4,d=0,l=t,c=!1,u=0,p=l.length,m=u,_=p,f=Math.floor(.5*(p+u));if(0==p)f=-1;else if(1==p)r=l[f][i],f=r==e?0:-1;else{for(p-=1;0==c&&h>d;)o=l[Math.max(0,f-1)][i],r=l[f][i],a=l[Math.min(l.length-1,f+1)][i],r==e||e>o&&r>e||e>r&&a>e?(c=!0,r!=e&&("before"==s?e>o&&r>e&&(f=Math.max(0,f-1)):e>r&&a>e&&(f=Math.min(l.length-1,f+1)))):(e>r?m=Math.floor(.5*(p+u)):_=Math.floor(.5*(p+u)),n=Math.floor(.5*(p+u)),u==m&&p==_?(f=-1,c=!0):(p=_,u=m,f=Math.floor(.5*(p+u)))),d++;d>=h&&console.log("BinarySearch too many iterations. Aborting.")}return f}},function(t,e){e.prepareElements=function(t){for(var e in t)t.hasOwnProperty(e)&&(t[e].redundant=t[e].used,t[e].used=[])},e.cleanupElements=function(t){for(var e in t)if(t.hasOwnProperty(e)&&t[e].redundant){for(var i=0;i0?(s=e[t].redundant[0],e[t].redundant.shift()):(s=document.createElementNS("http://www.w3.org/2000/svg",t),i.appendChild(s)):(s=document.createElementNS("http://www.w3.org/2000/svg",t),e[t]={used:[],redundant:[]},i.appendChild(s)),e[t].used.push(s),s},e.getDOMElement=function(t,e,i){var s;return e.hasOwnProperty(t)?e[t].redundant.length>0?(s=e[t].redundant[0],e[t].redundant.shift()):(s=document.createElement(t),i.appendChild(s)):(s=document.createElement(t),e[t]={used:[],redundant:[]},i.appendChild(s)),e[t].used.push(s),s},e.drawPoint=function(t,i,s,n,o){var r;return"circle"==s.options.drawPoints.style?(r=e.getSVGElement("circle",n,o),r.setAttributeNS(null,"cx",t),r.setAttributeNS(null,"cy",i),r.setAttributeNS(null,"r",.5*s.options.drawPoints.size),r.setAttributeNS(null,"class",s.className+" point")):(r=e.getSVGElement("rect",n,o),r.setAttributeNS(null,"x",t-.5*s.options.drawPoints.size),r.setAttributeNS(null,"y",i-.5*s.options.drawPoints.size),r.setAttributeNS(null,"width",s.options.drawPoints.size),r.setAttributeNS(null,"height",s.options.drawPoints.size),r.setAttributeNS(null,"class",s.className+" point")),r},e.drawBar=function(t,i,s,n,o,r,a){var h=e.getSVGElement("rect",r,a);h.setAttributeNS(null,"x",t-.5*s),h.setAttributeNS(null,"y",i),h.setAttributeNS(null,"width",s),h.setAttributeNS(null,"height",n),h.setAttributeNS(null,"class",o)}},function(t,e,i){function s(t,e){if(!t||Array.isArray(t)||n.isDataTable(t)||(e=t,t=null),this._options=e||{},this._data={},this._fieldId=this._options.fieldId||"id",this._type={},this._options.type)for(var i in this._options.type)if(this._options.type.hasOwnProperty(i)){var s=this._options.type[i];this._type[i]="Date"==s||"ISODate"==s||"ASPDate"==s?"Date":s}if(this._options.convert)throw new Error('Option "convert" is deprecated. Use "type" instead.');this._subscribers={},t&&this.add(t)}var n=i(1);s.prototype.on=function(t,e){var i=this._subscribers[t];i||(i=[],this._subscribers[t]=i),i.push({callback:e})},s.prototype.subscribe=s.prototype.on,s.prototype.off=function(t,e){var i=this._subscribers[t];i&&(this._subscribers[t]=i.filter(function(t){return t.callback!=e}))},s.prototype.unsubscribe=s.prototype.off,s.prototype._trigger=function(t,e,i){if("*"==t)throw new Error("Cannot trigger event *");var s=[];t in this._subscribers&&(s=s.concat(this._subscribers[t])),"*"in this._subscribers&&(s=s.concat(this._subscribers["*"]));for(var n=0;nr;r++)i=o._addItem(t[r]),s.push(i);else if(n.isDataTable(t))for(var h=this._getColumnNames(t),d=0,l=t.getNumberOfRows();l>d;d++){for(var c={},u=0,p=h.length;p>u;u++){var m=h[u];c[m]=t.getValue(d,u)}i=o._addItem(c),s.push(i)}else{if(!(t instanceof Object))throw new Error("Unknown dataType");i=o._addItem(t),s.push(i)}return s.length&&this._trigger("add",{items:s},e),s},s.prototype.update=function(t,e){var i=[],s=[],o=this,r=o._fieldId,a=function(t){var e=t[r];o._data[e]?(e=o._updateItem(t),s.push(e)):(e=o._addItem(t),i.push(e))};if(Array.isArray(t))for(var h=0,d=t.length;d>h;h++)a(t[h]);else if(n.isDataTable(t))for(var l=this._getColumnNames(t),c=0,u=t.getNumberOfRows();u>c;c++){for(var p={},m=0,_=l.length;_>m;m++){var f=l[m];p[f]=t.getValue(c,m)}a(p)}else{if(!(t instanceof Object))throw new Error("Unknown dataType");a(t)}return i.length&&this._trigger("add",{items:i},e),s.length&&this._trigger("update",{items:s},e),i.concat(s)},s.prototype.get=function(){var t,e,i,s,o=this,r=n.getType(arguments[0]);"String"==r||"Number"==r?(t=arguments[0],i=arguments[1],s=arguments[2]):"Array"==r?(e=arguments[0],i=arguments[1],s=arguments[2]):(i=arguments[0],s=arguments[1]);var a;if(i&&i.returnType){var h=["DataTable","Array","Object"];if(a=-1==h.indexOf(i.returnType)?"Array":i.returnType,s&&a!=n.getType(s))throw new Error('Type of parameter "data" ('+n.getType(s)+") does not correspond with specified options.type ("+i.type+")");if("DataTable"==a&&!n.isDataTable(s))throw new Error('Parameter "data" must be a DataTable when options.type is "DataTable"')}else a=s&&"DataTable"==n.getType(s)?"DataTable":"Array";var d,l,c,u,p=i&&i.type||this._options.type,m=i&&i.filter,_=[];if(void 0!=t)d=o._getItem(t,p),m&&!m(d)&&(d=null);else if(void 0!=e)for(c=0,u=e.length;u>c;c++)d=o._getItem(e[c],p),(!m||m(d))&&_.push(d);else for(l in this._data)this._data.hasOwnProperty(l)&&(d=o._getItem(l,p),(!m||m(d))&&_.push(d));if(i&&i.order&&void 0==t&&this._sort(_,i.order),i&&i.fields){var f=i.fields;if(void 0!=t)d=this._filterFields(d,f);else for(c=0,u=_.length;u>c;c++)_[c]=this._filterFields(_[c],f)}if("DataTable"==a){var g=this._getColumnNames(s);if(void 0!=t)o._appendRow(s,g,d);else for(c=0;c<_.length;c++)o._appendRow(s,g,_[c]);return s}if("Object"==a){var y={};for(c=0;c<_.length;c++)y[_[c].id]=_[c];return y}if(void 0!=t)return d;if(s){for(c=0,u=_.length;u>c;c++)s.push(_[c]);return s}return _},s.prototype.getIds=function(t){var e,i,s,n,o,r=this._data,a=t&&t.filter,h=t&&t.order,d=t&&t.type||this._options.type,l=[];if(a)if(h){o=[];for(s in r)r.hasOwnProperty(s)&&(n=this._getItem(s,d),a(n)&&o.push(n));for(this._sort(o,h),e=0,i=o.length;i>e;e++)l[e]=o[e][this._fieldId]}else for(s in r)r.hasOwnProperty(s)&&(n=this._getItem(s,d),a(n)&&l.push(n[this._fieldId]));else if(h){o=[];for(s in r)r.hasOwnProperty(s)&&o.push(r[s]);for(this._sort(o,h),e=0,i=o.length;i>e;e++)l[e]=o[e][this._fieldId]}else for(s in r)r.hasOwnProperty(s)&&(n=r[s],l.push(n[this._fieldId]));return l},s.prototype.getDataSet=function(){return this},s.prototype.forEach=function(t,e){var i,s,n=e&&e.filter,o=e&&e.type||this._options.type,r=this._data;if(e&&e.order)for(var a=this.get(e),h=0,d=a.length;d>h;h++)i=a[h],s=i[this._fieldId],t(i,s);else for(s in r)r.hasOwnProperty(s)&&(i=this._getItem(s,o),(!n||n(i))&&t(i,s))},s.prototype.map=function(t,e){var i,s=e&&e.filter,n=e&&e.type||this._options.type,o=[],r=this._data;for(var a in r)r.hasOwnProperty(a)&&(i=this._getItem(a,n),(!s||s(i))&&o.push(t(i,a)));return e&&e.order&&this._sort(o,e.order),o},s.prototype._filterFields=function(t,e){var i={};for(var s in t)t.hasOwnProperty(s)&&-1!=e.indexOf(s)&&(i[s]=t[s]);return i},s.prototype._sort=function(t,e){if(n.isString(e)){var i=e;t.sort(function(t,e){var s=t[i],n=e[i];return s>n?1:n>s?-1:0})}else{if("function"!=typeof e)throw new TypeError("Order must be a function or a string");t.sort(e)}},s.prototype.remove=function(t,e){var i,s,n,o=[];if(Array.isArray(t))for(i=0,s=t.length;s>i;i++)n=this._remove(t[i]),null!=n&&o.push(n);else n=this._remove(t),null!=n&&o.push(n);return o.length&&this._trigger("remove",{items:o},e),o},s.prototype._remove=function(t){if(n.isNumber(t)||n.isString(t)){if(this._data[t])return delete this._data[t],t}else if(t instanceof Object){var e=t[this._fieldId];if(e&&this._data[e])return delete this._data[e],e}return null},s.prototype.clear=function(t){var e=Object.keys(this._data);return this._data={},this._trigger("remove",{items:e},t),e},s.prototype.max=function(t){var e=this._data,i=null,s=null;for(var n in e)if(e.hasOwnProperty(n)){var o=e[n],r=o[t];null!=r&&(!i||r>s)&&(i=o,s=r)}return i},s.prototype.min=function(t){var e=this._data,i=null,s=null;for(var n in e)if(e.hasOwnProperty(n)){var o=e[n],r=o[t];null!=r&&(!i||s>r)&&(i=o,s=r)}return i},s.prototype.distinct=function(t){var e,i=this._data,s=[],o=this._options.type&&this._options.type[t]||null,r=0;for(var a in i)if(i.hasOwnProperty(a)){var h=i[a],d=h[t],l=!1;for(e=0;r>e;e++)if(s[e]==d){l=!0;break}l||void 0===d||(s[r]=d,r++)}if(o)for(e=0;ei;i++)e[i]=t.getColumnId(i)||t.getColumnLabel(i);return e},s.prototype._appendRow=function(t,e,i){for(var s=t.addRow(),n=0,o=e.length;o>n;n++){var r=e[n];t.setValue(s,n,i[r])}},t.exports=s},function(t,e,i){function s(t,e){this._data=null,this._ids={},this._options=e||{},this._fieldId="id",this._subscribers={};var i=this;this.listener=function(){i._onEvent.apply(i,arguments)},this.setData(t)}var n=i(1),o=i(3);s.prototype.setData=function(t){var e,i,s;if(this._data){this._data.unsubscribe&&this._data.unsubscribe("*",this.listener),e=[];for(var n in this._ids)this._ids.hasOwnProperty(n)&&e.push(n);this._ids={},this._trigger("remove",{items:e})}if(this._data=t,this._data){for(this._fieldId=this._options.fieldId||this._data&&this._data.options&&this._data.options.fieldId||"id",e=this._data.getIds({filter:this._options&&this._options.filter}),i=0,s=e.length;s>i;i++)n=e[i],this._ids[n]=!0;this._trigger("add",{items:e}),this._data.on&&this._data.on("*",this.listener)}},s.prototype.get=function(){var t,e,i,s=this,o=n.getType(arguments[0]);"String"==o||"Number"==o||"Array"==o?(t=arguments[0],e=arguments[1],i=arguments[2]):(e=arguments[0],i=arguments[1]);var r=n.extend({},this._options,e);this._options.filter&&e&&e.filter&&(r.filter=function(t){return s._options.filter(t)&&e.filter(t)});var a=[];return void 0!=t&&a.push(t),a.push(r),a.push(i),this._data&&this._data.get.apply(this._data,a)},s.prototype.getIds=function(t){var e;if(this._data){var i,s=this._options.filter;i=t&&t.filter?s?function(e){return s(e)&&t.filter(e)}:t.filter:s,e=this._data.getIds({filter:i,order:t&&t.order})}else e=[];return e},s.prototype.getDataSet=function(){for(var t=this;t instanceof s;)t=t._data;return t||null},s.prototype._onEvent=function(t,e,i){var s,n,o,r,a=e&&e.items,h=this._data,d=[],l=[],c=[];if(a&&h){switch(t){case"add":for(s=0,n=a.length;n>s;s++)o=a[s],r=this.get(o),r&&(this._ids[o]=!0,d.push(o));break;case"update":for(s=0,n=a.length;n>s;s++)o=a[s],r=this.get(o),r?this._ids[o]?l.push(o):(this._ids[o]=!0,d.push(o)):this._ids[o]&&(delete this._ids[o],c.push(o));break;case"remove":for(s=0,n=a.length;n>s;s++)o=a[s],this._ids[o]&&(delete this._ids[o],c.push(o))}d.length&&this._trigger("add",{items:d},i),l.length&&this._trigger("update",{items:l},i),c.length&&this._trigger("remove",{items:c},i)}},s.prototype.on=o.prototype.on,s.prototype.off=o.prototype.off,s.prototype._trigger=o.prototype._trigger,s.prototype.subscribe=s.prototype.on,s.prototype.unsubscribe=s.prototype.off,t.exports=s},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this.containerElement=t,this.width="400px",this.height="400px",this.margin=10,this.defaultXCenter="55%",this.defaultYCenter="50%",this.xLabel="x",this.yLabel="y",this.zLabel="z",this.filterLabel="time",this.legendLabel="value",this.style=s.STYLE.DOT,this.showPerspective=!0,this.showGrid=!0,this.keepAspectRatio=!0,this.showShadow=!1,this.showGrayBottom=!1,this.showTooltip=!1,this.verticalRatio=.5,this.animationInterval=1e3,this.animationPreload=!1,this.camera=new l,this.eye=new h(0,0,-1),this.dataTable=null,this.dataPoints=null,this.colX=void 0,this.colY=void 0,this.colZ=void 0,this.colValue=void 0,this.colFilter=void 0,this.xMin=0,this.xStep=void 0,this.xMax=1,this.yMin=0,this.yStep=void 0,this.yMax=1,this.zMin=0,this.zStep=void 0,this.zMax=1,this.valueMin=0,this.valueMax=1,this.xBarWidth=1,this.yBarWidth=1,this.colorAxis="#4D4D4D",this.colorGrid="#D3D3D3",this.colorDot="#7DC1FF",this.colorDotBorder="#3267D2",this.create(),this.setOptions(i),e&&this.setData(e)}var n=i(44),o=i(3),r=i(4),a=i(1),h=i(9),d=i(8),l=i(6),c=i(7),u=i(10),p=i(11);n(s.prototype),s.prototype._setScale=function(){this.scale=new h(1/(this.xMax-this.xMin),1/(this.yMax-this.yMin),1/(this.zMax-this.zMin)),this.keepAspectRatio&&(this.scale.x3&&(this.colFilter=3);else{if(this.style!==s.STYLE.DOTCOLOR&&this.style!==s.STYLE.DOTSIZE&&this.style!==s.STYLE.BARCOLOR&&this.style!==s.STYLE.BARSIZE)throw'Unknown style "'+this.style+'"';this.colX=0,this.colY=1,this.colZ=2,this.colValue=3,t.getNumberOfColumns()>4&&(this.colFilter=4)}},s.prototype.getNumberOfRows=function(t){return t.length},s.prototype.getNumberOfColumns=function(t){var e=0;for(var i in t[0])t[0].hasOwnProperty(i)&&e++;return e},s.prototype.getDistinctValues=function(t,e){for(var i=[],s=0;st[s][e]&&(i.min=t[s][e]),i.maxt;t++){var _=(t-u)/(m-u),f=240*_,g=this._hsv2rgb(f,1,1);c.strokeStyle=g,c.beginPath(),c.moveTo(h,r+t),c.lineTo(a,r+t),c.stroke()}c.strokeStyle=this.colorAxis,c.strokeRect(h,r,i,o)}if(this.style===s.STYLE.DOTSIZE&&(c.strokeStyle=this.colorAxis,c.fillStyle=this.colorDot,c.beginPath(),c.moveTo(h,r),c.lineTo(a,r),c.lineTo(a-i+e,d),c.lineTo(h,d),c.closePath(),c.fill(),c.stroke()),this.style===s.STYLE.DOTCOLOR||this.style===s.STYLE.DOTSIZE){var y=5,v=new p(this.valueMin,this.valueMax,(this.valueMax-this.valueMin)/5,!0);for(v.start(),v.getCurrent()0?this.yMin:this.yMax,n=this._convert3Dto2D(new h(b,r,this.zMin)),Math.cos(2*M)>0?(f.textAlign="center",f.textBaseline="top",n.y+=v):Math.sin(2*M)<0?(f.textAlign="right",f.textBaseline="middle"):(f.textAlign="left",f.textBaseline="middle"),f.fillStyle=this.colorAxis,f.fillText(" "+i.getCurrent()+" ",n.x,n.y),i.next()}for(f.lineWidth=1,s=void 0===this.defaultYStep,i=new p(this.yMin,this.yMax,this.yStep,s),i.start(),i.getCurrent()0?this.xMin:this.xMax,n=this._convert3Dto2D(new h(o,i.getCurrent(),this.zMin)),Math.cos(2*M)<0?(f.textAlign="center",f.textBaseline="top",n.y+=v):Math.sin(2*M)>0?(f.textAlign="right",f.textBaseline="middle"):(f.textAlign="left",f.textBaseline="middle"),f.fillStyle=this.colorAxis,f.fillText(" "+i.getCurrent()+" ",n.x,n.y),i.next();for(f.lineWidth=1,s=void 0===this.defaultZStep,i=new p(this.zMin,this.zMax,this.zStep,s),i.start(),i.getCurrent()0?this.xMin:this.xMax,r=Math.sin(M)<0?this.yMin:this.yMax;!i.end();)t=this._convert3Dto2D(new h(o,r,i.getCurrent())),f.strokeStyle=this.colorAxis,f.beginPath(),f.moveTo(t.x,t.y),f.lineTo(t.x-v,t.y),f.stroke(),f.textAlign="right",f.textBaseline="middle",f.fillStyle=this.colorAxis,f.fillText(i.getCurrent()+" ",t.x-5,t.y),i.next();f.lineWidth=1,t=this._convert3Dto2D(new h(o,r,this.zMin)),e=this._convert3Dto2D(new h(o,r,this.zMax)),f.strokeStyle=this.colorAxis,f.beginPath(),f.moveTo(t.x,t.y),f.lineTo(e.x,e.y),f.stroke(),f.lineWidth=1,u=this._convert3Dto2D(new h(this.xMin,this.yMin,this.zMin)),m=this._convert3Dto2D(new h(this.xMax,this.yMin,this.zMin)),f.strokeStyle=this.colorAxis,f.beginPath(),f.moveTo(u.x,u.y),f.lineTo(m.x,m.y),f.stroke(),u=this._convert3Dto2D(new h(this.xMin,this.yMax,this.zMin)),m=this._convert3Dto2D(new h(this.xMax,this.yMax,this.zMin)),f.strokeStyle=this.colorAxis,f.beginPath(),f.moveTo(u.x,u.y),f.lineTo(m.x,m.y),f.stroke(),f.lineWidth=1,t=this._convert3Dto2D(new h(this.xMin,this.yMin,this.zMin)),e=this._convert3Dto2D(new h(this.xMin,this.yMax,this.zMin)),f.strokeStyle=this.colorAxis,f.beginPath(),f.moveTo(t.x,t.y),f.lineTo(e.x,e.y),f.stroke(),t=this._convert3Dto2D(new h(this.xMax,this.yMin,this.zMin)),e=this._convert3Dto2D(new h(this.xMax,this.yMax,this.zMin)),f.strokeStyle=this.colorAxis,f.beginPath(),f.moveTo(t.x,t.y),f.lineTo(e.x,e.y),f.stroke();var w=this.xLabel;w.length>0&&(c=.1/this.scale.y,o=(this.xMin+this.xMax)/2,r=Math.cos(M)>0?this.yMin-c:this.yMax+c,n=this._convert3Dto2D(new h(o,r,this.zMin)),Math.cos(2*M)>0?(f.textAlign="center",f.textBaseline="top"):Math.sin(2*M)<0?(f.textAlign="right",f.textBaseline="middle"):(f.textAlign="left",f.textBaseline="middle"),f.fillStyle=this.colorAxis,f.fillText(w,n.x,n.y));var L=this.yLabel;L.length>0&&(l=.1/this.scale.x,o=Math.sin(M)>0?this.xMin-l:this.xMax+l,r=(this.yMin+this.yMax)/2,n=this._convert3Dto2D(new h(o,r,this.zMin)),Math.cos(2*M)<0?(f.textAlign="center",f.textBaseline="top"):Math.sin(2*M)>0?(f.textAlign="right",f.textBaseline="middle"):(f.textAlign="left",f.textBaseline="middle"),f.fillStyle=this.colorAxis,f.fillText(L,n.x,n.y));var x=this.zLabel;x.length>0&&(d=30,o=Math.cos(M)>0?this.xMin:this.xMax,r=Math.sin(M)<0?this.yMin:this.yMax,a=(this.zMin+this.zMax)/2,n=this._convert3Dto2D(new h(o,r,a)),f.textAlign="right",f.textBaseline="middle",f.fillStyle=this.colorAxis,f.fillText(x,n.x-d,n.y))},s.prototype._hsv2rgb=function(t,e,i){var s,n,o,r,a,h;switch(r=i*e,a=Math.floor(t/60),h=r*(1-Math.abs(t/60%2-1)),a){case 0:s=r,n=h,o=0;break;case 1:s=h,n=r,o=0;break;case 2:s=0,n=r,o=h;break;case 3:s=0,n=h,o=r;break;case 4:s=h,n=0,o=r;break;case 5:s=r,n=0,o=h;break;default:s=0,n=0,o=0}return"RGB("+parseInt(255*s)+","+parseInt(255*n)+","+parseInt(255*o)+")"},s.prototype._redrawDataGrid=function(){var t,e,i,n,o,r,a,d,l,c,u,p,m,_=this.frame.canvas,f=_.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(o=0;o0}else r=!0;r?(m=(t.point.z+e.point.z+i.point.z+n.point.z)/4,c=240*(1-(m-this.zMin)*this.scale.z/this.verticalRatio),u=1,this.showShadow?(p=Math.min(1+L.x/x/2,1),a=this._hsv2rgb(c,u,p),d=a):(p=1,a=this._hsv2rgb(c,u,p),d=this.colorAxis)):(a="gray",d=this.colorAxis),l=.5,f.lineWidth=l,f.fillStyle=a,f.strokeStyle=d,f.beginPath(),f.moveTo(t.screen.x,t.screen.y),f.lineTo(e.screen.x,e.screen.y),f.lineTo(n.screen.x,n.screen.y),f.lineTo(i.screen.x,i.screen.y),f.closePath(),f.fill(),f.stroke()}}else for(o=0;ou&&(u=0);var p,m,_;this.style===s.STYLE.DOTCOLOR?(p=240*(1-(d.point.value-this.valueMin)*this.scale.value),m=this._hsv2rgb(p,1,1),_=this._hsv2rgb(p,1,.8)):this.style===s.STYLE.DOTSIZE?(m=this.colorDot,_=this.colorDotBorder):(p=240*(1-(d.point.z-this.zMin)*this.scale.z/this.verticalRatio),m=this._hsv2rgb(p,1,1),_=this._hsv2rgb(p,1,.8)),i.lineWidth=1,i.strokeStyle=_,i.fillStyle=m,i.beginPath(),i.arc(d.screen.x,d.screen.y,u,0,2*Math.PI,!0),i.fill(),i.stroke()}}},s.prototype._redrawDataBar=function(){var t,e,i,n,o=this.frame.canvas,r=o.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(t=0;t0&&(t=this.dataPoints[0],s.lineWidth=1,s.strokeStyle="blue",s.beginPath(),s.moveTo(t.screen.x,t.screen.y)),e=1;e0&&s.stroke()}},s.prototype._onMouseDown=function(t){if(t=t||window.event,this.leftButtonDown&&this._onMouseUp(t),this.leftButtonDown=t.which?1===t.which:1===t.button,this.leftButtonDown||this.touchDown){this.startMouseX=getMouseX(t),this.startMouseY=getMouseY(t),this.startStart=new Date(this.start),this.startEnd=new Date(this.end),this.startArmRotation=this.camera.getArmRotation(),this.frame.style.cursor="move";var e=this;this.onmousemove=function(t){e._onMouseMove(t)},this.onmouseup=function(t){e._onMouseUp(t)},a.addEventListener(document,"mousemove",e.onmousemove),a.addEventListener(document,"mouseup",e.onmouseup),a.preventDefault(t)}},s.prototype._onMouseMove=function(t){t=t||window.event;var e=parseFloat(getMouseX(t))-this.startMouseX,i=parseFloat(getMouseY(t))-this.startMouseY,s=this.startArmRotation.horizontal+e/200,n=this.startArmRotation.vertical+i/200,o=4,r=Math.sin(o/360*2*Math.PI);Math.abs(Math.sin(s))0?1:0>t?-1:0}var s=e[0],n=e[1],o=e[2],r=i((n.x-s.x)*(t.y-s.y)-(n.y-s.y)*(t.x-s.x)),a=i((o.x-n.x)*(t.y-n.y)-(o.y-n.y)*(t.x-n.x)),h=i((s.x-o.x)*(t.y-o.y)-(s.y-o.y)*(t.x-o.x));return!(0!=r&&0!=a&&r!=a||0!=a&&0!=h&&a!=h||0!=r&&0!=h&&r!=h)},s.prototype._dataPointFromXY=function(t,e){var i,n=100,o=null,r=null,a=null,h=new d(t,e);if(this.style===s.STYLE.BAR||this.style===s.STYLE.BARCOLOR||this.style===s.STYLE.BARSIZE)for(i=this.dataPoints.length-1;i>=0;i--){o=this.dataPoints[i];var l=o.surfaces;if(l)for(var c=l.length-1;c>=0;c--){var u=l[c],p=u.corners,m=[p[0].screen,p[1].screen,p[2].screen],_=[p[2].screen,p[3].screen,p[0].screen];if(this._insideTriangle(h,m)||this._insideTriangle(h,_))return o}}else for(i=0;iv)&&n>v&&(a=v,r=o)}}return r},s.prototype._showTooltip=function(t){var e,i,s;this.tooltip?(e=this.tooltip.dom.content,i=this.tooltip.dom.line,s=this.tooltip.dom.dot):(e=document.createElement("div"),e.style.position="absolute",e.style.padding="10px",e.style.border="1px solid #4d4d4d",e.style.color="#1a1a1a",e.style.background="rgba(255,255,255,0.7)",e.style.borderRadius="2px",e.style.boxShadow="5px 5px 10px rgba(128,128,128,0.5)",i=document.createElement("div"),i.style.position="absolute",i.style.height="40px",i.style.width="0",i.style.borderLeft="1px solid #4d4d4d",s=document.createElement("div"),s.style.position="absolute",s.style.height="0",s.style.width="0",s.style.border="5px solid #4d4d4d",s.style.borderRadius="5px",this.tooltip={dataPoint:null,dom:{content:e,line:i,dot:s}}),this._hideTooltip(),this.tooltip.dataPoint=t,e.innerHTML="function"==typeof this.showTooltip?this.showTooltip(t.point):"
x:"+t.point.x+"
y:"+t.point.y+"
z:"+t.point.z+"
",e.style.left="0",e.style.top="0",this.frame.appendChild(e),this.frame.appendChild(i),this.frame.appendChild(s);var n=e.offsetWidth,o=e.offsetHeight,r=i.offsetHeight,a=s.offsetWidth,h=s.offsetHeight,d=t.screen.x-n/2;d=Math.min(Math.max(d,10),this.frame.clientWidth-10-n),i.style.left=t.screen.x+"px",i.style.top=t.screen.y-r+"px",e.style.left=d+"px",e.style.top=t.screen.y-r-o+"px",s.style.left=t.screen.x-a/2+"px",s.style.top=t.screen.y-h/2+"px"},s.prototype._hideTooltip=function(){if(this.tooltip){this.tooltip.dataPoint=null;for(var t in this.tooltip.dom)if(this.tooltip.dom.hasOwnProperty(t)){var e=this.tooltip.dom[t];e&&e.parentNode&&e.parentNode.removeChild(e)}}},getMouseX=function(t){return"clientX"in t?t.clientX:t.targetTouches[0]&&t.targetTouches[0].clientX||0},getMouseY=function(t){return"clientY"in t?t.clientY:t.targetTouches[0]&&t.targetTouches[0].clientY||0},t.exports=s},function(t,e,i){var s=i(9);Camera=function(){this.armLocation=new s,this.armRotation={},this.armRotation.horizontal=0,this.armRotation.vertical=0,this.armLength=1.7,this.cameraLocation=new s,this.cameraRotation=new s(.5*Math.PI,0,0),this.calculateCameraOrientation()},Camera.prototype.setArmLocation=function(t,e,i){this.armLocation.x=t,this.armLocation.y=e,this.armLocation.z=i,this.calculateCameraOrientation()},Camera.prototype.setArmRotation=function(t,e){void 0!==t&&(this.armRotation.horizontal=t),void 0!==e&&(this.armRotation.vertical=e,this.armRotation.vertical<0&&(this.armRotation.vertical=0),this.armRotation.vertical>.5*Math.PI&&(this.armRotation.vertical=.5*Math.PI)),(void 0!==t||void 0!==e)&&this.calculateCameraOrientation()},Camera.prototype.getArmRotation=function(){var t={};return t.horizontal=this.armRotation.horizontal,t.vertical=this.armRotation.vertical,t},Camera.prototype.setArmLength=function(t){void 0!==t&&(this.armLength=t,this.armLength<.71&&(this.armLength=.71),this.armLength>5&&(this.armLength=5),this.calculateCameraOrientation())},Camera.prototype.getArmLength=function(){return this.armLength},Camera.prototype.getCameraLocation=function(){return this.cameraLocation},Camera.prototype.getCameraRotation=function(){return this.cameraRotation},Camera.prototype.calculateCameraOrientation=function(){this.cameraLocation.x=this.armLocation.x-this.armLength*Math.sin(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.y=this.armLocation.y-this.armLength*Math.cos(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.z=this.armLocation.z+this.armLength*Math.sin(this.armRotation.vertical),this.cameraRotation.x=Math.PI/2-this.armRotation.vertical,this.cameraRotation.y=0,this.cameraRotation.z=-this.armRotation.horizontal},t.exports=Camera},function(t,e,i){function s(t,e,i){this.data=t,this.column=e,this.graph=i,this.index=void 0,this.value=void 0,this.values=i.getDistinctValues(t.get(),this.column),this.values.sort(function(t,e){return t>e?1:e>t?-1:0}),this.values.length>0&&this.selectValue(0),this.dataPoints=[],this.loaded=!1,this.onLoadCallback=void 0,i.animationPreload?(this.loaded=!1,this.loadInBackground()):this.loaded=!0}var n=i(4);s.prototype.isLoaded=function(){return this.loaded},s.prototype.getLoadedProgress=function(){for(var t=this.values.length,e=0;this.dataPoints[e];)e++;return Math.round(e/t*100)},s.prototype.getLabel=function(){return this.graph.filterLabel},s.prototype.getColumn=function(){return this.column},s.prototype.getSelectedValue=function(){return void 0===this.index?void 0:this.values[this.index]},s.prototype.getValues=function(){return this.values},s.prototype.getValue=function(t){if(t>=this.values.length)throw"Error: index out of range";return this.values[t]},s.prototype._getDataPoints=function(t){if(void 0===t&&(t=this.index),void 0===t)return[];var e;if(this.dataPoints[t])e=this.dataPoints[t];else{var i={};i.column=this.column,i.value=this.values[t];var s=new n(this.data,{filter:function(t){return t[i.column]==i.value}}).get();e=this.graph._getDataPoints(s),this.dataPoints[t]=e}return e},s.prototype.setOnLoadCallback=function(t){this.onLoadCallback=t},s.prototype.selectValue=function(t){if(t>=this.values.length)throw"Error: index out of range";this.index=t,this.value=this.values[t]},s.prototype.loadInBackground=function(t){void 0===t&&(t=0);var e=this.graph.frame;if(t0&&(t--,this.setIndex(t))},s.prototype.next=function(){var t=this.getIndex();t0?this.setIndex(0):this.index=void 0},s.prototype.setIndex=function(t){if(!(ts&&(s=0),s>this.values.length-1&&(s=this.values.length-1),s},s.prototype.indexToLeft=function(t){var e=parseFloat(this.frame.bar.style.width)-this.frame.slide.clientWidth-10,i=t/(this.values.length-1)*e,s=i+3;return s},s.prototype._onMouseMove=function(t){var e=t.clientX-this.startClientX,i=this.startSlideX+e,s=this.leftToIndex(i);this.setIndex(s),n.preventDefault()},s.prototype._onMouseUp=function(){this.frame.style.cursor="auto",n.removeEventListener(document,"mousemove",this.onmousemove),n.removeEventListener(document,"mouseup",this.onmouseup),n.preventDefault()},t.exports=s},function(t){function e(t,e,i,s){this._start=0,this._end=0,this._step=1,this.prettyStep=!0,this.precision=5,this._current=0,this.setRange(t,e,i,s)}e.prototype.setRange=function(t,e,i,s){this._start=t?t:0,this._end=e?e:0,this.setStep(i,s)},e.prototype.setStep=function(t,i){void 0===t||0>=t||(void 0!==i&&(this.prettyStep=i),this._step=this.prettyStep===!0?e.calculatePrettyStep(t):t)},e.calculatePrettyStep=function(t){var e=function(t){return Math.log(t)/Math.LN10},i=Math.pow(10,Math.round(e(t))),s=2*Math.pow(10,Math.round(e(t/2))),n=5*Math.pow(10,Math.round(e(t/5))),o=i;return Math.abs(s-t)<=Math.abs(o-t)&&(o=s),Math.abs(n-t)<=Math.abs(o-t)&&(o=n),0>=o&&(o=1),o},e.prototype.getCurrent=function(){return parseFloat(this._current.toPrecision(this.precision))},e.prototype.getStep=function(){return this._step},e.prototype.start=function(){this._current=this._start-this._start%this._step},e.prototype.next=function(){this._current+=this._step},e.prototype.end=function(){return this._current>this._end},t.exports=e},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");var n=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:"bottom",width:null,height:null,maxHeight:null,minHeight:null},this.options=r.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},util:{snap:null,toScreen:n._toScreen.bind(n),toGlobalScreen:n._toGlobalScreen.bind(n),toTime:n._toTime.bind(n),toGlobalTime:n._toGlobalTime.bind(n)}},this.range=new d(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new l(this.body),this.components.push(this.timeAxis),this.body.util.snap=this.timeAxis.snap.bind(this.timeAxis),this.currentTime=new c(this.body),this.components.push(this.currentTime),this.customTime=new u(this.body),this.components.push(this.customTime),this.itemSet=new p(this.body),this.components.push(this.itemSet),this.itemsData=null,this.groupsData=null,i&&this.setOptions(i),e?this.setItems(e):this.redraw()}var n=i(44),o=i(42),r=i(1),a=i(3),h=i(4),d=i(15),l=i(27),c=i(19),u=i(20),p=i(24);n(s.prototype),s.prototype._create=function(t){this.dom={},this.dom.root=document.createElement("div"),this.dom.background=document.createElement("div"),this.dom.backgroundVertical=document.createElement("div"),this.dom.backgroundHorizontal=document.createElement("div"),this.dom.centerContainer=document.createElement("div"),this.dom.leftContainer=document.createElement("div"),this.dom.rightContainer=document.createElement("div"),this.dom.center=document.createElement("div"),this.dom.left=document.createElement("div"),this.dom.right=document.createElement("div"),this.dom.top=document.createElement("div"),this.dom.bottom=document.createElement("div"),this.dom.shadowTop=document.createElement("div"),this.dom.shadowBottom=document.createElement("div"),this.dom.shadowTopLeft=document.createElement("div"),this.dom.shadowBottomLeft=document.createElement("div"),this.dom.shadowTopRight=document.createElement("div"),this.dom.shadowBottomRight=document.createElement("div"),this.dom.background.className="vispanel background",this.dom.backgroundVertical.className="vispanel background vertical",this.dom.backgroundHorizontal.className="vispanel background horizontal",this.dom.centerContainer.className="vispanel center",this.dom.leftContainer.className="vispanel left",this.dom.rightContainer.className="vispanel right",this.dom.top.className="vispanel top",this.dom.bottom.className="vispanel bottom",this.dom.left.className="content",this.dom.center.className="content",this.dom.right.className="content",this.dom.shadowTop.className="shadow top",this.dom.shadowBottom.className="shadow bottom",this.dom.shadowTopLeft.className="shadow top",this.dom.shadowBottomLeft.className="shadow bottom",this.dom.shadowTopRight.className="shadow top",this.dom.shadowBottomRight.className="shadow bottom",this.dom.root.appendChild(this.dom.background),this.dom.root.appendChild(this.dom.backgroundVertical),this.dom.root.appendChild(this.dom.backgroundHorizontal),this.dom.root.appendChild(this.dom.centerContainer),this.dom.root.appendChild(this.dom.leftContainer),this.dom.root.appendChild(this.dom.rightContainer),this.dom.root.appendChild(this.dom.top),this.dom.root.appendChild(this.dom.bottom),this.dom.centerContainer.appendChild(this.dom.center),this.dom.leftContainer.appendChild(this.dom.left),this.dom.rightContainer.appendChild(this.dom.right),this.dom.centerContainer.appendChild(this.dom.shadowTop),this.dom.centerContainer.appendChild(this.dom.shadowBottom),this.dom.leftContainer.appendChild(this.dom.shadowTopLeft),this.dom.leftContainer.appendChild(this.dom.shadowBottomLeft),this.dom.rightContainer.appendChild(this.dom.shadowTopRight),this.dom.rightContainer.appendChild(this.dom.shadowBottomRight),this.on("rangechange",this.redraw.bind(this)),this.on("change",this.redraw.bind(this)),this.on("touch",this._onTouch.bind(this)),this.on("pinch",this._onPinch.bind(this)),this.on("dragstart",this._onDragStart.bind(this)),this.on("drag",this._onDrag.bind(this)),this.hammer=o(this.dom.root,{prevent_default:!0}),this.listeners={};var e=this,i=["touch","pinch","tap","doubletap","hold","dragstart","drag","dragend","mousewheel","DOMMouseScroll"];if(i.forEach(function(t){var i=function(){var i=[t].concat(Array.prototype.slice.call(arguments,0));e.emit.apply(e,i)};e.hammer.on(t,i),e.listeners[t]=i}),this.props={root:{},background:{},centerContainer:{},leftContainer:{},rightContainer:{},center:{},left:{},right:{},top:{},bottom:{},border:{},scrollTop:0,scrollTopMin:0},this.touch={},!t)throw new Error("No container provided");t.appendChild(this.dom.root)},s.prototype.destroy=function(){this.clear(),this.off(),this._stopAutoResize(),this.dom.root.parentNode&&this.dom.root.parentNode.removeChild(this.dom.root),this.dom=null;for(var t in this.listeners)this.listeners.hasOwnProperty(t)&&delete this.listeners[t];this.listeners=null,this.hammer=null,this.components.forEach(function(t){t.destroy()}),this.body=null},s.prototype.setOptions=function(t){if(t){var e=["width","height","minHeight","maxHeight","autoResize","start","end","orientation"];r.selectiveExtend(e,this.options,t),this._initAutoResize()}if(this.components.forEach(function(e){e.setOptions(t)}),t&&t.order)throw new Error("Option order is deprecated. There is no replacement for this feature.");this.redraw()},s.prototype.setCustomTime=function(t){if(!this.customTime)throw new Error("Cannot get custom time: Custom time bar is not enabled");this.customTime.setCustomTime(t)},s.prototype.getCustomTime=function(){if(!this.customTime)throw new Error("Cannot get custom time: Custom time bar is not enabled");return this.customTime.getCustomTime()},s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof a||t instanceof h?t:new a(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.itemSet&&this.itemSet.setItems(e),i&&("start"in this.options||"end"in this.options)){this.fit();var s="start"in this.options?r.convert(this.options.start,"Date"):null,n="end"in this.options?r.convert(this.options.end,"Date"):null;this.setWindow(s,n)}},s.prototype.getVisibleItems=function(){return this.itemSet&&this.itemSet.getVisibleItems()||[]},s.prototype.setGroups=function(t){var e;e=t?t instanceof a||t instanceof h?t:new a(t):null,this.groupsData=e,this.itemSet.setGroups(e)},s.prototype.clear=function(t){(!t||t.items)&&this.setItems(null),(!t||t.groups)&&this.setGroups(null),(!t||t.options)&&(this.components.forEach(function(t){t.setOptions(t.defaultOptions)}),this.setOptions(this.defaultOptions))},s.prototype.fit=function(){var t=this.getItemRange(),e=t.min,i=t.max;if(null!=e&&null!=i){var s=i.valueOf()-e.valueOf();0>=s&&(s=864e5),e=new Date(e.valueOf()-.05*s),i=new Date(i.valueOf()+.05*s)}(null!==e||null!==i)&&this.range.setRange(e,i)},s.prototype.getItemRange=function(){var t=this.itemsData.getDataSet(),e=null,i=null;if(t){var s=t.min("start");e=s?r.convert(s.start,"Date").valueOf():null;var n=t.max("start");n&&(i=r.convert(n.start,"Date").valueOf());var o=t.max("end");o&&(i=null==i?r.convert(o.end,"Date").valueOf():Math.max(i,r.convert(o.end,"Date").valueOf()))}return{min:null!=e?new Date(e):null,max:null!=i?new Date(i):null}},s.prototype.setSelection=function(t){this.itemSet&&this.itemSet.setSelection(t)},s.prototype.getSelection=function(){return this.itemSet&&this.itemSet.getSelection()||[]},s.prototype.setWindow=function(t,e){if(1==arguments.length){var i=arguments[0];this.range.setRange(i.start,i.end)}else this.range.setRange(t,e)},s.prototype.getWindow=function(){var t=this.range.getRange();return{start:new Date(t.start),end:new Date(t.end)}},s.prototype.redraw=function(){var t=!1,e=this.options,i=this.props,s=this.dom;if(s){s.root.className="vis timeline root "+e.orientation,s.root.style.maxHeight=r.option.asSize(e.maxHeight,""),s.root.style.minHeight=r.option.asSize(e.minHeight,""),s.root.style.width=r.option.asSize(e.width,""),i.border.left=(s.centerContainer.offsetWidth-s.centerContainer.clientWidth)/2,i.border.right=i.border.left,i.border.top=(s.centerContainer.offsetHeight-s.centerContainer.clientHeight)/2,i.border.bottom=i.border.top;var n=s.root.offsetHeight-s.root.clientHeight,o=s.root.offsetWidth-s.root.clientWidth;i.center.height=s.center.offsetHeight,i.left.height=s.left.offsetHeight,i.right.height=s.right.offsetHeight,i.top.height=s.top.clientHeight||-i.border.top,i.bottom.height=s.bottom.clientHeight||-i.border.bottom;var a=Math.max(i.left.height,i.center.height,i.right.height),h=i.top.height+a+i.bottom.height+n+i.border.top+i.border.bottom;s.root.style.height=r.option.asSize(e.height,h+"px"),i.root.height=s.root.offsetHeight,i.background.height=i.root.height-n;var d=i.root.height-i.top.height-i.bottom.height-n;i.centerContainer.height=d,i.leftContainer.height=d,i.rightContainer.height=i.leftContainer.height,i.root.width=s.root.offsetWidth,i.background.width=i.root.width-o,i.left.width=s.leftContainer.clientWidth||-i.border.left,i.leftContainer.width=i.left.width,i.right.width=s.rightContainer.clientWidth||-i.border.right,i.rightContainer.width=i.right.width;var l=i.root.width-i.left.width-i.right.width-o;i.center.width=l,i.centerContainer.width=l,i.top.width=l,i.bottom.width=l,s.background.style.height=i.background.height+"px",s.backgroundVertical.style.height=i.background.height+"px",s.backgroundHorizontal.style.height=i.centerContainer.height+"px",s.centerContainer.style.height=i.centerContainer.height+"px",s.leftContainer.style.height=i.leftContainer.height+"px",s.rightContainer.style.height=i.rightContainer.height+"px",s.background.style.width=i.background.width+"px",s.backgroundVertical.style.width=i.centerContainer.width+"px",s.backgroundHorizontal.style.width=i.background.width+"px",s.centerContainer.style.width=i.center.width+"px",s.top.style.width=i.top.width+"px",s.bottom.style.width=i.bottom.width+"px",s.background.style.left="0",s.background.style.top="0",s.backgroundVertical.style.left=i.left.width+"px",s.backgroundVertical.style.top="0",s.backgroundHorizontal.style.left="0",s.backgroundHorizontal.style.top=i.top.height+"px",s.centerContainer.style.left=i.left.width+"px",s.centerContainer.style.top=i.top.height+"px",s.leftContainer.style.left="0",s.leftContainer.style.top=i.top.height+"px",s.rightContainer.style.left=i.left.width+i.center.width+"px",s.rightContainer.style.top=i.top.height+"px",s.top.style.left=i.left.width+"px",s.top.style.top="0",s.bottom.style.left=i.left.width+"px",s.bottom.style.top=i.top.height+i.centerContainer.height+"px",this._updateScrollTop();var c=this.props.scrollTop;"bottom"==e.orientation&&(c+=Math.max(this.props.centerContainer.height-this.props.center.height-this.props.border.top-this.props.border.bottom,0)),s.center.style.left="0",s.center.style.top=c+"px",s.left.style.left="0",s.left.style.top=c+"px",s.right.style.left="0",s.right.style.top=c+"px";var u=0==this.props.scrollTop?"hidden":"",p=this.props.scrollTop==this.props.scrollTopMin?"hidden":"";s.shadowTop.style.visibility=u,s.shadowBottom.style.visibility=p,s.shadowTopLeft.style.visibility=u,s.shadowBottomLeft.style.visibility=p,s.shadowTopRight.style.visibility=u,s.shadowBottomRight.style.visibility=p,this.components.forEach(function(e){t=e.redraw()||t}),t&&this.redraw()}},s.prototype.repaint=function(){throw new Error("Function repaint is deprecated. Use redraw instead.")},s.prototype._toTime=function(t){var e=this.range.conversion(this.props.center.width);return new Date(t/e.scale+e.offset)},s.prototype._toGlobalTime=function(t){var e=this.range.conversion(this.props.root.width);return new Date(t/e.scale+e.offset)},s.prototype._toScreen=function(t){var e=this.range.conversion(this.props.center.width);return(t.valueOf()-e.offset)*e.scale},s.prototype._toGlobalScreen=function(t){var e=this.range.conversion(this.props.root.width);return(t.valueOf()-e.offset)*e.scale},s.prototype._initAutoResize=function(){1==this.options.autoResize?this._startAutoResize():this._stopAutoResize()},s.prototype._startAutoResize=function(){var t=this;this._stopAutoResize(),this._onResize=function(){return 1!=t.options.autoResize?void t._stopAutoResize():void(t.dom.root&&(t.dom.root.clientWidth!=t.props.lastWidth||t.dom.root.clientHeight!=t.props.lastHeight)&&(t.props.lastWidth=t.dom.root.clientWidth,t.props.lastHeight=t.dom.root.clientHeight,t.emit("change")))},r.addEventListener(window,"resize",this._onResize),this.watchTimer=setInterval(this._onResize,1e3)},s.prototype._stopAutoResize=function(){this.watchTimer&&(clearInterval(this.watchTimer),this.watchTimer=void 0),r.removeEventListener(window,"resize",this._onResize),this._onResize=null},s.prototype._onTouch=function(){this.touch.allowDragging=!0},s.prototype._onPinch=function(){this.touch.allowDragging=!1},s.prototype._onDragStart=function(){this.touch.initialScrollTop=this.props.scrollTop},s.prototype._onDrag=function(t){if(this.touch.allowDragging){var e=t.gesture.deltaY,i=this._getScrollTop(),s=this._setScrollTop(this.touch.initialScrollTop+e);s!=i&&this.redraw()}},s.prototype._setScrollTop=function(t){return this.props.scrollTop=t,this._updateScrollTop(),this.props.scrollTop},s.prototype._updateScrollTop=function(){var t=Math.min(this.props.centerContainer.height-this.props.center.height,0);return t!=this.props.scrollTopMin&&("bottom"==this.options.orientation&&(this.props.scrollTop+=t-this.props.scrollTopMin),this.props.scrollTopMin=t),this.props.scrollTop>0&&(this.props.scrollTop=0),this.props.scrollTop=s&&(s=864e5),e=new Date(e.valueOf()-.05*s),i=new Date(i.valueOf()+.05*s)}(null!==e||null!==i)&&this.range.setRange(e,i)},s.prototype.getItemRange=function(){var t=this.itemsData,e=null,i=null;if(t){var s=t.min("start");e=s?r.convert(s.start,"Date").valueOf():null;var n=t.max("start");n&&(i=r.convert(n.start,"Date").valueOf());var o=t.max("end");o&&(i=null==i?r.convert(o.end,"Date").valueOf():Math.max(i,r.convert(o.end,"Date").valueOf()))}return{min:null!=e?new Date(e):null,max:null!=i?new Date(i):null}},s.prototype.setWindow=function(t,e){if(1==arguments.length){var i=arguments[0];this.range.setRange(i.start,i.end)}else this.range.setRange(t,e)},s.prototype.getWindow=function(){var t=this.range.getRange();return{start:new Date(t.start),end:new Date(t.end)}},s.prototype.redraw=function(){var t=!1,e=this.options,i=this.props,s=this.dom;if(s){s.root.className="vis timeline root "+e.orientation,s.root.style.maxHeight=r.option.asSize(e.maxHeight,""),s.root.style.minHeight=r.option.asSize(e.minHeight,""),s.root.style.width=r.option.asSize(e.width,""),i.border.left=(s.centerContainer.offsetWidth-s.centerContainer.clientWidth)/2,i.border.right=i.border.left,i.border.top=(s.centerContainer.offsetHeight-s.centerContainer.clientHeight)/2,i.border.bottom=i.border.top;var n=s.root.offsetHeight-s.root.clientHeight,o=s.root.offsetWidth-s.root.clientWidth;i.center.height=s.center.offsetHeight,i.left.height=s.left.offsetHeight,i.right.height=s.right.offsetHeight,i.top.height=s.top.clientHeight||-i.border.top,i.bottom.height=s.bottom.clientHeight||-i.border.bottom;var a=Math.max(i.left.height,i.center.height,i.right.height),h=i.top.height+a+i.bottom.height+n+i.border.top+i.border.bottom;s.root.style.height=r.option.asSize(e.height,h+"px"),i.root.height=s.root.offsetHeight,i.background.height=i.root.height-n;var d=i.root.height-i.top.height-i.bottom.height-n;i.centerContainer.height=d,i.leftContainer.height=d,i.rightContainer.height=i.leftContainer.height,i.root.width=s.root.offsetWidth,i.background.width=i.root.width-o,i.left.width=s.leftContainer.clientWidth||-i.border.left,i.leftContainer.width=i.left.width,i.right.width=s.rightContainer.clientWidth||-i.border.right,i.rightContainer.width=i.right.width;var l=i.root.width-i.left.width-i.right.width-o;i.center.width=l,i.centerContainer.width=l,i.top.width=l,i.bottom.width=l,s.background.style.height=i.background.height+"px",s.backgroundVertical.style.height=i.background.height+"px",s.backgroundHorizontalContainer.style.height=i.centerContainer.height+"px",s.centerContainer.style.height=i.centerContainer.height+"px",s.leftContainer.style.height=i.leftContainer.height+"px",s.rightContainer.style.height=i.rightContainer.height+"px",s.background.style.width=i.background.width+"px",s.backgroundVertical.style.width=i.centerContainer.width+"px",s.backgroundHorizontalContainer.style.width=i.background.width+"px",s.backgroundHorizontal.style.width=i.background.width+"px",s.centerContainer.style.width=i.center.width+"px",s.top.style.width=i.top.width+"px",s.bottom.style.width=i.bottom.width+"px",s.background.style.left="0",s.background.style.top="0",s.backgroundVertical.style.left=i.left.width+"px",s.backgroundVertical.style.top="0",s.backgroundHorizontalContainer.style.left="0",s.backgroundHorizontalContainer.style.top=i.top.height+"px",s.centerContainer.style.left=i.left.width+"px",s.centerContainer.style.top=i.top.height+"px",s.leftContainer.style.left="0",s.leftContainer.style.top=i.top.height+"px",s.rightContainer.style.left=i.left.width+i.center.width+"px",s.rightContainer.style.top=i.top.height+"px",s.top.style.left=i.left.width+"px",s.top.style.top="0",s.bottom.style.left=i.left.width+"px",s.bottom.style.top=i.top.height+i.centerContainer.height+"px",this._updateScrollTop();var c=this.props.scrollTop;"bottom"==e.orientation&&(c+=Math.max(this.props.centerContainer.height-this.props.center.height-this.props.border.top-this.props.border.bottom,0)),s.center.style.left="0",s.center.style.top=c+"px",s.backgroundHorizontal.style.left="0",s.backgroundHorizontal.style.top=c+"px",s.left.style.left="0",s.left.style.top=c+"px",s.right.style.left="0",s.right.style.top=c+"px";var u=0==this.props.scrollTop?"hidden":"",p=this.props.scrollTop==this.props.scrollTopMin?"hidden":"";s.shadowTop.style.visibility=u,s.shadowBottom.style.visibility=p,s.shadowTopLeft.style.visibility=u,s.shadowBottomLeft.style.visibility=p,s.shadowTopRight.style.visibility=u,s.shadowBottomRight.style.visibility=p,this.components.forEach(function(e){t=e.redraw()||t}),t&&this.redraw()}},s.prototype._toTime=function(t){var e=this.range.conversion(this.props.center.width);return new Date(t/e.scale+e.offset)},s.prototype._toGlobalTime=function(t){var e=this.range.conversion(this.props.root.width);return new Date(t/e.scale+e.offset)},s.prototype._toScreen=function(t){var e=this.range.conversion(this.props.center.width);return(t.valueOf()-e.offset)*e.scale},s.prototype._toGlobalScreen=function(t){var e=this.range.conversion(this.props.root.width);return(t.valueOf()-e.offset)*e.scale},s.prototype._initAutoResize=function(){1==this.options.autoResize?this._startAutoResize():this._stopAutoResize()},s.prototype._startAutoResize=function(){var t=this;this._stopAutoResize(),this._onResize=function(){return 1!=t.options.autoResize?void t._stopAutoResize():void(t.dom.root&&(t.dom.root.clientWidth!=t.props.lastWidth||t.dom.root.clientHeight!=t.props.lastHeight)&&(t.props.lastWidth=t.dom.root.clientWidth,t.props.lastHeight=t.dom.root.clientHeight,t.emit("change")))},r.addEventListener(window,"resize",this._onResize),this.watchTimer=setInterval(this._onResize,1e3)},s.prototype._stopAutoResize=function(){this.watchTimer&&(clearInterval(this.watchTimer),this.watchTimer=void 0),r.removeEventListener(window,"resize",this._onResize),this._onResize=null},s.prototype._onTouch=function(){this.touch.allowDragging=!0},s.prototype._onPinch=function(){this.touch.allowDragging=!1},s.prototype._onDragStart=function(){this.touch.initialScrollTop=this.props.scrollTop},s.prototype._onDrag=function(t){if(this.touch.allowDragging){var e=t.gesture.deltaY,i=this._getScrollTop(),s=this._setScrollTop(this.touch.initialScrollTop+e);s!=i&&this.redraw()}},s.prototype._setScrollTop=function(t){return this.props.scrollTop=t,this._updateScrollTop(),this.props.scrollTop},s.prototype._updateScrollTop=function(){var t=Math.min(this.props.centerContainer.height-this.props.center.height,0);return t!=this.props.scrollTopMin&&("bottom"==this.options.orientation&&(this.props.scrollTop+=t-this.props.scrollTopMin),this.props.scrollTopMin=t),this.props.scrollTop>0&&(this.props.scrollTop=0),this.props.scrollTopo&&(h=o);for(var d=!1,l=h;Math.abs(l)<=Math.abs(o);l++){a=Math.pow(10,l);for(var c=0;c=n){d=!0,r=c;break -}}if(1==d)break}this.stepIndex=r,this.scale=a,this.step=a*this.minorSteps[r]},e.prototype.first=function(){this.setFirst()},e.prototype.setFirst=function(){var t=this._start-this.scale*this.minorSteps[this.stepIndex],e=this._end+this.scale*this.minorSteps[this.stepIndex];this.marginEnd=this.roundToMinor(e),this.marginStart=this.roundToMinor(t),this.marginRange=this.marginEnd-this.marginStart,this.current=this.marginEnd},e.prototype.roundToMinor=function(t){var e=t-t%(this.scale*this.minorSteps[this.stepIndex]);return t%(this.scale*this.minorSteps[this.stepIndex])>.5*this.scale*this.minorSteps[this.stepIndex]?e+this.scale*this.minorSteps[this.stepIndex]:e},e.prototype.hasNext=function(){return this.current>=this.marginStart},e.prototype.next=function(){var t=this.current;this.current-=this.step,this.current==t&&(this.current=this._end)},e.prototype.previous=function(){this.current+=this.step,this.marginEnd+=this.step,this.marginRange=this.marginEnd-this.marginStart},e.prototype.getCurrent=function(){for(var t=""+Number(this.current).toPrecision(5),e=t.length-1;e>0;e--){if("0"!=t[e]){if("."==t[e]||","==t[e]){t=t.slice(0,e);break}break}t=t.slice(0,e)}return t},e.prototype.snap=function(){},e.prototype.isMajor=function(){return this.current%(this.scale*this.majorSteps[this.stepIndex])==0},t.exports=e},function(t,e,i){function s(t,e){var i=h().hours(0).minutes(0).seconds(0).milliseconds(0);this.start=i.clone().add("days",-3).valueOf(),this.end=i.clone().add("days",4).valueOf(),this.body=t,this.defaultOptions={start:null,end:null,direction:"horizontal",moveable:!0,zoomable:!0,min:null,max:null,zoomMin:10,zoomMax:31536e10},this.options=r.extend({},this.defaultOptions),this.props={touch:{}},this.body.emitter.on("dragstart",this._onDragStart.bind(this)),this.body.emitter.on("drag",this._onDrag.bind(this)),this.body.emitter.on("dragend",this._onDragEnd.bind(this)),this.body.emitter.on("hold",this._onHold.bind(this)),this.body.emitter.on("mousewheel",this._onMouseWheel.bind(this)),this.body.emitter.on("DOMMouseScroll",this._onMouseWheel.bind(this)),this.body.emitter.on("touch",this._onTouch.bind(this)),this.body.emitter.on("pinch",this._onPinch.bind(this)),this.setOptions(e)}function n(t){if("horizontal"!=t&&"vertical"!=t)throw new TypeError('Unknown direction "'+t+'". Choose "horizontal" or "vertical".')}function o(t,e){return{x:t.pageX-r.getAbsoluteLeft(e),y:t.pageY-r.getAbsoluteTop(e)}}var r=i(1),a=i(39),h=i(41),d=i(18);s.prototype=new d,s.prototype.setOptions=function(t){if(t){var e=["direction","min","max","zoomMin","zoomMax","moveable","zoomable"];r.selectiveExtend(e,this.options,t),("start"in t||"end"in t)&&this.setRange(t.start,t.end)}},s.prototype.setRange=function(t,e){var i=this._applyRange(t,e);if(i){var s={start:new Date(this.start),end:new Date(this.end)};this.body.emitter.emit("rangechange",s),this.body.emitter.emit("rangechanged",s)}},s.prototype._applyRange=function(t,e){var i,s=null!=t?r.convert(t,"Date").valueOf():this.start,n=null!=e?r.convert(e,"Date").valueOf():this.end,o=null!=this.options.max?r.convert(this.options.max,"Date").valueOf():null,a=null!=this.options.min?r.convert(this.options.min,"Date").valueOf():null;if(isNaN(s)||null===s)throw new Error('Invalid start "'+t+'"');if(isNaN(n)||null===n)throw new Error('Invalid end "'+e+'"');if(s>n&&(n=s),null!==a&&a>s&&(i=a-s,s+=i,n+=i,null!=o&&n>o&&(n=o)),null!==o&&n>o&&(i=n-o,s-=i,n-=i,null!=a&&a>s&&(s=a)),null!==this.options.zoomMin){var h=parseFloat(this.options.zoomMin);0>h&&(h=0),h>n-s&&(this.end-this.start===h?(s=this.start,n=this.end):(i=h-(n-s),s-=i/2,n+=i/2))}if(null!==this.options.zoomMax){var d=parseFloat(this.options.zoomMax);0>d&&(d=0),n-s>d&&(this.end-this.start===d?(s=this.start,n=this.end):(i=n-s-d,s+=i/2,n-=i/2))}var l=this.start!=s||this.end!=n;return this.start=s,this.end=n,l},s.prototype.getRange=function(){return{start:this.start,end:this.end}},s.prototype.conversion=function(t){return s.conversion(this.start,this.end,t)},s.conversion=function(t,e,i){return 0!=i&&e-t!=0?{offset:t,scale:i/(e-t)}:{offset:0,scale:1}},s.prototype._onDragStart=function(){this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.start=this.start,this.props.touch.end=this.end,this.body.dom.root&&(this.body.dom.root.style.cursor="move"))},s.prototype._onDrag=function(t){if(this.options.moveable){var e=this.options.direction;if(n(e),this.props.touch.allowDragging){var i="horizontal"==e?t.gesture.deltaX:t.gesture.deltaY,s=this.props.touch.end-this.props.touch.start,o="horizontal"==e?this.body.domProps.center.width:this.body.domProps.center.height,r=-i/o*s;this._applyRange(this.props.touch.start+r,this.props.touch.end+r),this.body.emitter.emit("rangechange",{start:new Date(this.start),end:new Date(this.end)})}}},s.prototype._onDragEnd=function(){this.options.moveable&&this.props.touch.allowDragging&&(this.body.dom.root&&(this.body.dom.root.style.cursor="auto"),this.body.emitter.emit("rangechanged",{start:new Date(this.start),end:new Date(this.end)}))},s.prototype._onMouseWheel=function(t){if(this.options.zoomable&&this.options.moveable){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i;i=0>e?1-e/5:1/(1+e/5);var s=a.fakeGesture(this,t),n=o(s.center,this.body.dom.center),r=this._pointerToDate(n);this.zoom(i,r)}t.preventDefault()}},s.prototype._onTouch=function(){this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.allowDragging=!0,this.props.touch.center=null},s.prototype._onHold=function(){this.props.touch.allowDragging=!1},s.prototype._onPinch=function(t){if(this.options.zoomable&&this.options.moveable&&(this.props.touch.allowDragging=!1,t.gesture.touches.length>1)){this.props.touch.center||(this.props.touch.center=o(t.gesture.center,this.body.dom.center));var e=1/t.gesture.scale,i=this._pointerToDate(this.props.touch.center),s=parseInt(i+(this.props.touch.start-i)*e),n=parseInt(i+(this.props.touch.end-i)*e);this.setRange(s,n)}},s.prototype._pointerToDate=function(t){var e,i=this.options.direction;if(n(i),"horizontal"==i){var s=this.body.domProps.center.width;return e=this.conversion(s),t.x/e.scale+e.offset}var o=this.body.domProps.center.height;return e=this.conversion(o),t.y/e.scale+e.offset},s.prototype.zoom=function(t,e){null==e&&(e=(this.start+this.end)/2);var i=e+(this.start-e)*t,s=e+(this.end-e)*t;this.setRange(i,s)},s.prototype.move=function(t){var e=this.end-this.start,i=this.start+e*t,s=this.end+e*t;this.start=i,this.end=s},s.prototype.moveTo=function(t){var e=(this.start+this.end)/2,i=e-t,s=this.start-i,n=this.end-i;this.setRange(s,n)},t.exports=s},function(t,e){var i=.001;e.orderByStart=function(t){t.sort(function(t,e){return t.data.start-e.data.start})},e.orderByEnd=function(t){t.sort(function(t,e){var i="end"in t.data?t.data.end:t.data.start,s="end"in e.data?e.data.end:e.data.start;return i-s})},e.stack=function(t,i,s){var n,o;if(s)for(n=0,o=t.length;o>n;n++)t[n].top=null;for(n=0,o=t.length;o>n;n++){var r=t[n];if(null===r.top){r.top=i.axis;do{for(var a=null,h=0,d=t.length;d>h;h++){var l=t[h];if(null!==l.top&&l!==r&&e.collision(r,l,i.item)){a=l;break}}null!=a&&(r.top=a.top+a.height+i.item.vertical)}while(a)}}},e.nostack=function(t,e){var i,s;for(i=0,s=t.length;s>i;i++)t[i].top=e.axis},e.collision=function(t,e,s){return t.left-s.horizontal+ie.left&&t.top-s.vertical+ie.top}},function(t,e,i){function s(t,e,i){this.current=new Date,this._start=new Date,this._end=new Date,this.autoScale=!0,this.scale=s.SCALE.DAY,this.step=1,this.setRange(t,e,i)}var n=i(41);s.SCALE={MILLISECOND:1,SECOND:2,MINUTE:3,HOUR:4,DAY:5,WEEKDAY:6,MONTH:7,YEAR:8},s.prototype.setRange=function(t,e,i){if(!(t instanceof Date&&e instanceof Date))throw"No legal start or end date in method setRange";this._start=void 0!=t?new Date(t.valueOf()):new Date,this._end=void 0!=e?new Date(e.valueOf()):new Date,this.autoScale&&this.setMinimumStep(i)},s.prototype.first=function(){this.current=new Date(this._start.valueOf()),this.roundToMinor()},s.prototype.roundToMinor=function(){switch(this.scale){case s.SCALE.YEAR:this.current.setFullYear(this.step*Math.floor(this.current.getFullYear()/this.step)),this.current.setMonth(0);case s.SCALE.MONTH:this.current.setDate(1);case s.SCALE.DAY:case s.SCALE.WEEKDAY:this.current.setHours(0);case s.SCALE.HOUR:this.current.setMinutes(0);case s.SCALE.MINUTE:this.current.setSeconds(0);case s.SCALE.SECOND:this.current.setMilliseconds(0)}if(1!=this.step)switch(this.scale){case s.SCALE.MILLISECOND:this.current.setMilliseconds(this.current.getMilliseconds()-this.current.getMilliseconds()%this.step);break;case s.SCALE.SECOND:this.current.setSeconds(this.current.getSeconds()-this.current.getSeconds()%this.step);break;case s.SCALE.MINUTE:this.current.setMinutes(this.current.getMinutes()-this.current.getMinutes()%this.step);break;case s.SCALE.HOUR:this.current.setHours(this.current.getHours()-this.current.getHours()%this.step);break;case s.SCALE.WEEKDAY:case s.SCALE.DAY:this.current.setDate(this.current.getDate()-1-(this.current.getDate()-1)%this.step+1);break;case s.SCALE.MONTH:this.current.setMonth(this.current.getMonth()-this.current.getMonth()%this.step);break;case s.SCALE.YEAR:this.current.setFullYear(this.current.getFullYear()-this.current.getFullYear()%this.step)}},s.prototype.hasNext=function(){return this.current.valueOf()<=this._end.valueOf()},s.prototype.next=function(){var t=this.current.valueOf();if(this.current.getMonth()<6)switch(this.scale){case s.SCALE.MILLISECOND:this.current=new Date(this.current.valueOf()+this.step);break;case s.SCALE.SECOND:this.current=new Date(this.current.valueOf()+1e3*this.step);break;case s.SCALE.MINUTE:this.current=new Date(this.current.valueOf()+1e3*this.step*60);break;case s.SCALE.HOUR:this.current=new Date(this.current.valueOf()+1e3*this.step*60*60);var e=this.current.getHours();this.current.setHours(e-e%this.step);break;case s.SCALE.WEEKDAY:case s.SCALE.DAY:this.current.setDate(this.current.getDate()+this.step);break;case s.SCALE.MONTH:this.current.setMonth(this.current.getMonth()+this.step);break;case s.SCALE.YEAR:this.current.setFullYear(this.current.getFullYear()+this.step)}else switch(this.scale){case s.SCALE.MILLISECOND:this.current=new Date(this.current.valueOf()+this.step);break;case s.SCALE.SECOND:this.current.setSeconds(this.current.getSeconds()+this.step);break;case s.SCALE.MINUTE:this.current.setMinutes(this.current.getMinutes()+this.step);break;case s.SCALE.HOUR:this.current.setHours(this.current.getHours()+this.step);break;case s.SCALE.WEEKDAY:case s.SCALE.DAY:this.current.setDate(this.current.getDate()+this.step);break;case s.SCALE.MONTH:this.current.setMonth(this.current.getMonth()+this.step);break;case s.SCALE.YEAR:this.current.setFullYear(this.current.getFullYear()+this.step)}if(1!=this.step)switch(this.scale){case s.SCALE.MILLISECOND:this.current.getMilliseconds()0&&(this.step=e),this.autoScale=!1},s.prototype.setAutoScale=function(t){this.autoScale=t},s.prototype.setMinimumStep=function(t){if(void 0!=t){var e=31104e6,i=2592e6,n=864e5,o=36e5,r=6e4,a=1e3,h=1;1e3*e>t&&(this.scale=s.SCALE.YEAR,this.step=1e3),500*e>t&&(this.scale=s.SCALE.YEAR,this.step=500),100*e>t&&(this.scale=s.SCALE.YEAR,this.step=100),50*e>t&&(this.scale=s.SCALE.YEAR,this.step=50),10*e>t&&(this.scale=s.SCALE.YEAR,this.step=10),5*e>t&&(this.scale=s.SCALE.YEAR,this.step=5),e>t&&(this.scale=s.SCALE.YEAR,this.step=1),3*i>t&&(this.scale=s.SCALE.MONTH,this.step=3),i>t&&(this.scale=s.SCALE.MONTH,this.step=1),5*n>t&&(this.scale=s.SCALE.DAY,this.step=5),2*n>t&&(this.scale=s.SCALE.DAY,this.step=2),n>t&&(this.scale=s.SCALE.DAY,this.step=1),n/2>t&&(this.scale=s.SCALE.WEEKDAY,this.step=1),4*o>t&&(this.scale=s.SCALE.HOUR,this.step=4),o>t&&(this.scale=s.SCALE.HOUR,this.step=1),15*r>t&&(this.scale=s.SCALE.MINUTE,this.step=15),10*r>t&&(this.scale=s.SCALE.MINUTE,this.step=10),5*r>t&&(this.scale=s.SCALE.MINUTE,this.step=5),r>t&&(this.scale=s.SCALE.MINUTE,this.step=1),15*a>t&&(this.scale=s.SCALE.SECOND,this.step=15),10*a>t&&(this.scale=s.SCALE.SECOND,this.step=10),5*a>t&&(this.scale=s.SCALE.SECOND,this.step=5),a>t&&(this.scale=s.SCALE.SECOND,this.step=1),200*h>t&&(this.scale=s.SCALE.MILLISECOND,this.step=200),100*h>t&&(this.scale=s.SCALE.MILLISECOND,this.step=100),50*h>t&&(this.scale=s.SCALE.MILLISECOND,this.step=50),10*h>t&&(this.scale=s.SCALE.MILLISECOND,this.step=10),5*h>t&&(this.scale=s.SCALE.MILLISECOND,this.step=5),h>t&&(this.scale=s.SCALE.MILLISECOND,this.step=1)}},s.prototype.snap=function(t){var e=new Date(t.valueOf());if(this.scale==s.SCALE.YEAR){var i=e.getFullYear()+Math.round(e.getMonth()/12);e.setFullYear(Math.round(i/this.step)*this.step),e.setMonth(0),e.setDate(0),e.setHours(0),e.setMinutes(0),e.setSeconds(0),e.setMilliseconds(0)}else if(this.scale==s.SCALE.MONTH)e.getDate()>15?(e.setDate(1),e.setMonth(e.getMonth()+1)):e.setDate(1),e.setHours(0),e.setMinutes(0),e.setSeconds(0),e.setMilliseconds(0);else if(this.scale==s.SCALE.DAY){switch(this.step){case 5:case 2:e.setHours(24*Math.round(e.getHours()/24));break;default:e.setHours(12*Math.round(e.getHours()/12))}e.setMinutes(0),e.setSeconds(0),e.setMilliseconds(0)}else if(this.scale==s.SCALE.WEEKDAY){switch(this.step){case 5:case 2:e.setHours(12*Math.round(e.getHours()/12));break;default:e.setHours(6*Math.round(e.getHours()/6))}e.setMinutes(0),e.setSeconds(0),e.setMilliseconds(0)}else if(this.scale==s.SCALE.HOUR){switch(this.step){case 4:e.setMinutes(60*Math.round(e.getMinutes()/60));break;default:e.setMinutes(30*Math.round(e.getMinutes()/30))}e.setSeconds(0),e.setMilliseconds(0)}else if(this.scale==s.SCALE.MINUTE){switch(this.step){case 15:case 10:e.setMinutes(5*Math.round(e.getMinutes()/5)),e.setSeconds(0);break;case 5:e.setSeconds(60*Math.round(e.getSeconds()/60));break;default:e.setSeconds(30*Math.round(e.getSeconds()/30))}e.setMilliseconds(0)}else if(this.scale==s.SCALE.SECOND)switch(this.step){case 15:case 10:e.setSeconds(5*Math.round(e.getSeconds()/5)),e.setMilliseconds(0);break;case 5:e.setMilliseconds(1e3*Math.round(e.getMilliseconds()/1e3));break;default:e.setMilliseconds(500*Math.round(e.getMilliseconds()/500))}else if(this.scale==s.SCALE.MILLISECOND){var n=this.step>5?this.step/2:1;e.setMilliseconds(Math.round(e.getMilliseconds()/n)*n)}return e},s.prototype.isMajor=function(){switch(this.scale){case s.SCALE.MILLISECOND:return 0==this.current.getMilliseconds();case s.SCALE.SECOND:return 0==this.current.getSeconds();case s.SCALE.MINUTE:return 0==this.current.getHours()&&0==this.current.getMinutes();case s.SCALE.HOUR:return 0==this.current.getHours();case s.SCALE.WEEKDAY:case s.SCALE.DAY:return 1==this.current.getDate();case s.SCALE.MONTH:return 0==this.current.getMonth();case s.SCALE.YEAR:return!1;default:return!1}},s.prototype.getLabelMinor=function(t){switch(void 0==t&&(t=this.current),this.scale){case s.SCALE.MILLISECOND:return n(t).format("SSS");case s.SCALE.SECOND:return n(t).format("s");case s.SCALE.MINUTE:return n(t).format("HH:mm");case s.SCALE.HOUR:return n(t).format("HH:mm");case s.SCALE.WEEKDAY:return n(t).format("ddd D");case s.SCALE.DAY:return n(t).format("D");case s.SCALE.MONTH:return n(t).format("MMM");case s.SCALE.YEAR:return n(t).format("YYYY");default:return""}},s.prototype.getLabelMajor=function(t){switch(void 0==t&&(t=this.current),this.scale){case s.SCALE.MILLISECOND:return n(t).format("HH:mm:ss");case s.SCALE.SECOND:return n(t).format("D MMMM HH:mm");case s.SCALE.MINUTE:case s.SCALE.HOUR:return n(t).format("ddd D MMMM");case s.SCALE.WEEKDAY:case s.SCALE.DAY:return n(t).format("MMMM YYYY");case s.SCALE.MONTH:return n(t).format("YYYY");case s.SCALE.YEAR:return"";default:return""}},t.exports=s},function(t){function e(){this.options=null,this.props=null}e.prototype.setOptions=function(t){t&&util.extend(this.options,t)},e.prototype.redraw=function(){return!1},e.prototype.destroy=function(){},e.prototype._isResized=function(){var t=this.props._previousWidth!==this.props.width||this.props._previousHeight!==this.props.height;return this.props._previousWidth=this.props.width,this.props._previousHeight=this.props.height,t},t.exports=e},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCurrentTime:!0},this.options=n.extend({},this.defaultOptions),this._create(),this.setOptions(e)}var n=i(1),o=i(18);s.prototype=new o,s.prototype._create=function(){var t=document.createElement("div");t.className="currenttime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t},s.prototype.destroy=function(){this.options.showCurrentTime=!1,this.redraw(),this.body=null},s.prototype.setOptions=function(t){t&&n.selectiveExtend(["showCurrentTime"],this.options,t)},s.prototype.redraw=function(){if(this.options.showCurrentTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar),this.start());var e=new Date,i=this.body.util.toScreen(e);this.bar.style.left=i+"px",this.bar.title="Current time: "+e}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),this.stop();return!1},s.prototype.start=function(){function t(){e.stop();var i=e.body.range.conversion(e.body.domProps.center.width).scale,s=1/i/10;30>s&&(s=30),s>1e3&&(s=1e3),e.redraw(),e.currentTimeTimer=setTimeout(t,s)}var e=this;t()},s.prototype.stop=function(){void 0!==this.currentTimeTimer&&(clearTimeout(this.currentTimeTimer),delete this.currentTimeTimer)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCustomTime:!1},this.options=o.extend({},this.defaultOptions),this.customTime=new Date,this.eventParams={},this._create(),this.setOptions(e)}var n=i(42),o=i(1),r=i(18);s.prototype=new r,s.prototype.setOptions=function(t){t&&o.selectiveExtend(["showCustomTime"],this.options,t)},s.prototype._create=function(){var t=document.createElement("div");t.className="customtime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t;var e=document.createElement("div");e.style.position="relative",e.style.top="0px",e.style.left="-10px",e.style.height="100%",e.style.width="20px",t.appendChild(e),this.hammer=n(t,{prevent_default:!0}),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this))},s.prototype.destroy=function(){this.options.showCustomTime=!1,this.redraw(),this.hammer.enable(!1),this.hammer=null,this.body=null},s.prototype.redraw=function(){if(this.options.showCustomTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar));var e=this.body.util.toScreen(this.customTime);this.bar.style.left=e+"px",this.bar.title="Time: "+this.customTime}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar);return!1},s.prototype.setCustomTime=function(t){this.customTime=new Date(t.valueOf()),this.redraw()},s.prototype.getCustomTime=function(){return new Date(this.customTime.valueOf())},s.prototype._onDragStart=function(t){this.eventParams.dragging=!0,this.eventParams.customTime=this.customTime,t.stopPropagation(),t.preventDefault()},s.prototype._onDrag=function(t){if(this.eventParams.dragging){var e=t.gesture.deltaX,i=this.body.util.toScreen(this.eventParams.customTime)+e,s=this.body.util.toTime(i);this.setCustomTime(s),this.body.emitter.emit("timechange",{time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault()}},s.prototype._onDragEnd=function(t){this.eventParams.dragging&&(this.body.emitter.emit("timechanged",{time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault())},t.exports=s},function(t,e,i){function s(t,e,i){this.id=n.randomUUID(),this.body=t,this.defaultOptions={orientation:"left",showMinorLabels:!0,showMajorLabels:!0,icons:!0,majorLinesOffset:7,minorLinesOffset:4,labelOffsetX:10,labelOffsetY:2,iconWidth:20,width:"40px",visible:!0},this.linegraphSVG=i,this.props={},this.DOMelements={lines:{},labels:{}},this.dom={},this.range={start:0,end:0},this.options=n.extend({},this.defaultOptions),this.conversionFactor=1,this.setOptions(e),this.width=Number((""+this.options.width).replace("px","")),this.minWidth=this.width,this.height=this.linegraphSVG.offsetHeight,this.stepPixels=25,this.stepPixelsForced=25,this.lineOffset=0,this.master=!0,this.svgElements={},this.groups={},this.amountOfGroups=0,this._create()}var n=i(1),o=i(2),r=i(18),a=i(14);s.prototype=new r,s.prototype.addGroup=function(t,e){this.groups.hasOwnProperty(t)||(this.groups[t]=e),this.amountOfGroups+=1},s.prototype.updateGroup=function(t,e){this.groups[t]=e},s.prototype.removeGroup=function(t){this.groups.hasOwnProperty(t)&&(delete this.groups[t],this.amountOfGroups-=1)},s.prototype.setOptions=function(t){if(t){var e=!1;this.options.orientation!=t.orientation&&void 0!==t.orientation&&(e=!0);var i=["orientation","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","width","visible"];n.selectiveExtend(i,this.options,t),this.minWidth=Number((""+this.options.width).replace("px","")),1==e&&this.dom.frame&&(this.hide(),this.show())}},s.prototype._create=function(){this.dom.frame=document.createElement("div"),this.dom.frame.style.width=this.options.width,this.dom.frame.style.height=this.height,this.dom.lineContainer=document.createElement("div"),this.dom.lineContainer.style.width="100%",this.dom.lineContainer.style.height=this.height,this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="absolute",this.svg.style.top="0px",this.svg.style.height="100%",this.svg.style.width="100%",this.svg.style.display="block",this.dom.frame.appendChild(this.svg)},s.prototype._redrawGroupIcons=function(){o.prepareElements(this.svgElements);var t,e=this.options.iconWidth,i=15,s=4,n=s+.5*i;t="left"==this.options.orientation?s:this.width-e-s;for(var r in this.groups)this.groups.hasOwnProperty(r)&&(this.groups[r].drawIcon(t,n,this.svgElements,this.svg,e,i),n+=i+s);o.cleanupElements(this.svgElements)},s.prototype.show=function(){this.dom.frame.parentNode||("left"==this.options.orientation?this.body.dom.left.appendChild(this.dom.frame):this.body.dom.right.appendChild(this.dom.frame)),this.dom.lineContainer.parentNode||this.body.dom.backgroundHorizontal.appendChild(this.dom.lineContainer)},s.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.lineContainer.parentNode&&this.dom.lineContainer.parentNode.removeChild(this.dom.lineContainer)},s.prototype.setRange=function(t,e){this.range.start=t,this.range.end=e},s.prototype.redraw=function(){var t=!1;if(0==this.amountOfGroups)this.hide();else{this.show(),this.height=Number(this.linegraphSVG.style.height.replace("px","")),this.dom.lineContainer.style.height=this.height+"px",this.width=1==this.options.visible?Number((""+this.options.width).replace("px","")):0;var e=this.props,i=this.dom.frame;i.className="dataaxis",this._calculateCharSize();var s=this.options.orientation,n=this.options.showMinorLabels,o=this.options.showMajorLabels;e.minorLabelHeight=n?e.minorCharHeight:0,e.majorLabelHeight=o?e.majorCharHeight:0,e.minorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.minorLinesOffset,e.minorLineHeight=1,e.majorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.majorLinesOffset,e.majorLineHeight=1,"left"==s?(i.style.top="0",i.style.left="0",i.style.bottom="",i.style.width=this.width+"px",i.style.height=this.height+"px"):(i.style.top="",i.style.bottom="0",i.style.left="0",i.style.width=this.width+"px",i.style.height=this.height+"px"),t=this._redrawLabels(),1==this.options.icons&&this._redrawGroupIcons()}return t},s.prototype._redrawLabels=function(){o.prepareElements(this.DOMelements);var t=this.options.orientation,e=this.master?this.props.majorCharHeight||10:this.stepPixelsForced,i=new a(this.range.start,this.range.end,e,this.dom.frame.offsetHeight);this.step=i,i.first();var s=this.dom.frame.offsetHeight/(i.marginRange/i.step+1);this.stepPixels=s;var n=this.height/s,r=0;if(0==this.master){s=this.stepPixelsForced,r=Math.round(this.height/s-n);for(var h=0;.5*r>h;h++)i.previous();n=this.height/s}this.valueAtZero=i.marginEnd;var d=0,l=1;i.next(),this.maxLabelSize=0;for(var c=0;l=0&&this._redrawLabel(c-2,i.getCurrent(),t,"yAxis major",this.props.majorCharHeight),this._redrawLine(c,t,"grid horizontal major",this.options.majorLinesOffset,this.props.majorLineWidth)):this._redrawLine(c,t,"grid horizontal minor",this.options.minorLinesOffset,this.props.minorLineWidth),i.next(),l++}this.conversionFactor=d/((n-1)*i.step);var p=1==this.options.icons?this.options.iconWidth+this.options.labelOffsetX+15:this.options.labelOffsetX+15;return this.maxLabelSize>this.width-p&&1==this.options.visible?(this.width=this.maxLabelSize+p,this.options.width=this.width+"px",o.cleanupElements(this.DOMelements),this.redraw(),!0):this.maxLabelSizethis.minWidth?(this.width=Math.max(this.minWidth,this.maxLabelSize+p),this.options.width=this.width+"px",o.cleanupElements(this.DOMelements),this.redraw(),!0):(o.cleanupElements(this.DOMelements),!1)},s.prototype._redrawLabel=function(t,e,i,s,n){var r=o.getDOMElement("div",this.DOMelements,this.dom.frame);r.className=s,r.innerHTML=e,"left"==i?(r.style.left="-"+this.options.labelOffsetX+"px",r.style.textAlign="right"):(r.style.right="-"+this.options.labelOffsetX+"px",r.style.textAlign="left"),r.style.top=t-.5*n+this.options.labelOffsetY+"px",e+="";var a=Math.max(this.props.majorCharWidth,this.props.minorCharWidth);this.maxLabelSizee.axis){var c=d-e.axis;l-=c,n.forEach(h,function(t){t.top-=c})}a=l+e.item.vertical/2}else a=e.axis+e.item.vertical;a=Math.max(a,this.props.label.height);var u=this.dom.foreground;this.top=u.offsetTop,this.left=u.offsetLeft,this.width=u.offsetWidth,s=n.updateProperty(this,"height",a)||s,s=n.updateProperty(this.props.label,"width",this.dom.inner.clientWidth)||s,s=n.updateProperty(this.props.label,"height",this.dom.inner.clientHeight)||s,this.dom.background.style.height=a+"px",this.dom.foreground.style.height=a+"px",this.dom.label.style.height=a+"px";for(var p=0,m=this.visibleItems.length;m>p;p++){var _=this.visibleItems[p];_.repositionY()}return s},s.prototype.show=function(){this.dom.label.parentNode||this.itemSet.dom.labelSet.appendChild(this.dom.label),this.dom.foreground.parentNode||this.itemSet.dom.foreground.appendChild(this.dom.foreground),this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background),this.dom.axis.parentNode||this.itemSet.dom.axis.appendChild(this.dom.axis)},s.prototype.hide=function(){var t=this.dom.label;t.parentNode&&t.parentNode.removeChild(t);var e=this.dom.foreground;e.parentNode&&e.parentNode.removeChild(e);var i=this.dom.background;i.parentNode&&i.parentNode.removeChild(i);var s=this.dom.axis;s.parentNode&&s.parentNode.removeChild(s)},s.prototype.add=function(t){if(this.items[t.id]=t,t.setParent(this),t instanceof r&&-1==this.visibleItems.indexOf(t)){var e=this.itemSet.body.range;this._checkIfVisible(t,this.visibleItems,e)}},s.prototype.remove=function(t){delete this.items[t.id],t.setParent(this.itemSet);var e=this.visibleItems.indexOf(t);-1!=e&&this.visibleItems.splice(e,1)},s.prototype.removeFromDataSet=function(t){this.itemSet.removeItem(t.id)},s.prototype.order=function(){var t=n.toArray(this.items);this.orderedItems.byStart=t,this.orderedItems.byEnd=this._constructByEndArray(t),o.orderByStart(this.orderedItems.byStart),o.orderByEnd(this.orderedItems.byEnd)},s.prototype._constructByEndArray=function(t){for(var e=[],i=0;i0)for(o=0;o=0&&!this._checkIfInvisible(t.byStart[o],r,i);o--);for(o=s+1;o=0&&!this._checkIfInvisible(t.byEnd[o],r,i);o--);for(o=a+1;oe;e++)s=this.selection[e],n=this.items[s],n&&n.unselect();for(this.selection=[],e=0,i=t.length;i>e;e++)s=t[e],n=this.items[s],n&&(this.selection.push(s),n.select())}},s.prototype.getSelection=function(){return this.selection.concat([])},s.prototype.getVisibleItems=function(){var t=this.body.range.getRange(),e=this.body.util.toScreen(t.start),i=this.body.util.toScreen(t.end),s=[];for(var n in this.groups)if(this.groups.hasOwnProperty(n))for(var o=this.groups[n],r=o.visibleItems,a=0;ae&&s.push(h.id)}return s},s.prototype._deselect=function(t){for(var e=this.selection,i=0,s=e.length;s>i;i++)if(e[i]==t){e.splice(i,1);break}},s.prototype.redraw=function(){var t=this.options.margin,e=this.body.range,i=o.option.asSize,s=this.options,n=s.orientation,r=!1,a=this.dom.frame,h=s.editable.updateTime||s.editable.updateGroup;a.className="itemset"+(h?" editable":""),r=this._orderGroups()||r;var d=e.end-e.start,l=d!=this.lastVisibleInterval||this.props.width!=this.props.lastWidth;l&&(this.stackDirty=!0),this.lastVisibleInterval=d,this.props.lastWidth=this.props.width;var c=this.stackDirty,u=this._firstGroup(),p={item:t.item,axis:t.axis},m={item:t.item,axis:t.item.vertical/2},_=0,f=t.axis+t.item.vertical;return o.forEach(this.groups,function(t){var i=t==u?p:m,s=t.redraw(e,i,c);r=s||r,_+=t.height}),_=Math.max(_,f),this.stackDirty=!1,a.style.height=i(_),this.props.top=a.offsetTop,this.props.left=a.offsetLeft,this.props.width=a.offsetWidth,this.props.height=_,this.dom.axis.style.top=i("top"==n?this.body.domProps.top.height+this.body.domProps.border.top:this.body.domProps.top.height+this.body.domProps.centerContainer.height),this.dom.axis.style.left=this.body.domProps.border.left+"px",r=this._isResized()||r},s.prototype._firstGroup=function(){var t="top"==this.options.orientation?0:this.groupIds.length-1,e=this.groupIds[t],i=this.groups[e]||this.groups[p];return i||null},s.prototype._updateUngrouped=function(){var t=this.groups[p];if(this.groupsData)t&&(t.hide(),delete this.groups[p]);else if(!t){var e=null,i=null;t=new d(e,i,this),this.groups[p]=t;for(var s in this.items)this.items.hasOwnProperty(s)&&t.add(this.items[s]);t.show()}},s.prototype.getLabelSet=function(){return this.dom.labelSet},s.prototype.setItems=function(t){var e,i=this,s=this.itemsData;if(t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.itemsData=t}else this.itemsData=null;if(s&&(o.forEach(this.itemListeners,function(t,e){s.off(e,t)}),e=s.getIds(),this._onRemove(e)),this.itemsData){var n=this.id;o.forEach(this.itemListeners,function(t,e){i.itemsData.on(e,t,n)}),e=this.itemsData.getIds(),this._onAdd(e),this._updateUngrouped()}},s.prototype.getItems=function(){return this.itemsData},s.prototype.setGroups=function(t){var e,i=this;if(this.groupsData&&(o.forEach(this.groupListeners,function(t,e){i.groupsData.unsubscribe(e,t)}),e=this.groupsData.getIds(),this.groupsData=null,this._onRemoveGroups(e)),t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.groupsData=t}else this.groupsData=null;if(this.groupsData){var s=this.id;o.forEach(this.groupListeners,function(t,e){i.groupsData.on(e,t,s)}),e=this.groupsData.getIds(),this._onAddGroups(e)}this._updateUngrouped(),this._order(),this.body.emitter.emit("change")},s.prototype.getGroups=function(){return this.groupsData},s.prototype.removeItem=function(t){var e=this.itemsData.get(t),i=this.itemsData.getDataSet();e&&this.options.onRemove(e,function(e){e&&i.remove(t)})},s.prototype._onUpdate=function(t){var e=this;t.forEach(function(t){var i=e.itemsData.get(t,e.itemOptions),n=e.items[t],o=i.type||e.options.type||(i.end?"range":"box"),r=s.types[o];if(n&&(r&&n instanceof r?e._updateItem(n,i):(e._removeItem(n),n=null)),!n){if(!r)throw new TypeError("rangeoverflow"==o?'Item type "rangeoverflow" is deprecated. Use css styling instead: .vis.timeline .item.range .content {overflow: visible;}':'Unknown item type "'+o+'"');n=new r(i,e.conversion,e.options),n.id=t,e._addItem(n)}}),this._order(),this.stackDirty=!0,this.body.emitter.emit("change")},s.prototype._onAdd=s.prototype._onUpdate,s.prototype._onRemove=function(t){var e=0,i=this;t.forEach(function(t){var s=i.items[t];s&&(e++,i._removeItem(s))}),e&&(this._order(),this.stackDirty=!0,this.body.emitter.emit("change"))},s.prototype._order=function(){o.forEach(this.groups,function(t){t.order()})},s.prototype._onUpdateGroups=function(t){this._onAddGroups(t)},s.prototype._onAddGroups=function(t){var e=this;t.forEach(function(t){var i=e.groupsData.get(t),s=e.groups[t];if(s)s.setData(i);else{if(t==p)throw new Error("Illegal group id. "+t+" is a reserved id.");var n=Object.create(e.options);o.extend(n,{height:null}),s=new d(t,i,e),e.groups[t]=s;for(var r in e.items)if(e.items.hasOwnProperty(r)){var a=e.items[r];a.data.group==t&&s.add(a)}s.order(),s.show()}}),this.body.emitter.emit("change")},s.prototype._onRemoveGroups=function(t){var e=this.groups;t.forEach(function(t){var i=e[t];i&&(i.hide(),delete e[t])}),this.markDirty(),this.body.emitter.emit("change")},s.prototype._orderGroups=function(){if(this.groupsData){var t=this.groupsData.getIds({order:this.options.groupOrder}),e=!o.equalArray(t,this.groupIds);if(e){var i=this.groups;t.forEach(function(t){i[t].hide()}),t.forEach(function(t){i[t].show()}),this.groupIds=t}return e}return!1},s.prototype._addItem=function(t){this.items[t.id]=t;var e=this.groupsData?t.data.group:p,i=this.groups[e];i&&i.add(t)},s.prototype._updateItem=function(t,e){var i=t.data.group;if(t.data=e,t.displayed&&t.redraw(),i!=t.data.group){var s=this.groups[i];s&&s.remove(t);var n=this.groupsData?t.data.group:p,o=this.groups[n];o&&o.add(t)}},s.prototype._removeItem=function(t){t.hide(),delete this.items[t.id];var e=this.selection.indexOf(t.id);-1!=e&&this.selection.splice(e,1);var i=this.groupsData?t.data.group:p,s=this.groups[i];s&&s.remove(t)},s.prototype._constructByEndArray=function(t){for(var e=[],i=0;i0||n.length>0)&&this.body.emitter.emit("select",{items:this.getSelection()}),t.stopPropagation()}},s.prototype._onAddItem=function(t){if(this.options.selectable&&this.options.editable.add){var e=this,i=this.body.util.snap||null,n=s.itemFromTarget(t);if(n){var r=e.itemsData.get(n.id);this.options.onUpdate(r,function(t){t&&e.itemsData.update(t)})}else{var a=o.getAbsoluteLeft(this.dom.frame),h=t.gesture.center.pageX-a,d=this.body.util.toTime(h),l={start:i?i(d):d,content:"new item"};if("range"===this.options.type){var c=this.body.util.toTime(h+this.props.width/5);l.end=i?i(c):c}l[this.itemsData.fieldId]=o.randomUUID();var u=s.groupFromTarget(t);u&&(l.group=u.groupId),this.options.onAdd(l,function(t){t&&e.itemsData.add(l)})}}},s.prototype._onMultiSelectItem=function(t){if(this.options.selectable){var e,i=s.itemFromTarget(t);if(i){e=this.getSelection();var n=e.indexOf(i.id);-1==n?e.push(i.id):e.splice(n,1),this.setSelection(e),this.body.emitter.emit("select",{items:this.getSelection()}),t.stopPropagation()}}},s.itemFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-item"))return e["timeline-item"];e=e.parentNode}return null},s.groupFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-group"))return e["timeline-group"];e=e.parentNode}return null},s.itemSetFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-itemset"))return e["timeline-itemset"];e=e.parentNode}return null},t.exports=s},function(t,e,i){function s(t,e,i){this.body=t,this.defaultOptions={enabled:!0,icons:!0,iconSize:20,iconSpacing:6,left:{visible:!0,position:"top-left"},right:{visible:!0,position:"top-left"}},this.side=i,this.options=n.extend({},this.defaultOptions),this.svgElements={},this.dom={},this.groups={},this.amountOfGroups=0,this._create(),this.setOptions(e)}var n=i(1),o=i(2),r=i(18);s.prototype=new r,s.prototype.addGroup=function(t,e){this.groups.hasOwnProperty(t)||(this.groups[t]=e),this.amountOfGroups+=1},s.prototype.updateGroup=function(t,e){this.groups[t]=e},s.prototype.removeGroup=function(t){this.groups.hasOwnProperty(t)&&(delete this.groups[t],this.amountOfGroups-=1)},s.prototype._create=function(){this.dom.frame=document.createElement("div"),this.dom.frame.className="legend",this.dom.frame.style.position="absolute",this.dom.frame.style.top="10px",this.dom.frame.style.display="block",this.dom.textArea=document.createElement("div"),this.dom.textArea.className="legendText",this.dom.textArea.style.position="relative",this.dom.textArea.style.top="0px",this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="absolute",this.svg.style.top="0px",this.svg.style.width=this.options.iconSize+5+"px",this.dom.frame.appendChild(this.svg),this.dom.frame.appendChild(this.dom.textArea)},s.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame)},s.prototype.show=function(){this.dom.frame.parentNode||this.body.dom.center.appendChild(this.dom.frame)},s.prototype.setOptions=function(t){var e=["enabled","orientation","icons","left","right"];n.selectiveDeepExtend(e,this.options,t)},s.prototype.redraw=function(){if(0==this.options[this.side].visible||0==this.amountOfGroups||0==this.options.enabled)this.hide();else{this.show(),"top-left"==this.options[this.side].position||"bottom-left"==this.options[this.side].position?(this.dom.frame.style.left="4px",this.dom.frame.style.textAlign="left",this.dom.textArea.style.textAlign="left",this.dom.textArea.style.left=this.options.iconSize+15+"px",this.dom.textArea.style.right="",this.svg.style.left="0px",this.svg.style.right=""):(this.dom.frame.style.right="4px",this.dom.frame.style.textAlign="right",this.dom.textArea.style.textAlign="right",this.dom.textArea.style.right=this.options.iconSize+15+"px",this.dom.textArea.style.left="",this.svg.style.right="0px",this.svg.style.left=""),"top-left"==this.options[this.side].position||"top-right"==this.options[this.side].position?(this.dom.frame.style.top=4-Number(this.body.dom.center.style.top.replace("px",""))+"px",this.dom.frame.style.bottom=""):(this.dom.frame.style.bottom=4-Number(this.body.dom.center.style.top.replace("px",""))+"px",this.dom.frame.style.top=""),0==this.options.icons?(this.dom.frame.style.width=this.dom.textArea.offsetWidth+10+"px",this.dom.textArea.style.right="",this.dom.textArea.style.left="",this.svg.style.width="0px"):(this.dom.frame.style.width=this.options.iconSize+15+this.dom.textArea.offsetWidth+10+"px",this.drawLegendIcons());var t="";for(var e in this.groups)this.groups.hasOwnProperty(e)&&(t+=this.groups[e].content+"
");this.dom.textArea.innerHTML=t,this.dom.textArea.style.lineHeight=.75*this.options.iconSize+this.options.iconSpacing+"px"}},s.prototype.drawLegendIcons=function(){if(this.dom.frame.parentNode){o.prepareElements(this.svgElements);var t=window.getComputedStyle(this.dom.frame).paddingTop,e=Number(t.replace("px","")),i=e,s=this.options.iconSize,n=.75*this.options.iconSize,r=e+.5*n+3;this.svg.style.width=s+5+e+"px";for(var a in this.groups)this.groups.hasOwnProperty(a)&&(this.groups[a].drawIcon(i,r,this.svgElements,this.svg,s,n),r+=n+this.options.iconSpacing);o.cleanupElements(this.svgElements)}},t.exports=s},function(t,e,i){function s(t,e){this.id=n.randomUUID(),this.body=t,this.defaultOptions={yAxisOrientation:"left",defaultGroup:"default",sort:!0,sampling:!0,graphHeight:"400px",shaded:{enabled:!1,orientation:"bottom"},style:"line",barChart:{width:50,align:"center"},catmullRom:{enabled:!0,parametrization:"centripetal",alpha:.5},drawPoints:{enabled:!0,size:6,style:"square"},dataAxis:{showMinorLabels:!0,showMajorLabels:!0,icons:!1,width:"40px",visible:!0},legend:{enabled:!1,icons:!0,left:{visible:!0,position:"top-left"},right:{visible:!0,position:"top-right"}}},this.options=n.extend({},this.defaultOptions),this.dom={},this.props={},this.hammer=null,this.groups={};var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e){i._onAdd(e.items)},update:function(t,e){i._onUpdate(e.items)},remove:function(t,e){i._onRemove(e.items)}},this.groupListeners={add:function(t,e){i._onAddGroups(e.items)},update:function(t,e){i._onUpdateGroups(e.items)},remove:function(t,e){i._onRemoveGroups(e.items)}},this.items={},this.selection=[],this.lastStart=this.body.range.start,this.touchParams={},this.svgElements={},this.setOptions(e),this.groupsUsingDefaultStyles=[0],this.body.emitter.on("rangechange",function(){if(0!=i.lastStart){var t=i.body.range.start-i.lastStart,e=i.body.range.end-i.body.range.start;if(0!=i.width){var s=i.width/e,n=t*s;i.svg.style.left=-i.width-n+"px"}}}),this.body.emitter.on("rangechanged",function(){i.lastStart=i.body.range.start,i.svg.style.left=n.option.asSize(-i.width),i._updateGraph.apply(i)}),this._create(),this.body.emitter.emit("change")}var n=i(1),o=i(2),r=i(3),a=i(4),h=i(18),d=i(21),l=i(22),c=i(25),u="__ungrouped__";s.prototype=new h,s.prototype._create=function(){var t=document.createElement("div");t.className="LineGraph",this.dom.frame=t,this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="relative",this.svg.style.height=(""+this.options.graphHeight).replace("px","")+"px",this.svg.style.display="block",t.appendChild(this.svg),this.options.dataAxis.orientation="left",this.yAxisLeft=new d(this.body,this.options.dataAxis,this.svg),this.options.dataAxis.orientation="right",this.yAxisRight=new d(this.body,this.options.dataAxis,this.svg),delete this.options.dataAxis.orientation,this.legendLeft=new c(this.body,this.options.legend,"left"),this.legendRight=new c(this.body,this.options.legend,"right"),this.show()},s.prototype.setOptions=function(t){if(t){var e=["sampling","defaultGroup","graphHeight","yAxisOrientation","style","barChart","dataAxis","sort"];n.selectiveDeepExtend(e,this.options,t),n.mergeOptions(this.options,t,"catmullRom"),n.mergeOptions(this.options,t,"drawPoints"),n.mergeOptions(this.options,t,"shaded"),n.mergeOptions(this.options,t,"legend"),t.catmullRom&&"object"==typeof t.catmullRom&&t.catmullRom.parametrization&&("uniform"==t.catmullRom.parametrization?this.options.catmullRom.alpha=0:"chordal"==t.catmullRom.parametrization?this.options.catmullRom.alpha=1:(this.options.catmullRom.parametrization="centripetal",this.options.catmullRom.alpha=.5)),this.yAxisLeft&&void 0!==t.dataAxis&&(this.yAxisLeft.setOptions(this.options.dataAxis),this.yAxisRight.setOptions(this.options.dataAxis)),this.legendLeft&&void 0!==t.legend&&(this.legendLeft.setOptions(this.options.legend),this.legendRight.setOptions(this.options.legend)),this.groups.hasOwnProperty(u)&&this.groups[u].setOptions(t)}this.dom.frame&&this._updateGraph()},s.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame)},s.prototype.show=function(){this.dom.frame.parentNode||this.body.dom.center.appendChild(this.dom.frame)},s.prototype.setItems=function(t){var e,i=this,s=this.itemsData;if(t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.itemsData=t}else this.itemsData=null;if(s&&(n.forEach(this.itemListeners,function(t,e){s.off(e,t)}),e=s.getIds(),this._onRemove(e)),this.itemsData){var o=this.id;n.forEach(this.itemListeners,function(t,e){i.itemsData.on(e,t,o)}),e=this.itemsData.getIds(),this._onAdd(e)}this._updateUngrouped(),this._updateGraph(),this.redraw()},s.prototype.setGroups=function(t){var e,i=this;if(this.groupsData&&(n.forEach(this.groupListeners,function(t,e){i.groupsData.unsubscribe(e,t)}),e=this.groupsData.getIds(),this.groupsData=null,this._onRemoveGroups(e)),t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.groupsData=t}else this.groupsData=null;if(this.groupsData){var s=this.id;n.forEach(this.groupListeners,function(t,e){i.groupsData.on(e,t,s)}),e=this.groupsData.getIds(),this._onAddGroups(e)}this._onUpdate()},s.prototype._onUpdate=function(){this._updateUngrouped(),this._updateAllGroupData(),this._updateGraph(),this.redraw()},s.prototype._onAdd=function(t){this._onUpdate(t)},s.prototype._onRemove=function(t){this._onUpdate(t)},s.prototype._onUpdateGroups=function(t){for(var e=0;e0){for(s=0;sp){e.push(f);break}e.push(f)}}else for(var _=0;_u&&f.x0){for(var u=0;ui?i:a,d=s>d?s:d):(r=!0,h=h>i?i:h,l=s>l?s:l)}1==o&&this.yAxisLeft.setRange(a,d),1==r&&this.yAxisRight.setRange(h,l)}return n=this._toggleAxisVisiblity(o,this.yAxisLeft)||n,n=this._toggleAxisVisiblity(r,this.yAxisRight)||n,1==r&&1==o?(this.yAxisLeft.drawIcons=!0,this.yAxisRight.drawIcons=!0):(this.yAxisLeft.drawIcons=!1,this.yAxisRight.drawIcons=!1),this.yAxisRight.master=!o,0==this.yAxisRight.master?(1==r&&(this.yAxisLeft.lineOffset=this.yAxisRight.width),n=this.yAxisLeft.redraw()||n,this.yAxisRight.stepPixelsForced=this.yAxisLeft.stepPixels,n=this.yAxisRight.redraw()||n):n=this.yAxisRight.redraw()||n,n},s.prototype._toggleAxisVisiblity=function(t,e){var i=!1;return 0==t?e.dom.frame.parentNode&&(e.hide(),i=!0):e.dom.frame.parentNode||(e.show(),i=!0),i -},s.prototype._drawBarGraph=function(t,e){if(null!=t&&t.length>0){var i,s=.1*e.options.barChart.width,n=0,r=e.options.barChart.width;"left"==e.options.barChart.align?n-=.5*r:"right"==e.options.barChart.align&&(n+=.5*r);for(var a=0;a0&&(i=Math.min(i,Math.abs(t[a-1].x-t[a].x))),r>i&&(r=s>i?s:i),o.drawBar(t[a].x+n,t[a].y,r,e.zeroPosition-t[a].y,e.className+" bar",this.svgElements,this.svg);1==e.options.drawPoints.enabled&&this._drawPoints(t,e,this.svgElements,this.svg,n)}},s.prototype._drawLineGraph=function(t,e){if(null!=t&&t.length>0){var i,s,n=Number(this.svg.style.height.replace("px",""));if(i=o.getSVGElement("path",this.svgElements,this.svg),i.setAttributeNS(null,"class",e.className),s=1==e.options.catmullRom.enabled?this._catmullRom(t,e):this._linear(t),1==e.options.shaded.enabled){var r,a=o.getSVGElement("path",this.svgElements,this.svg);r="top"==e.options.shaded.orientation?"M"+t[0].x+",0 "+s+"L"+t[t.length-1].x+",0":"M"+t[0].x+","+n+" "+s+"L"+t[t.length-1].x+","+n,a.setAttributeNS(null,"class",e.className+" fill"),a.setAttributeNS(null,"d",r)}i.setAttributeNS(null,"d","M"+s),1==e.options.drawPoints.enabled&&this._drawPoints(t,e,this.svgElements,this.svg)}},s.prototype._drawPoints=function(t,e,i,s,n){void 0===n&&(n=0);for(var r=0;ru;u+=r)i=o(t[u].x)+this.width-1,s=t[u].y,n.push({x:i,y:s}),h=h>s?s:h,d=s>d?s:d;return{min:h,max:d,data:n}},s.prototype._convertYvalues=function(t,e){var i,s,n=[],o=this.yAxisLeft,r=Number(this.svg.style.height.replace("px",""));"right"==e.options.yAxisOrientation&&(o=this.yAxisRight);for(var a=0;al;l++)e=0==l?t[0]:t[l-1],i=t[l],s=t[l+1],n=d>l+2?t[l+2]:s,o={x:(-e.x+6*i.x+s.x)*h,y:(-e.y+6*i.y+s.y)*h},r={x:(i.x+6*s.x-n.x)*h,y:(i.y+6*s.y-n.y)*h},a+="C"+o.x+","+o.y+" "+r.x+","+r.y+" "+s.x+","+s.y+" ";return a},s.prototype._catmullRom=function(t,e){var i=e.options.catmullRom.alpha;if(0==i||void 0===i)return this._catmullRomUniform(t);for(var s,n,o,r,a,h,d,l,c,u,p,m,_,f,g,y,v,M,b,w=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",L=t.length,x=0;L-1>x;x++)s=0==x?t[0]:t[x-1],n=t[x],o=t[x+1],r=L>x+2?t[x+2]:o,d=Math.sqrt(Math.pow(s.x-n.x,2)+Math.pow(s.y-n.y,2)),l=Math.sqrt(Math.pow(n.x-o.x,2)+Math.pow(n.y-o.y,2)),c=Math.sqrt(Math.pow(o.x-r.x,2)+Math.pow(o.y-r.y,2)),f=Math.pow(c,i),y=Math.pow(c,2*i),g=Math.pow(l,i),v=Math.pow(l,2*i),b=Math.pow(d,i),M=Math.pow(d,2*i),u=2*M+3*b*g+v,p=2*y+3*f*g+v,m=3*b*(b+g),m>0&&(m=1/m),_=3*f*(f+g),_>0&&(_=1/_),a={x:(-v*s.x+u*n.x+M*o.x)*m,y:(-v*s.y+u*n.y+M*o.y)*m},h={x:(y*n.x+p*o.x-v*r.x)*_,y:(y*n.y+p*o.y-v*r.y)*_},0==a.x&&0==a.y&&(a=n),0==h.x&&0==h.y&&(h=o),w+="C"+a.x+","+a.y+" "+h.x+","+h.y+" "+o.x+","+o.y+" ";return w},s.prototype._linear=function(t){for(var e="",i=0;id;){d++;var l=o.getCurrent(),c=this.body.util.toScreen(l),u=o.isMajor();this.options.showMinorLabels&&this._repaintMinorText(c,o.getLabelMinor(),t),u&&this.options.showMajorLabels?(c>0&&(void 0==h&&(h=c),this._repaintMajorText(c,o.getLabelMajor(),t)),this._repaintMajorLine(c,t)):this._repaintMinorLine(c,t),o.next()}if(this.options.showMajorLabels){var p=this.body.util.toTime(0),m=o.getLabelMajor(p),_=m.length*(this.props.majorCharWidth||10)+10;(void 0==h||h>_)&&this._repaintMajorText(0,m,t)}n.forEach(this.dom.redundant,function(t){for(;t.length;){var e=t.pop();e&&e.parentNode&&e.parentNode.removeChild(e)}})},s.prototype._repaintMinorText=function(t,e,i){var s=this.dom.redundant.minorTexts.shift();if(!s){var n=document.createTextNode("");s=document.createElement("div"),s.appendChild(n),s.className="text minor",this.dom.foreground.appendChild(s)}this.dom.minorTexts.push(s),s.childNodes[0].nodeValue=e,s.style.top="top"==i?this.props.majorLabelHeight+"px":"0",s.style.left=t+"px"},s.prototype._repaintMajorText=function(t,e,i){var s=this.dom.redundant.majorTexts.shift();if(!s){var n=document.createTextNode(e);s=document.createElement("div"),s.className="text major",s.appendChild(n),this.dom.foreground.appendChild(s)}this.dom.majorTexts.push(s),s.childNodes[0].nodeValue=e,s.style.top="top"==i?"0":this.props.minorLabelHeight+"px",s.style.left=t+"px"},s.prototype._repaintMinorLine=function(t,e){var i=this.dom.redundant.minorLines.shift();i||(i=document.createElement("div"),i.className="grid vertical minor",this.dom.background.appendChild(i)),this.dom.minorLines.push(i);var s=this.props;i.style.top="top"==e?s.majorLabelHeight+"px":this.body.domProps.top.height+"px",i.style.height=s.minorLineHeight+"px",i.style.left=t-s.minorLineWidth/2+"px"},s.prototype._repaintMajorLine=function(t,e){var i=this.dom.redundant.majorLines.shift();i||(i=document.createElement("DIV"),i.className="grid vertical major",this.dom.background.appendChild(i)),this.dom.majorLines.push(i);var s=this.props;i.style.top="top"==e?"0":this.body.domProps.top.height+"px",i.style.left=t-s.majorLineWidth/2+"px",i.style.height=s.majorLineHeight+"px"},s.prototype._calculateCharSize=function(){this.dom.measureCharMinor||(this.dom.measureCharMinor=document.createElement("DIV"),this.dom.measureCharMinor.className="text minor measure",this.dom.measureCharMinor.style.position="absolute",this.dom.measureCharMinor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMinor)),this.props.minorCharHeight=this.dom.measureCharMinor.clientHeight,this.props.minorCharWidth=this.dom.measureCharMinor.clientWidth,this.dom.measureCharMajor||(this.dom.measureCharMajor=document.createElement("DIV"),this.dom.measureCharMajor.className="text minor measure",this.dom.measureCharMajor.style.position="absolute",this.dom.measureCharMajor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMajor)),this.props.majorCharHeight=this.dom.measureCharMajor.clientHeight,this.props.majorCharWidth=this.dom.measureCharMajor.clientWidth},s.prototype.snap=function(t){return this.step.snap(t)},t.exports=s},function(t,e,i){function s(t,e,i){this.id=null,this.parent=null,this.data=t,this.dom=null,this.conversion=e||{},this.options=i||{},this.selected=!1,this.displayed=!1,this.dirty=!0,this.top=null,this.left=null,this.width=null,this.height=null}var n=i(42);s.prototype.select=function(){this.selected=!0,this.displayed&&this.redraw()},s.prototype.unselect=function(){this.selected=!1,this.displayed&&this.redraw()},s.prototype.setParent=function(t){this.displayed?(this.hide(),this.parent=t,this.parent&&this.show()):this.parent=t},s.prototype.isVisible=function(){return!1},s.prototype.show=function(){return!1},s.prototype.hide=function(){return!1},s.prototype.redraw=function(){},s.prototype.repositionX=function(){},s.prototype.repositionY=function(){},s.prototype._repaintDeleteButton=function(t){if(this.selected&&this.options.editable.remove&&!this.dom.deleteButton){var e=this,i=document.createElement("div");i.className="delete",i.title="Delete this item",n(i,{preventDefault:!0}).on("tap",function(t){e.parent.removeFromDataSet(e),t.stopPropagation()}),t.appendChild(i),this.dom.deleteButton=i}else!this.selected&&this.dom.deleteButton&&(this.dom.deleteButton.parentNode&&this.dom.deleteButton.parentNode.removeChild(this.dom.deleteButton),this.dom.deleteButton=null)},t.exports=s},function(t,e,i){function s(t,e,i){if(this.props={dot:{width:0,height:0},line:{width:0,height:0}},t&&void 0==t.start)throw new Error('Property "start" missing in item '+t);n.call(this,t,e,i)}var n=i(28);s.prototype=new n(null,null,null),s.prototype.isVisible=function(t){var e=(t.end-t.start)/4;return this.data.start>t.start-e&&this.data.startt.start-e&&this.data.startt.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),t.box["timeline-item"]=this),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.foreground;if(!e)throw new Error("Cannot redraw time axis: parent has no foreground container element");e.appendChild(t.box)}if(this.displayed=!0,this.data.content!=this.content){if(this.content=this.data.content,this.content instanceof Element)t.content.innerHTML="",t.content.appendChild(this.content);else{if(void 0==this.data.content)throw new Error('Property "content" missing in item '+this.data.id);t.content.innerHTML=this.content}this.dirty=!0}this.data.title!=this.title&&(t.box.title=this.data.title,this.title=this.data.title);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");this.className!=i&&(this.className=i,t.box.className=this.baseClassName+i,this.dirty=!0),this.dirty&&(this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.props.content.width=this.dom.content.offsetWidth,this.height=this.dom.box.offsetHeight,this.dirty=!1),this._repaintDeleteButton(t.box),this._repaintDragLeft(),this._repaintDragRight()},s.prototype.show=function(){this.displayed||this.redraw()},s.prototype.hide=function(){if(this.displayed){var t=this.dom.box;t.parentNode&&t.parentNode.removeChild(t),this.top=null,this.left=null,this.displayed=!1}},s.prototype.repositionX=function(){var t,e=this.props,i=this.parent.width,s=this.conversion.toScreen(this.data.start),n=this.conversion.toScreen(this.data.end),o=this.options.padding;-i>s&&(s=-i),n>2*i&&(n=2*i);var r=Math.max(n-s,1);this.overflow?(t=Math.max(-s,0),this.left=s,this.width=r+this.props.content.width):(t=0>s?Math.min(-s,n-s-e.content.width-2*o):0,this.left=s,this.width=r),this.dom.box.style.left=this.left+"px",this.dom.box.style.width=r+"px",this.dom.content.style.left=t+"px"},s.prototype.repositionY=function(){var t=this.options.orientation,e=this.dom.box;e.style.top="top"==t?this.top+"px":this.parent.height-this.top-this.height+"px"},s.prototype._repaintDragLeft=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragLeft){var t=document.createElement("div");t.className="drag-left",t.dragLeftItem=this,n(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragLeft=t}else!this.selected&&this.dom.dragLeft&&(this.dom.dragLeft.parentNode&&this.dom.dragLeft.parentNode.removeChild(this.dom.dragLeft),this.dom.dragLeft=null)},s.prototype._repaintDragRight=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragRight){var t=document.createElement("div");t.className="drag-right",t.dragRightItem=this,n(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragRight=t}else!this.selected&&this.dom.dragRight&&(this.dom.dragRight.parentNode&&this.dom.dragRight.parentNode.removeChild(this.dom.dragRight),this.dom.dragRight=null)},t.exports=s},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this._initializeMixinLoaders(),this.containerElement=t,this.width="100%",this.height="100%",this.renderRefreshRate=60,this.renderTimestep=1e3/this.renderRefreshRate,this.renderTime=.5*this.renderTimestep,this.maxPhysicsTicksPerRender=3,this.physicsDiscreteStepsize=.5,this.stabilize=!0,this.selectable=!0,this.initializing=!0,this.triggerFunctions={add:null,edit:null,editEdge:null,connect:null,del:null},this.constants={nodes:{radiusMin:10,radiusMax:30,radius:10,shape:"ellipse",image:void 0,widthMin:16,widthMax:64,fixed:!1,fontColor:"black",fontSize:14,fontFace:"verdana",level:-1,color:{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},borderColor:"#2B7CE9",backgroundColor:"#97C2FC",highlightColor:"#D2E5FF",group:void 0,borderWidth:1},edges:{widthMin:1,widthMax:15,width:1,widthSelectionMultiplier:2,hoverWidth:1.5,style:"line",color:{color:"#848484",highlight:"#848484",hover:"#848484"},fontColor:"#343434",fontSize:14,fontFace:"arial",fontFill:"white",arrowScaleFactor:1,dash:{length:10,gap:5,altLength:void 0},inheritColor:"from"},configurePhysics:!1,physics:{barnesHut:{enabled:!0,theta:1/.6,gravitationalConstant:-2e3,centralGravity:.3,springLength:95,springConstant:.04,damping:.09},repulsion:{centralGravity:0,springLength:200,springConstant:.05,nodeDistance:100,damping:.09},hierarchicalRepulsion:{enabled:!1,centralGravity:0,springLength:100,springConstant:.01,nodeDistance:150,damping:.09},damping:null,centralGravity:null,springLength:null,springConstant:null},clustering:{enabled:!1,initialMaxNodes:100,clusterThreshold:500,reduceToNodes:300,chainThreshold:.4,clusterEdgeThreshold:20,sectorThreshold:100,screenSizeThreshold:.2,fontSizeMultiplier:4,maxFontSize:1e3,forceAmplification:.1,distanceAmplification:.1,edgeGrowth:20,nodeScaling:{width:1,height:1,radius:1},maxNodeSizeIncrements:600,activeAreaBoxSize:80,clusterLevelDifference:2},navigation:{enabled:!1},keyboard:{enabled:!1,speed:{x:10,y:10,zoom:.02}},dataManipulation:{enabled:!1,initiallyVisible:!1},hierarchicalLayout:{enabled:!1,levelSeparation:150,nodeSpacing:100,direction:"UD"},freezeForStabilization:!1,smoothCurves:{enabled:!0,dynamic:!0,type:"continuous",roundness:.5},dynamicSmoothCurves:!0,maxVelocity:30,minVelocity:.1,stabilizationIterations:1e3,labels:{add:"Add Node",edit:"Edit",link:"Add Link",del:"Delete selected",editNode:"Edit Node",editEdge:"Edit Edge",back:"Back",addDescription:"Click in an empty space to place a new node.",linkDescription:"Click on a node and drag the edge to another node to connect them.",editEdgeDescription:"Click on the control points and drag them to a node to connect to it.",addError:"The function for add does not support two arguments (data,callback).",linkError:"The function for connect does not support two arguments (data,callback).",editError:"The function for edit does not support two arguments (data, callback).",editBoundError:"No edit function has been bound to this button.",deleteError:"The function for delete does not support two arguments (data, callback).",deleteClusterError:"Clusters cannot be deleted."},tooltip:{delay:300,fontColor:"black",fontSize:14,fontFace:"verdana",color:{border:"#666",background:"#FFFFC6"}},dragNetwork:!0,dragNodes:!0,zoomable:!0,hover:!1,hideEdgesOnDrag:!1,hideNodesOnDrag:!1},this.hoverObj={nodes:{},edges:{}},this.controlNodesActive=!1;var n=this;this.groups=new u,this.images=new p,this.images.setOnloadCallback(function(){n._redraw()}),this.xIncrement=0,this.yIncrement=0,this.zoomIncrement=0,this._loadPhysicsSystem(),this._create(),this._loadSectorSystem(),this._loadClusterSystem(),this._loadSelectionSystem(),this._loadHierarchySystem(),this._setTranslation(this.frame.clientWidth/2,this.frame.clientHeight/2),this._setScale(1),this.setOptions(i),this.freezeSimulation=!1,this.cachedFunctions={},this.calculationNodes={},this.calculationNodeIndices=[],this.nodeIndices=[],this.nodes={},this.edges={},this.canvasTopLeft={x:0,y:0},this.canvasBottomRight={x:0,y:0},this.pointerPosition={x:0,y:0},this.areaCenter={},this.scale=1,this.previousScale=this.scale,this.nodesData=null,this.edgesData=null,this.nodesListeners={add:function(t,e){n._addNodes(e.items),n.start()},update:function(t,e){n._updateNodes(e.items),n.start()},remove:function(t,e){n._removeNodes(e.items),n.start()}},this.edgesListeners={add:function(t,e){n._addEdges(e.items),n.start()},update:function(t,e){n._updateEdges(e.items),n.start()},remove:function(t,e){n._removeEdges(e.items),n.start()}},this.moving=!0,this.timer=void 0,this.setData(e,this.constants.clustering.enabled||this.constants.hierarchicalLayout.enabled),this.initializing=!1,1==this.constants.hierarchicalLayout.enabled?this._setupHierarchicalLayout():0==this.stabilize&&this.zoomExtent(!0,this.constants.clustering.enabled),this.constants.clustering.enabled&&this.startWithClustering()}var n=i(44),o=i(42),r=i(45),a=i(1),h=i(39),d=i(3),l=i(4),c=i(38),u=i(34),p=i(35),m=i(36),_=i(33),f=i(37),g=i(43);i(40),n(s.prototype),s.prototype._getScriptPath=function(){for(var t=document.getElementsByTagName("script"),e=0;et.x&&(s=t.x),nt.y&&(e=t.y),i=this.constants.clustering.initialMaxNodes?49.07548/(n+142.05338)+91444e-8:12.662/(n+7.4147)+.0964822:1==this.constants.clustering.enabled&&n>=this.constants.clustering.initialMaxNodes?77.5271985/(n+187.266146)+476710517e-13:30.5062972/(n+19.93597763)+.08413486;var o=Math.min(this.frame.canvas.clientWidth/600,this.frame.canvas.clientHeight/600);i*=o}else{var r=1.1*(Math.abs(s.minX)+Math.abs(s.maxX)),a=1.1*(Math.abs(s.minY)+Math.abs(s.maxY)),h=this.frame.canvas.clientWidth/r,d=this.frame.canvas.clientHeight/a;i=d>=h?h:d}i>1&&(i=1),this._setScale(i),this._centerNetwork(s),0==e&&(this.moving=!0,this.start())},s.prototype._updateNodeIndexList=function(){this._clearNodeIndexList();for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodeIndices.push(t)},s.prototype.setData=function(t,e){if(void 0===e&&(e=!1),t&&t.dot&&(t.nodes||t.edges))throw new SyntaxError('Data must contain either parameter "dot" or parameter pair "nodes" and "edges", but not both.');if(this.setOptions(t&&t.options),t&&t.dot){if(t&&t.dot){var i=c.DOTToGraph(t.dot);return void this.setData(i)}}else this._setNodes(t&&t.nodes),this._setEdges(t&&t.edges);if(this._putDataInSector(),!e)if(this.stabilize){var s=this;setTimeout(function(){s._stabilize(),s.start()},0)}else this.start()},s.prototype.setOptions=function(t){if(t){var e;if(void 0!==t.width&&(this.width=t.width),void 0!==t.height&&(this.height=t.height),void 0!==t.stabilize&&(this.stabilize=t.stabilize),void 0!==t.selectable&&(this.selectable=t.selectable),void 0!==t.freezeForStabilization&&(this.constants.freezeForStabilization=t.freezeForStabilization),void 0!==t.configurePhysics&&(this.constants.configurePhysics=t.configurePhysics),void 0!==t.stabilizationIterations&&(this.constants.stabilizationIterations=t.stabilizationIterations),void 0!==t.dragNetwork&&(this.constants.dragNetwork=t.dragNetwork),void 0!==t.dragNodes&&(this.constants.dragNodes=t.dragNodes),void 0!==t.zoomable&&(this.constants.zoomable=t.zoomable),void 0!==t.hover&&(this.constants.hover=t.hover),void 0!==t.hideEdgesOnDrag&&(this.constants.hideEdgesOnDrag=t.hideEdgesOnDrag),void 0!==t.hideNodesOnDrag&&(this.constants.hideNodesOnDrag=t.hideNodesOnDrag),void 0!==t.dragGraph)throw new Error("Option dragGraph is renamed to dragNetwork");if(void 0!==t.labels)for(e in t.labels)t.labels.hasOwnProperty(e)&&(this.constants.labels[e]=t.labels[e]);if(t.onAdd&&(this.triggerFunctions.add=t.onAdd),t.onEdit&&(this.triggerFunctions.edit=t.onEdit),t.onEditEdge&&(this.triggerFunctions.editEdge=t.onEditEdge),t.onConnect&&(this.triggerFunctions.connect=t.onConnect),t.onDelete&&(this.triggerFunctions.del=t.onDelete),t.physics){if(t.physics.barnesHut){this.constants.physics.barnesHut.enabled=!0;for(e in t.physics.barnesHut)t.physics.barnesHut.hasOwnProperty(e)&&(this.constants.physics.barnesHut[e]=t.physics.barnesHut[e])}if(t.physics.repulsion){this.constants.physics.barnesHut.enabled=!1;for(e in t.physics.repulsion)t.physics.repulsion.hasOwnProperty(e)&&(this.constants.physics.repulsion[e]=t.physics.repulsion[e])}if(t.physics.hierarchicalRepulsion){this.constants.hierarchicalLayout.enabled=!0,this.constants.physics.hierarchicalRepulsion.enabled=!0,this.constants.physics.barnesHut.enabled=!1;for(e in t.physics.hierarchicalRepulsion)t.physics.hierarchicalRepulsion.hasOwnProperty(e)&&(this.constants.physics.hierarchicalRepulsion[e]=t.physics.hierarchicalRepulsion[e])}}if(void 0!==t.smoothCurves)if("boolean"==typeof t.smoothCurves)this.constants.smoothCurves.enabled=t.smoothCurves;else{this.constants.smoothCurves.enabled=!0;for(e in t.smoothCurves)t.smoothCurves.hasOwnProperty(e)&&(this.constants.smoothCurves[e]=t.smoothCurves[e])}if(t.hierarchicalLayout){this.constants.hierarchicalLayout.enabled=!0;for(e in t.hierarchicalLayout)t.hierarchicalLayout.hasOwnProperty(e)&&(this.constants.hierarchicalLayout[e]=t.hierarchicalLayout[e])}else void 0!==t.hierarchicalLayout&&(this.constants.hierarchicalLayout.enabled=!1);if(t.clustering){this.constants.clustering.enabled=!0;for(e in t.clustering)t.clustering.hasOwnProperty(e)&&(this.constants.clustering[e]=t.clustering[e])}else void 0!==t.clustering&&(this.constants.clustering.enabled=!1);if(t.navigation){this.constants.navigation.enabled=!0;for(e in t.navigation)t.navigation.hasOwnProperty(e)&&(this.constants.navigation[e]=t.navigation[e])}else void 0!==t.navigation&&(this.constants.navigation.enabled=!1);if(t.keyboard){this.constants.keyboard.enabled=!0;for(e in t.keyboard)t.keyboard.hasOwnProperty(e)&&(this.constants.keyboard[e]=t.keyboard[e])}else void 0!==t.keyboard&&(this.constants.keyboard.enabled=!1);if(t.dataManipulation){this.constants.dataManipulation.enabled=!0;for(e in t.dataManipulation)t.dataManipulation.hasOwnProperty(e)&&(this.constants.dataManipulation[e]=t.dataManipulation[e]);this.editMode=this.constants.dataManipulation.initiallyVisible}else void 0!==t.dataManipulation&&(this.constants.dataManipulation.enabled=!1);if(t.edges){for(e in t.edges)t.edges.hasOwnProperty(e)&&"object"!=typeof t.edges[e]&&(this.constants.edges[e]=t.edges[e]);void 0!==t.edges.color&&(a.isString(t.edges.color)?(this.constants.edges.color={},this.constants.edges.color.color=t.edges.color,this.constants.edges.color.highlight=t.edges.color,this.constants.edges.color.hover=t.edges.color):(void 0!==t.edges.color.color&&(this.constants.edges.color.color=t.edges.color.color),void 0!==t.edges.color.highlight&&(this.constants.edges.color.highlight=t.edges.color.highlight),void 0!==t.edges.color.hover&&(this.constants.edges.color.hover=t.edges.color.hover))),t.edges.fontColor||void 0!==t.edges.color&&(a.isString(t.edges.color)?this.constants.edges.fontColor=t.edges.color:void 0!==t.edges.color.color&&(this.constants.edges.fontColor=t.edges.color.color)),t.edges.dash&&(void 0!==t.edges.dash.length&&(this.constants.edges.dash.length=t.edges.dash.length),void 0!==t.edges.dash.gap&&(this.constants.edges.dash.gap=t.edges.dash.gap),void 0!==t.edges.dash.altLength&&(this.constants.edges.dash.altLength=t.edges.dash.altLength)) -}if(t.nodes){for(e in t.nodes)t.nodes.hasOwnProperty(e)&&(this.constants.nodes[e]=t.nodes[e]);t.nodes.color&&(this.constants.nodes.color=a.parseColor(t.nodes.color))}if(t.groups)for(var i in t.groups)if(t.groups.hasOwnProperty(i)){var s=t.groups[i];this.groups.add(i,s)}if(t.tooltip){for(e in t.tooltip)t.tooltip.hasOwnProperty(e)&&(this.constants.tooltip[e]=t.tooltip[e]);t.tooltip.color&&(this.constants.tooltip.color=a.parseColor(t.tooltip.color))}}this._loadPhysicsSystem(),this._loadNavigationControls(),this._loadManipulationSystem(),this._configureSmoothCurves(),this._createKeyBinds(),this.setSize(this.width,this.height),this.moving=!0,this.start()},s.prototype._create=function(){for(;this.containerElement.hasChildNodes();)this.containerElement.removeChild(this.containerElement.firstChild);if(this.frame=document.createElement("div"),this.frame.className="network-frame",this.frame.style.position="relative",this.frame.style.overflow="hidden",this.frame.canvas=document.createElement("canvas"),this.frame.canvas.style.position="relative",this.frame.appendChild(this.frame.canvas),!this.frame.canvas.getContext){var t=document.createElement("DIV");t.style.color="red",t.style.fontWeight="bold",t.style.padding="10px",t.innerHTML="Error: your browser does not support HTML canvas",this.frame.canvas.appendChild(t)}var e=this;this.drag={},this.pinch={},this.hammer=o(this.frame.canvas,{prevent_default:!0}),this.hammer.on("tap",e._onTap.bind(e)),this.hammer.on("doubletap",e._onDoubleTap.bind(e)),this.hammer.on("hold",e._onHold.bind(e)),this.hammer.on("pinch",e._onPinch.bind(e)),this.hammer.on("touch",e._onTouch.bind(e)),this.hammer.on("dragstart",e._onDragStart.bind(e)),this.hammer.on("drag",e._onDrag.bind(e)),this.hammer.on("dragend",e._onDragEnd.bind(e)),this.hammer.on("release",e._onRelease.bind(e)),this.hammer.on("mousewheel",e._onMouseWheel.bind(e)),this.hammer.on("DOMMouseScroll",e._onMouseWheel.bind(e)),this.hammer.on("mousemove",e._onMouseMoveTitle.bind(e)),this.containerElement.appendChild(this.frame)},s.prototype._createKeyBinds=function(){var t=this;this.mousetrap=r,this.mousetrap.reset(),1==this.constants.keyboard.enabled&&(this.mousetrap.bind("up",this._moveUp.bind(t),"keydown"),this.mousetrap.bind("up",this._yStopMoving.bind(t),"keyup"),this.mousetrap.bind("down",this._moveDown.bind(t),"keydown"),this.mousetrap.bind("down",this._yStopMoving.bind(t),"keyup"),this.mousetrap.bind("left",this._moveLeft.bind(t),"keydown"),this.mousetrap.bind("left",this._xStopMoving.bind(t),"keyup"),this.mousetrap.bind("right",this._moveRight.bind(t),"keydown"),this.mousetrap.bind("right",this._xStopMoving.bind(t),"keyup"),this.mousetrap.bind("=",this._zoomIn.bind(t),"keydown"),this.mousetrap.bind("=",this._stopZoom.bind(t),"keyup"),this.mousetrap.bind("-",this._zoomOut.bind(t),"keydown"),this.mousetrap.bind("-",this._stopZoom.bind(t),"keyup"),this.mousetrap.bind("[",this._zoomIn.bind(t),"keydown"),this.mousetrap.bind("[",this._stopZoom.bind(t),"keyup"),this.mousetrap.bind("]",this._zoomOut.bind(t),"keydown"),this.mousetrap.bind("]",this._stopZoom.bind(t),"keyup"),this.mousetrap.bind("pageup",this._zoomIn.bind(t),"keydown"),this.mousetrap.bind("pageup",this._stopZoom.bind(t),"keyup"),this.mousetrap.bind("pagedown",this._zoomOut.bind(t),"keydown"),this.mousetrap.bind("pagedown",this._stopZoom.bind(t),"keyup")),1==this.constants.dataManipulation.enabled&&(this.mousetrap.bind("escape",this._createManipulatorBar.bind(t)),this.mousetrap.bind("del",this._deleteSelected.bind(t)))},s.prototype._getPointer=function(t){return{x:t.pageX-a.getAbsoluteLeft(this.frame.canvas),y:t.pageY-a.getAbsoluteTop(this.frame.canvas)}},s.prototype._onTouch=function(t){this.drag.pointer=this._getPointer(t.gesture.center),this.drag.pinched=!1,this.pinch.scale=this._getScale(),this._handleTouch(this.drag.pointer)},s.prototype._onDragStart=function(){this._handleDragStart()},s.prototype._handleDragStart=function(){var t=this.drag,e=this._getNodeAt(t.pointer);if(t.dragging=!0,t.selection=[],t.translation=this._getTranslation(),t.nodeId=null,null!=e){t.nodeId=e.id,e.isSelected()||this._selectObject(e,!1);for(var i in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(i)){var s=this.selectionObj.nodes[i],n={id:s.id,node:s,x:s.x,y:s.y,xFixed:s.xFixed,yFixed:s.yFixed};s.xFixed=!0,s.yFixed=!0,t.selection.push(n)}}},s.prototype._onDrag=function(t){this._handleOnDrag(t)},s.prototype._handleOnDrag=function(t){if(!this.drag.pinched){var e=this._getPointer(t.gesture.center),i=this,s=this.drag,n=s.selection;if(n&&n.length&&1==this.constants.dragNodes){var o=e.x-s.pointer.x,r=e.y-s.pointer.y;n.forEach(function(t){var e=t.node;t.xFixed||(e.x=i._XconvertDOMtoCanvas(i._XconvertCanvasToDOM(t.x)+o)),t.yFixed||(e.y=i._YconvertDOMtoCanvas(i._YconvertCanvasToDOM(t.y)+r))}),this.moving||(this.moving=!0,this.start())}else if(1==this.constants.dragNetwork){var a=e.x-this.drag.pointer.x,h=e.y-this.drag.pointer.y;this._setTranslation(this.drag.translation.x+a,this.drag.translation.y+h),this._redraw()}}},s.prototype._onDragEnd=function(){this.drag.dragging=!1;var t=this.drag.selection;t&&(t.forEach(function(t){t.node.xFixed=t.xFixed,t.node.yFixed=t.yFixed}),this.moving=!0,this.start()),this._redraw()},s.prototype._onTap=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleTap(e)},s.prototype._onDoubleTap=function(t){var e=this._getPointer(t.gesture.center);this._handleDoubleTap(e)},s.prototype._onHold=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleOnHold(e)},s.prototype._onRelease=function(t){var e=this._getPointer(t.gesture.center);this._handleOnRelease(e)},s.prototype._onPinch=function(t){var e=this._getPointer(t.gesture.center);this.drag.pinched=!0,"scale"in this.pinch||(this.pinch.scale=1);var i=this.pinch.scale*t.gesture.scale;this._zoom(i,e)},s.prototype._zoom=function(t,e){if(1==this.constants.zoomable){var i=this._getScale();1e-5>t&&(t=1e-5),t>10&&(t=10);var s=null;void 0!==this.drag&&1==this.drag.dragging&&(s=this.DOMtoCanvas(this.drag.pointer));var n=this._getTranslation(),o=t/i,r=(1-o)*e.x+n.x*o,a=(1-o)*e.y+n.y*o;if(this.areaCenter={x:this._XconvertDOMtoCanvas(e.x),y:this._YconvertDOMtoCanvas(e.y)},this._setScale(t),this._setTranslation(r,a),this.updateClustersDefault(),null!=s){var h=this.canvasToDOM(s);this.drag.pointer.x=h.x,this.drag.pointer.y=h.y}return this._redraw(),t>i?this.emit("zoom",{direction:"+"}):this.emit("zoom",{direction:"-"}),t}},s.prototype._onMouseWheel=function(t){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i=this._getScale(),s=e/10;0>e&&(s/=1-s),i*=1+s;var n=h.fakeGesture(this,t),o=this._getPointer(n.center);this._zoom(i,o)}t.preventDefault()},s.prototype._onMouseMoveTitle=function(t){var e=h.fakeGesture(this,t),i=this._getPointer(e.center);this.popupObj&&this._checkHidePopup(i);var s=this,n=function(){s._checkShowPopup(i)};if(this.popupTimer&&clearInterval(this.popupTimer),this.drag.dragging||(this.popupTimer=setTimeout(n,this.constants.tooltip.delay)),1==this.constants.hover){for(var o in this.hoverObj.edges)this.hoverObj.edges.hasOwnProperty(o)&&(this.hoverObj.edges[o].hover=!1,delete this.hoverObj.edges[o]);var r=this._getNodeAt(i);null==r&&(r=this._getEdgeAt(i)),null!=r&&this._hoverObject(r);for(var a in this.hoverObj.nodes)this.hoverObj.nodes.hasOwnProperty(a)&&(r instanceof m&&r.id!=a||r instanceof _||null==r)&&(this._blurObject(this.hoverObj.nodes[a]),delete this.hoverObj.nodes[a]);this.redraw()}},s.prototype._checkShowPopup=function(t){var e,i={left:this._XconvertDOMtoCanvas(t.x),top:this._YconvertDOMtoCanvas(t.y),right:this._XconvertDOMtoCanvas(t.x),bottom:this._YconvertDOMtoCanvas(t.y)},s=this.popupObj;if(void 0==this.popupObj){var n=this.nodes;for(e in n)if(n.hasOwnProperty(e)){var o=n[e];if(void 0!==o.getTitle()&&o.isOverlappingWith(i)){this.popupObj=o;break}}}if(void 0===this.popupObj){var r=this.edges;for(e in r)if(r.hasOwnProperty(e)){var a=r[e];if(a.connected&&void 0!==a.getTitle()&&a.isOverlappingWith(i)){this.popupObj=a;break}}}if(this.popupObj){if(this.popupObj!=s){var h=this;h.popup||(h.popup=new f(h.frame,h.constants.tooltip)),h.popup.setPosition(t.x-3,t.y-3),h.popup.setText(h.popupObj.getTitle()),h.popup.show()}}else this.popup&&this.popup.hide()},s.prototype._checkHidePopup=function(t){this.popupObj&&this._getNodeAt(t)||(this.popupObj=void 0,this.popup&&this.popup.hide())},s.prototype.setSize=function(t,e){this.frame.style.width=t,this.frame.style.height=e,this.frame.canvas.style.width="100%",this.frame.canvas.style.height="100%",this.frame.canvas.width=this.frame.canvas.clientWidth,this.frame.canvas.height=this.frame.canvas.clientHeight,void 0!==this.manipulationDiv&&(this.manipulationDiv.style.width=this.frame.canvas.clientWidth+"px"),void 0!==this.navigationDivs&&void 0!==this.navigationDivs.wrapper&&(this.navigationDivs.wrapper.style.width=this.frame.canvas.clientWidth+"px",this.navigationDivs.wrapper.style.height=this.frame.canvas.clientHeight+"px"),this.emit("resize",{width:this.frame.canvas.width,height:this.frame.canvas.height})},s.prototype._setNodes=function(t){var e=this.nodesData;if(t instanceof d||t instanceof l)this.nodesData=t;else if(t instanceof Array)this.nodesData=new d,this.nodesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.nodesData=new d}if(e&&a.forEach(this.nodesListeners,function(t,i){e.off(i,t)}),this.nodes={},this.nodesData){var i=this;a.forEach(this.nodesListeners,function(t,e){i.nodesData.on(e,t)});var s=this.nodesData.getIds();this._addNodes(s)}this._updateSelection()},s.prototype._addNodes=function(t){for(var e,i=0,s=t.length;s>i;i++){e=t[i];var n=this.nodesData.get(e),o=new m(n,this.images,this.groups,this.constants);if(this.nodes[e]=o,!(0!=o.xFixed&&0!=o.yFixed||null!==o.x&&null!==o.y)){var r=1*t.length,a=2*Math.PI*Math.random();0==o.xFixed&&(o.x=r*Math.cos(a)),0==o.yFixed&&(o.y=r*Math.sin(a))}this.moving=!0}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateValueRange(this.nodes),this.updateLabels()},s.prototype._updateNodes=function(t){for(var e=this.nodes,i=this.nodesData,s=0,n=t.length;n>s;s++){var o=t[s],r=e[o],a=i.get(o);r?r.setProperties(a,this.constants):(r=new m(properties,this.images,this.groups,this.constants),e[o]=r)}this.moving=!0,1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateNodeIndexList(),this._reconnectEdges(),this._updateValueRange(e)},s.prototype._removeNodes=function(t){for(var e=this.nodes,i=0,s=t.length;s>i;i++){var n=t[i];delete e[n]}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateSelection(),this._updateValueRange(e)},s.prototype._setEdges=function(t){var e=this.edgesData;if(t instanceof d||t instanceof l)this.edgesData=t;else if(t instanceof Array)this.edgesData=new d,this.edgesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.edgesData=new d}if(e&&a.forEach(this.edgesListeners,function(t,i){e.off(i,t)}),this.edges={},this.edgesData){var i=this;a.forEach(this.edgesListeners,function(t,e){i.edgesData.on(e,t)});var s=this.edgesData.getIds();this._addEdges(s)}this._reconnectEdges()},s.prototype._addEdges=function(t){for(var e=this.edges,i=this.edgesData,s=0,n=t.length;n>s;s++){var o=t[s],r=e[o];r&&r.disconnect();var a=i.get(o,{showInternalIds:!0});e[o]=new _(a,this,this.constants)}this.moving=!0,this._updateValueRange(e),this._createBezierNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes()},s.prototype._updateEdges=function(t){for(var e=this.edges,i=this.edgesData,s=0,n=t.length;n>s;s++){var o=t[s],r=i.get(o),a=e[o];a?(a.disconnect(),a.setProperties(r,this.constants),a.connect()):(a=new _(r,this,this.constants),this.edges[o]=a)}this._createBezierNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this.moving=!0,this._updateValueRange(e)},s.prototype._removeEdges=function(t){for(var e=this.edges,i=0,s=t.length;s>i;i++){var n=t[i],o=e[n];o&&(null!=o.via&&delete this.sectors.support.nodes[o.via.id],o.disconnect(),delete e[n])}this.moving=!0,this._updateValueRange(e),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes()},s.prototype._reconnectEdges=function(){var t,e=this.nodes,i=this.edges;for(t in e)e.hasOwnProperty(t)&&(e[t].edges=[]);for(t in i)if(i.hasOwnProperty(t)){var s=i[t];s.from=null,s.to=null,s.connect()}},s.prototype._updateValueRange=function(t){var e,i=void 0,s=void 0;for(e in t)if(t.hasOwnProperty(e)){var n=t[e].getValue();void 0!==n&&(i=void 0===i?n:Math.min(n,i),s=void 0===s?n:Math.max(n,s))}if(void 0!==i&&void 0!==s)for(e in t)t.hasOwnProperty(e)&&t[e].setValueRange(i,s)},s.prototype.redraw=function(){this.setSize(this.width,this.height),this._redraw()},s.prototype._redraw=function(){var t=this.frame.canvas.getContext("2d"),e=this.frame.canvas.width,i=this.frame.canvas.height;t.clearRect(0,0,e,i),t.save(),t.translate(this.translation.x,this.translation.y),t.scale(this.scale,this.scale),this.canvasTopLeft={x:this._XconvertDOMtoCanvas(0),y:this._YconvertDOMtoCanvas(0)},this.canvasBottomRight={x:this._XconvertDOMtoCanvas(this.frame.canvas.clientWidth),y:this._YconvertDOMtoCanvas(this.frame.canvas.clientHeight)},this._doInAllSectors("_drawAllSectorNodes",t),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideEdgesOnDrag)&&this._doInAllSectors("_drawEdges",t),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideNodesOnDrag)&&this._doInAllSectors("_drawNodes",t,!1),1==this.controlNodesActive&&this._doInAllSectors("_drawControlNodes",t),t.restore()},s.prototype._setTranslation=function(t,e){void 0===this.translation&&(this.translation={x:0,y:0}),void 0!==t&&(this.translation.x=t),void 0!==e&&(this.translation.y=e),this.emit("viewChanged")},s.prototype._getTranslation=function(){return{x:this.translation.x,y:this.translation.y}},s.prototype._setScale=function(t){this.scale=t},s.prototype._getScale=function(){return this.scale},s.prototype._XconvertDOMtoCanvas=function(t){return(t-this.translation.x)/this.scale},s.prototype._XconvertCanvasToDOM=function(t){return t*this.scale+this.translation.x},s.prototype._YconvertDOMtoCanvas=function(t){return(t-this.translation.y)/this.scale},s.prototype._YconvertCanvasToDOM=function(t){return t*this.scale+this.translation.y},s.prototype.canvasToDOM=function(t){return{x:this._XconvertCanvasToDOM(t.x),y:this._YconvertCanvasToDOM(t.y)}},s.prototype.DOMtoCanvas=function(t){return{x:this._XconvertDOMtoCanvas(t.x),y:this._YconvertDOMtoCanvas(t.y)}},s.prototype._drawNodes=function(t,e){void 0===e&&(e=!1);var i=this.nodes,s=[];for(var n in i)i.hasOwnProperty(n)&&(i[n].setScaleAndPos(this.scale,this.canvasTopLeft,this.canvasBottomRight),i[n].isSelected()?s.push(n):(i[n].inArea()||e)&&i[n].draw(t));for(var o=0,r=s.length;r>o;o++)(i[s[o]].inArea()||e)&&i[s[o]].draw(t)},s.prototype._drawEdges=function(t){var e=this.edges;for(var i in e)if(e.hasOwnProperty(i)){var s=e[i];s.setScale(this.scale),s.connected&&e[i].draw(t)}},s.prototype._drawControlNodes=function(t){var e=this.edges;for(var i in e)e.hasOwnProperty(i)&&e[i]._drawControlNodes(t)},s.prototype._stabilize=function(){1==this.constants.freezeForStabilization&&this._freezeDefinedNodes();for(var t=0;this.moving&&t0)for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStepLimited(e,this.constants.maxVelocity),s=!0);else for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStep(e),s=!0);if(1==s){var n=this.constants.minVelocity/Math.max(this.scale,.05);n>.5*this.constants.maxVelocity?this.moving=!0:(this.moving=this._isMoving(n),0==this.moving&&this.emit("stabilized",{iterations:null}),this.moving=this.moving||this.configurePhysics)}},s.prototype._physicsTick=function(){this.freezeSimulation||this.moving&&(this._doInAllActiveSectors("_initializeForceCalculation"),this._doInAllActiveSectors("_discreteStepNodes"),this.constants.smoothCurves&&this._doInSupportSector("_discreteStepNodes"),this._findCenter(this._getRange()))},s.prototype._animationStep=function(){this.timer=void 0,this._handleNavigation(),this.start();var t=Date.now(),e=1;this._physicsTick();for(var i=Date.now()-t;i<.9*(this.renderTimestep-this.renderTime)&&eh}return!1},s.prototype._getColor=function(){var t=this.color;return"to"==this.inheritColor?t={highlight:this.to.color.highlight.border,hover:this.to.color.hover.border,color:this.to.color.border}:("from"==this.inheritColor||1==this.inheritColor)&&(t={highlight:this.from.color.highlight.border,hover:this.from.color.hover.border,color:this.from.color.border}),1==this.selected?t.highlight:1==this.hover?t.hover:t.color},s.prototype._drawLine=function(t){if(t.strokeStyle=this._getColor(),t.lineWidth=this._getLineWidth(),this.from!=this.to){var e,i=this._line(t);if(this.label){if(1==this.smoothCurves.enabled&&null!=i){var s=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),n=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:s,y:n}}else e=this._pointOnLine(.5);this._label(t,this.label,e.x,e.y)}}else{var o,r,a=this.length/4,h=this.from;h.width||h.resize(t),h.width>h.height?(o=h.x+h.width/2,r=h.y-a):(o=h.x+a,r=h.y-h.height/2),this._circle(t,o,r,a),e=this._pointOnCircle(o,r,a,.5),this._label(t,this.label,e.x,e.y)}},s.prototype._getLineWidth=function(){return 1==this.selected?Math.min(this.widthSelected,this.widthMax)*this.networkScaleInv:1==this.hover?Math.min(this.hoverWidth,this.widthMax)*this.networkScaleInv:this.width*this.networkScaleInv},s.prototype._getViaCoordinates=function(){var t=null,e=null,i=this.smoothCurves.roundness,s=this.smoothCurves.type,n=Math.abs(this.from.x-this.to.x),o=Math.abs(this.from.y-this.to.y);return"discrete"==s||"diagonalCross"==s?Math.abs(this.from.x-this.to.x)this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o)),"discrete"==s&&(t=i*o>n?this.from.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n)),"discrete"==s&&(e=i*n>o?this.from.y:e)):"straightCross"==s?Math.abs(this.from.x-this.to.x)Math.abs(this.from.y-this.to.y)&&(t=this.from.xthis.to.y?this.from.xthis.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o,t=this.to.x>t?this.to.x:t):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o,t=this.to.x>t?this.to.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xe?this.to.y:e):this.from.x>this.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n,e=this.to.y>e?this.to.y:e):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n,e=this.to.yl.height?(a=l.x+.5*l.width,h=l.y-d):(a=l.x+d,h=l.y-.5*l.height),this._circle(t,a,h,d);var s=.2*Math.PI,n=(10+5*this.width)*this.arrowScaleFactor;e=this._pointOnCircle(a,h,d,.5),t.arrow(e.x,e.y,s,n),t.fill(),t.stroke(),this.label&&(e=this._pointOnCircle(a,h,d,.5),this._label(t,this.label,e.x,e.y))}},s.prototype._drawArrow=function(t){1==this.selected?(t.strokeStyle=this.color.highlight,t.fillStyle=this.color.highlight):1==this.hover?(t.strokeStyle=this.color.hover,t.fillStyle=this.color.hover):(t.strokeStyle=this.color.color,t.fillStyle=this.color.color),t.lineWidth=this._getLineWidth(); -var e,i;if(this.from!=this.to){e=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x);var s,n=this.to.x-this.from.x,o=this.to.y-this.from.y,r=Math.sqrt(n*n+o*o),a=this.from.distanceToBorder(t,e+Math.PI),h=(r-a)/r,d=h*this.from.x+(1-h)*this.to.x,l=h*this.from.y+(1-h)*this.to.y;1==this.smoothCurves.dynamic&&1==this.smoothCurves.enabled?s=this.via:1==this.smoothCurves.enabled&&(s=this._getViaCoordinates()),1==this.smoothCurves.enabled&&null!=s.x&&(e=Math.atan2(this.to.y-s.y,this.to.x-s.x),n=this.to.x-s.x,o=this.to.y-s.y,r=Math.sqrt(n*n+o*o));var c,u,p=this.to.distanceToBorder(t,e),m=(r-p)/r;if(1==this.smoothCurves.enabled&&null!=s.x?(c=(1-m)*s.x+m*this.to.x,u=(1-m)*s.y+m*this.to.y):(c=(1-m)*this.from.x+m*this.to.x,u=(1-m)*this.from.y+m*this.to.y),t.beginPath(),t.moveTo(d,l),1==this.smoothCurves.enabled&&null!=s.x?t.quadraticCurveTo(s.x,s.y,c,u):t.lineTo(c,u),t.stroke(),i=(10+5*this.width)*this.arrowScaleFactor,t.arrow(c,u,e,i),t.fill(),t.stroke(),this.label){var _;if(1==this.smoothCurves.enabled&&null!=s){var f=.5*(.5*(this.from.x+s.x)+.5*(this.to.x+s.x)),g=.5*(.5*(this.from.y+s.y)+.5*(this.to.y+s.y));_={x:f,y:g}}else _=this._pointOnLine(.5);this._label(t,this.label,_.x,_.y)}}else{var y,v,M,b=this.from,w=.25*Math.max(100,this.length);b.width||b.resize(t),b.width>b.height?(y=b.x+.5*b.width,v=b.y-w,M={x:y,y:b.y,angle:.9*Math.PI}):(y=b.x+w,v=b.y-.5*b.height,M={x:b.x,y:v,angle:.6*Math.PI}),t.beginPath(),t.arc(y,v,w,0,2*Math.PI,!1),t.stroke();var i=(10+5*this.width)*this.arrowScaleFactor;t.arrow(M.x,M.y,M.angle,i),t.fill(),t.stroke(),this.label&&(_=this._pointOnCircle(y,v,w,.5),this._label(t,this.label,_.x,_.y))}},s.prototype._getDistanceToEdge=function(t,e,i,s,n,o){if(this.from!=this.to){if(1==this.smoothCurves.enabled){var r,a;if(1==this.smoothCurves.enabled&&1==this.smoothCurves.dynamic)r=this.via.x,a=this.via.y;else{var h=this._getViaCoordinates();r=h.x,a=h.y}var d,l,c,u,p,m,_,f=1e9;for(l=0;10>l;l++)c=.1*l,u=Math.pow(1-c,2)*t+2*c*(1-c)*r+Math.pow(c,2)*i,p=Math.pow(1-c,2)*e+2*c*(1-c)*a+Math.pow(c,2)*s,l>0&&(d=this._getDistanceToLine(m,_,u,p,n,o),f=f>d?d:f),m=u,_=p;return f}return this._getDistanceToLine(t,e,i,s,n,o)}var u,p,g,y,v=this.length/4,M=this.from;return M.width||M.resize(ctx),M.width>M.height?(u=M.x+M.width/2,p=M.y-v):(u=M.x+v,p=M.y-M.height/2),g=u-n,y=p-o,Math.abs(Math.sqrt(g*g+y*y)-v)},s.prototype._getDistanceToLine=function(t,e,i,s,n,o){var r=i-t,a=s-e,h=r*r+a*a,d=((n-t)*r+(o-e)*a)/h;d>1?d=1:0>d&&(d=0);var l=t+d*r,c=e+d*a,u=l-n,p=c-o;return Math.sqrt(u*u+p*p)},s.prototype.setScale=function(t){this.networkScaleInv=1/t},s.prototype.select=function(){this.selected=!0},s.prototype.unselect=function(){this.selected=!1},s.prototype.positionBezierNode=function(){null!==this.via&&(this.via.x=.5*(this.from.x+this.to.x),this.via.y=.5*(this.from.y+this.to.y))},s.prototype._drawControlNodes=function(t){if(1==this.controlNodesEnabled){if(null===this.controlNodes.from&&null===this.controlNodes.to){var e="edgeIdFrom:".concat(this.id),i="edgeIdTo:".concat(this.id),s={nodes:{group:"",radius:8},physics:{damping:0},clustering:{maxNodeSizeIncrements:0,nodeScaling:{width:0,height:0,radius:0}}};this.controlNodes.from=new o({id:e,shape:"dot",color:{background:"#ff4e00",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s),this.controlNodes.to=new o({id:i,shape:"dot",color:{background:"#ff4e00",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s)}0==this.controlNodes.from.selected&&0==this.controlNodes.to.selected&&(this.controlNodes.positions=this.getControlNodePositions(t),this.controlNodes.from.x=this.controlNodes.positions.from.x,this.controlNodes.from.y=this.controlNodes.positions.from.y,this.controlNodes.to.x=this.controlNodes.positions.to.x,this.controlNodes.to.y=this.controlNodes.positions.to.y),this.controlNodes.from.draw(t),this.controlNodes.to.draw(t)}else this.controlNodes={from:null,to:null,positions:{}}},s.prototype._enableControlNodes=function(){this.controlNodesEnabled=!0},s.prototype._disableControlNodes=function(){this.controlNodesEnabled=!1},s.prototype._getSelectedControlNode=function(t,e){var i=this.controlNodes.positions,s=Math.sqrt(Math.pow(t-i.from.x,2)+Math.pow(e-i.from.y,2)),n=Math.sqrt(Math.pow(t-i.to.x,2)+Math.pow(e-i.to.y,2));return 15>s?(this.connectedNode=this.from,this.from=this.controlNodes.from,this.controlNodes.from):15>n?(this.connectedNode=this.to,this.to=this.controlNodes.to,this.controlNodes.to):null},s.prototype._restoreControlNodes=function(){1==this.controlNodes.from.selected&&(this.from=this.connectedNode,this.connectedNode=null,this.controlNodes.from.unselect()),1==this.controlNodes.to.selected&&(this.to=this.connectedNode,this.connectedNode=null,this.controlNodes.to.unselect())},s.prototype.getControlNodePositions=function(t){var e,i=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),s=this.to.x-this.from.x,n=this.to.y-this.from.y,o=Math.sqrt(s*s+n*n),r=this.from.distanceToBorder(t,i+Math.PI),a=(o-r)/o,h=a*this.from.x+(1-a)*this.to.x,d=a*this.from.y+(1-a)*this.to.y;1==this.smoothCurves.dynamic&&1==this.smoothCurves.enabled?e=this.via:1==this.smoothCurves.enabled&&(e=this._getViaCoordinates()),1==this.smoothCurves.enabled&&null!=e.x&&(i=Math.atan2(this.to.y-e.y,this.to.x-e.x),s=this.to.x-e.x,n=this.to.y-e.y,o=Math.sqrt(s*s+n*n));var l,c,u=this.to.distanceToBorder(t,i),p=(o-u)/o;return 1==this.smoothCurves.enabled&&null!=e.x?(l=(1-p)*e.x+p*this.to.x,c=(1-p)*e.y+p*this.to.y):(l=(1-p)*this.from.x+p*this.to.x,c=(1-p)*this.from.y+p*this.to.y),{from:{x:h,y:d},to:{x:l,y:c}}},t.exports=s},function(t,e,i){function s(){this.clear(),this.defaultIndex=0}var n=i(1);s.DEFAULT=[{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},{border:"#FFA500",background:"#FFFF00",highlight:{border:"#FFA500",background:"#FFFFA3"},hover:{border:"#FFA500",background:"#FFFFA3"}},{border:"#FA0A10",background:"#FB7E81",highlight:{border:"#FA0A10",background:"#FFAFB1"},hover:{border:"#FA0A10",background:"#FFAFB1"}},{border:"#41A906",background:"#7BE141",highlight:{border:"#41A906",background:"#A1EC76"},hover:{border:"#41A906",background:"#A1EC76"}},{border:"#E129F0",background:"#EB7DF4",highlight:{border:"#E129F0",background:"#F0B3F5"},hover:{border:"#E129F0",background:"#F0B3F5"}},{border:"#7C29F0",background:"#AD85E4",highlight:{border:"#7C29F0",background:"#D3BDF0"},hover:{border:"#7C29F0",background:"#D3BDF0"}},{border:"#C37F00",background:"#FFA807",highlight:{border:"#C37F00",background:"#FFCA66"},hover:{border:"#C37F00",background:"#FFCA66"}},{border:"#4220FB",background:"#6E6EFD",highlight:{border:"#4220FB",background:"#9B9BFD"},hover:{border:"#4220FB",background:"#9B9BFD"}},{border:"#FD5A77",background:"#FFC0CB",highlight:{border:"#FD5A77",background:"#FFD1D9"},hover:{border:"#FD5A77",background:"#FFD1D9"}},{border:"#4AD63A",background:"#C2FABC",highlight:{border:"#4AD63A",background:"#E6FFE3"},hover:{border:"#4AD63A",background:"#E6FFE3"}}],s.prototype.clear=function(){this.groups={},this.groups.length=function(){var t=0;for(var e in this)this.hasOwnProperty(e)&&t++;return t}},s.prototype.get=function(t){var e=this.groups[t];if(void 0==e){var i=this.defaultIndex%s.DEFAULT.length;this.defaultIndex++,e={},e.color=s.DEFAULT[i],this.groups[t]=e}return e},s.prototype.add=function(t,e){return this.groups[t]=e,e.color&&(e.color=n.parseColor(e.color)),e},t.exports=s},function(t){function e(){this.images={},this.callback=void 0}e.prototype.setOnloadCallback=function(t){this.callback=t},e.prototype.load=function(t){var e=this.images[t];if(void 0==e){var i=this;e=new Image,this.images[t]=e,e.onload=function(){i.callback&&i.callback(this)},e.src=t}return e},t.exports=e},function(t,e,i){function s(t,e,i,s){this.selected=!1,this.hover=!1,this.edges=[],this.dynamicEdges=[],this.reroutedEdges={},this.group=s.nodes.group,this.fontSize=Number(s.nodes.fontSize),this.fontFace=s.nodes.fontFace,this.fontColor=s.nodes.fontColor,this.fontDrawThreshold=3,this.color=s.nodes.color,this.id=void 0,this.shape=s.nodes.shape,this.image=s.nodes.image,this.x=null,this.y=null,this.xFixed=!1,this.yFixed=!1,this.horizontalAlignLeft=!0,this.verticalAlignTop=!0,this.radius=s.nodes.radius,this.baseRadiusValue=s.nodes.radius,this.radiusFixed=!1,this.radiusMin=s.nodes.radiusMin,this.radiusMax=s.nodes.radiusMax,this.level=-1,this.preassignedLevel=!1,this.borderWidth=s.nodes.borderWidth,this.borderWidthSelected=s.nodes.borderWidthSelected,this.imagelist=e,this.grouplist=i,this.fx=0,this.fy=0,this.vx=0,this.vy=0,this.minForce=s.minForce,this.damping=s.physics.damping,this.mass=1,this.fixedData={x:null,y:null},this.setProperties(t,s),this.resetCluster(),this.dynamicEdgesLength=0,this.clusterSession=0,this.clusterSizeWidthFactor=s.clustering.nodeScaling.width,this.clusterSizeHeightFactor=s.clustering.nodeScaling.height,this.clusterSizeRadiusFactor=s.clustering.nodeScaling.radius,this.maxNodeSizeIncrements=s.clustering.maxNodeSizeIncrements,this.growthIndicator=0,this.networkScaleInv=1,this.networkScale=1,this.canvasTopLeft={x:-300,y:-300},this.canvasBottomRight={x:300,y:300},this.parentEdgeId=null}var n=i(1);s.prototype.resetCluster=function(){this.formationScale=void 0,this.clusterSize=1,this.containedNodes={},this.containedEdges={},this.clusterSessions=[]},s.prototype.attachEdge=function(t){-1==this.edges.indexOf(t)&&this.edges.push(t),-1==this.dynamicEdges.indexOf(t)&&this.dynamicEdges.push(t),this.dynamicEdgesLength=this.dynamicEdges.length},s.prototype.detachEdge=function(t){var e=this.edges.indexOf(t);-1!=e&&(this.edges.splice(e,1),this.dynamicEdges.splice(e,1)),this.dynamicEdgesLength=this.dynamicEdges.length},s.prototype.setProperties=function(t,e){if(t){if(this.originalLabel=void 0,void 0!==t.id&&(this.id=t.id),void 0!==t.label&&(this.label=t.label,this.originalLabel=t.label),void 0!==t.title&&(this.title=t.title),void 0!==t.group&&(this.group=t.group),void 0!==t.x&&(this.x=t.x),void 0!==t.y&&(this.y=t.y),void 0!==t.value&&(this.value=t.value),void 0!==t.level&&(this.level=t.level,this.preassignedLevel=!0),void 0!==t.borderWidth&&(this.borderWidth=t.borderWidth),void 0!==t.borderWidthSelected&&(this.borderWidthSelected=t.borderWidthSelected),void 0!==t.mass&&(this.mass=t.mass),void 0!==t.horizontalAlignLeft&&(this.horizontalAlignLeft=t.horizontalAlignLeft),void 0!==t.verticalAlignTop&&(this.verticalAlignTop=t.verticalAlignTop),void 0!==t.triggerFunction&&(this.triggerFunction=t.triggerFunction),void 0===this.id)throw"Node must have an id";if(void 0!==this.group){var i=this.grouplist.get(this.group);for(var s in i)i.hasOwnProperty(s)&&(this[s]=i[s])}if(void 0!==t.shape&&(this.shape=t.shape),void 0!==t.image&&(this.image=t.image),void 0!==t.radius&&(this.radius=t.radius,this.baseRadiusValue=this.radius),void 0!==t.color&&(this.color=n.parseColor(t.color)),void 0!==t.fontColor&&(this.fontColor=t.fontColor),void 0!==t.fontSize&&(this.fontSize=t.fontSize),void 0!==t.fontFace&&(this.fontFace=t.fontFace),void 0!==this.image&&""!=this.image){if(!this.imagelist)throw"No imagelist provided";this.imageObj=this.imagelist.load(this.image)}switch(this.xFixed=this.xFixed||void 0!==t.x&&!t.allowedToMoveX,this.yFixed=this.yFixed||void 0!==t.y&&!t.allowedToMoveY,this.radiusFixed=this.radiusFixed||void 0!==t.radius,"image"==this.shape&&(this.radiusMin=e.nodes.widthMin,this.radiusMax=e.nodes.widthMax),this.shape){case"database":this.draw=this._drawDatabase,this.resize=this._resizeDatabase;break;case"box":this.draw=this._drawBox,this.resize=this._resizeBox;break;case"circle":this.draw=this._drawCircle,this.resize=this._resizeCircle;break;case"ellipse":this.draw=this._drawEllipse,this.resize=this._resizeEllipse;break;case"image":this.draw=this._drawImage,this.resize=this._resizeImage;break;case"text":this.draw=this._drawText,this.resize=this._resizeText;break;case"dot":this.draw=this._drawDot,this.resize=this._resizeShape;break;case"square":this.draw=this._drawSquare,this.resize=this._resizeShape;break;case"triangle":this.draw=this._drawTriangle,this.resize=this._resizeShape;break;case"triangleDown":this.draw=this._drawTriangleDown,this.resize=this._resizeShape;break;case"star":this.draw=this._drawStar,this.resize=this._resizeShape;break;default:this.draw=this._drawEllipse,this.resize=this._resizeEllipse}this._reset()}},s.prototype.select=function(){this.selected=!0,this._reset()},s.prototype.unselect=function(){this.selected=!1,this._reset()},s.prototype.clearSizeCache=function(){this._reset()},s.prototype._reset=function(){this.width=void 0,this.height=void 0},s.prototype.getTitle=function(){return"function"==typeof this.title?this.title():this.title},s.prototype.distanceToBorder=function(t,e){var i=1;switch(this.width||this.resize(t),this.shape){case"circle":case"dot":return this.radius+i;case"ellipse":var s=this.width/2,n=this.height/2,o=Math.sin(e)*s,r=Math.cos(e)*n;return s*n/Math.sqrt(o*o+r*r);case"box":case"image":case"text":default:return this.width?Math.min(Math.abs(this.width/2/Math.cos(e)),Math.abs(this.height/2/Math.sin(e)))+i:0}},s.prototype._setForce=function(t,e){this.fx=t,this.fy=e},s.prototype._addForce=function(t,e){this.fx+=t,this.fy+=e},s.prototype.discreteStep=function(t){if(!this.xFixed){var e=this.damping*this.vx,i=(this.fx-e)/this.mass;this.vx+=i*t,this.x+=this.vx*t}if(!this.yFixed){var s=this.damping*this.vy,n=(this.fy-s)/this.mass;this.vy+=n*t,this.y+=this.vy*t}},s.prototype.discreteStepLimited=function(t,e){if(this.xFixed)this.fx=0;else{var i=this.damping*this.vx,s=(this.fx-i)/this.mass;this.vx+=s*t,this.vx=Math.abs(this.vx)>e?this.vx>0?e:-e:this.vx,this.x+=this.vx*t}if(this.yFixed)this.fy=0;else{var n=this.damping*this.vy,o=(this.fy-n)/this.mass;this.vy+=o*t,this.vy=Math.abs(this.vy)>e?this.vy>0?e:-e:this.vy,this.y+=this.vy*t}},s.prototype.isFixed=function(){return this.xFixed&&this.yFixed},s.prototype.isMoving=function(t){return Math.abs(this.vx)>t||Math.abs(this.vy)>t},s.prototype.isSelected=function(){return this.selected},s.prototype.getValue=function(){return this.value},s.prototype.getDistance=function(t,e){var i=this.x-t,s=this.y-e;return Math.sqrt(i*i+s*s)},s.prototype.setValueRange=function(t,e){if(!this.radiusFixed&&void 0!==this.value)if(e==t)this.radius=(this.radiusMin+this.radiusMax)/2;else{var i=(this.radiusMax-this.radiusMin)/(e-t);this.radius=(this.value-t)*i+this.radiusMin}this.baseRadiusValue=this.radius},s.prototype.draw=function(){throw"Draw method not initialized for node"},s.prototype.resize=function(){throw"Resize method not initialized for node"},s.prototype.isOverlappingWith=function(t){return this.leftt.left&&this.topt.top},s.prototype._resizeImage=function(){if(!this.width||!this.height){var t,e;if(this.value){this.radius=this.baseRadiusValue;var i=this.imageObj.height/this.imageObj.width;void 0!==i?(t=this.radius||this.imageObj.width,e=this.radius*i||this.imageObj.height):(t=0,e=0)}else t=this.imageObj.width,e=this.imageObj.height;this.width=t,this.height=e,this.growthIndicator=0,this.width>0&&this.height>0&&(this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-t)}},s.prototype._drawImage=function(t){this._resizeImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e;if(0!=this.imageObj.width){if(this.clusterSize>1){var i=this.clusterSize>1?10:0;i*=this.networkScaleInv,i=Math.min(.2*this.width,i),t.globalAlpha=.5,t.drawImage(this.imageObj,this.left-i,this.top-i,this.width+2*i,this.height+2*i)}t.globalAlpha=1,t.drawImage(this.imageObj,this.left,this.top,this.width,this.height),e=this.y+this.height/2}else e=this.y;this._label(t,this.label,this.x,e,void 0,"top")},s.prototype._resizeBox=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawBox=function(t){this._resizeBox(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.borderWidth,s=this.borderWidthSelected||2*this.borderWidth;t.strokeStyle=this.selected?this.color.highlight.border:this.hover?this.color.hover.border:this.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.roundRect(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth,this.radius),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.color.highlight.background:this.color.background,t.roundRect(this.left,this.top,this.width,this.height,this.radius),t.fill(),t.stroke(),this._label(t,this.label,this.x,this.y)},s.prototype._resizeDatabase=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=i.width+2*e;this.width=s,this.height=s,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-s}},s.prototype._drawDatabase=function(t){this._resizeDatabase(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.borderWidth,s=this.borderWidthSelected||2*this.borderWidth;t.strokeStyle=this.selected?this.color.highlight.border:this.hover?this.color.hover.border:this.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.database(this.x-this.width/2-2*t.lineWidth,this.y-.5*this.height-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.color.highlight.background:this.hover?this.color.hover.background:this.color.background,t.database(this.x-this.width/2,this.y-.5*this.height,this.width,this.height),t.fill(),t.stroke(),this._label(t,this.label,this.x,this.y)},s.prototype._resizeCircle=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=Math.max(i.width,i.height)+2*e;this.radius=s/2,this.width=s,this.height=s,this.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.radius-.5*s}},s.prototype._drawCircle=function(t){this._resizeCircle(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.borderWidth,s=this.borderWidthSelected||2*this.borderWidth;t.strokeStyle=this.selected?this.color.highlight.border:this.hover?this.color.hover.border:this.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.circle(this.x,this.y,this.radius+2*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.color.highlight.background:this.hover?this.color.hover.background:this.color.background,t.circle(this.x,this.y,this.radius),t.fill(),t.stroke(),this._label(t,this.label,this.x,this.y)},s.prototype._resizeEllipse=function(t){if(!this.width){var e=this.getTextSize(t);this.width=1.5*e.width,this.height=2*e.height,this.width1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.ellipse(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.color.highlight.background:this.hover?this.color.hover.background:this.color.background,t.ellipse(this.left,this.top,this.width,this.height),t.fill(),t.stroke(),this._label(t,this.label,this.x,this.y)},s.prototype._drawDot=function(t){this._drawShape(t,"circle")},s.prototype._drawTriangle=function(t){this._drawShape(t,"triangle")},s.prototype._drawTriangleDown=function(t){this._drawShape(t,"triangleDown")},s.prototype._drawSquare=function(t){this._drawShape(t,"square")},s.prototype._drawStar=function(t){this._drawShape(t,"star")},s.prototype._resizeShape=function(){if(!this.width){this.radius=this.baseRadiusValue;var t=2*this.radius;this.width=t,this.height=t,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-t}},s.prototype._drawShape=function(t,e){this._resizeShape(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var i=2.5,s=this.borderWidth,n=this.borderWidthSelected||2*this.borderWidth,o=2;switch(e){case"dot":o=2;break;case"square":o=2;break;case"triangle":o=3;break;case"triangleDown":o=3;break;case"star":o=4}t.strokeStyle=this.selected?this.color.highlight.border:this.hover?this.color.hover.border:this.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?n:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t[e](this.x,this.y,this.radius+o*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?n:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.color.highlight.background:this.hover?this.color.hover.background:this.color.background,t[e](this.x,this.y,this.radius),t.fill(),t.stroke(),this.label&&this._label(t,this.label,this.x,this.y+this.height/2,void 0,"top",!0)},s.prototype._resizeText=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawText=function(t){this._resizeText(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._label(t,this.label,this.x,this.y)},s.prototype._label=function(t,e,i,s,n,o,r){if(e&&this.fontSize*this.networkScale>this.fontDrawThreshold){t.font=(this.selected?"bold ":"")+this.fontSize+"px "+this.fontFace,t.fillStyle=this.fontColor||"black",t.textAlign=n||"center",t.textBaseline=o||"middle";var a=e.split("\n"),h=a.length,d=this.fontSize+4,l=s+(1-h)/2*d;1==r&&(l=s+(1-h)/(2*d));for(var c=0;h>c;c++)t.fillText(a[c],i,l),l+=d}},s.prototype.getTextSize=function(t){if(void 0!==this.label){t.font=(this.selected?"bold ":"")+this.fontSize+"px "+this.fontFace;for(var e=this.label.split("\n"),i=(this.fontSize+4)*e.length,s=0,n=0,o=e.length;o>n;n++)s=Math.max(s,t.measureText(e[n]).width);return{width:s,height:i}}return{width:0,height:0}},s.prototype.inArea=function(){return void 0!==this.width?this.x+this.width*this.networkScaleInv>=this.canvasTopLeft.x&&this.x-this.width*this.networkScaleInv=this.canvasTopLeft.y&&this.y-this.height*this.networkScaleInv=this.canvasTopLeft.x&&this.x=this.canvasTopLeft.y&&this.ys&&(o=s-e-this.padding),on&&(r=n-i-this.padding),ri;i++)if(e.id===r.nodes[i].id){n=r.nodes[i];break}for(n||(n={id:e.id},t.node&&(n.attr=a(n.attr,t.node))),i=o.length-1;i>=0;i--){var h=o[i];h.nodes||(h.nodes=[]),-1==h.nodes.indexOf(n)&&h.nodes.push(n)}e.attr&&(n.attr=a(n.attr,e.attr))}function l(t,e){if(t.edges||(t.edges=[]),t.edges.push(e),t.edge){var i=a({},t.edge);e.attr=a(i,e.attr)}}function c(t,e,i,s,n){var o={from:e,to:i,type:s};return t.edge&&(o.attr=a({},t.edge)),o.attr=a(o.attr||{},n),o}function u(){for(E=D.NULL,C="";" "==k||" "==k||"\n"==k||"\r"==k;)n();do{var t=!1;if("#"==k){for(var e=Y-1;" "==S.charAt(e)||" "==S.charAt(e);)e--;if("\n"==S.charAt(e)||""==S.charAt(e)){for(;""!=k&&"\n"!=k;)n();t=!0}}if("/"==k&&"/"==o()){for(;""!=k&&"\n"!=k;)n();t=!0}if("/"==k&&"*"==o()){for(;""!=k;){if("*"==k&&"/"==o()){n(),n();break}n()}t=!0}for(;" "==k||" "==k||"\n"==k||"\r"==k;)n()}while(t);if(""==k)return void(E=D.DELIMITER);var i=k+o();if(T[i])return E=D.DELIMITER,C=i,n(),void n();if(T[k])return E=D.DELIMITER,C=k,void n();if(r(k)||"-"==k){for(C+=k,n();r(k);)C+=k,n();return"false"==C?C=!1:"true"==C?C=!0:isNaN(Number(C))||(C=Number(C)),void(E=D.IDENTIFIER)}if('"'==k){for(n();""!=k&&('"'!=k||'"'==k&&'"'==o());)C+=k,'"'==k&&n(),n();if('"'!=k)throw b('End of string " expected');return n(),void(E=D.IDENTIFIER)}for(E=D.UNKNOWN;""!=k;)C+=k,n();throw new SyntaxError('Syntax error in part "'+w(C,30)+'"')}function p(){var t={};if(s(),u(),"strict"==C&&(t.strict=!0,u()),("graph"==C||"digraph"==C)&&(t.type=C,u()),E==D.IDENTIFIER&&(t.id=C,u()),"{"!=C)throw b("Angle bracket { expected");if(u(),m(t),"}"!=C)throw b("Angle bracket } expected");if(u(),""!==C)throw b("End of file expected");return u(),delete t.node,delete t.edge,delete t.graph,t}function m(t){for(;""!==C&&"}"!=C;)_(t),";"==C&&u()}function _(t){var e=f(t);if(e)return void v(t,e);var i=g(t);if(!i){if(E!=D.IDENTIFIER)throw b("Identifier expected");var s=C;if(u(),"="==C){if(u(),E!=D.IDENTIFIER)throw b("Identifier expected");t[s]=C,u()}else y(t,s)}}function f(t){var e=null;if("subgraph"==C&&(e={},e.type="subgraph",u(),E==D.IDENTIFIER&&(e.id=C,u())),"{"==C){if(u(),e||(e={}),e.parent=t,e.node=t.node,e.edge=t.edge,e.graph=t.graph,m(e),"}"!=C)throw b("Angle bracket } expected");u(),delete e.node,delete e.edge,delete e.graph,delete e.parent,t.subgraphs||(t.subgraphs=[]),t.subgraphs.push(e)}return e}function g(t){return"node"==C?(u(),t.node=M(),"node"):"edge"==C?(u(),t.edge=M(),"edge"):"graph"==C?(u(),t.graph=M(),"graph"):null}function y(t,e){var i={id:e},s=M();s&&(i.attr=s),d(t,i),v(t,e)}function v(t,e){for(;"->"==C||"--"==C;){var i,s=C;u();var n=f(t);if(n)i=n;else{if(E!=D.IDENTIFIER)throw b("Identifier or subgraph expected");i=C,d(t,{id:i}),u()}var o=M(),r=c(t,e,i,s,o);l(t,r),e=i}}function M(){for(var t=null;"["==C;){for(u(),t={};""!==C&&"]"!=C;){if(E!=D.IDENTIFIER)throw b("Attribute name expected");var e=C;if(u(),"="!=C)throw b("Equal sign = expected");if(u(),E!=D.IDENTIFIER)throw b("Attribute value expected");var i=C;h(t,e,i),u(),","==C&&u()}if("]"!=C)throw b("Bracket ] expected");u()}return t}function b(t){return new SyntaxError(t+', got "'+w(C,30)+'" (char '+Y+")")}function w(t,e){return t.length<=e?t:t.substr(0,27)+"..."}function L(t,e,i){t instanceof Array?t.forEach(function(t){e instanceof Array?e.forEach(function(e){i(t,e)}):i(t,e)}):e instanceof Array?e.forEach(function(e){i(t,e)}):i(t,e)}function x(t){function e(t){var e={from:t.from,to:t.to};return a(e,t.attr),e.style="->"==t.type?"arrow":"line",e}var s=i(t),n={nodes:[],edges:[],options:{}};return s.nodes&&s.nodes.forEach(function(t){var e={id:t.id,label:String(t.label||t.id)};a(e,t.attr),e.image&&(e.shape="image"),n.nodes.push(e)}),s.edges&&s.edges.forEach(function(t){var i,s;i=t.from instanceof Object?t.from.nodes:{id:t.from},s=t.to instanceof Object?t.to.nodes:{id:t.to},t.from instanceof Object&&t.from.edges&&t.from.edges.forEach(function(t){var i=e(t);n.edges.push(i)}),L(i,s,function(i,s){var o=c(n,i.id,s.id,t.type,t.attr),r=e(o);n.edges.push(r)}),t.to instanceof Object&&t.to.edges&&t.to.edges.forEach(function(t){var i=e(t);n.edges.push(i)})}),s.attr&&(n.options=s.attr),n}var D={NULL:0,DELIMITER:1,IDENTIFIER:2,UNKNOWN:3},T={"{":!0,"}":!0,"[":!0,"]":!0,";":!0,"=":!0,",":!0,"->":!0,"--":!0},S="",Y=0,k="",C="",E=D.NULL,O=/[a-zA-Z_0-9.:#]/;e.parseDOT=i,e.DOTToGraph=x},function(t,e,i){var s=i(42);e.fakeGesture=function(t,e){var i=null,n=s.event.getTouchList(e,i),o=s.event.collectEventData(this,i,n,e);return isNaN(o.center.pageX)&&(o.center.pageX=e.pageX),isNaN(o.center.pageY)&&(o.center.pageY=e.pageY),o}},function(){"undefined"!=typeof CanvasRenderingContext2D&&(CanvasRenderingContext2D.prototype.circle=function(t,e,i){this.beginPath(),this.arc(t,e,i,0,2*Math.PI,!1) -},CanvasRenderingContext2D.prototype.square=function(t,e,i){this.beginPath(),this.rect(t-i,e-i,2*i,2*i)},CanvasRenderingContext2D.prototype.triangle=function(t,e,i){this.beginPath();var s=2*i,n=s/2,o=Math.sqrt(3)/6*s,r=Math.sqrt(s*s-n*n);this.moveTo(t,e-(r-o)),this.lineTo(t+n,e+o),this.lineTo(t-n,e+o),this.lineTo(t,e-(r-o)),this.closePath()},CanvasRenderingContext2D.prototype.triangleDown=function(t,e,i){this.beginPath();var s=2*i,n=s/2,o=Math.sqrt(3)/6*s,r=Math.sqrt(s*s-n*n);this.moveTo(t,e+(r-o)),this.lineTo(t+n,e-o),this.lineTo(t-n,e-o),this.lineTo(t,e+(r-o)),this.closePath()},CanvasRenderingContext2D.prototype.star=function(t,e,i){this.beginPath();for(var s=0;10>s;s++){var n=s%2===0?1.3*i:.5*i;this.lineTo(t+n*Math.sin(2*s*Math.PI/10),e-n*Math.cos(2*s*Math.PI/10))}this.closePath()},CanvasRenderingContext2D.prototype.roundRect=function(t,e,i,s,n){var o=Math.PI/180;0>i-2*n&&(n=i/2),0>s-2*n&&(n=s/2),this.beginPath(),this.moveTo(t+n,e),this.lineTo(t+i-n,e),this.arc(t+i-n,e+n,n,270*o,360*o,!1),this.lineTo(t+i,e+s-n),this.arc(t+i-n,e+s-n,n,0,90*o,!1),this.lineTo(t+n,e+s),this.arc(t+n,e+s-n,n,90*o,180*o,!1),this.lineTo(t,e+n),this.arc(t+n,e+n,n,180*o,270*o,!1)},CanvasRenderingContext2D.prototype.ellipse=function(t,e,i,s){var n=.5522848,o=i/2*n,r=s/2*n,a=t+i,h=e+s,d=t+i/2,l=e+s/2;this.beginPath(),this.moveTo(t,l),this.bezierCurveTo(t,l-r,d-o,e,d,e),this.bezierCurveTo(d+o,e,a,l-r,a,l),this.bezierCurveTo(a,l+r,d+o,h,d,h),this.bezierCurveTo(d-o,h,t,l+r,t,l)},CanvasRenderingContext2D.prototype.database=function(t,e,i,s){var n=1/3,o=i,r=s*n,a=.5522848,h=o/2*a,d=r/2*a,l=t+o,c=e+r,u=t+o/2,p=e+r/2,m=e+(s-r/2),_=e+s;this.beginPath(),this.moveTo(l,p),this.bezierCurveTo(l,p+d,u+h,c,u,c),this.bezierCurveTo(u-h,c,t,p+d,t,p),this.bezierCurveTo(t,p-d,u-h,e,u,e),this.bezierCurveTo(u+h,e,l,p-d,l,p),this.lineTo(l,m),this.bezierCurveTo(l,m+d,u+h,_,u,_),this.bezierCurveTo(u-h,_,t,m+d,t,m),this.lineTo(t,p)},CanvasRenderingContext2D.prototype.arrow=function(t,e,i,s){var n=t-s*Math.cos(i),o=e-s*Math.sin(i),r=t-.9*s*Math.cos(i),a=e-.9*s*Math.sin(i),h=n+s/3*Math.cos(i+.5*Math.PI),d=o+s/3*Math.sin(i+.5*Math.PI),l=n+s/3*Math.cos(i-.5*Math.PI),c=o+s/3*Math.sin(i-.5*Math.PI);this.beginPath(),this.moveTo(t,e),this.lineTo(h,d),this.lineTo(r,a),this.lineTo(l,c),this.closePath()},CanvasRenderingContext2D.prototype.dashedLine=function(t,e,i,s,n){n||(n=[10,5]),0==u&&(u=.001);var o=n.length;this.moveTo(t,e);for(var r=i-t,a=s-e,h=a/r,d=Math.sqrt(r*r+a*a),l=0,c=!0;d>=.1;){var u=n[l++%o];u>d&&(u=d);var p=Math.sqrt(u*u/(1+h*h));0>r&&(p=-p),t+=p,e+=h*p,this[c?"lineTo":"moveTo"](t,e),d-=u,c=!c}})},function(t,e,i){t.exports="undefined"!=typeof window&&window.moment||i(53)},function(t,e,i){t.exports="undefined"!=typeof window?window.Hammer||i(54):function(){throw Error("hammer.js is only available in a browser, not in node.js.")}},function(t,e,i){var s=i(52),n=i(46),o=i(47),r=i(48),a=i(49),h=i(50),d=i(51);e._loadMixin=function(t){for(var e in t)t.hasOwnProperty(e)&&(this[e]=t[e])},e._clearMixin=function(t){for(var e in t)t.hasOwnProperty(e)&&(this[e]=void 0)},e._loadPhysicsSystem=function(){this._loadMixin(s),this._loadSelectedForceSolver(),1==this.constants.configurePhysics&&this._loadPhysicsConfiguration()},e._loadClusterSystem=function(){this.clusterSession=0,this.hubThreshold=5,this._loadMixin(n)},e._loadSectorSystem=function(){this.sectors={},this.activeSector=["default"],this.sectors.active={},this.sectors.active["default"]={nodes:{},edges:{},nodeIndices:[],formationScale:1,drawingNode:void 0},this.sectors.frozen={},this.sectors.support={nodes:{},edges:{},nodeIndices:[],formationScale:1,drawingNode:void 0},this.nodeIndices=this.sectors.active["default"].nodeIndices,this._loadMixin(o)},e._loadSelectionSystem=function(){this.selectionObj={nodes:{},edges:{}},this._loadMixin(r)},e._loadManipulationSystem=function(){this.blockConnectingEdgeSelection=!1,this.forceAppendSelection=!1,1==this.constants.dataManipulation.enabled?(void 0===this.manipulationDiv&&(this.manipulationDiv=document.createElement("div"),this.manipulationDiv.className="network-manipulationDiv",this.manipulationDiv.id="network-manipulationDiv",this.manipulationDiv.style.display=1==this.editMode?"block":"none",this.containerElement.insertBefore(this.manipulationDiv,this.frame)),void 0===this.editModeDiv&&(this.editModeDiv=document.createElement("div"),this.editModeDiv.className="network-manipulation-editMode",this.editModeDiv.id="network-manipulation-editMode",this.editModeDiv.style.display=1==this.editMode?"none":"block",this.containerElement.insertBefore(this.editModeDiv,this.frame)),void 0===this.closeDiv&&(this.closeDiv=document.createElement("div"),this.closeDiv.className="network-manipulation-closeDiv",this.closeDiv.id="network-manipulation-closeDiv",this.closeDiv.style.display=this.manipulationDiv.style.display,this.containerElement.insertBefore(this.closeDiv,this.frame)),this._loadMixin(a),this._createManipulatorBar()):void 0!==this.manipulationDiv&&(this._createManipulatorBar(),this.containerElement.removeChild(this.manipulationDiv),this.containerElement.removeChild(this.editModeDiv),this.containerElement.removeChild(this.closeDiv),this.manipulationDiv=void 0,this.editModeDiv=void 0,this.closeDiv=void 0,this._clearMixin(a))},e._loadNavigationControls=function(){this._loadMixin(h),this._cleanNavigation(),1==this.constants.navigation.enabled&&this._loadNavigationElements()},e._loadHierarchySystem=function(){this._loadMixin(d)}},function(t){function e(t){return t?i(t):void 0}function i(t){for(var i in e.prototype)t[i]=e.prototype[i];return t}t.exports=e,e.prototype.on=e.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks[t]=this._callbacks[t]||[]).push(e),this},e.prototype.once=function(t,e){function i(){s.off(t,i),e.apply(this,arguments)}var s=this;return this._callbacks=this._callbacks||{},i.fn=e,this.on(t,i),this},e.prototype.off=e.prototype.removeListener=e.prototype.removeAllListeners=e.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var i=this._callbacks[t];if(!i)return this;if(1==arguments.length)return delete this._callbacks[t],this;for(var s,n=0;ns;++s)i[s].apply(this,e)}return this},e.prototype.listeners=function(t){return this._callbacks=this._callbacks||{},this._callbacks[t]||[]},e.prototype.hasListeners=function(t){return!!this.listeners(t).length}},function(t){function e(t,e,i){return t.addEventListener?t.addEventListener(e,i,!1):void t.attachEvent("on"+e,i)}function i(t){return"keypress"==t.type?String.fromCharCode(t.which):M[t.which]?M[t.which]:b[t.which]?b[t.which]:String.fromCharCode(t.which).toLowerCase()}function s(t){var e=t.target||t.srcElement,i=e.tagName;return(" "+e.className+" ").indexOf(" mousetrap ")>-1?!1:"INPUT"==i||"SELECT"==i||"TEXTAREA"==i||e.contentEditable&&"true"==e.contentEditable}function n(t,e){return t.sort().join(",")===e.sort().join(",")}function o(t){t=t||{};var e,i=!1;for(e in T)t[e]?i=!0:T[e]=0;i||(Y=!1)}function r(t,e,i,s,o){var r,a,h=[];if(!x[t])return[];for("keyup"==i&&c(t)&&(e=[t]),r=0;r95&&112>t||M.hasOwnProperty(t)&&(y[M[t]]=t)}return y}function m(t,e,i){return i||(i=p()[t]?"keydown":"keypress"),"keypress"==i&&e.length&&(i="keydown"),i}function _(t,e,s,n){T[t]=0,n||(n=m(e[0],[]));var r,a=function(){Y=n,++T[t],u()},d=function(t){h(s,t),"keyup"!==n&&(S=i(t)),setTimeout(o,10)};for(r=0;r1)return _(t,d,e,i);for(h="+"===t?["+"]:t.split("+"),o=0;o":".","?":"/","|":"\\"},L={option:"alt",command:"meta","return":"enter",escape:"esc"},x={},D={},T={},S=!1,Y=!1,k=1;20>k;++k)M[111+k]="f"+k;for(k=0;9>=k;++k)M[k+96]=k;e(document,"keypress",l),e(document,"keydown",l),e(document,"keyup",l);var C={bind:function(t,e,i){return g(t instanceof Array?t:[t],e,i),D[t+":"+i]=e,this},unbind:function(t,e){return D[t+":"+e]&&(delete D[t+":"+e],this.bind(t,function(){},e)),this},trigger:function(t,e){return D[t+":"+e](),this},reset:function(){return x={},D={},this}};t.exports=C},function(t,e){e.startWithClustering=function(){this.clusterToFit(this.constants.clustering.initialMaxNodes,!0),this.updateLabels(),this.stabilize&&this._stabilize(),this.start()},e.clusterToFit=function(t,e){for(var i=this.nodeIndices.length,s=50,n=0;i>t&&s>n;)n%3==0?(this.forceAggregateHubs(!0),this.normalizeClusterLevels()):this.increaseClusterLevel(),i=this.nodeIndices.length,n+=1;n>0&&1==e&&this.repositionNodes(),this._updateCalculationNodes()},e.openCluster=function(t){var e=this.moving;if(t.clusterSize>this.constants.clustering.sectorThreshold&&this._nodeInActiveArea(t)&&("default"!=this._sector()||1!=this.nodeIndices.length)){this._addSector(t);for(var i=0;this.nodeIndices.lengthi;)this.decreaseClusterLevel(),i+=1}else this._expandClusterNode(t,!1,!0),this._updateNodeIndexList(),this._updateDynamicEdges(),this._updateCalculationNodes(),this.updateLabels();this.moving!=e&&this.start()},e.updateClustersDefault=function(){1==this.constants.clustering.enabled&&this.updateClusters(0,!1,!1)},e.increaseClusterLevel=function(){this.updateClusters(-1,!1,!0)},e.decreaseClusterLevel=function(){this.updateClusters(1,!1,!0)},e.updateClusters=function(t,e,i,s){var n=this.moving,o=this.nodeIndices.length;this.previousScale>this.scale&&0==t&&this._collapseSector(),this.previousScale>this.scale||-1==t?this._formClusters(i):(this.previousScalethis.scale||-1==t)&&(this._aggregateHubs(i),this._updateNodeIndexList()),(this.previousScale>this.scale||-1==t)&&(this.handleChains(),this._updateNodeIndexList()),this.previousScale=this.scale,this._updateDynamicEdges(),this.updateLabels(),this.nodeIndices.lengththis.constants.clustering.chainThreshold&&this._reduceAmountOfChains(1-this.constants.clustering.chainThreshold/t)},e._aggregateHubs=function(t){this._getHubSize(),this._formClustersByHub(t,!1)},e.forceAggregateHubs=function(t){var e=this.moving,i=this.nodeIndices.length;this._aggregateHubs(!0),this._updateNodeIndexList(),this._updateDynamicEdges(),this.updateLabels(),this.nodeIndices.length!=i&&(this.clusterSession+=1),(0==t||void 0===t)&&this.moving!=e&&this.start()},e._openClustersBySize=function(){for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];1==e.inView()&&(e.width*this.scale>this.constants.clustering.screenSizeThreshold*this.frame.canvas.clientWidth||e.height*this.scale>this.constants.clustering.screenSizeThreshold*this.frame.canvas.clientHeight)&&this.openCluster(e)}},e._openClusters=function(t,e){for(var i=0;i1&&(t.clusterSizei)){var r=o.from,a=o.to;o.to.mass>o.from.mass&&(r=o.to,a=o.from),1==a.dynamicEdgesLength?this._addToCluster(r,a,!1):1==r.dynamicEdgesLength&&this._addToCluster(a,r,!1)}}},e._forceClustersByZoom=function(){for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];if(1==e.dynamicEdgesLength&&0!=e.dynamicEdges.length){var i=e.dynamicEdges[0],s=i.toId==e.id?this.nodes[i.fromId]:this.nodes[i.toId];e.id!=s.id&&(s.mass>e.mass?this._addToCluster(s,e,!0):this._addToCluster(e,s,!0))}}},e._clusterToSmallestNeighbour=function(t){for(var e=-1,i=null,s=0;sn.clusterSessions.length&&(e=n.clusterSessions.length,i=n)}null!=n&&void 0!==this.nodes[n.id]&&this._addToCluster(n,t,!0)},e._formClustersByHub=function(t,e){for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&this._formClusterFromHub(this.nodes[i],t,e)},e._formClusterFromHub=function(t,e,i,s){if(void 0===s&&(s=0),t.dynamicEdgesLength>=this.hubThreshold&&0==i||t.dynamicEdgesLength==this.hubThreshold&&1==i){for(var n,o,r,a=this.constants.clustering.clusterEdgeThreshold/this.scale,h=!1,d=[],l=t.dynamicEdges.length,c=0;l>c;c++)d.push(t.dynamicEdges[c].id);if(0==e)for(h=!1,c=0;l>c;c++){var u=this.edges[d[c]];if(void 0!==u&&u.connected&&u.toId!=u.fromId&&(n=u.to.x-u.from.x,o=u.to.y-u.from.y,r=Math.sqrt(n*n+o*o),a>r)){h=!0;break}}if(!e&&h||e)for(c=0;l>c;c++)if(u=this.edges[d[c]],void 0!==u){var p=this.nodes[u.fromId==t.id?u.toId:u.fromId];p.dynamicEdges.length<=this.hubThreshold+s&&p.id!=t.id&&this._addToCluster(t,p,e)}}},e._addToCluster=function(t,e,i){t.containedNodes[e.id]=e;for(var s=0;s1)for(var s=0;s1&&(e.label="[".concat(String(e.clusterSize),"]"))}for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(e=this.nodes[t],1==e.clusterSize&&(e.label=void 0!==e.originalLabel?e.originalLabel:String(e.id)))},e.normalizeClusterLevels=function(){var t,e=0,i=1e9,s=0;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(s=this.nodes[t].clusterSessions.length,s>e&&(e=s),i>s&&(i=s));if(e-i>this.constants.clustering.clusterLevelDifference){var n=this.nodeIndices.length,o=e-this.constants.clustering.clusterLevelDifference;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodes[t].clusterSessions.lengths&&(s=o.dynamicEdgesLength),t+=o.dynamicEdgesLength,e+=Math.pow(o.dynamicEdgesLength,2),i+=1}t/=i,e/=i;var r=e-Math.pow(t,2),a=Math.sqrt(r);this.hubThreshold=Math.floor(t+2*a),this.hubThreshold>s&&(this.hubThreshold=s)},e._reduceAmountOfChains=function(t){this.hubThreshold=2;var e=Math.floor(this.nodeIndices.length*t);for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&2==this.nodes[i].dynamicEdgesLength&&this.nodes[i].dynamicEdges.length>=2&&e>0&&(this._formClusterFromHub(this.nodes[i],!0,!0,1),e-=1)},e._getChainFraction=function(){var t=0,e=0;for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&(2==this.nodes[i].dynamicEdgesLength&&this.nodes[i].dynamicEdges.length>=2&&(t+=1),e+=1);return t/e}},function(t,e,i){var s=i(1);e._putDataInSector=function(){this.sectors.active[this._sector()].nodes=this.nodes,this.sectors.active[this._sector()].edges=this.edges,this.sectors.active[this._sector()].nodeIndices=this.nodeIndices},e._switchToSector=function(t,e){void 0===e||"active"==e?this._switchToActiveSector(t):this._switchToFrozenSector(t)},e._switchToActiveSector=function(t){this.nodeIndices=this.sectors.active[t].nodeIndices,this.nodes=this.sectors.active[t].nodes,this.edges=this.sectors.active[t].edges},e._switchToSupportSector=function(){this.nodeIndices=this.sectors.support.nodeIndices,this.nodes=this.sectors.support.nodes,this.edges=this.sectors.support.edges},e._switchToFrozenSector=function(t){this.nodeIndices=this.sectors.frozen[t].nodeIndices,this.nodes=this.sectors.frozen[t].nodes,this.edges=this.sectors.frozen[t].edges},e._loadLatestSector=function(){this._switchToSector(this._sector())},e._sector=function(){return this.activeSector[this.activeSector.length-1]},e._previousSector=function(){if(this.activeSector.length>1)return this.activeSector[this.activeSector.length-2];throw new TypeError("there are not enough sectors in the this.activeSector array.")},e._setActiveSector=function(t){this.activeSector.push(t)},e._forgetLastSector=function(){this.activeSector.pop()},e._createNewSector=function(t){this.sectors.active[t]={nodes:{},edges:{},nodeIndices:[],formationScale:this.scale,drawingNode:void 0},this.sectors.active[t].drawingNode=new Node({id:t,color:{background:"#eaefef",border:"495c5e"}},{},{},this.constants),this.sectors.active[t].drawingNode.clusterSize=2},e._deleteActiveSector=function(t){delete this.sectors.active[t]},e._deleteFrozenSector=function(t){delete this.sectors.frozen[t]},e._freezeSector=function(t){this.sectors.frozen[t]=this.sectors.active[t],this._deleteActiveSector(t)},e._activateSector=function(t){this.sectors.active[t]=this.sectors.frozen[t],this._deleteFrozenSector(t)},e._mergeThisWithFrozen=function(t){for(var e in this.nodes)this.nodes.hasOwnProperty(e)&&(this.sectors.frozen[t].nodes[e]=this.nodes[e]);for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.sectors.frozen[t].edges[i]=this.edges[i]);for(var s=0;s1?this[t](s[0],s[1]):this[t](e)}this._loadLatestSector()},e._doInSupportSector=function(t,e){if(void 0===e)this._switchToSupportSector(),this[t]();else{this._switchToSupportSector();var i=Array.prototype.splice.call(arguments,1);i.length>1?this[t](i[0],i[1]):this[t](e)}this._loadLatestSector()},e._doInAllFrozenSectors=function(t,e){if(void 0===e)for(var i in this.sectors.frozen)this.sectors.frozen.hasOwnProperty(i)&&(this._switchToFrozenSector(i),this[t]());else for(var i in this.sectors.frozen)if(this.sectors.frozen.hasOwnProperty(i)){this._switchToFrozenSector(i);var s=Array.prototype.splice.call(arguments,1);s.length>1?this[t](s[0],s[1]):this[t](e)}this._loadLatestSector()},e._doInAllSectors=function(t,e){var i=Array.prototype.splice.call(arguments,1);void 0===e?(this._doInAllActiveSectors(t),this._doInAllFrozenSectors(t)):i.length>1?(this._doInAllActiveSectors(t,i[0],i[1]),this._doInAllFrozenSectors(t,i[0],i[1])):(this._doInAllActiveSectors(t,e),this._doInAllFrozenSectors(t,e))},e._clearNodeIndexList=function(){var t=this._sector();this.sectors.active[t].nodeIndices=[],this.nodeIndices=this.sectors.active[t].nodeIndices},e._drawSectorNodes=function(t,e){var i,s=1e9,n=-1e9,o=1e9,r=-1e9;for(var a in this.sectors[e])if(this.sectors[e].hasOwnProperty(a)&&void 0!==this.sectors[e][a].drawingNode){this._switchToSector(a,e),s=1e9,n=-1e9,o=1e9,r=-1e9;for(var h in this.nodes)this.nodes.hasOwnProperty(h)&&(i=this.nodes[h],i.resize(t),o>i.x-.5*i.width&&(o=i.x-.5*i.width),ri.y-.5*i.height&&(s=i.y-.5*i.height),n0?this.nodes[i[i.length-1]]:null},e._getEdgesOverlappingWith=function(t,e){var i=this.edges;for(var s in i)i.hasOwnProperty(s)&&i[s].isOverlappingWith(t)&&e.push(s)},e._getAllEdgesOverlappingWith=function(t){var e=[];return this._doInAllActiveSectors("_getEdgesOverlappingWith",t,e),e},e._getEdgeAt=function(t){var e=this._pointerToPositionObject(t),i=this._getAllEdgesOverlappingWith(e);return i.length>0?this.edges[i[i.length-1]]:null},e._addToSelection=function(t){t instanceof s?this.selectionObj.nodes[t.id]=t:this.selectionObj.edges[t.id]=t},e._addToHover=function(t){t instanceof s?this.hoverObj.nodes[t.id]=t:this.hoverObj.edges[t.id]=t},e._removeFromSelection=function(t){t instanceof s?delete this.selectionObj.nodes[t.id]:delete this.selectionObj.edges[t.id]},e._unselectAll=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].unselect();for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&this.selectionObj.edges[i].unselect();this.selectionObj={nodes:{},edges:{}},0==t&&this.emit("select",this.getSelection())},e._unselectClusters=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].clusterSize>1&&(this.selectionObj.nodes[e].unselect(),this._removeFromSelection(this.selectionObj.nodes[e]));0==t&&this.emit("select",this.getSelection())},e._getSelectedNodeCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedNode=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return this.selectionObj.nodes[t];return null},e._getSelectedEdge=function(){for(var t in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(t))return this.selectionObj.edges[t];return null},e._getSelectedEdgeCount=function(){var t=0;for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedObjectCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&(t+=1);return t},e._selectionIsEmpty=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return!1;for(var e in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(e))return!1;return!0},e._clusterInSelection=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t)&&this.selectionObj.nodes[t].clusterSize>1)return!0;return!1},e._selectConnectedEdges=function(t){for(var e=0;ee;e++){s=t[e];var n=this.nodes[s];if(!n)throw new RangeError('Node with id "'+s+'" not found');this._selectObject(n,!0,!0)}console.log("setSelection is deprecated. Please use selectNodes instead."),this.redraw()},e.selectNodes=function(t,e){var i,s,n;if(!t||void 0==t.length)throw"Selection must be an array with ids";for(this._unselectAll(!0),i=0,s=t.length;s>i;i++){n=t[i];var o=this.nodes[n];if(!o)throw new RangeError('Node with id "'+n+'" not found');this._selectObject(o,!0,!0,e)}this.redraw()},e.selectEdges=function(t){var e,i,s;if(!t||void 0==t.length)throw"Selection must be an array with ids";for(this._unselectAll(!0),e=0,i=t.length;i>e;e++){s=t[e];var n=this.edges[s];if(!n)throw new RangeError('Edge with id "'+s+'" not found');this._selectObject(n,!0,!0,highlightEdges)}this.redraw()},e._updateSelection=function(){for(var t in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(t)&&(this.nodes.hasOwnProperty(t)||delete this.selectionObj.nodes[t]);for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(this.edges.hasOwnProperty(e)||delete this.selectionObj.edges[e])}},function(t,e,i){var s=i(1),n=i(36),o=i(33);e._clearManipulatorBar=function(){for(;this.manipulationDiv.hasChildNodes();)this.manipulationDiv.removeChild(this.manipulationDiv.firstChild)},e._restoreOverloadedFunctions=function(){for(var t in this.cachedFunctions)this.cachedFunctions.hasOwnProperty(t)&&(this[t]=this.cachedFunctions[t])},e._toggleEditMode=function(){this.editMode=!this.editMode;var t=document.getElementById("network-manipulationDiv"),e=document.getElementById("network-manipulation-closeDiv"),i=document.getElementById("network-manipulation-editMode");1==this.editMode?(t.style.display="block",e.style.display="block",i.style.display="none",e.onclick=this._toggleEditMode.bind(this)):(t.style.display="none",e.style.display="none",i.style.display="block",e.onclick=null),this._createManipulatorBar()},e._createManipulatorBar=function(){if(this.boundFunction&&this.off("select",this.boundFunction),void 0!==this.edgeBeingEdited&&(this.edgeBeingEdited._disableControlNodes(),this.edgeBeingEdited=void 0,this.selectedControlNode=null,this.controlNodesActive=!1),this._restoreOverloadedFunctions(),this.freezeSimulation=!1,this.blockConnectingEdgeSelection=!1,this.forceAppendSelection=!1,1==this.editMode){for(;this.manipulationDiv.hasChildNodes();)this.manipulationDiv.removeChild(this.manipulationDiv.firstChild);this.manipulationDiv.innerHTML=""+this.constants.labels.add+"
"+this.constants.labels.link+"",1==this._getSelectedNodeCount()&&this.triggerFunctions.edit?this.manipulationDiv.innerHTML+="
"+this.constants.labels.editNode+"":1==this._getSelectedEdgeCount()&&0==this._getSelectedNodeCount()&&(this.manipulationDiv.innerHTML+="
"+this.constants.labels.editEdge+""),0==this._selectionIsEmpty()&&(this.manipulationDiv.innerHTML+="
"+this.constants.labels.del+"");var t=document.getElementById("network-manipulate-addNode");t.onclick=this._createAddNodeToolbar.bind(this);var e=document.getElementById("network-manipulate-connectNode");if(e.onclick=this._createAddEdgeToolbar.bind(this),1==this._getSelectedNodeCount()&&this.triggerFunctions.edit){var i=document.getElementById("network-manipulate-editNode");i.onclick=this._editNode.bind(this)}else if(1==this._getSelectedEdgeCount()&&0==this._getSelectedNodeCount()){var i=document.getElementById("network-manipulate-editEdge");i.onclick=this._createEditEdgeToolbar.bind(this)}if(0==this._selectionIsEmpty()){var s=document.getElementById("network-manipulate-delete");s.onclick=this._deleteSelected.bind(this)}var n=document.getElementById("network-manipulation-closeDiv");n.onclick=this._toggleEditMode.bind(this),this.boundFunction=this._createManipulatorBar.bind(this),this.on("select",this.boundFunction)}else{this.editModeDiv.innerHTML=""+this.constants.labels.edit+"";var o=document.getElementById("network-manipulate-editModeButton");o.onclick=this._toggleEditMode.bind(this)}},e._createAddNodeToolbar=function(){this._clearManipulatorBar(),this.boundFunction&&this.off("select",this.boundFunction),this.manipulationDiv.innerHTML=""+this.constants.labels.back+"
"+this.constants.labels.addDescription+"";var t=document.getElementById("network-manipulate-back");t.onclick=this._createManipulatorBar.bind(this),this.boundFunction=this._addNode.bind(this),this.on("select",this.boundFunction)},e._createAddEdgeToolbar=function(){this._clearManipulatorBar(),this._unselectAll(!0),this.freezeSimulation=!0,this.boundFunction&&this.off("select",this.boundFunction),this._unselectAll(),this.forceAppendSelection=!1,this.blockConnectingEdgeSelection=!0,this.manipulationDiv.innerHTML=""+this.constants.labels.back+"
"+this.constants.labels.linkDescription+"";var t=document.getElementById("network-manipulate-back");t.onclick=this._createManipulatorBar.bind(this),this.boundFunction=this._handleConnect.bind(this),this.on("select",this.boundFunction),this.cachedFunctions._handleTouch=this._handleTouch,this.cachedFunctions._handleOnRelease=this._handleOnRelease,this._handleTouch=this._handleConnect,this._handleOnRelease=this._finishConnect,this._redraw()},e._createEditEdgeToolbar=function(){this._clearManipulatorBar(),this.controlNodesActive=!0,this.boundFunction&&this.off("select",this.boundFunction),this.edgeBeingEdited=this._getSelectedEdge(),this.edgeBeingEdited._enableControlNodes(),this.manipulationDiv.innerHTML=""+this.constants.labels.back+"
"+this.constants.labels.editEdgeDescription+"";var t=document.getElementById("network-manipulate-back");t.onclick=this._createManipulatorBar.bind(this),this.cachedFunctions._handleTouch=this._handleTouch,this.cachedFunctions._handleOnRelease=this._handleOnRelease,this.cachedFunctions._handleTap=this._handleTap,this.cachedFunctions._handleDragStart=this._handleDragStart,this.cachedFunctions._handleOnDrag=this._handleOnDrag,this._handleTouch=this._selectControlNode,this._handleTap=function(){},this._handleOnDrag=this._controlNodeDrag,this._handleDragStart=function(){},this._handleOnRelease=this._releaseControlNode,this._redraw()},e._selectControlNode=function(t){this.edgeBeingEdited.controlNodes.from.unselect(),this.edgeBeingEdited.controlNodes.to.unselect(),this.selectedControlNode=this.edgeBeingEdited._getSelectedControlNode(this._XconvertDOMtoCanvas(t.x),this._YconvertDOMtoCanvas(t.y)),null!==this.selectedControlNode&&(this.selectedControlNode.select(),this.freezeSimulation=!0),this._redraw()},e._controlNodeDrag=function(t){var e=this._getPointer(t.gesture.center);null!==this.selectedControlNode&&void 0!==this.selectedControlNode&&(this.selectedControlNode.x=this._XconvertDOMtoCanvas(e.x),this.selectedControlNode.y=this._YconvertDOMtoCanvas(e.y)),this._redraw()},e._releaseControlNode=function(t){var e=this._getNodeAt(t);null!=e?(1==this.edgeBeingEdited.controlNodes.from.selected&&(this._editEdge(e.id,this.edgeBeingEdited.to.id),this.edgeBeingEdited.controlNodes.from.unselect()),1==this.edgeBeingEdited.controlNodes.to.selected&&(this._editEdge(this.edgeBeingEdited.from.id,e.id),this.edgeBeingEdited.controlNodes.to.unselect())):this.edgeBeingEdited._restoreControlNodes(),this.freezeSimulation=!1,this._redraw()},e._handleConnect=function(t){if(0==this._getSelectedNodeCount()){var e=this._getNodeAt(t);null!=e&&(e.clusterSize>1?alert("Cannot create edges to a cluster."):(this._selectObject(e,!1),this.sectors.support.nodes.targetNode=new n({id:"targetNode"},{},{},this.constants),this.sectors.support.nodes.targetNode.x=e.x,this.sectors.support.nodes.targetNode.y=e.y,this.sectors.support.nodes.targetViaNode=new n({id:"targetViaNode"},{},{},this.constants),this.sectors.support.nodes.targetViaNode.x=e.x,this.sectors.support.nodes.targetViaNode.y=e.y,this.sectors.support.nodes.targetViaNode.parentEdgeId="connectionEdge",this.edges.connectionEdge=new o({id:"connectionEdge",from:e.id,to:this.sectors.support.nodes.targetNode.id},this,this.constants),this.edges.connectionEdge.from=e,this.edges.connectionEdge.connected=!0,this.edges.connectionEdge.smooth=!0,this.edges.connectionEdge.selected=!0,this.edges.connectionEdge.to=this.sectors.support.nodes.targetNode,this.edges.connectionEdge.via=this.sectors.support.nodes.targetViaNode,this.cachedFunctions._handleOnDrag=this._handleOnDrag,this._handleOnDrag=function(t){var e=this._getPointer(t.gesture.center);this.sectors.support.nodes.targetNode.x=this._XconvertDOMtoCanvas(e.x),this.sectors.support.nodes.targetNode.y=this._YconvertDOMtoCanvas(e.y),this.sectors.support.nodes.targetViaNode.x=.5*(this._XconvertDOMtoCanvas(e.x)+this.edges.connectionEdge.from.x),this.sectors.support.nodes.targetViaNode.y=this._YconvertDOMtoCanvas(e.y)},this.moving=!0,this.start()))}},e._finishConnect=function(t){if(1==this._getSelectedNodeCount()){this._handleOnDrag=this.cachedFunctions._handleOnDrag,delete this.cachedFunctions._handleOnDrag;var e=this.edges.connectionEdge.fromId;delete this.edges.connectionEdge,delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode;var i=this._getNodeAt(t);null!=i&&(i.clusterSize>1?alert("Cannot create edges to a cluster."):(this._createEdge(e,i.id),this._createManipulatorBar())),this._unselectAll()}},e._addNode=function(){if(this._selectionIsEmpty()&&1==this.editMode){var t=this._pointerToPositionObject(this.pointerPosition),e={id:s.randomUUID(),x:t.left,y:t.top,label:"new",allowedToMoveX:!0,allowedToMoveY:!0};if(this.triggerFunctions.add)if(2==this.triggerFunctions.add.length){var i=this;this.triggerFunctions.add(e,function(t){i.nodesData.add(t),i._createManipulatorBar(),i.moving=!0,i.start()})}else alert(this.constants.labels.addError),this._createManipulatorBar(),this.moving=!0,this.start();else this.nodesData.add(e),this._createManipulatorBar(),this.moving=!0,this.start()}},e._createEdge=function(t,e){if(1==this.editMode){var i={from:t,to:e};if(this.triggerFunctions.connect)if(2==this.triggerFunctions.connect.length){var s=this;this.triggerFunctions.connect(i,function(t){s.edgesData.add(t),s.moving=!0,s.start()})}else alert(this.constants.labels.linkError),this.moving=!0,this.start();else this.edgesData.add(i),this.moving=!0,this.start()}},e._editEdge=function(t,e){if(1==this.editMode){var i={id:this.edgeBeingEdited.id,from:t,to:e};if(this.triggerFunctions.editEdge)if(2==this.triggerFunctions.editEdge.length){var s=this;this.triggerFunctions.editEdge(i,function(t){s.edgesData.update(t),s.moving=!0,s.start()})}else alert(this.constants.labels.linkError),this.moving=!0,this.start();else this.edgesData.update(i),this.moving=!0,this.start()}},e._editNode=function(){if(this.triggerFunctions.edit&&1==this.editMode){var t=this._getSelectedNode(),e={id:t.id,label:t.label,group:t.group,shape:t.shape,color:{background:t.color.background,border:t.color.border,highlight:{background:t.color.highlight.background,border:t.color.highlight.border}}};if(2==this.triggerFunctions.edit.length){var i=this;this.triggerFunctions.edit(e,function(t){i.nodesData.update(t),i._createManipulatorBar(),i.moving=!0,i.start()})}else alert(this.constants.labels.editError)}else alert(this.constants.labels.editBoundError)},e._deleteSelected=function(){if(!this._selectionIsEmpty()&&1==this.editMode)if(this._clusterInSelection())alert(this.constants.labels.deleteClusterError);else{var t=this.getSelectedNodes(),e=this.getSelectedEdges();if(this.triggerFunctions.del){var i=this,s={nodes:t,edges:e};(this.triggerFunctions.del.length=2)?this.triggerFunctions.del(s,function(t){i.edgesData.remove(t.edges),i.nodesData.remove(t.nodes),i._unselectAll(),i.moving=!0,i.start()}):alert(this.constants.labels.deleteError)}else this.edgesData.remove(e),this.nodesData.remove(t),this._unselectAll(),this.moving=!0,this.start()}}},function(t,e,i){var s=i(1);e._cleanNavigation=function(){var t=document.getElementById("network-navigation_wrapper");null!=t&&this.containerElement.removeChild(t),document.onmouseup=null},e._loadNavigationElements=function(){this._cleanNavigation(),this.navigationDivs={};var t=["up","down","left","right","zoomIn","zoomOut","zoomExtends"],e=["_moveUp","_moveDown","_moveLeft","_moveRight","_zoomIn","_zoomOut","zoomExtent"];this.navigationDivs.wrapper=document.createElement("div"),this.navigationDivs.wrapper.id="network-navigation_wrapper",this.navigationDivs.wrapper.style.position="absolute",this.navigationDivs.wrapper.style.width=this.frame.canvas.clientWidth+"px",this.navigationDivs.wrapper.style.height=this.frame.canvas.clientHeight+"px",this.containerElement.insertBefore(this.navigationDivs.wrapper,this.frame);for(var i=0;i0){"RL"==this.constants.hierarchicalLayout.direction||"DU"==this.constants.hierarchicalLayout.direction?this.constants.hierarchicalLayout.levelSeparation*=-1:this.constants.hierarchicalLayout.levelSeparation=Math.abs(this.constants.hierarchicalLayout.levelSeparation),"RL"==this.constants.hierarchicalLayout.direction||"LR"==this.constants.hierarchicalLayout.direction?1==this.constants.smoothCurves.enabled&&(this.constants.smoothCurves.type="vertical"):1==this.constants.smoothCurves.enabled&&(this.constants.smoothCurves.type="horizontal");var t,e,i=0,s=!1,n=!1;for(e in this.nodes)this.nodes.hasOwnProperty(e)&&(t=this.nodes[e],-1!=t.level?s=!0:n=!0,is&&(o.xFixed=!1,o.x=i[o.level].minPos,r=!0):o.yFixed&&o.level>s&&(o.yFixed=!1,o.y=i[o.level].minPos,r=!0),1==r&&(i[o.level].minPos+=i[o.level].nodeSpacing,o.edges.length>1&&this._placeBranchNodes(o.edges,o.id,i,o.level))}},e._setLevel=function(t,e,i){for(var s=0;st)&&(n.level=t,e.length>1&&this._setLevel(t+1,n.edges,n.id))}},e._restoreNodes=function(){for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.nodes[t].xFixed=!1,this.nodes[t].yFixed=!1)}},function(t,e,i){function s(){this.constants.smoothCurves.enabled=!this.constants.smoothCurves.enabled;var t=document.getElementById("graph_toggleSmooth");t.style.background=1==this.constants.smoothCurves.enabled?"#A4FF56":"#FF8532",this._configureSmoothCurves(!1)}function n(){for(var t in this.calculationNodes)this.calculationNodes.hasOwnProperty(t)&&(this.calculationNodes[t].vx=0,this.calculationNodes[t].vy=0,this.calculationNodes[t].fx=0,this.calculationNodes[t].fy=0);1==this.constants.hierarchicalLayout.enabled?(this._setupHierarchicalLayout(),a.call(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),a.call(this,"graph_H_cg",1,"physics_centralGravity"),a.call(this,"graph_H_sc",1,"physics_springConstant"),a.call(this,"graph_H_sl",1,"physics_springLength"),a.call(this,"graph_H_damp",1,"physics_damping")):this.repositionNodes(),this.moving=!0,this.start()}function o(){var t="No options are required, default values used.",e=[],i=document.getElementById("graph_physicsMethod1"),s=document.getElementById("graph_physicsMethod2");if(1==i.checked){if(this.constants.physics.barnesHut.gravitationalConstant!=this.backupConstants.physics.barnesHut.gravitationalConstant&&e.push("gravitationalConstant: "+this.constants.physics.barnesHut.gravitationalConstant),this.constants.physics.centralGravity!=this.backupConstants.physics.barnesHut.centralGravity&&e.push("centralGravity: "+this.constants.physics.centralGravity),this.constants.physics.springLength!=this.backupConstants.physics.barnesHut.springLength&&e.push("springLength: "+this.constants.physics.springLength),this.constants.physics.springConstant!=this.backupConstants.physics.barnesHut.springConstant&&e.push("springConstant: "+this.constants.physics.springConstant),this.constants.physics.damping!=this.backupConstants.physics.barnesHut.damping&&e.push("damping: "+this.constants.physics.damping),0!=e.length){t="var options = {",t+="physics: {barnesHut: {";for(var n=0;nthis.constants.clustering.clusterThreshold&&1==this.constants.clustering.enabled&&this.clusterToFit(this.constants.clustering.reduceToNodes,!1),this._calculateForces())},e._calculateForces=function(){this._calculateGravitationalForces(),this._calculateNodeForces(),this.constants.physics.springConstant>0&&(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic?this._calculateSpringForcesWithSupport():1==this.constants.physics.hierarchicalRepulsion.enabled?this._calculateHierarchicalSpringForces():this._calculateSpringForces())},e._updateCalculationNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this.calculationNodes={},this.calculationNodeIndices=[];for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.calculationNodes[t]=this.nodes[t]);var e=this.sectors.support.nodes;for(var i in e)e.hasOwnProperty(i)&&(this.edges.hasOwnProperty(e[i].parentEdgeId)?this.calculationNodes[i]=e[i]:e[i]._setForce(0,0));for(var s in this.calculationNodes)this.calculationNodes.hasOwnProperty(s)&&this.calculationNodeIndices.push(s)}else this.calculationNodes=this.nodes,this.calculationNodeIndices=this.nodeIndices},e._calculateGravitationalForces=function(){var t,e,i,s,n,o=this.calculationNodes,r=this.constants.physics.centralGravity,a=0;for(n=0;nSimulation Mode:Barnes HutRepulsionHierarchical
Options:
',this.containerElement.parentElement.insertBefore(this.physicsConfiguration,this.containerElement),this.optionsDiv=document.createElement("div"),this.optionsDiv.style.fontSize="14px",this.optionsDiv.style.fontFamily="verdana",this.containerElement.parentElement.insertBefore(this.optionsDiv,this.containerElement);var e;e=document.getElementById("graph_BH_gc"),e.onchange=a.bind(this,"graph_BH_gc",-1,"physics_barnesHut_gravitationalConstant"),e=document.getElementById("graph_BH_cg"),e.onchange=a.bind(this,"graph_BH_cg",1,"physics_centralGravity"),e=document.getElementById("graph_BH_sc"),e.onchange=a.bind(this,"graph_BH_sc",1,"physics_springConstant"),e=document.getElementById("graph_BH_sl"),e.onchange=a.bind(this,"graph_BH_sl",1,"physics_springLength"),e=document.getElementById("graph_BH_damp"),e.onchange=a.bind(this,"graph_BH_damp",1,"physics_damping"),e=document.getElementById("graph_R_nd"),e.onchange=a.bind(this,"graph_R_nd",1,"physics_repulsion_nodeDistance"),e=document.getElementById("graph_R_cg"),e.onchange=a.bind(this,"graph_R_cg",1,"physics_centralGravity"),e=document.getElementById("graph_R_sc"),e.onchange=a.bind(this,"graph_R_sc",1,"physics_springConstant"),e=document.getElementById("graph_R_sl"),e.onchange=a.bind(this,"graph_R_sl",1,"physics_springLength"),e=document.getElementById("graph_R_damp"),e.onchange=a.bind(this,"graph_R_damp",1,"physics_damping"),e=document.getElementById("graph_H_nd"),e.onchange=a.bind(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),e=document.getElementById("graph_H_cg"),e.onchange=a.bind(this,"graph_H_cg",1,"physics_centralGravity"),e=document.getElementById("graph_H_sc"),e.onchange=a.bind(this,"graph_H_sc",1,"physics_springConstant"),e=document.getElementById("graph_H_sl"),e.onchange=a.bind(this,"graph_H_sl",1,"physics_springLength"),e=document.getElementById("graph_H_damp"),e.onchange=a.bind(this,"graph_H_damp",1,"physics_damping"),e=document.getElementById("graph_H_direction"),e.onchange=a.bind(this,"graph_H_direction",t,"hierarchicalLayout_direction"),e=document.getElementById("graph_H_levsep"),e.onchange=a.bind(this,"graph_H_levsep",1,"hierarchicalLayout_levelSeparation"),e=document.getElementById("graph_H_nspac"),e.onchange=a.bind(this,"graph_H_nspac",1,"hierarchicalLayout_nodeSpacing");var i=document.getElementById("graph_physicsMethod1"),d=document.getElementById("graph_physicsMethod2"),l=document.getElementById("graph_physicsMethod3");d.checked=!0,this.constants.physics.barnesHut.enabled&&(i.checked=!0),this.constants.hierarchicalLayout.enabled&&(l.checked=!0);var c=document.getElementById("graph_toggleSmooth"),u=document.getElementById("graph_repositionNodes"),p=document.getElementById("graph_generateOptions");c.onclick=s.bind(this),u.onclick=n.bind(this),p.onclick=o.bind(this),c.style.background=1==this.constants.smoothCurves&&0==this.constants.dynamicSmoothCurves?"#A4FF56":"#FF8532",r.apply(this),i.onchange=r.bind(this),d.onchange=r.bind(this),l.onchange=r.bind(this)}},e._overWriteGraphConstants=function(t,e){var i=t.split("_");1==i.length?this.constants[i[0]]=e:2==i.length?this.constants[i[0]][i[1]]=e:3==i.length&&(this.constants[i[0]][i[1]][i[2]]=e)}},function(t,e,i){var s;(function(t,n){(function(o){function r(t,e,i){switch(arguments.length){case 2:return null!=t?t:e;case 3:return null!=t?t:null!=e?e:i;default:throw new Error("Implement me")}}function a(){return{empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1}}function h(t,e){function i(){ge.suppressDeprecationWarnings===!1&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+t)}var s=!0;return m(function(){return s&&(i(),s=!1),e.apply(this,arguments)},e)}function d(t,e){return function(i){return g(t.call(this,i),e)}}function l(t,e){return function(i){return this.lang().ordinal(t.call(this,i),e)}}function c(){}function u(t){C(t),m(this,t)}function p(t){var e=L(t),i=e.year||0,s=e.quarter||0,n=e.month||0,o=e.week||0,r=e.day||0,a=e.hour||0,h=e.minute||0,d=e.second||0,l=e.millisecond||0;this._milliseconds=+l+1e3*d+6e4*h+36e5*a,this._days=+r+7*o,this._months=+n+3*s+12*i,this._data={},this._bubble()}function m(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i]);return e.hasOwnProperty("toString")&&(t.toString=e.toString),e.hasOwnProperty("valueOf")&&(t.valueOf=e.valueOf),t}function _(t){var e,i={};for(e in t)t.hasOwnProperty(e)&&Ee.hasOwnProperty(e)&&(i[e]=t[e]);return i}function f(t){return 0>t?Math.ceil(t):Math.floor(t)}function g(t,e,i){for(var s=""+Math.abs(t),n=t>=0;s.lengths;s++)(i&&t[s]!==e[s]||!i&&D(t[s])!==D(e[s]))&&r++;return r+o}function w(t){if(t){var e=t.toLowerCase().replace(/(.)s$/,"$1");t=ri[t]||ai[e]||e}return t}function L(t){var e,i,s={};for(i in t)t.hasOwnProperty(i)&&(e=w(i),e&&(s[e]=t[i]));return s}function x(t){var e,i;if(0===t.indexOf("week"))e=7,i="day";else{if(0!==t.indexOf("month"))return;e=12,i="month"}ge[t]=function(s,n){var r,a,h=ge.fn._lang[t],d=[];if("number"==typeof s&&(n=s,s=o),a=function(t){var e=ge().utc().set(i,t);return h.call(ge.fn._lang,e,s||"")},null!=n)return a(n);for(r=0;e>r;r++)d.push(a(r));return d}}function D(t){var e=+t,i=0;return 0!==e&&isFinite(e)&&(i=e>=0?Math.floor(e):Math.ceil(e)),i}function T(t,e){return new Date(Date.UTC(t,e+1,0)).getUTCDate()}function S(t,e,i){return re(ge([t,11,31+e-i]),e,i).week}function Y(t){return k(t)?366:365}function k(t){return t%4===0&&t%100!==0||t%400===0}function C(t){var e;t._a&&-2===t._pf.overflow&&(e=t._a[xe]<0||t._a[xe]>11?xe:t._a[De]<1||t._a[De]>T(t._a[Le],t._a[xe])?De:t._a[Te]<0||t._a[Te]>23?Te:t._a[Se]<0||t._a[Se]>59?Se:t._a[Ye]<0||t._a[Ye]>59?Ye:t._a[ke]<0||t._a[ke]>999?ke:-1,t._pf._overflowDayOfYear&&(Le>e||e>De)&&(e=De),t._pf.overflow=e)}function E(t){return null==t._isValid&&(t._isValid=!isNaN(t._d.getTime())&&t._pf.overflow<0&&!t._pf.empty&&!t._pf.invalidMonth&&!t._pf.nullInput&&!t._pf.invalidFormat&&!t._pf.userInvalidated,t._strict&&(t._isValid=t._isValid&&0===t._pf.charsLeftOver&&0===t._pf.unusedTokens.length)),t._isValid}function O(t){return t?t.toLowerCase().replace("_","-"):t}function N(t,e){return e._isUTC?ge(t).zone(e._offset||0):ge(t).local()}function z(t,e){return e.abbr=t,Ce[t]||(Ce[t]=new c),Ce[t].set(e),Ce[t]}function A(t){delete Ce[t]}function I(t){var e,s,n,o,r=0,a=function(t){if(!Ce[t]&&Oe)try{i(58)("./"+t)}catch(e){}return Ce[t]};if(!t)return ge.fn._lang;if(!v(t)){if(s=a(t))return s;t=[t]}for(;r0;){if(s=a(o.slice(0,e).join("-")))return s;if(n&&n.length>=e&&b(o,n,!0)>=e-1)break;e--}r++}return ge.fn._lang}function P(t){return t.match(/\[[\s\S]/)?t.replace(/^\[|\]$/g,""):t.replace(/\\/g,"")}function F(t){var e,i,s=t.match(Ie);for(e=0,i=s.length;i>e;e++)s[e]=ui[s[e]]?ui[s[e]]:P(s[e]);return function(n){var o="";for(e=0;i>e;e++)o+=s[e]instanceof Function?s[e].call(n,t):s[e];return o}}function j(t,e){return t.isValid()?(e=H(e,t.lang()),hi[e]||(hi[e]=F(e)),hi[e](t)):t.lang().invalidDate()}function H(t,e){function i(t){return e.longDateFormat(t)||t}var s=5;for(Pe.lastIndex=0;s>=0&&Pe.test(t);)t=t.replace(Pe,i),Pe.lastIndex=0,s-=1;return t}function R(t,e){var i,s=e._strict;switch(t){case"Q":return qe;case"DDDD":return Ze;case"YYYY":case"GGGG":case"gggg":return s?Ke:He;case"Y":case"G":case"g":return Qe;case"YYYYYY":case"YYYYY":case"GGGGG":case"ggggg":return s?$e:Re;case"S":if(s)return qe;case"SS":if(s)return Je;case"SSS":if(s)return Ze;case"DDD":return je;case"MMM":case"MMMM":case"dd":case"ddd":case"dddd":return Be;case"a":case"A":return I(e._l)._meridiemParse;case"X":return Ue;case"Z":case"ZZ":return Ge;case"T":return Ve;case"SSSS":return We;case"MM":case"DD":case"YY":case"GG":case"gg":case"HH":case"hh":case"mm":case"ss":case"ww":case"WW":return s?Je:Fe;case"M":case"D":case"d":case"H":case"h":case"m":case"s":case"w":case"W":case"e":case"E":return Fe;case"Do":return Xe;default:return i=new RegExp(Z(J(t.replace("\\","")),"i"))}}function W(t){t=t||"";var e=t.match(Ge)||[],i=e[e.length-1]||[],s=(i+"").match(ni)||["-",0,0],n=+(60*s[1])+D(s[2]);return"+"===s[0]?-n:n}function B(t,e,i){var s,n=i._a;switch(t){case"Q":null!=e&&(n[xe]=3*(D(e)-1));break;case"M":case"MM":null!=e&&(n[xe]=D(e)-1);break;case"MMM":case"MMMM":s=I(i._l).monthsParse(e),null!=s?n[xe]=s:i._pf.invalidMonth=e;break;case"D":case"DD":null!=e&&(n[De]=D(e));break;case"Do":null!=e&&(n[De]=D(parseInt(e,10)));break;case"DDD":case"DDDD":null!=e&&(i._dayOfYear=D(e));break;case"YY":n[Le]=ge.parseTwoDigitYear(e);break;case"YYYY":case"YYYYY":case"YYYYYY":n[Le]=D(e);break;case"a":case"A":i._isPm=I(i._l).isPM(e);break;case"H":case"HH":case"h":case"hh":n[Te]=D(e);break;case"m":case"mm":n[Se]=D(e);break;case"s":case"ss":n[Ye]=D(e);break;case"S":case"SS":case"SSS":case"SSSS":n[ke]=D(1e3*("0."+e));break;case"X":i._d=new Date(1e3*parseFloat(e));break;case"Z":case"ZZ":i._useUTC=!0,i._tzm=W(e);break;case"dd":case"ddd":case"dddd":s=I(i._l).weekdaysParse(e),null!=s?(i._w=i._w||{},i._w.d=s):i._pf.invalidWeekday=e;break;case"w":case"ww":case"W":case"WW":case"d":case"e":case"E":t=t.substr(0,1);case"gggg":case"GGGG":case"GGGGG":t=t.substr(0,2),e&&(i._w=i._w||{},i._w[t]=D(e));break;case"gg":case"GG":i._w=i._w||{},i._w[t]=ge.parseTwoDigitYear(e)}}function G(t){var e,i,s,n,o,a,h,d;e=t._w,null!=e.GG||null!=e.W||null!=e.E?(o=1,a=4,i=r(e.GG,t._a[Le],re(ge(),1,4).year),s=r(e.W,1),n=r(e.E,1)):(d=I(t._l),o=d._week.dow,a=d._week.doy,i=r(e.gg,t._a[Le],re(ge(),o,a).year),s=r(e.w,1),null!=e.d?(n=e.d,o>n&&++s):n=null!=e.e?e.e+o:o),h=ae(i,s,n,a,o),t._a[Le]=h.year,t._dayOfYear=h.dayOfYear}function V(t){var e,i,s,n,o=[];if(!t._d){for(s=X(t),t._w&&null==t._a[De]&&null==t._a[xe]&&G(t),t._dayOfYear&&(n=r(t._a[Le],s[Le]),t._dayOfYear>Y(n)&&(t._pf._overflowDayOfYear=!0),i=ie(n,0,t._dayOfYear),t._a[xe]=i.getUTCMonth(),t._a[De]=i.getUTCDate()),e=0;3>e&&null==t._a[e];++e)t._a[e]=o[e]=s[e];for(;7>e;e++)t._a[e]=o[e]=null==t._a[e]?2===e?1:0:t._a[e];t._d=(t._useUTC?ie:ee).apply(null,o),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()+t._tzm)}}function U(t){var e;t._d||(e=L(t._i),t._a=[e.year,e.month,e.day,e.hour,e.minute,e.second,e.millisecond],V(t))}function X(t){var e=new Date;return t._useUTC?[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()]:[e.getFullYear(),e.getMonth(),e.getDate()]}function q(t){if(t._f===ge.ISO_8601)return void $(t);t._a=[],t._pf.empty=!0;var e,i,s,n,o,r=I(t._l),a=""+t._i,h=a.length,d=0;for(s=H(t._f,r).match(Ie)||[],e=0;e0&&t._pf.unusedInput.push(o),a=a.slice(a.indexOf(i)+i.length),d+=i.length),ui[n]?(i?t._pf.empty=!1:t._pf.unusedTokens.push(n),B(n,i,t)):t._strict&&!i&&t._pf.unusedTokens.push(n);t._pf.charsLeftOver=h-d,a.length>0&&t._pf.unusedInput.push(a),t._isPm&&t._a[Te]<12&&(t._a[Te]+=12),t._isPm===!1&&12===t._a[Te]&&(t._a[Te]=0),V(t),C(t)}function J(t){return t.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,i,s,n){return e||i||s||n})}function Z(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function K(t){var e,i,s,n,o;if(0===t._f.length)return t._pf.invalidFormat=!0,void(t._d=new Date(0/0));for(n=0;no)&&(s=o,i=e));m(t,i||e)}function $(t){var e,i,s=t._i,n=ti.exec(s);if(n){for(t._pf.iso=!0,e=0,i=ii.length;i>e;e++)if(ii[e][1].exec(s)){t._f=ii[e][0]+(n[6]||" ");break}for(e=0,i=si.length;i>e;e++)if(si[e][1].exec(s)){t._f+=si[e][0];break}s.match(Ge)&&(t._f+="Z"),q(t)}else t._isValid=!1}function Q(t){$(t),t._isValid===!1&&(delete t._isValid,ge.createFromInputFallback(t))}function te(t){var e=t._i,i=Ne.exec(e);e===o?t._d=new Date:i?t._d=new Date(+i[1]):"string"==typeof e?Q(t):v(e)?(t._a=e.slice(0),V(t)):M(e)?t._d=new Date(+e):"object"==typeof e?U(t):"number"==typeof e?t._d=new Date(e):ge.createFromInputFallback(t)}function ee(t,e,i,s,n,o,r){var a=new Date(t,e,i,s,n,o,r);return 1970>t&&a.setFullYear(t),a}function ie(t){var e=new Date(Date.UTC.apply(null,arguments));return 1970>t&&e.setUTCFullYear(t),e}function se(t,e){if("string"==typeof t)if(isNaN(t)){if(t=e.weekdaysParse(t),"number"!=typeof t)return null}else t=parseInt(t,10);return t}function ne(t,e,i,s,n){return n.relativeTime(e||1,!!i,t,s)}function oe(t,e,i){var s=we(Math.abs(t)/1e3),n=we(s/60),o=we(n/60),r=we(o/24),a=we(r/365),h=s0,h[4]=i,ne.apply({},h)}function re(t,e,i){var s,n=i-e,o=i-t.day();return o>n&&(o-=7),n-7>o&&(o+=7),s=ge(t).add("d",o),{week:Math.ceil(s.dayOfYear()/7),year:s.year()}}function ae(t,e,i,s,n){var o,r,a=ie(t,0,1).getUTCDay();return a=0===a?7:a,i=null!=i?i:n,o=n-a+(a>s?7:0)-(n>a?7:0),r=7*(e-1)+(i-n)+o+1,{year:r>0?t:t-1,dayOfYear:r>0?r:Y(t-1)+r}}function he(t){var e=t._i,i=t._f;return null===e||i===o&&""===e?ge.invalid({nullInput:!0}):("string"==typeof e&&(t._i=e=I().preparse(e)),ge.isMoment(e)?(t=_(e),t._d=new Date(+e._d)):i?v(i)?K(t):q(t):te(t),new u(t))}function de(t,e){var i,s;if(1===e.length&&v(e[0])&&(e=e[0]),!e.length)return ge();for(i=e[0],s=1;s=0?"+":"-";return e+g(Math.abs(t),6)},gg:function(){return g(this.weekYear()%100,2)},gggg:function(){return g(this.weekYear(),4)},ggggg:function(){return g(this.weekYear(),5)},GG:function(){return g(this.isoWeekYear()%100,2)},GGGG:function(){return g(this.isoWeekYear(),4)},GGGGG:function(){return g(this.isoWeekYear(),5)},e:function(){return this.weekday()},E:function(){return this.isoWeekday()},a:function(){return this.lang().meridiem(this.hours(),this.minutes(),!0)},A:function(){return this.lang().meridiem(this.hours(),this.minutes(),!1)},H:function(){return this.hours()},h:function(){return this.hours()%12||12},m:function(){return this.minutes()},s:function(){return this.seconds()},S:function(){return D(this.milliseconds()/100)},SS:function(){return g(D(this.milliseconds()/10),2)},SSS:function(){return g(this.milliseconds(),3)},SSSS:function(){return g(this.milliseconds(),3)},Z:function(){var t=-this.zone(),e="+";return 0>t&&(t=-t,e="-"),e+g(D(t/60),2)+":"+g(D(t)%60,2)},ZZ:function(){var t=-this.zone(),e="+";return 0>t&&(t=-t,e="-"),e+g(D(t/60),2)+g(D(t)%60,2)},z:function(){return this.zoneAbbr()},zz:function(){return this.zoneName()},X:function(){return this.unix()},Q:function(){return this.quarter()}},pi=["months","monthsShort","weekdays","weekdaysShort","weekdaysMin"];li.length;)ve=li.pop(),ui[ve+"o"]=l(ui[ve],ve);for(;ci.length;)ve=ci.pop(),ui[ve+ve]=d(ui[ve],2);for(ui.DDDD=d(ui.DDD,3),m(c.prototype,{set:function(t){var e,i;for(i in t)e=t[i],"function"==typeof e?this[i]=e:this["_"+i]=e},_months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),months:function(t){return this._months[t.month()]},_monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),monthsShort:function(t){return this._monthsShort[t.month()]},monthsParse:function(t){var e,i,s;for(this._monthsParse||(this._monthsParse=[]),e=0;12>e;e++)if(this._monthsParse[e]||(i=ge.utc([2e3,e]),s="^"+this.months(i,"")+"|^"+this.monthsShort(i,""),this._monthsParse[e]=new RegExp(s.replace(".",""),"i")),this._monthsParse[e].test(t))return e},_weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdays:function(t){return this._weekdays[t.day()]},_weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysShort:function(t){return this._weekdaysShort[t.day()]},_weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),weekdaysMin:function(t){return this._weekdaysMin[t.day()]},weekdaysParse:function(t){var e,i,s;for(this._weekdaysParse||(this._weekdaysParse=[]),e=0;7>e;e++)if(this._weekdaysParse[e]||(i=ge([2e3,1]).day(e),s="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[e]=new RegExp(s.replace(".",""),"i")),this._weekdaysParse[e].test(t))return e},_longDateFormat:{LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D YYYY",LLL:"MMMM D YYYY LT",LLLL:"dddd, MMMM D YYYY LT"},longDateFormat:function(t){var e=this._longDateFormat[t];return!e&&this._longDateFormat[t.toUpperCase()]&&(e=this._longDateFormat[t.toUpperCase()].replace(/MMMM|MM|DD|dddd/g,function(t){return t.slice(1)}),this._longDateFormat[t]=e),e},isPM:function(t){return"p"===(t+"").toLowerCase().charAt(0)},_meridiemParse:/[ap]\.?m?\.?/i,meridiem:function(t,e,i){return t>11?i?"pm":"PM":i?"am":"AM"},_calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},calendar:function(t,e){var i=this._calendar[t];return"function"==typeof i?i.apply(e):i},_relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},relativeTime:function(t,e,i,s){var n=this._relativeTime[i];return"function"==typeof n?n(t,e,i,s):n.replace(/%d/i,t)},pastFuture:function(t,e){var i=this._relativeTime[t>0?"future":"past"];return"function"==typeof i?i(e):i.replace(/%s/i,e)},ordinal:function(t){return this._ordinal.replace("%d",t)},_ordinal:"%d",preparse:function(t){return t},postformat:function(t){return t},week:function(t){return re(t,this._week.dow,this._week.doy).week},_week:{dow:0,doy:6},_invalidDate:"Invalid date",invalidDate:function(){return this._invalidDate}}),ge=function(t,e,i,s){var n;return"boolean"==typeof i&&(s=i,i=o),n={},n._isAMomentObject=!0,n._i=t,n._f=e,n._l=i,n._strict=s,n._isUTC=!1,n._pf=a(),he(n)},ge.suppressDeprecationWarnings=!1,ge.createFromInputFallback=h("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.",function(t){t._d=new Date(t._i)}),ge.min=function(){var t=[].slice.call(arguments,0);return de("isBefore",t)},ge.max=function(){var t=[].slice.call(arguments,0);return de("isAfter",t)},ge.utc=function(t,e,i,s){var n;return"boolean"==typeof i&&(s=i,i=o),n={},n._isAMomentObject=!0,n._useUTC=!0,n._isUTC=!0,n._l=i,n._i=t,n._f=e,n._strict=s,n._pf=a(),he(n).utc()},ge.unix=function(t){return ge(1e3*t)},ge.duration=function(t,e){var i,s,n,o=t,r=null;return ge.isDuration(t)?o={ms:t._milliseconds,d:t._days,M:t._months}:"number"==typeof t?(o={},e?o[e]=t:o.milliseconds=t):(r=ze.exec(t))?(i="-"===r[1]?-1:1,o={y:0,d:D(r[De])*i,h:D(r[Te])*i,m:D(r[Se])*i,s:D(r[Ye])*i,ms:D(r[ke])*i}):(r=Ae.exec(t))&&(i="-"===r[1]?-1:1,n=function(t){var e=t&&parseFloat(t.replace(",","."));return(isNaN(e)?0:e)*i},o={y:n(r[2]),M:n(r[3]),d:n(r[4]),h:n(r[5]),m:n(r[6]),s:n(r[7]),w:n(r[8])}),s=new p(o),ge.isDuration(t)&&t.hasOwnProperty("_lang")&&(s._lang=t._lang),s},ge.version=Me,ge.defaultFormat=ei,ge.ISO_8601=function(){},ge.momentProperties=Ee,ge.updateOffset=function(){},ge.relativeTimeThreshold=function(t,e){return di[t]===o?!1:(di[t]=e,!0)},ge.lang=function(t,e){var i;return t?(e?z(O(t),e):null===e?(A(t),t="en"):Ce[t]||I(t),i=ge.duration.fn._lang=ge.fn._lang=I(t),i._abbr):ge.fn._lang._abbr},ge.langData=function(t){return t&&t._lang&&t._lang._abbr&&(t=t._lang._abbr),I(t)},ge.isMoment=function(t){return t instanceof u||null!=t&&t.hasOwnProperty("_isAMomentObject")},ge.isDuration=function(t){return t instanceof p},ve=pi.length-1;ve>=0;--ve)x(pi[ve]);ge.normalizeUnits=function(t){return w(t)},ge.invalid=function(t){var e=ge.utc(0/0);return null!=t?m(e._pf,t):e._pf.userInvalidated=!0,e},ge.parseZone=function(){return ge.apply(null,arguments).parseZone()},ge.parseTwoDigitYear=function(t){return D(t)+(D(t)>68?1900:2e3)},m(ge.fn=u.prototype,{clone:function(){return ge(this)},valueOf:function(){return+this._d+6e4*(this._offset||0)},unix:function(){return Math.floor(+this/1e3) -},toString:function(){return this.clone().lang("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},toDate:function(){return this._offset?new Date(+this):this._d},toISOString:function(){var t=ge(this).utc();return 00:!1},parsingFlags:function(){return m({},this._pf)},invalidAt:function(){return this._pf.overflow},utc:function(){return this.zone(0)},local:function(){return this.zone(0),this._isUTC=!1,this},format:function(t){var e=j(this,t||ge.defaultFormat);return this.lang().postformat(e)},add:function(t,e){var i;return i="string"==typeof t&&"string"==typeof e?ge.duration(isNaN(+e)?+t:+e,isNaN(+e)?e:t):"string"==typeof t?ge.duration(+e,t):ge.duration(t,e),y(this,i,1),this},subtract:function(t,e){var i;return i="string"==typeof t&&"string"==typeof e?ge.duration(isNaN(+e)?+t:+e,isNaN(+e)?e:t):"string"==typeof t?ge.duration(+e,t):ge.duration(t,e),y(this,i,-1),this},diff:function(t,e,i){var s,n,o=N(t,this),r=6e4*(this.zone()-o.zone());return e=w(e),"year"===e||"month"===e?(s=432e5*(this.daysInMonth()+o.daysInMonth()),n=12*(this.year()-o.year())+(this.month()-o.month()),n+=(this-ge(this).startOf("month")-(o-ge(o).startOf("month")))/s,n-=6e4*(this.zone()-ge(this).startOf("month").zone()-(o.zone()-ge(o).startOf("month").zone()))/s,"year"===e&&(n/=12)):(s=this-o,n="second"===e?s/1e3:"minute"===e?s/6e4:"hour"===e?s/36e5:"day"===e?(s-r)/864e5:"week"===e?(s-r)/6048e5:s),i?n:f(n)},from:function(t,e){return ge.duration(this.diff(t)).lang(this.lang()._abbr).humanize(!e)},fromNow:function(t){return this.from(ge(),t)},calendar:function(t){var e=t||ge(),i=N(e,this).startOf("day"),s=this.diff(i,"days",!0),n=-6>s?"sameElse":-1>s?"lastWeek":0>s?"lastDay":1>s?"sameDay":2>s?"nextDay":7>s?"nextWeek":"sameElse";return this.format(this.lang().calendar(n,this))},isLeapYear:function(){return k(this.year())},isDST:function(){return this.zone()+ge(t).startOf(e)},isBefore:function(t,e){return e="undefined"!=typeof e?e:"millisecond",+this.clone().startOf(e)<+ge(t).startOf(e)},isSame:function(t,e){return e=e||"ms",+this.clone().startOf(e)===+N(t,this).startOf(e)},min:h("moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548",function(t){return t=ge.apply(null,arguments),this>t?this:t}),max:h("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(t){return t=ge.apply(null,arguments),t>this?this:t}),zone:function(t,e){var i=this._offset||0;return null==t?this._isUTC?i:this._d.getTimezoneOffset():("string"==typeof t&&(t=W(t)),Math.abs(t)<16&&(t=60*t),this._offset=t,this._isUTC=!0,i!==t&&(!e||this._changeInProgress?y(this,ge.duration(i-t,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,ge.updateOffset(this,!0),this._changeInProgress=null)),this)},zoneAbbr:function(){return this._isUTC?"UTC":""},zoneName:function(){return this._isUTC?"Coordinated Universal Time":""},parseZone:function(){return this._tzm?this.zone(this._tzm):"string"==typeof this._i&&this.zone(this._i),this},hasAlignedHourOffset:function(t){return t=t?ge(t).zone():0,(this.zone()-t)%60===0},daysInMonth:function(){return T(this.year(),this.month())},dayOfYear:function(t){var e=we((ge(this).startOf("day")-ge(this).startOf("year"))/864e5)+1;return null==t?e:this.add("d",t-e)},quarter:function(t){return null==t?Math.ceil((this.month()+1)/3):this.month(3*(t-1)+this.month()%3)},weekYear:function(t){var e=re(this,this.lang()._week.dow,this.lang()._week.doy).year;return null==t?e:this.add("y",t-e)},isoWeekYear:function(t){var e=re(this,1,4).year;return null==t?e:this.add("y",t-e)},week:function(t){var e=this.lang().week(this);return null==t?e:this.add("d",7*(t-e))},isoWeek:function(t){var e=re(this,1,4).week;return null==t?e:this.add("d",7*(t-e))},weekday:function(t){var e=(this.day()+7-this.lang()._week.dow)%7;return null==t?e:this.add("d",t-e)},isoWeekday:function(t){return null==t?this.day()||7:this.day(this.day()%7?t:t-7)},isoWeeksInYear:function(){return S(this.year(),1,4)},weeksInYear:function(){var t=this._lang._week;return S(this.year(),t.dow,t.doy)},get:function(t){return t=w(t),this[t]()},set:function(t,e){return t=w(t),"function"==typeof this[t]&&this[t](e),this},lang:function(t){return t===o?this._lang:(this._lang=I(t),this)}}),ge.fn.millisecond=ge.fn.milliseconds=pe("Milliseconds",!1),ge.fn.second=ge.fn.seconds=pe("Seconds",!1),ge.fn.minute=ge.fn.minutes=pe("Minutes",!1),ge.fn.hour=ge.fn.hours=pe("Hours",!0),ge.fn.date=pe("Date",!0),ge.fn.dates=h("dates accessor is deprecated. Use date instead.",pe("Date",!0)),ge.fn.year=pe("FullYear",!0),ge.fn.years=h("years accessor is deprecated. Use year instead.",pe("FullYear",!0)),ge.fn.days=ge.fn.day,ge.fn.months=ge.fn.month,ge.fn.weeks=ge.fn.week,ge.fn.isoWeeks=ge.fn.isoWeek,ge.fn.quarters=ge.fn.quarter,ge.fn.toJSON=ge.fn.toISOString,m(ge.duration.fn=p.prototype,{_bubble:function(){var t,e,i,s,n=this._milliseconds,o=this._days,r=this._months,a=this._data;a.milliseconds=n%1e3,t=f(n/1e3),a.seconds=t%60,e=f(t/60),a.minutes=e%60,i=f(e/60),a.hours=i%24,o+=f(i/24),a.days=o%30,r+=f(o/30),a.months=r%12,s=f(r/12),a.years=s},weeks:function(){return f(this.days()/7)},valueOf:function(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*D(this._months/12)},humanize:function(t){var e=+this,i=oe(e,!t,this.lang());return t&&(i=this.lang().pastFuture(e,i)),this.lang().postformat(i)},add:function(t,e){var i=ge.duration(t,e);return this._milliseconds+=i._milliseconds,this._days+=i._days,this._months+=i._months,this._bubble(),this},subtract:function(t,e){var i=ge.duration(t,e);return this._milliseconds-=i._milliseconds,this._days-=i._days,this._months-=i._months,this._bubble(),this},get:function(t){return t=w(t),this[t.toLowerCase()+"s"]()},as:function(t){return t=w(t),this["as"+t.charAt(0).toUpperCase()+t.slice(1)+"s"]()},lang:ge.fn.lang,toIsoString:function(){var t=Math.abs(this.years()),e=Math.abs(this.months()),i=Math.abs(this.days()),s=Math.abs(this.hours()),n=Math.abs(this.minutes()),o=Math.abs(this.seconds()+this.milliseconds()/1e3);return this.asSeconds()?(this.asSeconds()<0?"-":"")+"P"+(t?t+"Y":"")+(e?e+"M":"")+(i?i+"D":"")+(s||n||o?"T":"")+(s?s+"H":"")+(n?n+"M":"")+(o?o+"S":""):"P0D"}});for(ve in oi)oi.hasOwnProperty(ve)&&(_e(ve,oi[ve]),me(ve.toLowerCase()));_e("Weeks",6048e5),ge.duration.fn.asMonths=function(){return(+this-31536e6*this.years())/2592e6+12*this.years()},ge.lang("en",{ordinal:function(t){var e=t%10,i=1===D(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+i}}),Oe?n.exports=ge:(s=function(t,e,i){return i.config&&i.config()&&i.config().noGlobal===!0&&(be.moment=ye),ge}.call(e,i,e,n),!(s!==o&&(n.exports=s)),fe(!0))}).call(this)}).call(e,function(){return this}(),i(133)(t))},function(t,e,i){var s;!function(n,o){"use strict";function r(){a.READY||(w.determineEventTypes(),b.each(a.gestures,function(t){x.register(t)}),w.onTouch(a.DOCUMENT,g,x.detect),w.onTouch(a.DOCUMENT,y,x.detect),a.READY=!0)}var a=function D(t,e){return new D.Instance(t,e||{})};a.VERSION="1.1.3",a.defaults={behavior:{userSelect:"none",touchAction:"pan-y",touchCallout:"none",contentZooming:"none",userDrag:"none",tapHighlightColor:"rgba(0,0,0,0)"}},a.DOCUMENT=document,a.HAS_POINTEREVENTS=navigator.pointerEnabled||navigator.msPointerEnabled,a.HAS_TOUCHEVENTS="ontouchstart"in n,a.IS_MOBILE=/mobile|tablet|ip(ad|hone|od)|android|silk/i.test(navigator.userAgent),a.NO_MOUSEEVENTS=a.HAS_TOUCHEVENTS&&a.IS_MOBILE||a.HAS_POINTEREVENTS,a.CALCULATE_INTERVAL=25;var h={},d=a.DIRECTION_DOWN="down",l=a.DIRECTION_LEFT="left",c=a.DIRECTION_UP="up",u=a.DIRECTION_RIGHT="right",p=a.POINTER_MOUSE="mouse",m=a.POINTER_TOUCH="touch",_=a.POINTER_PEN="pen",f=a.EVENT_START="start",g=a.EVENT_MOVE="move",y=a.EVENT_END="end",v=a.EVENT_RELEASE="release",M=a.EVENT_TOUCH="touch";a.READY=!1,a.plugins=a.plugins||{},a.gestures=a.gestures||{};var b=a.utils={extend:function(t,e,i){for(var s in e)!e.hasOwnProperty(s)||t[s]!==o&&i||(t[s]=e[s]);return t},on:function(t,e,i){t.addEventListener(e,i,!1)},off:function(t,e,i){t.removeEventListener(e,i,!1)},each:function(t,e,i){var s,n;if("forEach"in t)t.forEach(e,i);else if(t.length!==o){for(s=0,n=t.length;n>s;s++)if(e.call(i,t[s],s,t)===!1)return}else for(s in t)if(t.hasOwnProperty(s)&&e.call(i,t[s],s,t)===!1)return},inStr:function(t,e){return t.indexOf(e)>-1},inArray:function(t,e){if(t.indexOf){var i=t.indexOf(e);return-1===i?!1:i}for(var s=0,n=t.length;n>s;s++)if(t[s]===e)return s;return!1},toArray:function(t){return Array.prototype.slice.call(t,0)},hasParent:function(t,e){for(;t;){if(t==e)return!0;t=t.parentNode}return!1},getCenter:function(t){var e=[],i=[],s=[],n=[],o=Math.min,r=Math.max;return 1===t.length?{pageX:t[0].pageX,pageY:t[0].pageY,clientX:t[0].clientX,clientY:t[0].clientY}:(b.each(t,function(t){e.push(t.pageX),i.push(t.pageY),s.push(t.clientX),n.push(t.clientY)}),{pageX:(o.apply(Math,e)+r.apply(Math,e))/2,pageY:(o.apply(Math,i)+r.apply(Math,i))/2,clientX:(o.apply(Math,s)+r.apply(Math,s))/2,clientY:(o.apply(Math,n)+r.apply(Math,n))/2})},getVelocity:function(t,e,i){return{x:Math.abs(e/t)||0,y:Math.abs(i/t)||0}},getAngle:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return 180*Math.atan2(s,i)/Math.PI},getDirection:function(t,e){var i=Math.abs(t.clientX-e.clientX),s=Math.abs(t.clientY-e.clientY);return i>=s?t.clientX-e.clientX>0?l:u:t.clientY-e.clientY>0?c:d},getDistance:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return Math.sqrt(i*i+s*s)},getScale:function(t,e){return t.length>=2&&e.length>=2?this.getDistance(e[0],e[1])/this.getDistance(t[0],t[1]):1},getRotation:function(t,e){return t.length>=2&&e.length>=2?this.getAngle(e[1],e[0])-this.getAngle(t[1],t[0]):0},isVertical:function(t){return t==c||t==d},setPrefixedCss:function(t,e,i,s){var n=["","Webkit","Moz","O","ms"];e=b.toCamelCase(e);for(var o=0;o0&&this.started&&(r=g),this.started=!0;var d=this.collectEventData(i,r,n,t);return e!=y&&s.call(x,d),a&&(d.changedLength=h,d.eventType=a,s.call(x,d),d.eventType=r,delete d.changedLength),r==y&&(s.call(x,d),this.started=!1),r},determineEventTypes:function(){var t;return t=a.HAS_POINTEREVENTS?n.PointerEvent?["pointerdown","pointermove","pointerup pointercancel lostpointercapture"]:["MSPointerDown","MSPointerMove","MSPointerUp MSPointerCancel MSLostPointerCapture"]:a.NO_MOUSEEVENTS?["touchstart","touchmove","touchend touchcancel"]:["touchstart mousedown","touchmove mousemove","touchend touchcancel mouseup"],h[f]=t[0],h[g]=t[1],h[y]=t[2],h},getTouchList:function(t,e){if(a.HAS_POINTEREVENTS)return L.getTouchList();if(t.touches){if(e==g)return t.touches;var i=[],s=[].concat(b.toArray(t.touches),b.toArray(t.changedTouches)),n=[];return b.each(s,function(t){b.inArray(i,t.identifier)===!1&&n.push(t),i.push(t.identifier)}),n}return t.identifier=1,[t]},collectEventData:function(t,e,i,s){var n=m;return b.inStr(s.type,"mouse")||L.matchType(p,s)?n=p:L.matchType(_,s)&&(n=_),{center:b.getCenter(i),timeStamp:Date.now(),target:s.target,touches:i,eventType:e,pointerType:n,srcEvent:s,preventDefault:function(){var t=this.srcEvent;t.preventManipulation&&t.preventManipulation(),t.preventDefault&&t.preventDefault()},stopPropagation:function(){this.srcEvent.stopPropagation()},stopDetect:function(){return x.stopDetect()}}}},L=a.PointerEvent={pointers:{},getTouchList:function(){var t=[];return b.each(this.pointers,function(e){t.push(e)}),t},updatePointer:function(t,e){t==y||t!=y&&1!==e.buttons?delete this.pointers[e.pointerId]:(e.identifier=e.pointerId,this.pointers[e.pointerId]=e)},matchType:function(t,e){if(!e.pointerType)return!1;var i=e.pointerType,s={};return s[p]=i===(e.MSPOINTER_TYPE_MOUSE||p),s[m]=i===(e.MSPOINTER_TYPE_TOUCH||m),s[_]=i===(e.MSPOINTER_TYPE_PEN||_),s[t]},reset:function(){this.pointers={}}},x=a.detection={gestures:[],current:null,previous:null,stopped:!1,startDetect:function(t,e){this.current||(this.stopped=!1,this.current={inst:t,startEvent:b.extend({},e),lastEvent:!1,lastCalcEvent:!1,futureCalcEvent:!1,lastCalcData:{},name:""},this.detect(e))},detect:function(t){if(this.current&&!this.stopped){t=this.extendEventData(t);var e=this.current.inst,i=e.options;return b.each(this.gestures,function(s){!this.stopped&&e.enabled&&i[s.name]&&s.handler.call(s,t,e)},this),this.current&&(this.current.lastEvent=t),t.eventType==y&&this.stopDetect(),t}},stopDetect:function(){this.previous=b.extend({},this.current),this.current=null,this.stopped=!0},getCalculatedData:function(t,e,i,s,n){var o=this.current,r=!1,h=o.lastCalcEvent,d=o.lastCalcData;h&&t.timeStamp-h.timeStamp>a.CALCULATE_INTERVAL&&(e=h.center,i=t.timeStamp-h.timeStamp,s=t.center.clientX-h.center.clientX,n=t.center.clientY-h.center.clientY,r=!0),(t.eventType==M||t.eventType==v)&&(o.futureCalcEvent=t),(!o.lastCalcEvent||r)&&(d.velocity=b.getVelocity(i,s,n),d.angle=b.getAngle(e,t.center),d.direction=b.getDirection(e,t.center),o.lastCalcEvent=o.futureCalcEvent||t,o.futureCalcEvent=t),t.velocityX=d.velocity.x,t.velocityY=d.velocity.y,t.interimAngle=d.angle,t.interimDirection=d.direction},extendEventData:function(t){var e=this.current,i=e.startEvent,s=e.lastEvent||i;(t.eventType==M||t.eventType==v)&&(i.touches=[],b.each(t.touches,function(t){i.touches.push({clientX:t.clientX,clientY:t.clientY})}));var n=t.timeStamp-i.timeStamp,o=t.center.clientX-i.center.clientX,r=t.center.clientY-i.center.clientY;return this.getCalculatedData(t,s.center,n,o,r),b.extend(t,{startEvent:i,deltaTime:n,deltaX:o,deltaY:r,distance:b.getDistance(i.center,t.center),angle:b.getAngle(i.center,t.center),direction:b.getDirection(i.center,t.center),scale:b.getScale(i.touches,t.touches),rotation:b.getRotation(i.touches,t.touches)}),t},register:function(t){var e=t.defaults||{};return e[t.name]===o&&(e[t.name]=!0),b.extend(a.defaults,e,!0),t.index=t.index||1e3,this.gestures.push(t),this.gestures.sort(function(t,e){return t.indexe.index?1:0}),this.gestures}};a.Instance=function(t,e){var i=this;r(),this.element=t,this.enabled=!0,b.each(e,function(t,i){delete e[i],e[b.toCamelCase(i)]=t}),this.options=b.extend(b.extend({},a.defaults),e||{}),this.options.behavior&&b.toggleBehavior(this.element,this.options.behavior,!0),this.eventStartHandler=w.onTouch(t,f,function(t){i.enabled&&t.eventType==f?x.startDetect(i,t):t.eventType==M&&x.detect(t)}),this.eventHandlers=[]},a.Instance.prototype={on:function(t,e){var i=this;return w.on(i.element,t,e,function(t){i.eventHandlers.push({gesture:t,handler:e})}),i},off:function(t,e){var i=this;return w.off(i.element,t,e,function(t){var s=b.inArray({gesture:t,handler:e});s!==!1&&i.eventHandlers.splice(s,1)}),i},trigger:function(t,e){e||(e={});var i=a.DOCUMENT.createEvent("Event");i.initEvent(t,!0,!0),i.gesture=e;var s=this.element;return b.hasParent(e.target,s)&&(s=e.target),s.dispatchEvent(i),this},enable:function(t){return this.enabled=t,this},dispose:function(){var t,e;for(b.toggleBehavior(this.element,this.options.behavior,!1),t=-1;e=this.eventHandlers[++t];)b.off(this.element,e.gesture,e.handler);return this.eventHandlers=[],w.off(this.element,h[f],this.eventStartHandler),null}},function(t){function e(e,s){var n=x.current;if(!(s.options.dragMaxTouches>0&&e.touches.length>s.options.dragMaxTouches))switch(e.eventType){case f:i=!1;break;case g:if(e.distance0)){var r=Math.abs(s.options.dragMinDistance/e.distance);o.pageX+=e.deltaX*r,o.pageY+=e.deltaY*r,o.clientX+=e.deltaX*r,o.clientY+=e.deltaY*r,e=x.extendEventData(e)}(n.lastEvent.dragLockToAxis||s.options.dragLockToAxis&&s.options.dragLockMinDistance<=e.distance)&&(e.dragLockToAxis=!0);var a=n.lastEvent.direction;e.dragLockToAxis&&a!==e.direction&&(e.direction=b.isVertical(a)?e.deltaY<0?c:d:e.deltaX<0?l:u),i||(s.trigger(t+"start",e),i=!0),s.trigger(t,e),s.trigger(t+e.direction,e);var h=b.isVertical(e.direction);(s.options.dragBlockVertical&&h||s.options.dragBlockHorizontal&&!h)&&e.preventDefault();break;case v:i&&e.changedLength<=s.options.dragMaxTouches&&(s.trigger(t+"end",e),i=!1);break;case y:i=!1}}var i=!1;a.gestures.Drag={name:t,index:50,handler:e,defaults:{dragMinDistance:10,dragDistanceCorrection:!0,dragMaxTouches:1,dragBlockHorizontal:!1,dragBlockVertical:!1,dragLockToAxis:!1,dragLockMinDistance:25}}}("drag"),a.gestures.Gesture={name:"gesture",index:1337,handler:function(t,e){e.trigger(this.name,t)}},function(t){function e(e,s){var n=s.options,o=x.current;switch(e.eventType){case f:clearTimeout(i),o.name=t,i=setTimeout(function(){o&&o.name==t&&s.trigger(t,e)},n.holdTimeout);break;case g:e.distance>n.holdThreshold&&clearTimeout(i);break;case v:clearTimeout(i)}}var i;a.gestures.Hold={name:t,index:10,defaults:{holdTimeout:500,holdThreshold:2},handler:e}}("hold"),a.gestures.Release={name:"release",index:1/0,handler:function(t,e){t.eventType==v&&e.trigger(this.name,t)}},a.gestures.Swipe={name:"swipe",index:40,defaults:{swipeMinTouches:1,swipeMaxTouches:1,swipeVelocityX:.6,swipeVelocityY:.6},handler:function(t,e){if(t.eventType==v){var i=t.touches.length,s=e.options;if(is.swipeMaxTouches)return;(t.velocityX>s.swipeVelocityX||t.velocityY>s.swipeVelocityY)&&(e.trigger(this.name,t),e.trigger(this.name+t.direction,t))}}},function(t){function e(e,s){var n,o,r=s.options,a=x.current,h=x.previous;switch(e.eventType){case f:i=!1;break;case g:i=i||e.distance>r.tapMaxDistance;break;case y:!b.inStr(e.srcEvent.type,"cancel")&&e.deltaTimes.options.transformMinRotation&&s.trigger("rotate",e),n>s.options.transformMinScale&&(s.trigger("pinch",e),s.trigger("pinch"+(e.scale<1?"in":"out"),e));break;case v:i&&e.changedLength<2&&(s.trigger(t+"end",e),i=!1)}}var i=!1;a.gestures.Transform={name:t,index:45,defaults:{transformMinScale:.01,transformMinRotation:1},handler:e}}("transform"),s=function(){return a}.call(e,i,e,t),!(s!==o&&(t.exports=s))}(window)},function(t,e){e._calculateNodeForces=function(){var t,e,i,s,n,o,r,a,h,d,l,c=this.calculationNodes,u=this.calculationNodeIndices,p=-2/3,m=4/3,_=this.constants.physics.repulsion.nodeDistance,f=_;for(d=0;di&&(r=.5*f>i?1:g*i+m,r*=0==o?1:1+o*this.constants.clustering.forceAmplification,r/=i,s=t*r,n=e*r,a.fx-=s,a.fy-=n,h.fx+=s,h.fy+=n)}}},function(t,e){e._calculateNodeForces=function(){var t,e,i,s,n,o,r,a,h,d,l=this.calculationNodes,c=this.calculationNodeIndices,u=this.constants.physics.hierarchicalRepulsion.nodeDistance;for(h=0;hi?-Math.pow(p*i,2)+Math.pow(p*u,2):0,0==i?i=.01:o/=i,s=t*o,n=e*o,r.fx-=s,r.fy-=n,a.fx+=s,a.fy+=n}},e._calculateHierarchicalSpringForces=function(){for(var t,e,i,s,n,o,r,a,h,d=this.edges,l=this.calculationNodes,c=this.calculationNodeIndices,u=0;uo;o++)t=e[i[o]],this._getForceContribution(n.root.children.NW,t),this._getForceContribution(n.root.children.NE,t),this._getForceContribution(n.root.children.SW,t),this._getForceContribution(n.root.children.SE,t)}},e._getForceContribution=function(t,e){if(t.childrenCount>0){var i,s,n;if(i=t.centerOfMass.x-e.x,s=t.centerOfMass.y-e.y,n=Math.sqrt(i*i+s*s),n*t.calcSize>this.constants.physics.barnesHut.theta){0==n&&(n=.1*Math.random(),i=n);var o=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.mass/(n*n*n),r=i*o,a=s*o;e.fx+=r,e.fy+=a}else if(4==t.childrenCount)this._getForceContribution(t.children.NW,e),this._getForceContribution(t.children.NE,e),this._getForceContribution(t.children.SW,e),this._getForceContribution(t.children.SE,e);else if(t.children.data.id!=e.id){0==n&&(n=.5*Math.random(),i=n);var o=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.mass/(n*n*n),r=i*o,a=s*o;e.fx+=r,e.fy+=a}}},e._formBarnesHutTree=function(t,e){for(var i,s=e.length,n=Number.MAX_VALUE,o=Number.MAX_VALUE,r=-Number.MAX_VALUE,a=-Number.MAX_VALUE,h=0;s>h;h++){var d=t[e[h]].x,l=t[e[h]].y;n>d&&(n=d),d>r&&(r=d),o>l&&(o=l),l>a&&(a=l)}var c=Math.abs(r-n)-Math.abs(a-o);c>0?(o-=.5*c,a+=.5*c):(n+=.5*c,r-=.5*c);var u=1e-5,p=Math.max(u,Math.abs(r-n)),m=.5*p,_=.5*(n+r),f=.5*(o+a),g={root:{centerOfMass:{x:0,y:0},mass:0,range:{minX:_-m,maxX:_+m,minY:f-m,maxY:f+m},size:p,calcSize:1/p,children:{data:null},maxWidth:0,level:0,childrenCount:4}};for(this._splitBranch(g.root),h=0;s>h;h++)i=t[e[h]],this._placeInTree(g.root,i);this.barnesHutTree=g},e._updateBranchMass=function(t,e){var i=t.mass+e.mass,s=1/i;t.centerOfMass.x=t.centerOfMass.x*t.mass+e.x*e.mass,t.centerOfMass.x*=s,t.centerOfMass.y=t.centerOfMass.y*t.mass+e.y*e.mass,t.centerOfMass.y*=s,t.mass=i;var n=Math.max(Math.max(e.height,e.radius),e.width);t.maxWidth=t.maxWidthe.x?t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NW"):this._placeInRegion(t,e,"SW"):t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NE"):this._placeInRegion(t,e,"SE")},e._placeInRegion=function(t,e,i){switch(t.children[i].childrenCount){case 0:t.children[i].children.data=e,t.children[i].childrenCount=1,this._updateBranchMass(t.children[i],e);break;case 1:t.children[i].children.data.x==e.x&&t.children[i].children.data.y==e.y?(e.x+=Math.random(),e.y+=Math.random()):(this._splitBranch(t.children[i]),this._placeInTree(t.children[i],e));break;case 4:this._placeInTree(t.children[i],e)}},e._splitBranch=function(t){var e=null;1==t.childrenCount&&(e=t.children.data,t.mass=0,t.centerOfMass.x=0,t.centerOfMass.y=0),t.childrenCount=4,t.children.data=null,this._insertRegion(t,"NW"),this._insertRegion(t,"NE"),this._insertRegion(t,"SW"),this._insertRegion(t,"SE"),null!=e&&this._placeInTree(t,e)},e._insertRegion=function(t,e){var i,s,n,o,r=.5*t.size;switch(e){case"NW":i=t.range.minX,s=t.range.minX+r,n=t.range.minY,o=t.range.minY+r;break;case"NE":i=t.range.minX+r,s=t.range.maxX,n=t.range.minY,o=t.range.minY+r;break;case"SW":i=t.range.minX,s=t.range.minX+r,n=t.range.minY+r,o=t.range.maxY;break;case"SE":i=t.range.minX+r,s=t.range.maxX,n=t.range.minY+r,o=t.range.maxY}t.children[e]={centerOfMass:{x:0,y:0},mass:0,range:{minX:i,maxX:s,minY:n,maxY:o},size:.5*t.size,calcSize:2*t.calcSize,children:{data:null},maxWidth:0,level:t.level+1,childrenCount:0}},e._drawTree=function(t,e){void 0!==this.barnesHutTree&&(t.lineWidth=1,this._drawBranch(this.barnesHutTree.root,t,e))},e._drawBranch=function(t,e,i){void 0===i&&(i="#FF0000"),4==t.childrenCount&&(this._drawBranch(t.children.NW,e),this._drawBranch(t.children.NE,e),this._drawBranch(t.children.SE,e),this._drawBranch(t.children.SW,e)),e.strokeStyle=i,e.beginPath(),e.moveTo(t.range.minX,t.range.minY),e.lineTo(t.range.maxX,t.range.minY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.minY),e.lineTo(t.range.maxX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.maxY),e.lineTo(t.range.minX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.minX,t.range.maxY),e.lineTo(t.range.minX,t.range.minY),e.stroke()}},function(t,e,i){function s(t){return i(n(t))}function n(t){return o[t]||function(){throw new Error("Cannot find module '"+t+"'.")}()}var o={"./ar":61,"./ar-ma":59,"./ar-ma.js":59,"./ar-sa":60,"./ar-sa.js":60,"./ar.js":61,"./az":62,"./az.js":62,"./bg":63,"./bg.js":63,"./bn":64,"./bn.js":64,"./br":65,"./br.js":65,"./bs":66,"./bs.js":66,"./ca":67,"./ca.js":67,"./cs":68,"./cs.js":68,"./cv":69,"./cv.js":69,"./cy":70,"./cy.js":70,"./da":71,"./da.js":71,"./de":73,"./de-at":72,"./de-at.js":72,"./de.js":73,"./el":74,"./el.js":74,"./en-au":75,"./en-au.js":75,"./en-ca":76,"./en-ca.js":76,"./en-gb":77,"./en-gb.js":77,"./eo":78,"./eo.js":78,"./es":79,"./es.js":79,"./et":80,"./et.js":80,"./eu":81,"./eu.js":81,"./fa":82,"./fa.js":82,"./fi":83,"./fi.js":83,"./fo":84,"./fo.js":84,"./fr":86,"./fr-ca":85,"./fr-ca.js":85,"./fr.js":86,"./gl":87,"./gl.js":87,"./he":88,"./he.js":88,"./hi":89,"./hi.js":89,"./hr":90,"./hr.js":90,"./hu":91,"./hu.js":91,"./hy-am":92,"./hy-am.js":92,"./id":93,"./id.js":93,"./is":94,"./is.js":94,"./it":95,"./it.js":95,"./ja":96,"./ja.js":96,"./ka":97,"./ka.js":97,"./km":98,"./km.js":98,"./ko":99,"./ko.js":99,"./lb":100,"./lb.js":100,"./lt":101,"./lt.js":101,"./lv":102,"./lv.js":102,"./mk":103,"./mk.js":103,"./ml":104,"./ml.js":104,"./mr":105,"./mr.js":105,"./ms-my":106,"./ms-my.js":106,"./nb":107,"./nb.js":107,"./ne":108,"./ne.js":108,"./nl":109,"./nl.js":109,"./nn":110,"./nn.js":110,"./pl":111,"./pl.js":111,"./pt":113,"./pt-br":112,"./pt-br.js":112,"./pt.js":113,"./ro":114,"./ro.js":114,"./ru":115,"./ru.js":115,"./sk":116,"./sk.js":116,"./sl":117,"./sl.js":117,"./sq":118,"./sq.js":118,"./sr":120,"./sr-cyrl":119,"./sr-cyrl.js":119,"./sr.js":120,"./sv":121,"./sv.js":121,"./ta":122,"./ta.js":122,"./th":123,"./th.js":123,"./tl-ph":124,"./tl-ph.js":124,"./tr":125,"./tr.js":125,"./tzm":127,"./tzm-latn":126,"./tzm-latn.js":126,"./tzm.js":127,"./uk":128,"./uk.js":128,"./uz":129,"./uz.js":129,"./vi":130,"./vi.js":130,"./zh-cn":131,"./zh-cn.js":131,"./zh-tw":132,"./zh-tw.js":132};s.keys=function(){return Object.keys(o)},s.resolve=n,t.exports=s},function(t,e,i){var s,n;!function(e){s=[i(53)],n=e.apply(null,s),!(void 0!==n&&(t.exports=n))}(function(t){return t.lang("ar-ma",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:6,doy:12}})})},function(t,e,i){var s,n;!function(e){s=[i(53)],n=e.apply(null,s),!(void 0!==n&&(t.exports=n))}(function(t){var e={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},i={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"};return t.lang("ar-sa",{months:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},meridiem:function(t){return 12>t?"ص":"م"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},preparse:function(t){return t.replace(/[۰-۹]/g,function(t){return i[t] -}).replace(/،/g,",")},postformat:function(t){return t.replace(/\d/g,function(t){return e[t]}).replace(/,/g,"،")},week:{dow:6,doy:12}})})},function(t,e,i){var s,n;!function(e){s=[i(53)],n=e.apply(null,s),!(void 0!==n&&(t.exports=n))}(function(t){var e={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},i={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"};return t.lang("ar",{months:"يناير/ كانون الثاني_فبراير/ شباط_مارس/ آذار_أبريل/ نيسان_مايو/ أيار_يونيو/ حزيران_يوليو/ تموز_أغسطس/ آب_سبتمبر/ أيلول_أكتوبر/ تشرين الأول_نوفمبر/ تشرين الثاني_ديسمبر/ كانون الأول".split("_"),monthsShort:"يناير/ كانون الثاني_فبراير/ شباط_مارس/ آذار_أبريل/ نيسان_مايو/ أيار_يونيو/ حزيران_يوليو/ تموز_أغسطس/ آب_سبتمبر/ أيلول_أكتوبر/ تشرين الأول_نوفمبر/ تشرين الثاني_ديسمبر/ كانون الأول".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},meridiem:function(t){return 12>t?"ص":"م"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},preparse:function(t){return t.replace(/[۰-۹]/g,function(t){return i[t]}).replace(/،/g,",")},postformat:function(t){return t.replace(/\d/g,function(t){return e[t]}).replace(/,/g,"،")},week:{dow:6,doy:12}})})},function(t,e,i){var s,n;!function(e){s=[i(53)],n=e.apply(null,s),!(void 0!==n&&(t.exports=n))}(function(t){var e={1:"-inci",5:"-inci",8:"-inci",70:"-inci",80:"-inci",2:"-nci",7:"-nci",20:"-nci",50:"-nci",3:"-üncü",4:"-üncü",100:"-üncü",6:"-ncı",9:"-uncu",10:"-uncu",30:"-uncu",60:"-ıncı",90:"-ıncı"};return t.lang("az",{months:"yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr".split("_"),monthsShort:"yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek".split("_"),weekdays:"Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə".split("_"),weekdaysShort:"Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən".split("_"),weekdaysMin:"Bz_BE_ÇA_Çə_CA_Cü_Şə".split("_"),longDateFormat:{LT:"HH:mm",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[sabah saat] LT",nextWeek:"[gələn həftə] dddd [saat] LT",lastDay:"[dünən] LT",lastWeek:"[keçən həftə] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s əvvəl",s:"birneçə saniyyə",m:"bir dəqiqə",mm:"%d dəqiqə",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir il",yy:"%d il"},meridiem:function(t){return 4>t?"gecə":12>t?"səhər":17>t?"gündüz":"axşam"},ordinal:function(t){if(0===t)return t+"-ıncı";var i=t%10,s=t%100-i,n=t>=100?100:null;return t+(e[i]||e[s]||e[n])},week:{dow:1,doy:7}})})},function(t,e,i){var s,n;!function(e){s=[i(53)],n=e.apply(null,s),!(void 0!==n&&(t.exports=n))}(function(t){return t.lang("bg",{months:"януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември".split("_"),monthsShort:"янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек".split("_"),weekdays:"неделя_понеделник_вторник_сряда_четвъртък_петък_събота".split("_"),weekdaysShort:"нед_пон_вто_сря_чет_пет_съб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"H:mm",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[Днес в] LT",nextDay:"[Утре в] LT",nextWeek:"dddd [в] LT",lastDay:"[Вчера в] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[В изминалата] dddd [в] LT";case 1:case 2:case 4:case 5:return"[В изминалия] dddd [в] LT"}},sameElse:"L"},relativeTime:{future:"след %s",past:"преди %s",s:"няколко секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дни",M:"месец",MM:"%d месеца",y:"година",yy:"%d години"},ordinal:function(t){var e=t%10,i=t%100;return 0===t?t+"-ев":0===i?t+"-ен":i>10&&20>i?t+"-ти":1===e?t+"-ви":2===e?t+"-ри":7===e||8===e?t+"-ми":t+"-ти"},week:{dow:1,doy:7}})})},function(t,e,i){var s,n;!function(e){s=[i(53)],n=e.apply(null,s),!(void 0!==n&&(t.exports=n))}(function(t){var e={1:"১",2:"২",3:"৩",4:"৪",5:"৫",6:"৬",7:"৭",8:"৮",9:"৯",0:"০"},i={"১":"1","২":"2","৩":"3","৪":"4","৫":"5","৬":"6","৭":"7","৮":"8","৯":"9","০":"0"};return t.lang("bn",{months:"জানুয়ারী_ফেবুয়ারী_মার্চ_এপ্রিল_মে_জুন_জুলাই_অগাস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর".split("_"),monthsShort:"জানু_ফেব_মার্চ_এপর_মে_জুন_জুল_অগ_সেপ্ট_অক্টো_নভ_ডিসেম্".split("_"),weekdays:"রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পত্তিবার_শুক্রুবার_শনিবার".split("_"),weekdaysShort:"রবি_সোম_মঙ্গল_বুধ_বৃহস্পত্তি_শুক্রু_শনি".split("_"),weekdaysMin:"রব_সম_মঙ্গ_বু_ব্রিহ_শু_শনি".split("_"),longDateFormat:{LT:"A h:mm সময়",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, LT",LLLL:"dddd, D MMMM YYYY, LT"},calendar:{sameDay:"[আজ] LT",nextDay:"[আগামীকাল] LT",nextWeek:"dddd, LT",lastDay:"[গতকাল] LT",lastWeek:"[গত] dddd, LT",sameElse:"L"},relativeTime:{future:"%s পরে",past:"%s আগে",s:"কএক সেকেন্ড",m:"এক মিনিট",mm:"%d মিনিট",h:"এক ঘন্টা",hh:"%d ঘন্টা",d:"এক দিন",dd:"%d দিন",M:"এক মাস",MM:"%d মাস",y:"এক বছর",yy:"%d বছর"},preparse:function(t){return t.replace(/[১২৩৪৫৬৭৮৯০]/g,function(t){return i[t]})},postformat:function(t){return t.replace(/\d/g,function(t){return e[t]})},meridiem:function(t){return 4>t?"রাত":10>t?"শকাল":17>t?"দুপুর":20>t?"বিকেল":"রাত"},week:{dow:0,doy:6}})})},function(t,e,i){var s,n;!function(e){s=[i(53)],n=e.apply(null,s),!(void 0!==n&&(t.exports=n))}(function(t){function e(t,e,i){var s={mm:"munutenn",MM:"miz",dd:"devezh"};return t+" "+n(s[i],t)}function i(t){switch(s(t)){case 1:case 3:case 4:case 5:case 9:return t+" bloaz";default:return t+" vloaz"}}function s(t){return t>9?s(t%10):t}function n(t,e){return 2===e?o(t):t}function o(t){var e={m:"v",b:"v",d:"z"};return void 0===e[t.charAt(0)]?t:e[t.charAt(0)]+t.substring(1)}return t.lang("br",{months:"Genver_C'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"),monthsShort:"Gen_C'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"),weekdays:"Sul_Lun_Meurzh_Merc'her_Yaou_Gwener_Sadorn".split("_"),weekdaysShort:"Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"),weekdaysMin:"Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"),longDateFormat:{LT:"h[e]mm A",L:"DD/MM/YYYY",LL:"D [a viz] MMMM YYYY",LLL:"D [a viz] MMMM YYYY LT",LLLL:"dddd, D [a viz] MMMM YYYY LT"},calendar:{sameDay:"[Hiziv da] LT",nextDay:"[Warc'hoazh da] LT",nextWeek:"dddd [da] LT",lastDay:"[Dec'h da] LT",lastWeek:"dddd [paset da] LT",sameElse:"L"},relativeTime:{future:"a-benn %s",past:"%s 'zo",s:"un nebeud segondennoù",m:"ur vunutenn",mm:e,h:"un eur",hh:"%d eur",d:"un devezh",dd:e,M:"ur miz",MM:e,y:"ur bloaz",yy:i},ordinal:function(t){var e=1===t?"añ":"vet";return t+e},week:{dow:1,doy:4}})})},function(t,e,i){var s,n;!function(e){s=[i(53)],n=e.apply(null,s),!(void 0!==n&&(t.exports=n))}(function(t){function e(t,e,i){var s=t+" ";switch(i){case"m":return e?"jedna minuta":"jedne minute";case"mm":return s+=1===t?"minuta":2===t||3===t||4===t?"minute":"minuta";case"h":return e?"jedan sat":"jednog sata";case"hh":return s+=1===t?"sat":2===t||3===t||4===t?"sata":"sati";case"dd":return s+=1===t?"dan":"dana";case"MM":return s+=1===t?"mjesec":2===t||3===t||4===t?"mjeseca":"mjeseci";case"yy":return s+=1===t?"godina":2===t||3===t||4===t?"godine":"godina"}}return t.lang("bs",{months:"januar_februar_mart_april_maj_juni_juli_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),longDateFormat:{LT:"H:mm",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY LT",LLLL:"dddd, D. MMMM YYYY LT"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",m:e,mm:e,h:e,hh:e,d:"dan",dd:e,M:"mjesec",MM:e,y:"godinu",yy:e},ordinal:"%d.",week:{dow:1,doy:7}})})},function(t,e,i){var s,n;!function(e){s=[i(53)],n=e.apply(null,s),!(void 0!==n&&(t.exports=n))}(function(t){return t.lang("ca",{months:"gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre".split("_"),monthsShort:"gen._febr._mar._abr._mai._jun._jul._ag._set._oct._nov._des.".split("_"),weekdays:"diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dt._dc._dj._dv._ds.".split("_"),weekdaysMin:"Dg_Dl_Dt_Dc_Dj_Dv_Ds".split("_"),longDateFormat:{LT:"H:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:function(){return"[avui a "+(1!==this.hours()?"les":"la")+"] LT"},nextDay:function(){return"[demà a "+(1!==this.hours()?"les":"la")+"] LT"},nextWeek:function(){return"dddd [a "+(1!==this.hours()?"les":"la")+"] LT"},lastDay:function(){return"[ahir a "+(1!==this.hours()?"les":"la")+"] LT"},lastWeek:function(){return"[el] dddd [passat a "+(1!==this.hours()?"les":"la")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"fa %s",s:"uns segons",m:"un minut",mm:"%d minuts",h:"una hora",hh:"%d hores",d:"un dia",dd:"%d dies",M:"un mes",MM:"%d mesos",y:"un any",yy:"%d anys"},ordinal:"%dº",week:{dow:1,doy:4}})})},function(t,e,i){var s,n;!function(e){s=[i(53)],n=e.apply(null,s),!(void 0!==n&&(t.exports=n))}(function(t){function e(t){return t>1&&5>t&&1!==~~(t/10)}function i(t,i,s,n){var o=t+" ";switch(s){case"s":return i||n?"pár sekund":"pár sekundami";case"m":return i?"minuta":n?"minutu":"minutou";case"mm":return i||n?o+(e(t)?"minuty":"minut"):o+"minutami";case"h":return i?"hodina":n?"hodinu":"hodinou";case"hh":return i||n?o+(e(t)?"hodiny":"hodin"):o+"hodinami";case"d":return i||n?"den":"dnem";case"dd":return i||n?o+(e(t)?"dny":"dní"):o+"dny";case"M":return i||n?"měsíc":"měsícem";case"MM":return i||n?o+(e(t)?"měsíce":"měsíců"):o+"měsíci";case"y":return i||n?"rok":"rokem";case"yy":return i||n?o+(e(t)?"roky":"let"):o+"lety"}}var s="leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec".split("_"),n="led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro".split("_");return t.lang("cs",{months:s,monthsShort:n,monthsParse:function(t,e){var i,s=[];for(i=0;12>i;i++)s[i]=new RegExp("^"+t[i]+"$|^"+e[i]+"$","i");return s}(s,n),weekdays:"neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota".split("_"),weekdaysShort:"ne_po_út_st_čt_pá_so".split("_"),weekdaysMin:"ne_po_út_st_čt_pá_so".split("_"),longDateFormat:{LT:"H.mm",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY LT",LLLL:"dddd D. MMMM YYYY LT"},calendar:{sameDay:"[dnes v] LT",nextDay:"[zítra v] LT",nextWeek:function(){switch(this.day()){case 0:return"[v neděli v] LT";case 1:case 2:return"[v] dddd [v] LT";case 3:return"[ve středu v] LT";case 4:return"[ve čtvrtek v] LT";case 5:return"[v pátek v] LT";case 6:return"[v sobotu v] LT"}},lastDay:"[včera v] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulou neděli v] LT";case 1:case 2:return"[minulé] dddd [v] LT";case 3:return"[minulou středu v] LT";case 4:case 5:return"[minulý] dddd [v] LT";case 6:return"[minulou sobotu v] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"před %s",s:i,m:i,mm:i,h:i,hh:i,d:i,dd:i,M:i,MM:i,y:i,yy:i},ordinal:"%d.",week:{dow:1,doy:4}})})},function(t,e,i){var s,n;!function(e){s=[i(53)],n=e.apply(null,s),!(void 0!==n&&(t.exports=n))}(function(t){return t.lang("cv",{months:"кăрлач_нарăс_пуш_ака_май_çĕртме_утă_çурла_авăн_юпа_чӳк_раштав".split("_"),monthsShort:"кăр_нар_пуш_ака_май_çĕр_утă_çур_ав_юпа_чӳк_раш".split("_"),weekdays:"вырсарникун_тунтикун_ытларикун_юнкун_кĕçнерникун_эрнекун_шăматкун".split("_"),weekdaysShort:"выр_тун_ытл_юн_кĕç_эрн_шăм".split("_"),weekdaysMin:"вр_тн_ыт_юн_кç_эр_шм".split("_"),longDateFormat:{LT:"HH:mm",L:"DD-MM-YYYY",LL:"YYYY [çулхи] MMMM [уйăхĕн] D[-мĕшĕ]",LLL:"YYYY [çулхи] MMMM [уйăхĕн] D[-мĕшĕ], LT",LLLL:"dddd, YYYY [çулхи] MMMM [уйăхĕн] D[-мĕшĕ], LT"},calendar:{sameDay:"[Паян] LT [сехетре]",nextDay:"[Ыран] LT [сехетре]",lastDay:"[Ĕнер] LT [сехетре]",nextWeek:"[Çитес] dddd LT [сехетре]",lastWeek:"[Иртнĕ] dddd LT [сехетре]",sameElse:"L"},relativeTime:{future:function(t){var e=/сехет$/i.exec(t)?"рен":/çул$/i.exec(t)?"тан":"ран";return t+e},past:"%s каялла",s:"пĕр-ик çеккунт",m:"пĕр минут",mm:"%d минут",h:"пĕр сехет",hh:"%d сехет",d:"пĕр кун",dd:"%d кун",M:"пĕр уйăх",MM:"%d уйăх",y:"пĕр çул",yy:"%d çул"},ordinal:"%d-мĕш",week:{dow:1,doy:7}})})},function(t,e,i){var s,n;!function(e){s=[i(53)],n=e.apply(null,s),!(void 0!==n&&(t.exports=n))}(function(t){return t.lang("cy",{months:"Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr".split("_"),monthsShort:"Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag".split("_"),weekdays:"Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn".split("_"),weekdaysShort:"Sul_Llun_Maw_Mer_Iau_Gwe_Sad".split("_"),weekdaysMin:"Su_Ll_Ma_Me_Ia_Gw_Sa".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[Heddiw am] LT",nextDay:"[Yfory am] LT",nextWeek:"dddd [am] LT",lastDay:"[Ddoe am] LT",lastWeek:"dddd [diwethaf am] LT",sameElse:"L"},relativeTime:{future:"mewn %s",past:"%s yn ôl",s:"ychydig eiliadau",m:"munud",mm:"%d munud",h:"awr",hh:"%d awr",d:"diwrnod",dd:"%d diwrnod",M:"mis",MM:"%d mis",y:"blwyddyn",yy:"%d flynedd"},ordinal:function(t){var e=t,i="",s=["","af","il","ydd","ydd","ed","ed","ed","fed","fed","fed","eg","fed","eg","eg","fed","eg","eg","fed","eg","fed"];return e>20?i=40===e||50===e||60===e||80===e||100===e?"fed":"ain":e>0&&(i=s[e]),t+i},week:{dow:1,doy:4}})})},function(t,e,i){var s,n;!function(e){s=[i(53)],n=e.apply(null,s),!(void 0!==n&&(t.exports=n))}(function(t){return t.lang("da",{months:"januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"søn_man_tir_ons_tor_fre_lør".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY LT",LLLL:"dddd [d.] D. MMMM YYYY LT"},calendar:{sameDay:"[I dag kl.] LT",nextDay:"[I morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[I går kl.] LT",lastWeek:"[sidste] dddd [kl] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"få sekunder",m:"et minut",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dage",M:"en måned",MM:"%d måneder",y:"et år",yy:"%d år"},ordinal:"%d.",week:{dow:1,doy:4}})})},function(t,e,i){var s,n;!function(e){s=[i(53)],n=e.apply(null,s),!(void 0!==n&&(t.exports=n))}(function(t){function e(t,e,i){var s={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[t+" Tage",t+" Tagen"],M:["ein Monat","einem Monat"],MM:[t+" Monate",t+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[t+" Jahre",t+" Jahren"]};return e?s[i][0]:s[i][1]}return t.lang("de-at",{months:"Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jän._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm [Uhr]",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY LT",LLLL:"dddd, D. MMMM YYYY LT"},calendar:{sameDay:"[Heute um] LT",sameElse:"L",nextDay:"[Morgen um] LT",nextWeek:"dddd [um] LT",lastDay:"[Gestern um] LT",lastWeek:"[letzten] dddd [um] LT"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",m:e,mm:"%d Minuten",h:e,hh:"%d Stunden",d:e,dd:e,M:e,MM:e,y:e,yy:e},ordinal:"%d.",week:{dow:1,doy:4}})})},function(t,e,i){var s,n;!function(e){s=[i(53)],n=e.apply(null,s),!(void 0!==n&&(t.exports=n))}(function(t){function e(t,e,i){var s={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[t+" Tage",t+" Tagen"],M:["ein Monat","einem Monat"],MM:[t+" Monate",t+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[t+" Jahre",t+" Jahren"]};return e?s[i][0]:s[i][1]}return t.lang("de",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm [Uhr]",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY LT",LLLL:"dddd, D. MMMM YYYY LT"},calendar:{sameDay:"[Heute um] LT",sameElse:"L",nextDay:"[Morgen um] LT",nextWeek:"dddd [um] LT",lastDay:"[Gestern um] LT",lastWeek:"[letzten] dddd [um] LT"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",m:e,mm:"%d Minuten",h:e,hh:"%d Stunden",d:e,dd:e,M:e,MM:e,y:e,yy:e},ordinal:"%d.",week:{dow:1,doy:4}})})},function(t,e,i){var s,n;!function(e){s=[i(53)],n=e.apply(null,s),!(void 0!==n&&(t.exports=n))}(function(t){return t.lang("el",{monthsNominativeEl:"Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος".split("_"),monthsGenitiveEl:"Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου".split("_"),months:function(t,e){return/D/.test(e.substring(0,e.indexOf("MMMM")))?this._monthsGenitiveEl[t.month()]:this._monthsNominativeEl[t.month()]},monthsShort:"Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ".split("_"),weekdays:"Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο".split("_"),weekdaysShort:"Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ".split("_"),weekdaysMin:"Κυ_Δε_Τρ_Τε_Πε_Πα_Σα".split("_"),meridiem:function(t,e,i){return t>11?i?"μμ":"ΜΜ":i?"πμ":"ΠΜ"},longDateFormat:{LT:"h:mm A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendarEl:{sameDay:"[Σήμερα {}] LT",nextDay:"[Αύριο {}] LT",nextWeek:"dddd [{}] LT",lastDay:"[Χθες {}] LT",lastWeek:function(){switch(this.day()){case 6:return"[το προηγούμενο] dddd [{}] LT";default:return"[την προηγούμενη] dddd [{}] LT"}},sameElse:"L"},calendar:function(t,e){var i=this._calendarEl[t],s=e&&e.hours();return"function"==typeof i&&(i=i.apply(e)),i.replace("{}",s%12===1?"στη":"στις")},relativeTime:{future:"σε %s",past:"%s πριν",s:"δευτερόλεπτα",m:"ένα λεπτό",mm:"%d λεπτά",h:"μία ώρα",hh:"%d ώρες",d:"μία μέρα",dd:"%d μέρες",M:"ένας μήνας",MM:"%d μήνες",y:"ένας χρόνος",yy:"%d χρόνια"},ordinal:function(t){return t+"η"},week:{dow:1,doy:4}})})},function(t,e,i){var s,n;!function(e){s=[i(53)],n=e.apply(null,s),!(void 0!==n&&(t.exports=n))}(function(t){return t.lang("en-au",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinal:function(t){var e=t%10,i=1===~~(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+i},week:{dow:1,doy:4}})})},function(t,e,i){var s,n;!function(e){s=[i(53)],n=e.apply(null,s),!(void 0!==n&&(t.exports=n))}(function(t){return t.lang("en-ca",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",L:"YYYY-MM-DD",LL:"D MMMM, YYYY",LLL:"D MMMM, YYYY LT",LLLL:"dddd, D MMMM, YYYY LT"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinal:function(t){var e=t%10,i=1===~~(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+i}})})},function(t,e,i){var s,n;!function(e){s=[i(53)],n=e.apply(null,s),!(void 0!==n&&(t.exports=n))}(function(t){return t.lang("en-gb",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinal:function(t){var e=t%10,i=1===~~(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+i},week:{dow:1,doy:4}})})},function(t,e,i){var s,n;!function(e){s=[i(53)],n=e.apply(null,s),!(void 0!==n&&(t.exports=n))}(function(t){return t.lang("eo",{months:"januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aŭg_sep_okt_nov_dec".split("_"),weekdays:"Dimanĉo_Lundo_Mardo_Merkredo_Ĵaŭdo_Vendredo_Sabato".split("_"),weekdaysShort:"Dim_Lun_Mard_Merk_Ĵaŭ_Ven_Sab".split("_"),weekdaysMin:"Di_Lu_Ma_Me_Ĵa_Ve_Sa".split("_"),longDateFormat:{LT:"HH:mm",L:"YYYY-MM-DD",LL:"D[-an de] MMMM, YYYY",LLL:"D[-an de] MMMM, YYYY LT",LLLL:"dddd, [la] D[-an de] MMMM, YYYY LT"},meridiem:function(t,e,i){return t>11?i?"p.t.m.":"P.T.M.":i?"a.t.m.":"A.T.M."},calendar:{sameDay:"[Hodiaŭ je] LT",nextDay:"[Morgaŭ je] LT",nextWeek:"dddd [je] LT",lastDay:"[Hieraŭ je] LT",lastWeek:"[pasinta] dddd [je] LT",sameElse:"L"},relativeTime:{future:"je %s",past:"antaŭ %s",s:"sekundoj",m:"minuto",mm:"%d minutoj",h:"horo",hh:"%d horoj",d:"tago",dd:"%d tagoj",M:"monato",MM:"%d monatoj",y:"jaro",yy:"%d jaroj"},ordinal:"%da",week:{dow:1,doy:7}})})},function(t,e,i){var s,n;!function(e){s=[i(53)],n=e.apply(null,s),!(void 0!==n&&(t.exports=n))}(function(t){var e="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),i="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_");return t.lang("es",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(t,s){return/-MMM-/.test(s)?i[t.month()]:e[t.month()]},weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"Do_Lu_Ma_Mi_Ju_Vi_Sá".split("_"),longDateFormat:{LT:"H:mm",L:"DD/MM/YYYY",LL:"D [de] MMMM [del] YYYY",LLL:"D [de] MMMM [del] YYYY LT",LLLL:"dddd, D [de] MMMM [del] YYYY LT"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},ordinal:"%dº",week:{dow:1,doy:4}})})},function(t,e,i){var s,n;!function(e){s=[i(53)],n=e.apply(null,s),!(void 0!==n&&(t.exports=n))}(function(t){function e(t,e,i,s){var n={s:["mõne sekundi","mõni sekund","paar sekundit"],m:["ühe minuti","üks minut"],mm:[t+" minuti",t+" minutit"],h:["ühe tunni","tund aega","üks tund"],hh:[t+" tunni",t+" tundi"],d:["ühe päeva","üks päev"],M:["kuu aja","kuu aega","üks kuu"],MM:[t+" kuu",t+" kuud"],y:["ühe aasta","aasta","üks aasta"],yy:[t+" aasta",t+" aastat"]};return e?n[i][2]?n[i][2]:n[i][1]:s?n[i][0]:n[i][1]}return t.lang("et",{months:"jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"),monthsShort:"jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"),weekdays:"pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev".split("_"),weekdaysShort:"P_E_T_K_N_R_L".split("_"),weekdaysMin:"P_E_T_K_N_R_L".split("_"),longDateFormat:{LT:"H:mm",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY LT",LLLL:"dddd, D. MMMM YYYY LT"},calendar:{sameDay:"[Täna,] LT",nextDay:"[Homme,] LT",nextWeek:"[Järgmine] dddd LT",lastDay:"[Eile,] LT",lastWeek:"[Eelmine] dddd LT",sameElse:"L"},relativeTime:{future:"%s pärast",past:"%s tagasi",s:e,m:e,mm:e,h:e,hh:e,d:e,dd:"%d päeva",M:e,MM:e,y:e,yy:e},ordinal:"%d.",week:{dow:1,doy:4}})})},function(t,e,i){var s,n;!function(e){s=[i(53)],n=e.apply(null,s),!(void 0!==n&&(t.exports=n))}(function(t){return t.lang("eu",{months:"urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua".split("_"),monthsShort:"urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.".split("_"),weekdays:"igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata".split("_"),weekdaysShort:"ig._al._ar._az._og._ol._lr.".split("_"),weekdaysMin:"ig_al_ar_az_og_ol_lr".split("_"),longDateFormat:{LT:"HH:mm",L:"YYYY-MM-DD",LL:"YYYY[ko] MMMM[ren] D[a]",LLL:"YYYY[ko] MMMM[ren] D[a] LT",LLLL:"dddd, YYYY[ko] MMMM[ren] D[a] LT",l:"YYYY-M-D",ll:"YYYY[ko] MMM D[a]",lll:"YYYY[ko] MMM D[a] LT",llll:"ddd, YYYY[ko] MMM D[a] LT"},calendar:{sameDay:"[gaur] LT[etan]",nextDay:"[bihar] LT[etan]",nextWeek:"dddd LT[etan]",lastDay:"[atzo] LT[etan]",lastWeek:"[aurreko] dddd LT[etan]",sameElse:"L"},relativeTime:{future:"%s barru",past:"duela %s",s:"segundo batzuk",m:"minutu bat",mm:"%d minutu",h:"ordu bat",hh:"%d ordu",d:"egun bat",dd:"%d egun",M:"hilabete bat",MM:"%d hilabete",y:"urte bat",yy:"%d urte"},ordinal:"%d.",week:{dow:1,doy:7}})})},function(t,e,i){var s,n;!function(e){s=[i(53)],n=e.apply(null,s),!(void 0!==n&&(t.exports=n))}(function(t){var e={1:"۱",2:"۲",3:"۳",4:"۴",5:"۵",6:"۶",7:"۷",8:"۸",9:"۹",0:"۰"},i={"۱":"1","۲":"2","۳":"3","۴":"4","۵":"5","۶":"6","۷":"7","۸":"8","۹":"9","۰":"0"};return t.lang("fa",{months:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),monthsShort:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),weekdays:"یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه".split("_"),weekdaysShort:"یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه".split("_"),weekdaysMin:"ی_د_س_چ_پ_ج_ش".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},meridiem:function(t){return 12>t?"قبل از ظهر":"بعد از ظهر"},calendar:{sameDay:"[امروز ساعت] LT",nextDay:"[فردا ساعت] LT",nextWeek:"dddd [ساعت] LT",lastDay:"[دیروز ساعت] LT",lastWeek:"dddd [پیش] [ساعت] LT",sameElse:"L"},relativeTime:{future:"در %s",past:"%s پیش",s:"چندین ثانیه",m:"یک دقیقه",mm:"%d دقیقه",h:"یک ساعت",hh:"%d ساعت",d:"یک روز",dd:"%d روز",M:"یک ماه",MM:"%d ماه",y:"یک سال",yy:"%d سال"},preparse:function(t){return t.replace(/[۰-۹]/g,function(t){return i[t]}).replace(/،/g,",")},postformat:function(t){return t.replace(/\d/g,function(t){return e[t]}).replace(/,/g,"،")},ordinal:"%dم",week:{dow:6,doy:12}})})},function(t,e,i){var s,n;!function(e){s=[i(53)],n=e.apply(null,s),!(void 0!==n&&(t.exports=n))}(function(t){function e(t,e,s,n){var o="";switch(s){case"s":return n?"muutaman sekunnin":"muutama sekunti";case"m":return n?"minuutin":"minuutti";case"mm":o=n?"minuutin":"minuuttia";break;case"h":return n?"tunnin":"tunti";case"hh":o=n?"tunnin":"tuntia";break;case"d":return n?"päivän":"päivä";case"dd":o=n?"päivän":"päivää";break;case"M":return n?"kuukauden":"kuukausi";case"MM":o=n?"kuukauden":"kuukautta";break;case"y":return n?"vuoden":"vuosi";case"yy":o=n?"vuoden":"vuotta"}return o=i(t,n)+" "+o}function i(t,e){return 10>t?e?n[t]:s[t]:t}var s="nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän".split(" "),n=["nolla","yhden","kahden","kolmen","neljän","viiden","kuuden",s[7],s[8],s[9]];return t.lang("fi",{months:"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),monthsShort:"tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu".split("_"),weekdays:"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"),weekdaysShort:"su_ma_ti_ke_to_pe_la".split("_"),weekdaysMin:"su_ma_ti_ke_to_pe_la".split("_"),longDateFormat:{LT:"HH.mm",L:"DD.MM.YYYY",LL:"Do MMMM[ta] YYYY",LLL:"Do MMMM[ta] YYYY, [klo] LT",LLLL:"dddd, Do MMMM[ta] YYYY, [klo] LT",l:"D.M.YYYY",ll:"Do MMM YYYY",lll:"Do MMM YYYY, [klo] LT",llll:"ddd, Do MMM YYYY, [klo] LT"},calendar:{sameDay:"[tänään] [klo] LT",nextDay:"[huomenna] [klo] LT",nextWeek:"dddd [klo] LT",lastDay:"[eilen] [klo] LT",lastWeek:"[viime] dddd[na] [klo] LT",sameElse:"L"},relativeTime:{future:"%s päästä",past:"%s sitten",s:e,m:e,mm:e,h:e,hh:e,d:e,dd:e,M:e,MM:e,y:e,yy:e},ordinal:"%d.",week:{dow:1,doy:4}})})},function(t,e,i){var s,n;!function(e){s=[i(53)],n=e.apply(null,s),!(void 0!==n&&(t.exports=n))}(function(t){return t.lang("fo",{months:"januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur".split("_"),weekdaysShort:"sun_mán_týs_mik_hós_frí_ley".split("_"),weekdaysMin:"su_má_tý_mi_hó_fr_le".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D. MMMM, YYYY LT"},calendar:{sameDay:"[Í dag kl.] LT",nextDay:"[Í morgin kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[Í gjár kl.] LT",lastWeek:"[síðstu] dddd [kl] LT",sameElse:"L"},relativeTime:{future:"um %s",past:"%s síðani",s:"fá sekund",m:"ein minutt",mm:"%d minuttir",h:"ein tími",hh:"%d tímar",d:"ein dagur",dd:"%d dagar",M:"ein mánaði",MM:"%d mánaðir",y:"eitt ár",yy:"%d ár"},ordinal:"%d.",week:{dow:1,doy:4}})})},function(t,e,i){var s,n;!function(e){s=[i(53)],n=e.apply(null,s),!(void 0!==n&&(t.exports=n))}(function(t){return t.lang("fr-ca",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"Di_Lu_Ma_Me_Je_Ve_Sa".split("_"),longDateFormat:{LT:"HH:mm",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[Aujourd'hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},ordinal:function(t){return t+(1===t?"er":"") -}})})},function(t,e,i){var s,n;!function(e){s=[i(53)],n=e.apply(null,s),!(void 0!==n&&(t.exports=n))}(function(t){return t.lang("fr",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"Di_Lu_Ma_Me_Je_Ve_Sa".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[Aujourd'hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},ordinal:function(t){return t+(1===t?"er":"")},week:{dow:1,doy:4}})})},function(t,e,i){var s,n;!function(e){s=[i(53)],n=e.apply(null,s),!(void 0!==n&&(t.exports=n))}(function(t){return t.lang("gl",{months:"Xaneiro_Febreiro_Marzo_Abril_Maio_Xuño_Xullo_Agosto_Setembro_Outubro_Novembro_Decembro".split("_"),monthsShort:"Xan._Feb._Mar._Abr._Mai._Xuñ._Xul._Ago._Set._Out._Nov._Dec.".split("_"),weekdays:"Domingo_Luns_Martes_Mércores_Xoves_Venres_Sábado".split("_"),weekdaysShort:"Dom._Lun._Mar._Mér._Xov._Ven._Sáb.".split("_"),weekdaysMin:"Do_Lu_Ma_Mé_Xo_Ve_Sá".split("_"),longDateFormat:{LT:"H:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:function(){return"[hoxe "+(1!==this.hours()?"ás":"á")+"] LT"},nextDay:function(){return"[mañá "+(1!==this.hours()?"ás":"á")+"] LT"},nextWeek:function(){return"dddd ["+(1!==this.hours()?"ás":"a")+"] LT"},lastDay:function(){return"[onte "+(1!==this.hours()?"á":"a")+"] LT"},lastWeek:function(){return"[o] dddd [pasado "+(1!==this.hours()?"ás":"a")+"] LT"},sameElse:"L"},relativeTime:{future:function(t){return"uns segundos"===t?"nuns segundos":"en "+t},past:"hai %s",s:"uns segundos",m:"un minuto",mm:"%d minutos",h:"unha hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un ano",yy:"%d anos"},ordinal:"%dº",week:{dow:1,doy:7}})})},function(t,e,i){var s,n;!function(e){s=[i(53)],n=e.apply(null,s),!(void 0!==n&&(t.exports=n))}(function(t){return t.lang("he",{months:"ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר".split("_"),monthsShort:"ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳".split("_"),weekdays:"ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת".split("_"),weekdaysShort:"א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳".split("_"),weekdaysMin:"א_ב_ג_ד_ה_ו_ש".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D [ב]MMMM YYYY",LLL:"D [ב]MMMM YYYY LT",LLLL:"dddd, D [ב]MMMM YYYY LT",l:"D/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY LT",llll:"ddd, D MMM YYYY LT"},calendar:{sameDay:"[היום ב־]LT",nextDay:"[מחר ב־]LT",nextWeek:"dddd [בשעה] LT",lastDay:"[אתמול ב־]LT",lastWeek:"[ביום] dddd [האחרון בשעה] LT",sameElse:"L"},relativeTime:{future:"בעוד %s",past:"לפני %s",s:"מספר שניות",m:"דקה",mm:"%d דקות",h:"שעה",hh:function(t){return 2===t?"שעתיים":t+" שעות"},d:"יום",dd:function(t){return 2===t?"יומיים":t+" ימים"},M:"חודש",MM:function(t){return 2===t?"חודשיים":t+" חודשים"},y:"שנה",yy:function(t){return 2===t?"שנתיים":t+" שנים"}}})})},function(t,e,i){var s,n;!function(e){s=[i(53)],n=e.apply(null,s),!(void 0!==n&&(t.exports=n))}(function(t){var e={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},i={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};return t.lang("hi",{months:"जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर".split("_"),monthsShort:"जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.".split("_"),weekdays:"रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, LT",LLLL:"dddd, D MMMM YYYY, LT"},calendar:{sameDay:"[आज] LT",nextDay:"[कल] LT",nextWeek:"dddd, LT",lastDay:"[कल] LT",lastWeek:"[पिछले] dddd, LT",sameElse:"L"},relativeTime:{future:"%s में",past:"%s पहले",s:"कुछ ही क्षण",m:"एक मिनट",mm:"%d मिनट",h:"एक घंटा",hh:"%d घंटे",d:"एक दिन",dd:"%d दिन",M:"एक महीने",MM:"%d महीने",y:"एक वर्ष",yy:"%d वर्ष"},preparse:function(t){return t.replace(/[१२३४५६७८९०]/g,function(t){return i[t]})},postformat:function(t){return t.replace(/\d/g,function(t){return e[t]})},meridiem:function(t){return 4>t?"रात":10>t?"सुबह":17>t?"दोपहर":20>t?"शाम":"रात"},week:{dow:0,doy:6}})})},function(t,e,i){var s,n;!function(e){s=[i(53)],n=e.apply(null,s),!(void 0!==n&&(t.exports=n))}(function(t){function e(t,e,i){var s=t+" ";switch(i){case"m":return e?"jedna minuta":"jedne minute";case"mm":return s+=1===t?"minuta":2===t||3===t||4===t?"minute":"minuta";case"h":return e?"jedan sat":"jednog sata";case"hh":return s+=1===t?"sat":2===t||3===t||4===t?"sata":"sati";case"dd":return s+=1===t?"dan":"dana";case"MM":return s+=1===t?"mjesec":2===t||3===t||4===t?"mjeseca":"mjeseci";case"yy":return s+=1===t?"godina":2===t||3===t||4===t?"godine":"godina"}}return t.lang("hr",{months:"sječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_"),monthsShort:"sje._vel._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"),weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),longDateFormat:{LT:"H:mm",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY LT",LLLL:"dddd, D. MMMM YYYY LT"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",m:e,mm:e,h:e,hh:e,d:"dan",dd:e,M:"mjesec",MM:e,y:"godinu",yy:e},ordinal:"%d.",week:{dow:1,doy:7}})})},function(t,e,i){var s,n;!function(e){s=[i(53)],n=e.apply(null,s),!(void 0!==n&&(t.exports=n))}(function(t){function e(t,e,i,s){var n=t;switch(i){case"s":return s||e?"néhány másodperc":"néhány másodperce";case"m":return"egy"+(s||e?" perc":" perce");case"mm":return n+(s||e?" perc":" perce");case"h":return"egy"+(s||e?" óra":" órája");case"hh":return n+(s||e?" óra":" órája");case"d":return"egy"+(s||e?" nap":" napja");case"dd":return n+(s||e?" nap":" napja");case"M":return"egy"+(s||e?" hónap":" hónapja");case"MM":return n+(s||e?" hónap":" hónapja");case"y":return"egy"+(s||e?" év":" éve");case"yy":return n+(s||e?" év":" éve")}return""}function i(t){return(t?"":"[múlt] ")+"["+s[this.day()]+"] LT[-kor]"}var s="vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton".split(" ");return t.lang("hu",{months:"január_február_március_április_május_június_július_augusztus_szeptember_október_november_december".split("_"),monthsShort:"jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec".split("_"),weekdays:"vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat".split("_"),weekdaysShort:"vas_hét_kedd_sze_csüt_pén_szo".split("_"),weekdaysMin:"v_h_k_sze_cs_p_szo".split("_"),longDateFormat:{LT:"H:mm",L:"YYYY.MM.DD.",LL:"YYYY. MMMM D.",LLL:"YYYY. MMMM D., LT",LLLL:"YYYY. MMMM D., dddd LT"},meridiem:function(t,e,i){return 12>t?i===!0?"de":"DE":i===!0?"du":"DU"},calendar:{sameDay:"[ma] LT[-kor]",nextDay:"[holnap] LT[-kor]",nextWeek:function(){return i.call(this,!0)},lastDay:"[tegnap] LT[-kor]",lastWeek:function(){return i.call(this,!1)},sameElse:"L"},relativeTime:{future:"%s múlva",past:"%s",s:e,m:e,mm:e,h:e,hh:e,d:e,dd:e,M:e,MM:e,y:e,yy:e},ordinal:"%d.",week:{dow:1,doy:7}})})},function(t,e,i){var s,n;!function(e){s=[i(53)],n=e.apply(null,s),!(void 0!==n&&(t.exports=n))}(function(t){function e(t,e){var i={nominative:"հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր".split("_"),accusative:"հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի".split("_")},s=/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/.test(e)?"accusative":"nominative";return i[s][t.month()]}function i(t){var e="հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ".split("_");return e[t.month()]}function s(t){var e="կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ".split("_");return e[t.day()]}return t.lang("hy-am",{months:e,monthsShort:i,weekdays:s,weekdaysShort:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),weekdaysMin:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),longDateFormat:{LT:"HH:mm",L:"DD.MM.YYYY",LL:"D MMMM YYYY թ.",LLL:"D MMMM YYYY թ., LT",LLLL:"dddd, D MMMM YYYY թ., LT"},calendar:{sameDay:"[այսօր] LT",nextDay:"[վաղը] LT",lastDay:"[երեկ] LT",nextWeek:function(){return"dddd [օրը ժամը] LT"},lastWeek:function(){return"[անցած] dddd [օրը ժամը] LT"},sameElse:"L"},relativeTime:{future:"%s հետո",past:"%s առաջ",s:"մի քանի վայրկյան",m:"րոպե",mm:"%d րոպե",h:"ժամ",hh:"%d ժամ",d:"օր",dd:"%d օր",M:"ամիս",MM:"%d ամիս",y:"տարի",yy:"%d տարի"},meridiem:function(t){return 4>t?"գիշերվա":12>t?"առավոտվա":17>t?"ցերեկվա":"երեկոյան"},ordinal:function(t,e){switch(e){case"DDD":case"w":case"W":case"DDDo":return 1===t?t+"-ին":t+"-րդ";default:return t}},week:{dow:1,doy:7}})})},function(t,e,i){var s,n;!function(e){s=[i(53)],n=e.apply(null,s),!(void 0!==n&&(t.exports=n))}(function(t){return t.lang("id",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nov_Des".split("_"),weekdays:"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),weekdaysShort:"Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] LT",LLLL:"dddd, D MMMM YYYY [pukul] LT"},meridiem:function(t){return 11>t?"pagi":15>t?"siang":19>t?"sore":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Besok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kemarin pukul] LT",lastWeek:"dddd [lalu pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lalu",s:"beberapa detik",m:"semenit",mm:"%d menit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})})},function(t,e,i){var s,n;!function(e){s=[i(53)],n=e.apply(null,s),!(void 0!==n&&(t.exports=n))}(function(t){function e(t){return t%100===11?!0:t%10===1?!1:!0}function i(t,i,s,n){var o=t+" ";switch(s){case"s":return i||n?"nokkrar sekúndur":"nokkrum sekúndum";case"m":return i?"mínúta":"mínútu";case"mm":return e(t)?o+(i||n?"mínútur":"mínútum"):i?o+"mínúta":o+"mínútu";case"hh":return e(t)?o+(i||n?"klukkustundir":"klukkustundum"):o+"klukkustund";case"d":return i?"dagur":n?"dag":"degi";case"dd":return e(t)?i?o+"dagar":o+(n?"daga":"dögum"):i?o+"dagur":o+(n?"dag":"degi");case"M":return i?"mánuður":n?"mánuð":"mánuði";case"MM":return e(t)?i?o+"mánuðir":o+(n?"mánuði":"mánuðum"):i?o+"mánuður":o+(n?"mánuð":"mánuði");case"y":return i||n?"ár":"ári";case"yy":return e(t)?o+(i||n?"ár":"árum"):o+(i||n?"ár":"ári")}}return t.lang("is",{months:"janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember".split("_"),monthsShort:"jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des".split("_"),weekdays:"sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur".split("_"),weekdaysShort:"sun_mán_þri_mið_fim_fös_lau".split("_"),weekdaysMin:"Su_Má_Þr_Mi_Fi_Fö_La".split("_"),longDateFormat:{LT:"H:mm",L:"DD/MM/YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] LT",LLLL:"dddd, D. MMMM YYYY [kl.] LT"},calendar:{sameDay:"[í dag kl.] LT",nextDay:"[á morgun kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[í gær kl.] LT",lastWeek:"[síðasta] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"eftir %s",past:"fyrir %s síðan",s:i,m:i,mm:i,h:"klukkustund",hh:i,d:i,dd:i,M:i,MM:i,y:i,yy:i},ordinal:"%d.",week:{dow:1,doy:4}})})},function(t,e,i){var s,n;!function(e){s=[i(53)],n=e.apply(null,s),!(void 0!==n&&(t.exports=n))}(function(t){return t.lang("it",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"Domenica_Lunedì_Martedì_Mercoledì_Giovedì_Venerdì_Sabato".split("_"),weekdaysShort:"Dom_Lun_Mar_Mer_Gio_Ven_Sab".split("_"),weekdaysMin:"D_L_Ma_Me_G_V_S".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[Oggi alle] LT",nextDay:"[Domani alle] LT",nextWeek:"dddd [alle] LT",lastDay:"[Ieri alle] LT",lastWeek:"[lo scorso] dddd [alle] LT",sameElse:"L"},relativeTime:{future:function(t){return(/^[0-9].+$/.test(t)?"tra":"in")+" "+t},past:"%s fa",s:"alcuni secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},ordinal:"%dº",week:{dow:1,doy:4}})})},function(t,e,i){var s,n;!function(e){s=[i(53)],n=e.apply(null,s),!(void 0!==n&&(t.exports=n))}(function(t){return t.lang("ja",{months:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日".split("_"),weekdaysShort:"日_月_火_水_木_金_土".split("_"),weekdaysMin:"日_月_火_水_木_金_土".split("_"),longDateFormat:{LT:"Ah時m分",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日LT",LLLL:"YYYY年M月D日LT dddd"},meridiem:function(t){return 12>t?"午前":"午後"},calendar:{sameDay:"[今日] LT",nextDay:"[明日] LT",nextWeek:"[来週]dddd LT",lastDay:"[昨日] LT",lastWeek:"[前週]dddd LT",sameElse:"L"},relativeTime:{future:"%s後",past:"%s前",s:"数秒",m:"1分",mm:"%d分",h:"1時間",hh:"%d時間",d:"1日",dd:"%d日",M:"1ヶ月",MM:"%dヶ月",y:"1年",yy:"%d年"}})})},function(t,e,i){var s,n;!function(e){s=[i(53)],n=e.apply(null,s),!(void 0!==n&&(t.exports=n))}(function(t){function e(t,e){var i={nominative:"იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი".split("_"),accusative:"იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს".split("_")},s=/D[oD] *MMMM?/.test(e)?"accusative":"nominative";return i[s][t.month()]}function i(t,e){var i={nominative:"კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი".split("_"),accusative:"კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს".split("_")},s=/(წინა|შემდეგ)/.test(e)?"accusative":"nominative";return i[s][t.day()]}return t.lang("ka",{months:e,monthsShort:"იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ".split("_"),weekdays:i,weekdaysShort:"კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ".split("_"),weekdaysMin:"კვ_ორ_სა_ოთ_ხუ_პა_შა".split("_"),longDateFormat:{LT:"h:mm A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[დღეს] LT[-ზე]",nextDay:"[ხვალ] LT[-ზე]",lastDay:"[გუშინ] LT[-ზე]",nextWeek:"[შემდეგ] dddd LT[-ზე]",lastWeek:"[წინა] dddd LT-ზე",sameElse:"L"},relativeTime:{future:function(t){return/(წამი|წუთი|საათი|წელი)/.test(t)?t.replace(/ი$/,"ში"):t+"ში"},past:function(t){return/(წამი|წუთი|საათი|დღე|თვე)/.test(t)?t.replace(/(ი|ე)$/,"ის წინ"):/წელი/.test(t)?t.replace(/წელი$/,"წლის წინ"):void 0},s:"რამდენიმე წამი",m:"წუთი",mm:"%d წუთი",h:"საათი",hh:"%d საათი",d:"დღე",dd:"%d დღე",M:"თვე",MM:"%d თვე",y:"წელი",yy:"%d წელი"},ordinal:function(t){return 0===t?t:1===t?t+"-ლი":20>t||100>=t&&t%20===0||t%100===0?"მე-"+t:t+"-ე"},week:{dow:1,doy:7}})})},function(t,e,i){var s,n;!function(e){s=[i(53)],n=e.apply(null,s),!(void 0!==n&&(t.exports=n))}(function(t){return t.lang("km",{months:"មករា_កុម្ភៈ_មិនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),monthsShort:"មករា_កុម្ភៈ_មិនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),weekdays:"អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍".split("_"),weekdaysShort:"អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍".split("_"),weekdaysMin:"អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[ថ្ងៃនៈ ម៉ោង] LT",nextDay:"[ស្អែក ម៉ោង] LT",nextWeek:"dddd [ម៉ោង] LT",lastDay:"[ម្សិលមិញ ម៉ោង] LT",lastWeek:"dddd [សប្តាហ៍មុន] [ម៉ោង] LT",sameElse:"L"},relativeTime:{future:"%sទៀត",past:"%sមុន",s:"ប៉ុន្មានវិនាទី",m:"មួយនាទី",mm:"%d នាទី",h:"មួយម៉ោង",hh:"%d ម៉ោង",d:"មួយថ្ងៃ",dd:"%d ថ្ងៃ",M:"មួយខែ",MM:"%d ខែ",y:"មួយឆ្នាំ",yy:"%d ឆ្នាំ"},week:{dow:1,doy:4}})})},function(t,e,i){var s,n;!function(e){s=[i(53)],n=e.apply(null,s),!(void 0!==n&&(t.exports=n))}(function(t){return t.lang("ko",{months:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),monthsShort:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),weekdays:"일요일_월요일_화요일_수요일_목요일_금요일_토요일".split("_"),weekdaysShort:"일_월_화_수_목_금_토".split("_"),weekdaysMin:"일_월_화_수_목_금_토".split("_"),longDateFormat:{LT:"A h시 mm분",L:"YYYY.MM.DD",LL:"YYYY년 MMMM D일",LLL:"YYYY년 MMMM D일 LT",LLLL:"YYYY년 MMMM D일 dddd LT"},meridiem:function(t){return 12>t?"오전":"오후"},calendar:{sameDay:"오늘 LT",nextDay:"내일 LT",nextWeek:"dddd LT",lastDay:"어제 LT",lastWeek:"지난주 dddd LT",sameElse:"L"},relativeTime:{future:"%s 후",past:"%s 전",s:"몇초",ss:"%d초",m:"일분",mm:"%d분",h:"한시간",hh:"%d시간",d:"하루",dd:"%d일",M:"한달",MM:"%d달",y:"일년",yy:"%d년"},ordinal:"%d일",meridiemParse:/(오전|오후)/,isPM:function(t){return"오후"===t}})})},function(t,e,i){var s,n;!function(e){s=[i(53)],n=e.apply(null,s),!(void 0!==n&&(t.exports=n))}(function(t){function e(t,e,i){var s={m:["eng Minutt","enger Minutt"],h:["eng Stonn","enger Stonn"],d:["een Dag","engem Dag"],dd:[t+" Deeg",t+" Deeg"],M:["ee Mount","engem Mount"],MM:[t+" Méint",t+" Méint"],y:["ee Joer","engem Joer"],yy:[t+" Joer",t+" Joer"]};return e?s[i][0]:s[i][1]}function i(t){var e=t.substr(0,t.indexOf(" "));return r(e)?"a "+t:"an "+t}function s(t){var e=t.substr(0,t.indexOf(" "));return r(e)?"viru "+t:"virun "+t}function n(){var t=this.format("d");return o(t)?"[Leschte] dddd [um] LT":"[Leschten] dddd [um] LT"}function o(t){switch(t=parseInt(t,10)){case 0:case 1:case 3:case 5:case 6:return!0;default:return!1}}function r(t){if(t=parseInt(t,10),isNaN(t))return!1;if(0>t)return!0;if(10>t)return t>=4&&7>=t?!0:!1;if(100>t){var e=t%10,i=t/10;return r(0===e?i:e)}if(1e4>t){for(;t>=10;)t/=10;return r(t)}return t/=1e3,r(t)}return t.lang("lb",{months:"Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),weekdays:"Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg".split("_"),weekdaysShort:"So._Mé._Dë._Më._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mé_Dë_Më_Do_Fr_Sa".split("_"),longDateFormat:{LT:"H:mm [Auer]",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY LT",LLLL:"dddd, D. MMMM YYYY LT"},calendar:{sameDay:"[Haut um] LT",sameElse:"L",nextDay:"[Muer um] LT",nextWeek:"dddd [um] LT",lastDay:"[Gëschter um] LT",lastWeek:n},relativeTime:{future:i,past:s,s:"e puer Sekonnen",m:e,mm:"%d Minutten",h:e,hh:"%d Stonnen",d:e,dd:e,M:e,MM:e,y:e,yy:e},ordinal:"%d.",week:{dow:1,doy:4}})})},function(t,e,i){var s,n;!function(e){s=[i(53)],n=e.apply(null,s),!(void 0!==n&&(t.exports=n))}(function(t){function e(t,e,i,s){return e?"kelios sekundės":s?"kelių sekundžių":"kelias sekundes"}function i(t,e,i,s){return e?n(i)[0]:s?n(i)[1]:n(i)[2]}function s(t){return t%10===0||t>10&&20>t}function n(t){return a[t].split("_")}function o(t,e,o,r){var a=t+" ";return 1===t?a+i(t,e,o[0],r):e?a+(s(t)?n(o)[1]:n(o)[0]):r?a+n(o)[1]:a+(s(t)?n(o)[1]:n(o)[2])}function r(t,e){var i=-1===e.indexOf("dddd HH:mm"),s=h[t.day()];return i?s:s.substring(0,s.length-2)+"į"}var a={m:"minutė_minutės_minutę",mm:"minutės_minučių_minutes",h:"valanda_valandos_valandą",hh:"valandos_valandų_valandas",d:"diena_dienos_dieną",dd:"dienos_dienų_dienas",M:"mėnuo_mėnesio_mėnesį",MM:"mėnesiai_mėnesių_mėnesius",y:"metai_metų_metus",yy:"metai_metų_metus"},h="sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis".split("_");return t.lang("lt",{months:"sausio_vasario_kovo_balandžio_gegužės_biržėlio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio".split("_"),monthsShort:"sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"),weekdays:r,weekdaysShort:"Sek_Pir_Ant_Tre_Ket_Pen_Šeš".split("_"),weekdaysMin:"S_P_A_T_K_Pn_Š".split("_"),longDateFormat:{LT:"HH:mm",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], LT [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, LT [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], LT [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, LT [val.]"},calendar:{sameDay:"[Šiandien] LT",nextDay:"[Rytoj] LT",nextWeek:"dddd LT",lastDay:"[Vakar] LT",lastWeek:"[Praėjusį] dddd LT",sameElse:"L"},relativeTime:{future:"po %s",past:"prieš %s",s:e,m:i,mm:o,h:i,hh:o,d:i,dd:o,M:i,MM:o,y:i,yy:o},ordinal:function(t){return t+"-oji"},week:{dow:1,doy:4}})})},function(t,e,i){var s,n;!function(e){s=[i(53)],n=e.apply(null,s),!(void 0!==n&&(t.exports=n))}(function(t){function e(t,e,i){var s=t.split("_");return i?e%10===1&&11!==e?s[2]:s[3]:e%10===1&&11!==e?s[0]:s[1]}function i(t,i,n){return t+" "+e(s[n],t,i)}var s={mm:"minūti_minūtes_minūte_minūtes",hh:"stundu_stundas_stunda_stundas",dd:"dienu_dienas_diena_dienas",MM:"mēnesi_mēnešus_mēnesis_mēneši",yy:"gadu_gadus_gads_gadi"};return t.lang("lv",{months:"janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris".split("_"),monthsShort:"jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec".split("_"),weekdays:"svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena".split("_"),weekdaysShort:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysMin:"Sv_P_O_T_C_Pk_S".split("_"),longDateFormat:{LT:"HH:mm",L:"DD.MM.YYYY",LL:"YYYY. [gada] D. MMMM",LLL:"YYYY. [gada] D. MMMM, LT",LLLL:"YYYY. [gada] D. MMMM, dddd, LT"},calendar:{sameDay:"[Šodien pulksten] LT",nextDay:"[Rīt pulksten] LT",nextWeek:"dddd [pulksten] LT",lastDay:"[Vakar pulksten] LT",lastWeek:"[Pagājušā] dddd [pulksten] LT",sameElse:"L"},relativeTime:{future:"%s vēlāk",past:"%s agrāk",s:"dažas sekundes",m:"minūti",mm:i,h:"stundu",hh:i,d:"dienu",dd:i,M:"mēnesi",MM:i,y:"gadu",yy:i},ordinal:"%d.",week:{dow:1,doy:4}})})},function(t,e,i){var s,n;!function(e){s=[i(53)],n=e.apply(null,s),!(void 0!==n&&(t.exports=n))}(function(t){return t.lang("mk",{months:"јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември".split("_"),monthsShort:"јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек".split("_"),weekdays:"недела_понеделник_вторник_среда_четврток_петок_сабота".split("_"),weekdaysShort:"нед_пон_вто_сре_чет_пет_саб".split("_"),weekdaysMin:"нe_пo_вт_ср_че_пе_сa".split("_"),longDateFormat:{LT:"H:mm",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[Денес во] LT",nextDay:"[Утре во] LT",nextWeek:"dddd [во] LT",lastDay:"[Вчера во] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[Во изминатата] dddd [во] LT";case 1:case 2:case 4:case 5:return"[Во изминатиот] dddd [во] LT"}},sameElse:"L"},relativeTime:{future:"после %s",past:"пред %s",s:"неколку секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дена",M:"месец",MM:"%d месеци",y:"година",yy:"%d години"},ordinal:function(t){var e=t%10,i=t%100;return 0===t?t+"-ев":0===i?t+"-ен":i>10&&20>i?t+"-ти":1===e?t+"-ви":2===e?t+"-ри":7===e||8===e?t+"-ми":t+"-ти"},week:{dow:1,doy:7}})})},function(t,e,i){var s,n;!function(e){s=[i(53)],n=e.apply(null,s),!(void 0!==n&&(t.exports=n))}(function(t){return t.lang("ml",{months:"ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ".split("_"),monthsShort:"ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.".split("_"),weekdays:"ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച".split("_"),weekdaysShort:"ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി".split("_"),weekdaysMin:"ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ".split("_"),longDateFormat:{LT:"A h:mm -നു",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, LT",LLLL:"dddd, D MMMM YYYY, LT"},calendar:{sameDay:"[ഇന്ന്] LT",nextDay:"[നാളെ] LT",nextWeek:"dddd, LT",lastDay:"[ഇന്നലെ] LT",lastWeek:"[കഴിഞ്ഞ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s കഴിഞ്ഞ്",past:"%s മുൻപ്",s:"അൽപ നിമിഷങ്ങൾ",m:"ഒരു മിനിറ്റ്",mm:"%d മിനിറ്റ്",h:"ഒരു മണിക്കൂർ",hh:"%d മണിക്കൂർ",d:"ഒരു ദിവസം",dd:"%d ദിവസം",M:"ഒരു മാസം",MM:"%d മാസം",y:"ഒരു വർഷം",yy:"%d വർഷം"},meridiem:function(t){return 4>t?"രാത്രി":12>t?"രാവിലെ":17>t?"ഉച്ച കഴിഞ്ഞ്":20>t?"വൈകുന്നേരം":"രാത്രി"}})})},function(t,e,i){var s,n;!function(e){s=[i(53)],n=e.apply(null,s),!(void 0!==n&&(t.exports=n))}(function(t){var e={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},i={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};return t.lang("mr",{months:"जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर".split("_"),monthsShort:"जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.".split("_"),weekdays:"रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm वाजता",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, LT",LLLL:"dddd, D MMMM YYYY, LT"},calendar:{sameDay:"[आज] LT",nextDay:"[उद्या] LT",nextWeek:"dddd, LT",lastDay:"[काल] LT",lastWeek:"[मागील] dddd, LT",sameElse:"L"},relativeTime:{future:"%s नंतर",past:"%s पूर्वी",s:"सेकंद",m:"एक मिनिट",mm:"%d मिनिटे",h:"एक तास",hh:"%d तास",d:"एक दिवस",dd:"%d दिवस",M:"एक महिना",MM:"%d महिने",y:"एक वर्ष",yy:"%d वर्षे"},preparse:function(t){return t.replace(/[१२३४५६७८९०]/g,function(t){return i[t]})},postformat:function(t){return t.replace(/\d/g,function(t){return e[t]})},meridiem:function(t){return 4>t?"रात्री":10>t?"सकाळी":17>t?"दुपारी":20>t?"सायंकाळी":"रात्री"},week:{dow:0,doy:6}})})},function(t,e,i){var s,n;!function(e){s=[i(53)],n=e.apply(null,s),!(void 0!==n&&(t.exports=n))}(function(t){return t.lang("ms-my",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] LT",LLLL:"dddd, D MMMM YYYY [pukul] LT"},meridiem:function(t){return 11>t?"pagi":15>t?"tengahari":19>t?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})})},function(t,e,i){var s,n;!function(e){s=[i(53)],n=e.apply(null,s),!(void 0!==n&&(t.exports=n))}(function(t){return t.lang("nb",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.".split("_"),weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"sø._ma._ti._on._to._fr._lø.".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),longDateFormat:{LT:"H.mm",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] LT",LLLL:"dddd D. MMMM YYYY [kl.] LT"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[forrige] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"for %s siden",s:"noen sekunder",m:"ett minutt",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dager",M:"en måned",MM:"%d måneder",y:"ett år",yy:"%d år"},ordinal:"%d.",week:{dow:1,doy:4}})})},function(t,e,i){var s,n;!function(e){s=[i(53)],n=e.apply(null,s),!(void 0!==n&&(t.exports=n))}(function(t){var e={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},i={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};return t.lang("ne",{months:"जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर".split("_"),monthsShort:"जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.".split("_"),weekdays:"आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार".split("_"),weekdaysShort:"आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.".split("_"),weekdaysMin:"आइ._सो._मङ्_बु._बि._शु._श.".split("_"),longDateFormat:{LT:"Aको h:mm बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, LT",LLLL:"dddd, D MMMM YYYY, LT"},preparse:function(t){return t.replace(/[१२३४५६७८९०]/g,function(t){return i[t]})},postformat:function(t){return t.replace(/\d/g,function(t){return e[t]})},meridiem:function(t){return 3>t?"राती":10>t?"बिहान":15>t?"दिउँसो":18>t?"बेलुका":20>t?"साँझ":"राती"},calendar:{sameDay:"[आज] LT",nextDay:"[भोली] LT",nextWeek:"[आउँदो] dddd[,] LT",lastDay:"[हिजो] LT",lastWeek:"[गएको] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%sमा",past:"%s अगाडी",s:"केही समय",m:"एक मिनेट",mm:"%d मिनेट",h:"एक घण्टा",hh:"%d घण्टा",d:"एक दिन",dd:"%d दिन",M:"एक महिना",MM:"%d महिना",y:"एक बर्ष",yy:"%d बर्ष"},week:{dow:1,doy:7}})})},function(t,e,i){var s,n;!function(e){s=[i(53)],n=e.apply(null,s),!(void 0!==n&&(t.exports=n))}(function(t){var e="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),i="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_");return t.lang("nl",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(t,s){return/-MMM-/.test(s)?i[t.month()]:e[t.month()]},weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"Zo_Ma_Di_Wo_Do_Vr_Za".split("_"),longDateFormat:{LT:"HH:mm",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},ordinal:function(t){return t+(1===t||8===t||t>=20?"ste":"de")},week:{dow:1,doy:4}})})},function(t,e,i){var s,n;!function(e){s=[i(53)],n=e.apply(null,s),!(void 0!==n&&(t.exports=n))}(function(t){return t.lang("nn",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"),weekdaysShort:"sun_mån_tys_ons_tor_fre_lau".split("_"),weekdaysMin:"su_må_ty_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[I dag klokka] LT",nextDay:"[I morgon klokka] LT",nextWeek:"dddd [klokka] LT",lastDay:"[I går klokka] LT",lastWeek:"[Føregåande] dddd [klokka] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"for %s sidan",s:"nokre sekund",m:"eit minutt",mm:"%d minutt",h:"ein time",hh:"%d timar",d:"ein dag",dd:"%d dagar",M:"ein månad",MM:"%d månader",y:"eit år",yy:"%d år"},ordinal:"%d.",week:{dow:1,doy:4}}) -})},function(t,e,i){var s,n;!function(e){s=[i(53)],n=e.apply(null,s),!(void 0!==n&&(t.exports=n))}(function(t){function e(t){return 5>t%10&&t%10>1&&~~(t/10)%10!==1}function i(t,i,s){var n=t+" ";switch(s){case"m":return i?"minuta":"minutę";case"mm":return n+(e(t)?"minuty":"minut");case"h":return i?"godzina":"godzinę";case"hh":return n+(e(t)?"godziny":"godzin");case"MM":return n+(e(t)?"miesiące":"miesięcy");case"yy":return n+(e(t)?"lata":"lat")}}var s="styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień".split("_"),n="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia".split("_");return t.lang("pl",{months:function(t,e){return/D MMMM/.test(e)?n[t.month()]:s[t.month()]},monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru".split("_"),weekdays:"niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota".split("_"),weekdaysShort:"nie_pon_wt_śr_czw_pt_sb".split("_"),weekdaysMin:"N_Pn_Wt_Śr_Cz_Pt_So".split("_"),longDateFormat:{LT:"HH:mm",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[Dziś o] LT",nextDay:"[Jutro o] LT",nextWeek:"[W] dddd [o] LT",lastDay:"[Wczoraj o] LT",lastWeek:function(){switch(this.day()){case 0:return"[W zeszłą niedzielę o] LT";case 3:return"[W zeszłą środę o] LT";case 6:return"[W zeszłą sobotę o] LT";default:return"[W zeszły] dddd [o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",m:i,mm:i,h:i,hh:i,d:"1 dzień",dd:"%d dni",M:"miesiąc",MM:i,y:"rok",yy:i},ordinal:"%d.",week:{dow:1,doy:4}})})},function(t,e,i){var s,n;!function(e){s=[i(53)],n=e.apply(null,s),!(void 0!==n&&(t.exports=n))}(function(t){return t.lang("pt-br",{months:"janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"),monthsShort:"jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"),weekdays:"domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado".split("_"),weekdaysShort:"dom_seg_ter_qua_qui_sex_sáb".split("_"),weekdaysMin:"dom_2ª_3ª_4ª_5ª_6ª_sáb".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY [às] LT",LLLL:"dddd, D [de] MMMM [de] YYYY [às] LT"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"%s atrás",s:"segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},ordinal:"%dº"})})},function(t,e,i){var s,n;!function(e){s=[i(53)],n=e.apply(null,s),!(void 0!==n&&(t.exports=n))}(function(t){return t.lang("pt",{months:"janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"),monthsShort:"jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"),weekdays:"domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado".split("_"),weekdaysShort:"dom_seg_ter_qua_qui_sex_sáb".split("_"),weekdaysMin:"dom_2ª_3ª_4ª_5ª_6ª_sáb".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY LT",LLLL:"dddd, D [de] MMMM [de] YYYY LT"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},ordinal:"%dº",week:{dow:1,doy:4}})})},function(t,e,i){var s,n;!function(e){s=[i(53)],n=e.apply(null,s),!(void 0!==n&&(t.exports=n))}(function(t){function e(t,e,i){var s={mm:"minute",hh:"ore",dd:"zile",MM:"luni",yy:"ani"},n=" ";return(t%100>=20||t>=100&&t%100===0)&&(n=" de "),t+n+s[i]}return t.lang("ro",{months:"ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie".split("_"),monthsShort:"ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.".split("_"),weekdays:"duminică_luni_marți_miercuri_joi_vineri_sâmbătă".split("_"),weekdaysShort:"Dum_Lun_Mar_Mie_Joi_Vin_Sâm".split("_"),weekdaysMin:"Du_Lu_Ma_Mi_Jo_Vi_Sâ".split("_"),longDateFormat:{LT:"H:mm",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[azi la] LT",nextDay:"[mâine la] LT",nextWeek:"dddd [la] LT",lastDay:"[ieri la] LT",lastWeek:"[fosta] dddd [la] LT",sameElse:"L"},relativeTime:{future:"peste %s",past:"%s în urmă",s:"câteva secunde",m:"un minut",mm:e,h:"o oră",hh:e,d:"o zi",dd:e,M:"o lună",MM:e,y:"un an",yy:e},week:{dow:1,doy:7}})})},function(t,e,i){var s,n;!function(e){s=[i(53)],n=e.apply(null,s),!(void 0!==n&&(t.exports=n))}(function(t){function e(t,e){var i=t.split("_");return e%10===1&&e%100!==11?i[0]:e%10>=2&&4>=e%10&&(10>e%100||e%100>=20)?i[1]:i[2]}function i(t,i,s){var n={mm:i?"минута_минуты_минут":"минуту_минуты_минут",hh:"час_часа_часов",dd:"день_дня_дней",MM:"месяц_месяца_месяцев",yy:"год_года_лет"};return"m"===s?i?"минута":"минуту":t+" "+e(n[s],+t)}function s(t,e){var i={nominative:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_"),accusative:"января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря".split("_")},s=/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/.test(e)?"accusative":"nominative";return i[s][t.month()]}function n(t,e){var i={nominative:"янв_фев_мар_апр_май_июнь_июль_авг_сен_окт_ноя_дек".split("_"),accusative:"янв_фев_мар_апр_мая_июня_июля_авг_сен_окт_ноя_дек".split("_")},s=/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/.test(e)?"accusative":"nominative";return i[s][t.month()]}function o(t,e){var i={nominative:"воскресенье_понедельник_вторник_среда_четверг_пятница_суббота".split("_"),accusative:"воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу".split("_")},s=/\[ ?[Вв] ?(?:прошлую|следующую)? ?\] ?dddd/.test(e)?"accusative":"nominative";return i[s][t.day()]}return t.lang("ru",{months:s,monthsShort:n,weekdays:o,weekdaysShort:"вс_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"вс_пн_вт_ср_чт_пт_сб".split("_"),monthsParse:[/^янв/i,/^фев/i,/^мар/i,/^апр/i,/^ма[й|я]/i,/^июн/i,/^июл/i,/^авг/i,/^сен/i,/^окт/i,/^ноя/i,/^дек/i],longDateFormat:{LT:"HH:mm",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., LT",LLLL:"dddd, D MMMM YYYY г., LT"},calendar:{sameDay:"[Сегодня в] LT",nextDay:"[Завтра в] LT",lastDay:"[Вчера в] LT",nextWeek:function(){return 2===this.day()?"[Во] dddd [в] LT":"[В] dddd [в] LT"},lastWeek:function(){switch(this.day()){case 0:return"[В прошлое] dddd [в] LT";case 1:case 2:case 4:return"[В прошлый] dddd [в] LT";case 3:case 5:case 6:return"[В прошлую] dddd [в] LT"}},sameElse:"L"},relativeTime:{future:"через %s",past:"%s назад",s:"несколько секунд",m:i,mm:i,h:"час",hh:i,d:"день",dd:i,M:"месяц",MM:i,y:"год",yy:i},meridiemParse:/ночи|утра|дня|вечера/i,isPM:function(t){return/^(дня|вечера)$/.test(t)},meridiem:function(t){return 4>t?"ночи":12>t?"утра":17>t?"дня":"вечера"},ordinal:function(t,e){switch(e){case"M":case"d":case"DDD":return t+"-й";case"D":return t+"-го";case"w":case"W":return t+"-я";default:return t}},week:{dow:1,doy:7}})})},function(t,e,i){var s,n;!function(e){s=[i(53)],n=e.apply(null,s),!(void 0!==n&&(t.exports=n))}(function(t){function e(t){return t>1&&5>t}function i(t,i,s,n){var o=t+" ";switch(s){case"s":return i||n?"pár sekúnd":"pár sekundami";case"m":return i?"minúta":n?"minútu":"minútou";case"mm":return i||n?o+(e(t)?"minúty":"minút"):o+"minútami";case"h":return i?"hodina":n?"hodinu":"hodinou";case"hh":return i||n?o+(e(t)?"hodiny":"hodín"):o+"hodinami";case"d":return i||n?"deň":"dňom";case"dd":return i||n?o+(e(t)?"dni":"dní"):o+"dňami";case"M":return i||n?"mesiac":"mesiacom";case"MM":return i||n?o+(e(t)?"mesiace":"mesiacov"):o+"mesiacmi";case"y":return i||n?"rok":"rokom";case"yy":return i||n?o+(e(t)?"roky":"rokov"):o+"rokmi"}}var s="január_február_marec_apríl_máj_jún_júl_august_september_október_november_december".split("_"),n="jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec".split("_");return t.lang("sk",{months:s,monthsShort:n,monthsParse:function(t,e){var i,s=[];for(i=0;12>i;i++)s[i]=new RegExp("^"+t[i]+"$|^"+e[i]+"$","i");return s}(s,n),weekdays:"nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota".split("_"),weekdaysShort:"ne_po_ut_st_št_pi_so".split("_"),weekdaysMin:"ne_po_ut_st_št_pi_so".split("_"),longDateFormat:{LT:"H:mm",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY LT",LLLL:"dddd D. MMMM YYYY LT"},calendar:{sameDay:"[dnes o] LT",nextDay:"[zajtra o] LT",nextWeek:function(){switch(this.day()){case 0:return"[v nedeľu o] LT";case 1:case 2:return"[v] dddd [o] LT";case 3:return"[v stredu o] LT";case 4:return"[vo štvrtok o] LT";case 5:return"[v piatok o] LT";case 6:return"[v sobotu o] LT"}},lastDay:"[včera o] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulú nedeľu o] LT";case 1:case 2:return"[minulý] dddd [o] LT";case 3:return"[minulú stredu o] LT";case 4:case 5:return"[minulý] dddd [o] LT";case 6:return"[minulú sobotu o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"pred %s",s:i,m:i,mm:i,h:i,hh:i,d:i,dd:i,M:i,MM:i,y:i,yy:i},ordinal:"%d.",week:{dow:1,doy:4}})})},function(t,e,i){var s,n;!function(e){s=[i(53)],n=e.apply(null,s),!(void 0!==n&&(t.exports=n))}(function(t){function e(t,e,i){var s=t+" ";switch(i){case"m":return e?"ena minuta":"eno minuto";case"mm":return s+=1===t?"minuta":2===t?"minuti":3===t||4===t?"minute":"minut";case"h":return e?"ena ura":"eno uro";case"hh":return s+=1===t?"ura":2===t?"uri":3===t||4===t?"ure":"ur";case"dd":return s+=1===t?"dan":"dni";case"MM":return s+=1===t?"mesec":2===t?"meseca":3===t||4===t?"mesece":"mesecev";case"yy":return s+=1===t?"leto":2===t?"leti":3===t||4===t?"leta":"let"}}return t.lang("sl",{months:"januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),weekdays:"nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota".split("_"),weekdaysShort:"ned._pon._tor._sre._čet._pet._sob.".split("_"),weekdaysMin:"ne_po_to_sr_če_pe_so".split("_"),longDateFormat:{LT:"H:mm",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY LT",LLLL:"dddd, D. MMMM YYYY LT"},calendar:{sameDay:"[danes ob] LT",nextDay:"[jutri ob] LT",nextWeek:function(){switch(this.day()){case 0:return"[v] [nedeljo] [ob] LT";case 3:return"[v] [sredo] [ob] LT";case 6:return"[v] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[v] dddd [ob] LT"}},lastDay:"[včeraj ob] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[prejšnja] dddd [ob] LT";case 1:case 2:case 4:case 5:return"[prejšnji] dddd [ob] LT"}},sameElse:"L"},relativeTime:{future:"čez %s",past:"%s nazaj",s:"nekaj sekund",m:e,mm:e,h:e,hh:e,d:"en dan",dd:e,M:"en mesec",MM:e,y:"eno leto",yy:e},ordinal:"%d.",week:{dow:1,doy:7}})})},function(t,e,i){var s,n;!function(e){s=[i(53)],n=e.apply(null,s),!(void 0!==n&&(t.exports=n))}(function(t){return t.lang("sq",{months:"Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor".split("_"),monthsShort:"Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj".split("_"),weekdays:"E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë".split("_"),weekdaysShort:"Die_Hën_Mar_Mër_Enj_Pre_Sht".split("_"),weekdaysMin:"D_H_Ma_Më_E_P_Sh".split("_"),meridiem:function(t){return 12>t?"PD":"MD"},longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[Sot në] LT",nextDay:"[Nesër në] LT",nextWeek:"dddd [në] LT",lastDay:"[Dje në] LT",lastWeek:"dddd [e kaluar në] LT",sameElse:"L"},relativeTime:{future:"në %s",past:"%s më parë",s:"disa sekonda",m:"një minutë",mm:"%d minuta",h:"një orë",hh:"%d orë",d:"një ditë",dd:"%d ditë",M:"një muaj",MM:"%d muaj",y:"një vit",yy:"%d vite"},ordinal:"%d.",week:{dow:1,doy:4}})})},function(t,e,i){var s,n;!function(e){s=[i(53)],n=e.apply(null,s),!(void 0!==n&&(t.exports=n))}(function(t){var e={words:{m:["један минут","једне минуте"],mm:["минут","минуте","минута"],h:["један сат","једног сата"],hh:["сат","сата","сати"],dd:["дан","дана","дана"],MM:["месец","месеца","месеци"],yy:["година","године","година"]},correctGrammaticalCase:function(t,e){return 1===t?e[0]:t>=2&&4>=t?e[1]:e[2]},translate:function(t,i,s){var n=e.words[s];return 1===s.length?i?n[0]:n[1]:t+" "+e.correctGrammaticalCase(t,n)}};return t.lang("sr-cyrl",{months:["јануар","фебруар","март","април","мај","јун","јул","август","септембар","октобар","новембар","децембар"],monthsShort:["јан.","феб.","мар.","апр.","мај","јун","јул","авг.","сеп.","окт.","нов.","дец."],weekdays:["недеља","понедељак","уторак","среда","четвртак","петак","субота"],weekdaysShort:["нед.","пон.","уто.","сре.","чет.","пет.","суб."],weekdaysMin:["не","по","ут","ср","че","пе","су"],longDateFormat:{LT:"H:mm",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY LT",LLLL:"dddd, D. MMMM YYYY LT"},calendar:{sameDay:"[данас у] LT",nextDay:"[сутра у] LT",nextWeek:function(){switch(this.day()){case 0:return"[у] [недељу] [у] LT";case 3:return"[у] [среду] [у] LT";case 6:return"[у] [суботу] [у] LT";case 1:case 2:case 4:case 5:return"[у] dddd [у] LT"}},lastDay:"[јуче у] LT",lastWeek:function(){var t=["[прошле] [недеље] [у] LT","[прошлог] [понедељка] [у] LT","[прошлог] [уторка] [у] LT","[прошле] [среде] [у] LT","[прошлог] [четвртка] [у] LT","[прошлог] [петка] [у] LT","[прошле] [суботе] [у] LT"];return t[this.day()]},sameElse:"L"},relativeTime:{future:"за %s",past:"пре %s",s:"неколико секунди",m:e.translate,mm:e.translate,h:e.translate,hh:e.translate,d:"дан",dd:e.translate,M:"месец",MM:e.translate,y:"годину",yy:e.translate},ordinal:"%d.",week:{dow:1,doy:7}})})},function(t,e,i){var s,n;!function(e){s=[i(53)],n=e.apply(null,s),!(void 0!==n&&(t.exports=n))}(function(t){var e={words:{m:["jedan minut","jedne minute"],mm:["minut","minute","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mesec","meseca","meseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(t,e){return 1===t?e[0]:t>=2&&4>=t?e[1]:e[2]},translate:function(t,i,s){var n=e.words[s];return 1===s.length?i?n[0]:n[1]:t+" "+e.correctGrammaticalCase(t,n)}};return t.lang("sr",{months:["januar","februar","mart","april","maj","jun","jul","avgust","septembar","oktobar","novembar","decembar"],monthsShort:["jan.","feb.","mar.","apr.","maj","jun","jul","avg.","sep.","okt.","nov.","dec."],weekdays:["nedelja","ponedeljak","utorak","sreda","četvrtak","petak","subota"],weekdaysShort:["ned.","pon.","uto.","sre.","čet.","pet.","sub."],weekdaysMin:["ne","po","ut","sr","če","pe","su"],longDateFormat:{LT:"H:mm",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY LT",LLLL:"dddd, D. MMMM YYYY LT"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedelju] [u] LT";case 3:return"[u] [sredu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){var t=["[prošle] [nedelje] [u] LT","[prošlog] [ponedeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"];return t[this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"pre %s",s:"nekoliko sekundi",m:e.translate,mm:e.translate,h:e.translate,hh:e.translate,d:"dan",dd:e.translate,M:"mesec",MM:e.translate,y:"godinu",yy:e.translate},ordinal:"%d.",week:{dow:1,doy:7}})})},function(t,e,i){var s,n;!function(e){s=[i(53)],n=e.apply(null,s),!(void 0!==n&&(t.exports=n))}(function(t){return t.lang("sv",{months:"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag".split("_"),weekdaysShort:"sön_mån_tis_ons_tor_fre_lör".split("_"),weekdaysMin:"sö_må_ti_on_to_fr_lö".split("_"),longDateFormat:{LT:"HH:mm",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[Idag] LT",nextDay:"[Imorgon] LT",lastDay:"[Igår] LT",nextWeek:"dddd LT",lastWeek:"[Förra] dddd[en] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"för %s sedan",s:"några sekunder",m:"en minut",mm:"%d minuter",h:"en timme",hh:"%d timmar",d:"en dag",dd:"%d dagar",M:"en månad",MM:"%d månader",y:"ett år",yy:"%d år"},ordinal:function(t){var e=t%10,i=1===~~(t%100/10)?"e":1===e?"a":2===e?"a":3===e?"e":"e";return t+i},week:{dow:1,doy:4}})})},function(t,e,i){var s,n;!function(e){s=[i(53)],n=e.apply(null,s),!(void 0!==n&&(t.exports=n))}(function(t){return t.lang("ta",{months:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),monthsShort:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),weekdays:"ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை".split("_"),weekdaysShort:"ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி".split("_"),weekdaysMin:"ஞா_தி_செ_பு_வி_வெ_ச".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, LT",LLLL:"dddd, D MMMM YYYY, LT"},calendar:{sameDay:"[இன்று] LT",nextDay:"[நாளை] LT",nextWeek:"dddd, LT",lastDay:"[நேற்று] LT",lastWeek:"[கடந்த வாரம்] dddd, LT",sameElse:"L"},relativeTime:{future:"%s இல்",past:"%s முன்",s:"ஒரு சில விநாடிகள்",m:"ஒரு நிமிடம்",mm:"%d நிமிடங்கள்",h:"ஒரு மணி நேரம்",hh:"%d மணி நேரம்",d:"ஒரு நாள்",dd:"%d நாட்கள்",M:"ஒரு மாதம்",MM:"%d மாதங்கள்",y:"ஒரு வருடம்",yy:"%d ஆண்டுகள்"},ordinal:function(t){return t+"வது"},meridiem:function(t){return t>=6&&10>=t?" காலை":t>=10&&14>=t?" நண்பகல்":t>=14&&18>=t?" எற்பாடு":t>=18&&20>=t?" மாலை":t>=20&&24>=t?" இரவு":t>=0&&6>=t?" வைகறை":void 0},week:{dow:0,doy:6}})})},function(t,e,i){var s,n;!function(e){s=[i(53)],n=e.apply(null,s),!(void 0!==n&&(t.exports=n))}(function(t){return t.lang("th",{months:"มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม".split("_"),monthsShort:"มกรา_กุมภา_มีนา_เมษา_พฤษภา_มิถุนา_กรกฎา_สิงหา_กันยา_ตุลา_พฤศจิกา_ธันวา".split("_"),weekdays:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์".split("_"),weekdaysShort:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์".split("_"),weekdaysMin:"อา._จ._อ._พ._พฤ._ศ._ส.".split("_"),longDateFormat:{LT:"H นาฬิกา m นาที",L:"YYYY/MM/DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY เวลา LT",LLLL:"วันddddที่ D MMMM YYYY เวลา LT"},meridiem:function(t){return 12>t?"ก่อนเที่ยง":"หลังเที่ยง"},calendar:{sameDay:"[วันนี้ เวลา] LT",nextDay:"[พรุ่งนี้ เวลา] LT",nextWeek:"dddd[หน้า เวลา] LT",lastDay:"[เมื่อวานนี้ เวลา] LT",lastWeek:"[วัน]dddd[ที่แล้ว เวลา] LT",sameElse:"L"},relativeTime:{future:"อีก %s",past:"%sที่แล้ว",s:"ไม่กี่วินาที",m:"1 นาที",mm:"%d นาที",h:"1 ชั่วโมง",hh:"%d ชั่วโมง",d:"1 วัน",dd:"%d วัน",M:"1 เดือน",MM:"%d เดือน",y:"1 ปี",yy:"%d ปี"}})})},function(t,e,i){var s,n;!function(e){s=[i(53)],n=e.apply(null,s),!(void 0!==n&&(t.exports=n))}(function(t){return t.lang("tl-ph",{months:"Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"),monthsShort:"Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"),weekdays:"Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"),weekdaysShort:"Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"),weekdaysMin:"Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"),longDateFormat:{LT:"HH:mm",L:"MM/D/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY LT",LLLL:"dddd, MMMM DD, YYYY LT"},calendar:{sameDay:"[Ngayon sa] LT",nextDay:"[Bukas sa] LT",nextWeek:"dddd [sa] LT",lastDay:"[Kahapon sa] LT",lastWeek:"dddd [huling linggo] LT",sameElse:"L"},relativeTime:{future:"sa loob ng %s",past:"%s ang nakalipas",s:"ilang segundo",m:"isang minuto",mm:"%d minuto",h:"isang oras",hh:"%d oras",d:"isang araw",dd:"%d araw",M:"isang buwan",MM:"%d buwan",y:"isang taon",yy:"%d taon"},ordinal:function(t){return t},week:{dow:1,doy:4}})})},function(t,e,i){var s,n;!function(e){s=[i(53)],n=e.apply(null,s),!(void 0!==n&&(t.exports=n))}(function(t){var e={1:"'inci",5:"'inci",8:"'inci",70:"'inci",80:"'inci",2:"'nci",7:"'nci",20:"'nci",50:"'nci",3:"'üncü",4:"'üncü",100:"'üncü",6:"'ncı",9:"'uncu",10:"'uncu",30:"'uncu",60:"'ıncı",90:"'ıncı"};return t.lang("tr",{months:"Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık".split("_"),monthsShort:"Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara".split("_"),weekdays:"Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pts_Sal_Çar_Per_Cum_Cts".split("_"),weekdaysMin:"Pz_Pt_Sa_Ça_Pe_Cu_Ct".split("_"),longDateFormat:{LT:"HH:mm",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[yarın saat] LT",nextWeek:"[haftaya] dddd [saat] LT",lastDay:"[dün] LT",lastWeek:"[geçen hafta] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s önce",s:"birkaç saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir yıl",yy:"%d yıl"},ordinal:function(t){if(0===t)return t+"'ıncı";var i=t%10,s=t%100-i,n=t>=100?100:null;return t+(e[i]||e[s]||e[n])},week:{dow:1,doy:7}})})},function(t,e,i){var s,n;!function(e){s=[i(53)],n=e.apply(null,s),!(void 0!==n&&(t.exports=n))}(function(t){return t.lang("tzm-latn",{months:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),monthsShort:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),weekdays:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),weekdaysShort:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),weekdaysMin:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[asdkh g] LT",nextDay:"[aska g] LT",nextWeek:"dddd [g] LT",lastDay:"[assant g] LT",lastWeek:"dddd [g] LT",sameElse:"L"},relativeTime:{future:"dadkh s yan %s",past:"yan %s",s:"imik",m:"minuḍ",mm:"%d minuḍ",h:"saɛa",hh:"%d tassaɛin",d:"ass",dd:"%d ossan",M:"ayowr",MM:"%d iyyirn",y:"asgas",yy:"%d isgasn"},week:{dow:6,doy:12}})})},function(t,e,i){var s,n;!function(e){s=[i(53)],n=e.apply(null,s),!(void 0!==n&&(t.exports=n))}(function(t){return t.lang("tzm",{months:"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),monthsShort:"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),weekdays:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),weekdaysShort:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),weekdaysMin:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[ⴰⵙⴷⵅ ⴴ] LT",nextDay:"[ⴰⵙⴽⴰ ⴴ] LT",nextWeek:"dddd [ⴴ] LT",lastDay:"[ⴰⵚⴰⵏⵜ ⴴ] LT",lastWeek:"dddd [ⴴ] LT",sameElse:"L"},relativeTime:{future:"ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s",past:"ⵢⴰⵏ %s",s:"ⵉⵎⵉⴽ",m:"ⵎⵉⵏⵓⴺ",mm:"%d ⵎⵉⵏⵓⴺ",h:"ⵙⴰⵄⴰ",hh:"%d ⵜⴰⵙⵙⴰⵄⵉⵏ",d:"ⴰⵙⵙ",dd:"%d oⵙⵙⴰⵏ",M:"ⴰⵢoⵓⵔ",MM:"%d ⵉⵢⵢⵉⵔⵏ",y:"ⴰⵙⴳⴰⵙ",yy:"%d ⵉⵙⴳⴰⵙⵏ"},week:{dow:6,doy:12}})})},function(t,e,i){var s,n;!function(e){s=[i(53)],n=e.apply(null,s),!(void 0!==n&&(t.exports=n))}(function(t){function e(t,e){var i=t.split("_");return e%10===1&&e%100!==11?i[0]:e%10>=2&&4>=e%10&&(10>e%100||e%100>=20)?i[1]:i[2]}function i(t,i,s){var n={mm:"хвилина_хвилини_хвилин",hh:"година_години_годин",dd:"день_дні_днів",MM:"місяць_місяці_місяців",yy:"рік_роки_років"};return"m"===s?i?"хвилина":"хвилину":"h"===s?i?"година":"годину":t+" "+e(n[s],+t)}function s(t,e){var i={nominative:"січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень".split("_"),accusative:"січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня".split("_")},s=/D[oD]? *MMMM?/.test(e)?"accusative":"nominative";return i[s][t.month()]}function n(t,e){var i={nominative:"неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота".split("_"),accusative:"неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу".split("_"),genitive:"неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи".split("_")},s=/(\[[ВвУу]\]) ?dddd/.test(e)?"accusative":/\[?(?:минулої|наступної)? ?\] ?dddd/.test(e)?"genitive":"nominative";return i[s][t.day()]}function o(t){return function(){return t+"о"+(11===this.hours()?"б":"")+"] LT"}}return t.lang("uk",{months:s,monthsShort:"січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд".split("_"),weekdays:n,weekdaysShort:"нд_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",L:"DD.MM.YYYY",LL:"D MMMM YYYY р.",LLL:"D MMMM YYYY р., LT",LLLL:"dddd, D MMMM YYYY р., LT"},calendar:{sameDay:o("[Сьогодні "),nextDay:o("[Завтра "),lastDay:o("[Вчора "),nextWeek:o("[У] dddd ["),lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return o("[Минулої] dddd [").call(this);case 1:case 2:case 4:return o("[Минулого] dddd [").call(this)}},sameElse:"L"},relativeTime:{future:"за %s",past:"%s тому",s:"декілька секунд",m:i,mm:i,h:"годину",hh:i,d:"день",dd:i,M:"місяць",MM:i,y:"рік",yy:i},meridiem:function(t){return 4>t?"ночі":12>t?"ранку":17>t?"дня":"вечора"},ordinal:function(t,e){switch(e){case"M":case"d":case"DDD":case"w":case"W":return t+"-й";case"D":return t+"-го";default:return t}},week:{dow:1,doy:7}})})},function(t,e,i){var s,n;!function(e){s=[i(53)],n=e.apply(null,s),!(void 0!==n&&(t.exports=n))}(function(t){return t.lang("uz",{months:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_"),monthsShort:"янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"),weekdays:"Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба".split("_"),weekdaysShort:"Якш_Душ_Сеш_Чор_Пай_Жум_Шан".split("_"),weekdaysMin:"Як_Ду_Се_Чо_Па_Жу_Ша".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"D MMMM YYYY, dddd LT"},calendar:{sameDay:"[Бугун соат] LT [да]",nextDay:"[Эртага] LT [да]",nextWeek:"dddd [куни соат] LT [да]",lastDay:"[Кеча соат] LT [да]",lastWeek:"[Утган] dddd [куни соат] LT [да]",sameElse:"L"},relativeTime:{future:"Якин %s ичида",past:"Бир неча %s олдин",s:"фурсат",m:"бир дакика",mm:"%d дакика",h:"бир соат",hh:"%d соат",d:"бир кун",dd:"%d кун",M:"бир ой",MM:"%d ой",y:"бир йил",yy:"%d йил"},week:{dow:1,doy:7}})})},function(t,e,i){var s,n;!function(e){s=[i(53)],n=e.apply(null,s),!(void 0!==n&&(t.exports=n))}(function(t){return t.lang("vi",{months:"tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12".split("_"),monthsShort:"Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12".split("_"),weekdays:"chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy".split("_"),weekdaysShort:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysMin:"CN_T2_T3_T4_T5_T6_T7".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM [năm] YYYY",LLL:"D MMMM [năm] YYYY LT",LLLL:"dddd, D MMMM [năm] YYYY LT",l:"DD/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY LT",llll:"ddd, D MMM YYYY LT"},calendar:{sameDay:"[Hôm nay lúc] LT",nextDay:"[Ngày mai lúc] LT",nextWeek:"dddd [tuần tới lúc] LT",lastDay:"[Hôm qua lúc] LT",lastWeek:"dddd [tuần rồi lúc] LT",sameElse:"L"},relativeTime:{future:"%s tới",past:"%s trước",s:"vài giây",m:"một phút",mm:"%d phút",h:"một giờ",hh:"%d giờ",d:"một ngày",dd:"%d ngày",M:"một tháng",MM:"%d tháng",y:"một năm",yy:"%d năm"},ordinal:function(t){return t},week:{dow:1,doy:4}})})},function(t,e,i){var s,n;!function(e){s=[i(53)],n=e.apply(null,s),!(void 0!==n&&(t.exports=n))}(function(t){return t.lang("zh-cn",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"周日_周一_周二_周三_周四_周五_周六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"Ah点mm",L:"YYYY-MM-DD",LL:"YYYY年MMMD日",LLL:"YYYY年MMMD日LT",LLLL:"YYYY年MMMD日ddddLT",l:"YYYY-MM-DD",ll:"YYYY年MMMD日",lll:"YYYY年MMMD日LT",llll:"YYYY年MMMD日ddddLT"},meridiem:function(t,e){var i=100*t+e;return 600>i?"凌晨":900>i?"早上":1130>i?"上午":1230>i?"中午":1800>i?"下午":"晚上"},calendar:{sameDay:function(){return 0===this.minutes()?"[今天]Ah[点整]":"[今天]LT"},nextDay:function(){return 0===this.minutes()?"[明天]Ah[点整]":"[明天]LT"},lastDay:function(){return 0===this.minutes()?"[昨天]Ah[点整]":"[昨天]LT"},nextWeek:function(){var e,i;return e=t().startOf("week"),i=this.unix()-e.unix()>=604800?"[下]":"[本]",0===this.minutes()?i+"dddAh点整":i+"dddAh点mm"},lastWeek:function(){var e,i;return e=t().startOf("week"),i=this.unix()i?"早上":1130>i?"上午":1230>i?"中午":1800>i?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},ordinal:function(t,e){switch(e){case"d":case"D":case"DDD":return t+"日";case"M":return t+"月";case"w":case"W":return t+"週";default:return t}},relativeTime:{future:"%s內",past:"%s前",s:"幾秒",m:"一分鐘",mm:"%d分鐘",h:"一小時",hh:"%d小時",d:"一天",dd:"%d天",M:"一個月",MM:"%d個月",y:"一年",yy:"%d年"}})})},function(t){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children=[],t.webpackPolyfill=1),t}}])}); +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):"object"==typeof exports?exports.vis=e():t.vis=e()}(this,function(){return function(t){function e(s){if(i[s])return i[s].exports;var o=i[s]={exports:{},id:s,loaded:!1};return t[s].call(o.exports,o,o.exports,e),o.loaded=!0,o.exports}var i={};return e.m=t,e.c=i,e.p="",e(0)}([function(t,e,i){e.util=i(1),e.DOMutil=i(2),e.DataSet=i(3),e.DataView=i(4),e.Graph3d=i(5),e.graph3d={Camera:i(6),Filter:i(7),Point2d:i(8),Point3d:i(9),Slider:i(10),StepNumber:i(11)},e.Timeline=i(12),e.Graph2d=i(13),e.timeline={DataStep:i(14),Range:i(15),stack:i(16),TimeStep:i(17),components:{items:{Item:i(28),ItemBox:i(29),ItemPoint:i(30),ItemRange:i(31)},Component:i(18),CurrentTime:i(19),CustomTime:i(20),DataAxis:i(21),GraphGroup:i(22),Group:i(23),ItemSet:i(24),Legend:i(25),LineGraph:i(26),TimeAxis:i(27)}},e.Network=i(32),e.network={Edge:i(33),Groups:i(34),Images:i(35),Node:i(36),Popup:i(37),dotparser:i(38)},e.Graph=function(){throw new Error("Graph is renamed to Network. Please create a graph as new vis.Network(...)")},e.moment=i(39),e.hammer=i(40)},function(module,exports,__webpack_require__){var moment=__webpack_require__(39);exports.isNumber=function(t){return t instanceof Number||"number"==typeof t},exports.isString=function(t){return t instanceof String||"string"==typeof t},exports.isDate=function(t){if(t instanceof Date)return!0;if(exports.isString(t)){var e=ASPDateRegex.exec(t);if(e)return!0;if(!isNaN(Date.parse(t)))return!0}return!1},exports.isDataTable=function(t){return"undefined"!=typeof google&&google.visualization&&google.visualization.DataTable&&t instanceof google.visualization.DataTable},exports.randomUUID=function(){var t=function(){return Math.floor(65536*Math.random()).toString(16)};return t()+t()+"-"+t()+"-"+t()+"-"+t()+"-"+t()+t()+t()},exports.extend=function(t){for(var e=1,i=arguments.length;i>e;e++){var s=arguments[e];for(var o in s)s.hasOwnProperty(o)&&(t[o]=s[o])}return t},exports.selectiveExtend=function(t,e){if(!Array.isArray(t))throw new Error("Array with property names expected as first argument");for(var i=2;ii;i++)if(t[i]!=e[i])return!1;return!0},exports.convert=function(t,e){var i;if(void 0===t)return void 0;if(null===t)return null;if(!e)return t;if("string"!=typeof e&&!(e instanceof String))throw new Error("Type must be a string");switch(e){case"boolean":case"Boolean":return Boolean(t);case"number":case"Number":return Number(t.valueOf());case"string":case"String":return String(t);case"Date":if(exports.isNumber(t))return new Date(t);if(t instanceof Date)return new Date(t.valueOf());if(moment.isMoment(t))return new Date(t.valueOf());if(exports.isString(t))return i=ASPDateRegex.exec(t),i?new Date(Number(i[1])):moment(t).toDate();throw new Error("Cannot convert object of type "+exports.getType(t)+" to type Date");case"Moment":if(exports.isNumber(t))return moment(t);if(t instanceof Date)return moment(t.valueOf());if(moment.isMoment(t))return moment(t);if(exports.isString(t))return i=ASPDateRegex.exec(t),moment(i?Number(i[1]):t);throw new Error("Cannot convert object of type "+exports.getType(t)+" to type Date");case"ISODate":if(exports.isNumber(t))return new Date(t);if(t instanceof Date)return t.toISOString();if(moment.isMoment(t))return t.toDate().toISOString();if(exports.isString(t))return i=ASPDateRegex.exec(t),i?new Date(Number(i[1])).toISOString():new Date(t).toISOString();throw new Error("Cannot convert object of type "+exports.getType(t)+" to type ISODate");case"ASPDate":if(exports.isNumber(t))return"/Date("+t+")/";if(t instanceof Date)return"/Date("+t.valueOf()+")/";if(exports.isString(t)){i=ASPDateRegex.exec(t);var s;return s=i?new Date(Number(i[1])).valueOf():new Date(t).valueOf(),"/Date("+s+")/"}throw new Error("Cannot convert object of type "+exports.getType(t)+" to type ASPDate");default:throw new Error('Unknown type "'+e+'"')}};var ASPDateRegex=/^\/?Date\((\-?\d+)/i;exports.getType=function(t){var e=typeof t;return"object"==e?null==t?"null":t instanceof Boolean?"Boolean":t instanceof Number?"Number":t instanceof String?"String":t instanceof Array?"Array":t instanceof Date?"Date":"Object":"number"==e?"Number":"boolean"==e?"Boolean":"string"==e?"String":e},exports.getAbsoluteLeft=function(t){return t.getBoundingClientRect().left+window.pageXOffset},exports.getAbsoluteTop=function(t){return t.getBoundingClientRect().top+window.pageYOffset},exports.addClassName=function(t,e){var i=t.className.split(" ");-1==i.indexOf(e)&&(i.push(e),t.className=i.join(" "))},exports.removeClassName=function(t,e){var i=t.className.split(" "),s=i.indexOf(e);-1!=s&&(i.splice(s,1),t.className=i.join(" "))},exports.forEach=function(t,e){var i,s;if(t instanceof Array)for(i=0,s=t.length;s>i;i++)e(t[i],i,t);else for(i in t)t.hasOwnProperty(i)&&e(t[i],i,t)},exports.toArray=function(t){var e=[];for(var i in t)t.hasOwnProperty(i)&&e.push(t[i]);return e},exports.updateProperty=function(t,e,i){return t[e]!==i?(t[e]=i,!0):!1},exports.addEventListener=function(t,e,i,s){t.addEventListener?(void 0===s&&(s=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.addEventListener(e,i,s)):t.attachEvent("on"+e,i)},exports.removeEventListener=function(t,e,i,s){t.removeEventListener?(void 0===s&&(s=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.removeEventListener(e,i,s)):t.detachEvent("on"+e,i)},exports.preventDefault=function(t){t||(t=window.event),t.preventDefault?t.preventDefault():t.returnValue=!1},exports.getTarget=function(t){t||(t=window.event);var e;return t.target?e=t.target:t.srcElement&&(e=t.srcElement),void 0!=e.nodeType&&3==e.nodeType&&(e=e.parentNode),e},exports.option={},exports.option.asBoolean=function(t,e){return"function"==typeof t&&(t=t()),null!=t?0!=t:e||null},exports.option.asNumber=function(t,e){return"function"==typeof t&&(t=t()),null!=t?Number(t)||e||null:e||null},exports.option.asString=function(t,e){return"function"==typeof t&&(t=t()),null!=t?String(t):e||null},exports.option.asSize=function(t,e){return"function"==typeof t&&(t=t()),exports.isString(t)?t:exports.isNumber(t)?t+"px":e||null},exports.option.asElement=function(t,e){return"function"==typeof t&&(t=t()),t||e||null},exports.GiveDec=function(Hex){var Value;return Value="A"==Hex?10:"B"==Hex?11:"C"==Hex?12:"D"==Hex?13:"E"==Hex?14:"F"==Hex?15:eval(Hex)},exports.GiveHex=function(t){var e;return e=10==t?"A":11==t?"B":12==t?"C":13==t?"D":14==t?"E":15==t?"F":""+t},exports.parseColor=function(t){var e;if(exports.isString(t))if(exports.isValidHex(t)){var i=exports.hexToHSV(t),s={h:i.h,s:.45*i.s,v:Math.min(1,1.05*i.v)},o={h:i.h,s:Math.min(1,1.25*i.v),v:.6*i.v},n=exports.HSVToHex(o.h,o.h,o.v),r=exports.HSVToHex(s.h,s.s,s.v);e={background:t,border:n,highlight:{background:r,border:n},hover:{background:r,border:n}}}else e={background:t,border:t,highlight:{background:t,border:t},hover:{background:t,border:t}};else e={},e.background=t.background||"white",e.border=t.border||e.background,exports.isString(t.highlight)?e.highlight={border:t.highlight,background:t.highlight}:(e.highlight={},e.highlight.background=t.highlight&&t.highlight.background||e.background,e.highlight.border=t.highlight&&t.highlight.border||e.border),exports.isString(t.hover)?e.hover={border:t.hover,background:t.hover}:(e.hover={},e.hover.background=t.hover&&t.hover.background||e.background,e.hover.border=t.hover&&t.hover.border||e.border);return e},exports.hexToRGB=function(t){t=t.replace("#","").toUpperCase();var e=exports.GiveDec(t.substring(0,1)),i=exports.GiveDec(t.substring(1,2)),s=exports.GiveDec(t.substring(2,3)),o=exports.GiveDec(t.substring(3,4)),n=exports.GiveDec(t.substring(4,5)),r=exports.GiveDec(t.substring(5,6)),a=16*e+i,h=16*s+o,i=16*n+r;return{r:a,g:h,b:i}},exports.RGBToHex=function(t,e,i){var s=exports.GiveHex(Math.floor(t/16)),o=exports.GiveHex(t%16),n=exports.GiveHex(Math.floor(e/16)),r=exports.GiveHex(e%16),a=exports.GiveHex(Math.floor(i/16)),h=exports.GiveHex(i%16),d=s+o+n+r+a+h;return"#"+d},exports.RGBToHSV=function(t,e,i){t/=255,e/=255,i/=255;var s=Math.min(t,Math.min(e,i)),o=Math.max(t,Math.max(e,i));if(s==o)return{h:0,s:0,v:s};var n=t==s?e-i:i==s?t-e:i-t,r=t==s?3:i==s?1:5,a=60*(r-n/(o-s))/360,h=(o-s)/o,d=o;return{h:a,s:h,v:d}},exports.HSVToRGB=function(t,e,i){var s,o,n,r=Math.floor(6*t),a=6*t-r,h=i*(1-e),d=i*(1-a*e),l=i*(1-(1-a)*e);switch(r%6){case 0:s=i,o=l,n=h;break;case 1:s=d,o=i,n=h;break;case 2:s=h,o=i,n=l;break;case 3:s=h,o=d,n=i;break;case 4:s=l,o=h,n=i;break;case 5:s=i,o=h,n=d}return{r:Math.floor(255*s),g:Math.floor(255*o),b:Math.floor(255*n)}},exports.HSVToHex=function(t,e,i){var s=exports.HSVToRGB(t,e,i);return exports.RGBToHex(s.r,s.g,s.b)},exports.hexToHSV=function(t){var e=exports.hexToRGB(t);return exports.RGBToHSV(e.r,e.g,e.b)},exports.isValidHex=function(t){var e=/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(t);return e},exports.selectiveBridgeObject=function(t,e){if("object"==typeof e){for(var i=Object.create(e),s=0;sa;)o=void 0===s?n[u][i]:n[u][i][s],n[u].isVisible(e)?h=!0:(o=r&&console.log("BinarySearch too many iterations. Aborting.")}return u},exports.binarySearchGeneric=function(t,e,i,s){var o,n,r,a,h=1e4,d=0,l=t,c=!1,p=0,u=l.length,m=p,f=u,g=Math.floor(.5*(u+p));if(0==u)g=-1;else if(1==u)r=l[g][i],g=r==e?0:-1;else{for(u-=1;0==c&&h>d;)n=l[Math.max(0,g-1)][i],r=l[g][i],a=l[Math.min(l.length-1,g+1)][i],r==e||e>n&&r>e||e>r&&a>e?(c=!0,r!=e&&("before"==s?e>n&&r>e&&(g=Math.max(0,g-1)):e>r&&a>e&&(g=Math.min(l.length-1,g+1)))):(e>r?m=Math.floor(.5*(u+p)):f=Math.floor(.5*(u+p)),o=Math.floor(.5*(u+p)),p==m&&u==f?(g=-1,c=!0):(u=f,p=m,g=Math.floor(.5*(u+p)))),d++;d>=h&&console.log("BinarySearch too many iterations. Aborting.")}return g}},function(t,e){e.prepareElements=function(t){for(var e in t)t.hasOwnProperty(e)&&(t[e].redundant=t[e].used,t[e].used=[])},e.cleanupElements=function(t){for(var e in t)if(t.hasOwnProperty(e)&&t[e].redundant){for(var i=0;i0?(s=e[t].redundant[0],e[t].redundant.shift()):(s=document.createElementNS("http://www.w3.org/2000/svg",t),i.appendChild(s)):(s=document.createElementNS("http://www.w3.org/2000/svg",t),e[t]={used:[],redundant:[]},i.appendChild(s)),e[t].used.push(s),s},e.getDOMElement=function(t,e,i){var s;return e.hasOwnProperty(t)?e[t].redundant.length>0?(s=e[t].redundant[0],e[t].redundant.shift()):(s=document.createElement(t),i.appendChild(s)):(s=document.createElement(t),e[t]={used:[],redundant:[]},i.appendChild(s)),e[t].used.push(s),s},e.drawPoint=function(t,i,s,o,n){var r;return"circle"==s.options.drawPoints.style?(r=e.getSVGElement("circle",o,n),r.setAttributeNS(null,"cx",t),r.setAttributeNS(null,"cy",i),r.setAttributeNS(null,"r",.5*s.options.drawPoints.size),r.setAttributeNS(null,"class",s.className+" point")):(r=e.getSVGElement("rect",o,n),r.setAttributeNS(null,"x",t-.5*s.options.drawPoints.size),r.setAttributeNS(null,"y",i-.5*s.options.drawPoints.size),r.setAttributeNS(null,"width",s.options.drawPoints.size),r.setAttributeNS(null,"height",s.options.drawPoints.size),r.setAttributeNS(null,"class",s.className+" point")),r},e.drawBar=function(t,i,s,o,n,r,a){var h=e.getSVGElement("rect",r,a);h.setAttributeNS(null,"x",t-.5*s),h.setAttributeNS(null,"y",i),h.setAttributeNS(null,"width",s),h.setAttributeNS(null,"height",o),h.setAttributeNS(null,"class",n)}},function(t,e,i){function s(t,e){if(!t||Array.isArray(t)||o.isDataTable(t)||(e=t,t=null),this._options=e||{},this._data={},this._fieldId=this._options.fieldId||"id",this._type={},this._options.type)for(var i in this._options.type)if(this._options.type.hasOwnProperty(i)){var s=this._options.type[i];this._type[i]="Date"==s||"ISODate"==s||"ASPDate"==s?"Date":s}if(this._options.convert)throw new Error('Option "convert" is deprecated. Use "type" instead.');this._subscribers={},t&&this.add(t)}var o=i(1);s.prototype.on=function(t,e){var i=this._subscribers[t];i||(i=[],this._subscribers[t]=i),i.push({callback:e})},s.prototype.subscribe=s.prototype.on,s.prototype.off=function(t,e){var i=this._subscribers[t];i&&(this._subscribers[t]=i.filter(function(t){return t.callback!=e}))},s.prototype.unsubscribe=s.prototype.off,s.prototype._trigger=function(t,e,i){if("*"==t)throw new Error("Cannot trigger event *");var s=[];t in this._subscribers&&(s=s.concat(this._subscribers[t])),"*"in this._subscribers&&(s=s.concat(this._subscribers["*"]));for(var o=0;or;r++)i=n._addItem(t[r]),s.push(i);else if(o.isDataTable(t))for(var h=this._getColumnNames(t),d=0,l=t.getNumberOfRows();l>d;d++){for(var c={},p=0,u=h.length;u>p;p++){var m=h[p];c[m]=t.getValue(d,p)}i=n._addItem(c),s.push(i)}else{if(!(t instanceof Object))throw new Error("Unknown dataType");i=n._addItem(t),s.push(i)}return s.length&&this._trigger("add",{items:s},e),s},s.prototype.update=function(t,e){var i=[],s=[],n=this,r=n._fieldId,a=function(t){var e=t[r];n._data[e]?(e=n._updateItem(t),s.push(e)):(e=n._addItem(t),i.push(e))};if(Array.isArray(t))for(var h=0,d=t.length;d>h;h++)a(t[h]);else if(o.isDataTable(t))for(var l=this._getColumnNames(t),c=0,p=t.getNumberOfRows();p>c;c++){for(var u={},m=0,f=l.length;f>m;m++){var g=l[m];u[g]=t.getValue(c,m)}a(u)}else{if(!(t instanceof Object))throw new Error("Unknown dataType");a(t)}return i.length&&this._trigger("add",{items:i},e),s.length&&this._trigger("update",{items:s},e),i.concat(s)},s.prototype.get=function(){var t,e,i,s,n=this,r=o.getType(arguments[0]);"String"==r||"Number"==r?(t=arguments[0],i=arguments[1],s=arguments[2]):"Array"==r?(e=arguments[0],i=arguments[1],s=arguments[2]):(i=arguments[0],s=arguments[1]);var a;if(i&&i.returnType){var h=["DataTable","Array","Object"];if(a=-1==h.indexOf(i.returnType)?"Array":i.returnType,s&&a!=o.getType(s))throw new Error('Type of parameter "data" ('+o.getType(s)+") does not correspond with specified options.type ("+i.type+")");if("DataTable"==a&&!o.isDataTable(s))throw new Error('Parameter "data" must be a DataTable when options.type is "DataTable"')}else a=s&&"DataTable"==o.getType(s)?"DataTable":"Array";var d,l,c,p,u=i&&i.type||this._options.type,m=i&&i.filter,f=[];if(void 0!=t)d=n._getItem(t,u),m&&!m(d)&&(d=null);else if(void 0!=e)for(c=0,p=e.length;p>c;c++)d=n._getItem(e[c],u),(!m||m(d))&&f.push(d);else for(l in this._data)this._data.hasOwnProperty(l)&&(d=n._getItem(l,u),(!m||m(d))&&f.push(d));if(i&&i.order&&void 0==t&&this._sort(f,i.order),i&&i.fields){var g=i.fields;if(void 0!=t)d=this._filterFields(d,g);else for(c=0,p=f.length;p>c;c++)f[c]=this._filterFields(f[c],g)}if("DataTable"==a){var v=this._getColumnNames(s);if(void 0!=t)n._appendRow(s,v,d);else for(c=0;cc;c++)s.push(f[c]);return s}return f},s.prototype.getIds=function(t){var e,i,s,o,n,r=this._data,a=t&&t.filter,h=t&&t.order,d=t&&t.type||this._options.type,l=[];if(a)if(h){n=[];for(s in r)r.hasOwnProperty(s)&&(o=this._getItem(s,d),a(o)&&n.push(o));for(this._sort(n,h),e=0,i=n.length;i>e;e++)l[e]=n[e][this._fieldId]}else for(s in r)r.hasOwnProperty(s)&&(o=this._getItem(s,d),a(o)&&l.push(o[this._fieldId]));else if(h){n=[];for(s in r)r.hasOwnProperty(s)&&n.push(r[s]);for(this._sort(n,h),e=0,i=n.length;i>e;e++)l[e]=n[e][this._fieldId]}else for(s in r)r.hasOwnProperty(s)&&(o=r[s],l.push(o[this._fieldId]));return l},s.prototype.getDataSet=function(){return this},s.prototype.forEach=function(t,e){var i,s,o=e&&e.filter,n=e&&e.type||this._options.type,r=this._data;if(e&&e.order)for(var a=this.get(e),h=0,d=a.length;d>h;h++)i=a[h],s=i[this._fieldId],t(i,s);else for(s in r)r.hasOwnProperty(s)&&(i=this._getItem(s,n),(!o||o(i))&&t(i,s))},s.prototype.map=function(t,e){var i,s=e&&e.filter,o=e&&e.type||this._options.type,n=[],r=this._data;for(var a in r)r.hasOwnProperty(a)&&(i=this._getItem(a,o),(!s||s(i))&&n.push(t(i,a)));return e&&e.order&&this._sort(n,e.order),n},s.prototype._filterFields=function(t,e){var i={};for(var s in t)t.hasOwnProperty(s)&&-1!=e.indexOf(s)&&(i[s]=t[s]);return i},s.prototype._sort=function(t,e){if(o.isString(e)){var i=e;t.sort(function(t,e){var s=t[i],o=e[i];return s>o?1:o>s?-1:0})}else{if("function"!=typeof e)throw new TypeError("Order must be a function or a string");t.sort(e)}},s.prototype.remove=function(t,e){var i,s,o,n=[];if(Array.isArray(t))for(i=0,s=t.length;s>i;i++)o=this._remove(t[i]),null!=o&&n.push(o);else o=this._remove(t),null!=o&&n.push(o);return n.length&&this._trigger("remove",{items:n},e),n},s.prototype._remove=function(t){if(o.isNumber(t)||o.isString(t)){if(this._data[t])return delete this._data[t],t}else if(t instanceof Object){var e=t[this._fieldId];if(e&&this._data[e])return delete this._data[e],e}return null},s.prototype.clear=function(t){var e=Object.keys(this._data);return this._data={},this._trigger("remove",{items:e},t),e},s.prototype.max=function(t){var e=this._data,i=null,s=null;for(var o in e)if(e.hasOwnProperty(o)){var n=e[o],r=n[t];null!=r&&(!i||r>s)&&(i=n,s=r)}return i},s.prototype.min=function(t){var e=this._data,i=null,s=null;for(var o in e)if(e.hasOwnProperty(o)){var n=e[o],r=n[t];null!=r&&(!i||s>r)&&(i=n,s=r)}return i},s.prototype.distinct=function(t){var e,i=this._data,s=[],n=this._options.type&&this._options.type[t]||null,r=0;for(var a in i)if(i.hasOwnProperty(a)){var h=i[a],d=h[t],l=!1;for(e=0;r>e;e++)if(s[e]==d){l=!0;break}l||void 0===d||(s[r]=d,r++)}if(n)for(e=0;ei;i++)e[i]=t.getColumnId(i)||t.getColumnLabel(i);return e},s.prototype._appendRow=function(t,e,i){for(var s=t.addRow(),o=0,n=e.length;n>o;o++){var r=e[o];t.setValue(s,o,i[r])}},t.exports=s},function(t,e,i){function s(t,e){this._data=null,this._ids={},this._options=e||{},this._fieldId="id",this._subscribers={};var i=this;this.listener=function(){i._onEvent.apply(i,arguments)},this.setData(t)}var o=i(1),n=i(3);s.prototype.setData=function(t){var e,i,s;if(this._data){this._data.unsubscribe&&this._data.unsubscribe("*",this.listener),e=[];for(var o in this._ids)this._ids.hasOwnProperty(o)&&e.push(o);this._ids={},this._trigger("remove",{items:e})}if(this._data=t,this._data){for(this._fieldId=this._options.fieldId||this._data&&this._data.options&&this._data.options.fieldId||"id",e=this._data.getIds({filter:this._options&&this._options.filter}),i=0,s=e.length;s>i;i++)o=e[i],this._ids[o]=!0;this._trigger("add",{items:e}),this._data.on&&this._data.on("*",this.listener)}},s.prototype.get=function(){var t,e,i,s=this,n=o.getType(arguments[0]);"String"==n||"Number"==n||"Array"==n?(t=arguments[0],e=arguments[1],i=arguments[2]):(e=arguments[0],i=arguments[1]);var r=o.extend({},this._options,e);this._options.filter&&e&&e.filter&&(r.filter=function(t){return s._options.filter(t)&&e.filter(t)});var a=[];return void 0!=t&&a.push(t),a.push(r),a.push(i),this._data&&this._data.get.apply(this._data,a)},s.prototype.getIds=function(t){var e;if(this._data){var i,s=this._options.filter;i=t&&t.filter?s?function(e){return s(e)&&t.filter(e)}:t.filter:s,e=this._data.getIds({filter:i,order:t&&t.order})}else e=[];return e},s.prototype.getDataSet=function(){for(var t=this;t instanceof s;)t=t._data;return t||null},s.prototype._onEvent=function(t,e,i){var s,o,n,r,a=e&&e.items,h=this._data,d=[],l=[],c=[];if(a&&h){switch(t){case"add":for(s=0,o=a.length;o>s;s++)n=a[s],r=this.get(n),r&&(this._ids[n]=!0,d.push(n));break;case"update":for(s=0,o=a.length;o>s;s++)n=a[s],r=this.get(n),r?this._ids[n]?l.push(n):(this._ids[n]=!0,d.push(n)):this._ids[n]&&(delete this._ids[n],c.push(n));break;case"remove":for(s=0,o=a.length;o>s;s++)n=a[s],this._ids[n]&&(delete this._ids[n],c.push(n))}d.length&&this._trigger("add",{items:d},i),l.length&&this._trigger("update",{items:l},i),c.length&&this._trigger("remove",{items:c},i)}},s.prototype.on=n.prototype.on,s.prototype.off=n.prototype.off,s.prototype._trigger=n.prototype._trigger,s.prototype.subscribe=s.prototype.on,s.prototype.unsubscribe=s.prototype.off,t.exports=s},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this.containerElement=t,this.width="400px",this.height="400px",this.margin=10,this.defaultXCenter="55%",this.defaultYCenter="50%",this.xLabel="x",this.yLabel="y",this.zLabel="z",this.filterLabel="time",this.legendLabel="value",this.style=s.STYLE.DOT,this.showPerspective=!0,this.showGrid=!0,this.keepAspectRatio=!0,this.showShadow=!1,this.showGrayBottom=!1,this.showTooltip=!1,this.verticalRatio=.5,this.animationInterval=1e3,this.animationPreload=!1,this.camera=new l,this.eye=new h(0,0,-1),this.dataTable=null,this.dataPoints=null,this.colX=void 0,this.colY=void 0,this.colZ=void 0,this.colValue=void 0,this.colFilter=void 0,this.xMin=0,this.xStep=void 0,this.xMax=1,this.yMin=0,this.yStep=void 0,this.yMax=1,this.zMin=0,this.zStep=void 0,this.zMax=1,this.valueMin=0,this.valueMax=1,this.xBarWidth=1,this.yBarWidth=1,this.colorAxis="#4D4D4D",this.colorGrid="#D3D3D3",this.colorDot="#7DC1FF",this.colorDotBorder="#3267D2",this.create(),this.setOptions(i),e&&this.setData(e)}var o=i(44),n=i(3),r=i(4),a=i(1),h=i(9),d=i(8),l=i(6),c=i(7),p=i(10),u=i(11);o(s.prototype),s.prototype._setScale=function(){this.scale=new h(1/(this.xMax-this.xMin),1/(this.yMax-this.yMin),1/(this.zMax-this.zMin)),this.keepAspectRatio&&(this.scale.x3&&(this.colFilter=3);else{if(this.style!==s.STYLE.DOTCOLOR&&this.style!==s.STYLE.DOTSIZE&&this.style!==s.STYLE.BARCOLOR&&this.style!==s.STYLE.BARSIZE)throw'Unknown style "'+this.style+'"';this.colX=0,this.colY=1,this.colZ=2,this.colValue=3,t.getNumberOfColumns()>4&&(this.colFilter=4)}},s.prototype.getNumberOfRows=function(t){return t.length},s.prototype.getNumberOfColumns=function(t){var e=0;for(var i in t[0])t[0].hasOwnProperty(i)&&e++;return e},s.prototype.getDistinctValues=function(t,e){for(var i=[],s=0;st[s][e]&&(i.min=t[s][e]),i.maxt;t++){var f=(t-p)/(m-p),g=240*f,v=this._hsv2rgb(g,1,1);c.strokeStyle=v,c.beginPath(),c.moveTo(h,r+t),c.lineTo(a,r+t),c.stroke()}c.strokeStyle=this.colorAxis,c.strokeRect(h,r,i,n)}if(this.style===s.STYLE.DOTSIZE&&(c.strokeStyle=this.colorAxis,c.fillStyle=this.colorDot,c.beginPath(),c.moveTo(h,r),c.lineTo(a,r),c.lineTo(a-i+e,d),c.lineTo(h,d),c.closePath(),c.fill(),c.stroke()),this.style===s.STYLE.DOTCOLOR||this.style===s.STYLE.DOTSIZE){var y=5,b=new u(this.valueMin,this.valueMax,(this.valueMax-this.valueMin)/5,!0);for(b.start(),b.getCurrent()0?this.yMin:this.yMax,o=this._convert3Dto2D(new h(x,r,this.zMin)),Math.cos(2*_)>0?(g.textAlign="center",g.textBaseline="top",o.y+=b):Math.sin(2*_)<0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(" "+i.getCurrent()+" ",o.x,o.y),i.next()}for(g.lineWidth=1,s=void 0===this.defaultYStep,i=new u(this.yMin,this.yMax,this.yStep,s),i.start(),i.getCurrent()0?this.xMin:this.xMax,o=this._convert3Dto2D(new h(n,i.getCurrent(),this.zMin)),Math.cos(2*_)<0?(g.textAlign="center",g.textBaseline="top",o.y+=b):Math.sin(2*_)>0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(" "+i.getCurrent()+" ",o.x,o.y),i.next();for(g.lineWidth=1,s=void 0===this.defaultZStep,i=new u(this.zMin,this.zMax,this.zStep,s),i.start(),i.getCurrent()0?this.xMin:this.xMax,r=Math.sin(_)<0?this.yMin:this.yMax;!i.end();)t=this._convert3Dto2D(new h(n,r,i.getCurrent())),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(t.x-b,t.y),g.stroke(),g.textAlign="right",g.textBaseline="middle",g.fillStyle=this.colorAxis,g.fillText(i.getCurrent()+" ",t.x-5,t.y),i.next();g.lineWidth=1,t=this._convert3Dto2D(new h(n,r,this.zMin)),e=this._convert3Dto2D(new h(n,r,this.zMax)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke(),g.lineWidth=1,p=this._convert3Dto2D(new h(this.xMin,this.yMin,this.zMin)),m=this._convert3Dto2D(new h(this.xMax,this.yMin,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(p.x,p.y),g.lineTo(m.x,m.y),g.stroke(),p=this._convert3Dto2D(new h(this.xMin,this.yMax,this.zMin)),m=this._convert3Dto2D(new h(this.xMax,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(p.x,p.y),g.lineTo(m.x,m.y),g.stroke(),g.lineWidth=1,t=this._convert3Dto2D(new h(this.xMin,this.yMin,this.zMin)),e=this._convert3Dto2D(new h(this.xMin,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke(),t=this._convert3Dto2D(new h(this.xMax,this.yMin,this.zMin)),e=this._convert3Dto2D(new h(this.xMax,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke();var w=this.xLabel;w.length>0&&(c=.1/this.scale.y,n=(this.xMin+this.xMax)/2,r=Math.cos(_)>0?this.yMin-c:this.yMax+c,o=this._convert3Dto2D(new h(n,r,this.zMin)),Math.cos(2*_)>0?(g.textAlign="center",g.textBaseline="top"):Math.sin(2*_)<0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(w,o.x,o.y));var S=this.yLabel;S.length>0&&(l=.1/this.scale.x,n=Math.sin(_)>0?this.xMin-l:this.xMax+l,r=(this.yMin+this.yMax)/2,o=this._convert3Dto2D(new h(n,r,this.zMin)),Math.cos(2*_)<0?(g.textAlign="center",g.textBaseline="top"):Math.sin(2*_)>0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(S,o.x,o.y));var M=this.zLabel;M.length>0&&(d=30,n=Math.cos(_)>0?this.xMin:this.xMax,r=Math.sin(_)<0?this.yMin:this.yMax,a=(this.zMin+this.zMax)/2,o=this._convert3Dto2D(new h(n,r,a)),g.textAlign="right",g.textBaseline="middle",g.fillStyle=this.colorAxis,g.fillText(M,o.x-d,o.y))},s.prototype._hsv2rgb=function(t,e,i){var s,o,n,r,a,h;switch(r=i*e,a=Math.floor(t/60),h=r*(1-Math.abs(t/60%2-1)),a){case 0:s=r,o=h,n=0;break;case 1:s=h,o=r,n=0;break;case 2:s=0,o=r,n=h;break;case 3:s=0,o=h,n=r;break;case 4:s=h,o=0,n=r;break;case 5:s=r,o=0,n=h;break;default:s=0,o=0,n=0}return"RGB("+parseInt(255*s)+","+parseInt(255*o)+","+parseInt(255*n)+")"},s.prototype._redrawDataGrid=function(){var t,e,i,o,n,r,a,d,l,c,p,u,m,f=this.frame.canvas,g=f.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(n=0;n0}else r=!0;r?(m=(t.point.z+e.point.z+i.point.z+o.point.z)/4,c=240*(1-(m-this.zMin)*this.scale.z/this.verticalRatio),p=1,this.showShadow?(u=Math.min(1+S.x/M/2,1),a=this._hsv2rgb(c,p,u),d=a):(u=1,a=this._hsv2rgb(c,p,u),d=this.colorAxis)):(a="gray",d=this.colorAxis),l=.5,g.lineWidth=l,g.fillStyle=a,g.strokeStyle=d,g.beginPath(),g.moveTo(t.screen.x,t.screen.y),g.lineTo(e.screen.x,e.screen.y),g.lineTo(o.screen.x,o.screen.y),g.lineTo(i.screen.x,i.screen.y),g.closePath(),g.fill(),g.stroke()}}else for(n=0;np&&(p=0);var u,m,f;this.style===s.STYLE.DOTCOLOR?(u=240*(1-(d.point.value-this.valueMin)*this.scale.value),m=this._hsv2rgb(u,1,1),f=this._hsv2rgb(u,1,.8)):this.style===s.STYLE.DOTSIZE?(m=this.colorDot,f=this.colorDotBorder):(u=240*(1-(d.point.z-this.zMin)*this.scale.z/this.verticalRatio),m=this._hsv2rgb(u,1,1),f=this._hsv2rgb(u,1,.8)),i.lineWidth=1,i.strokeStyle=f,i.fillStyle=m,i.beginPath(),i.arc(d.screen.x,d.screen.y,p,0,2*Math.PI,!0),i.fill(),i.stroke()}}},s.prototype._redrawDataBar=function(){var t,e,i,o,n=this.frame.canvas,r=n.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(t=0;t0&&(t=this.dataPoints[0],s.lineWidth=1,s.strokeStyle="blue",s.beginPath(),s.moveTo(t.screen.x,t.screen.y)),e=1;e0&&s.stroke()}},s.prototype._onMouseDown=function(t){if(t=t||window.event,this.leftButtonDown&&this._onMouseUp(t),this.leftButtonDown=t.which?1===t.which:1===t.button,this.leftButtonDown||this.touchDown){this.startMouseX=getMouseX(t),this.startMouseY=getMouseY(t),this.startStart=new Date(this.start),this.startEnd=new Date(this.end),this.startArmRotation=this.camera.getArmRotation(),this.frame.style.cursor="move";var e=this;this.onmousemove=function(t){e._onMouseMove(t)},this.onmouseup=function(t){e._onMouseUp(t)},a.addEventListener(document,"mousemove",e.onmousemove),a.addEventListener(document,"mouseup",e.onmouseup),a.preventDefault(t)}},s.prototype._onMouseMove=function(t){t=t||window.event;var e=parseFloat(getMouseX(t))-this.startMouseX,i=parseFloat(getMouseY(t))-this.startMouseY,s=this.startArmRotation.horizontal+e/200,o=this.startArmRotation.vertical+i/200,n=4,r=Math.sin(n/360*2*Math.PI);Math.abs(Math.sin(s))0?1:0>t?-1:0}var s=e[0],o=e[1],n=e[2],r=i((o.x-s.x)*(t.y-s.y)-(o.y-s.y)*(t.x-s.x)),a=i((n.x-o.x)*(t.y-o.y)-(n.y-o.y)*(t.x-o.x)),h=i((s.x-n.x)*(t.y-n.y)-(s.y-n.y)*(t.x-n.x));return!(0!=r&&0!=a&&r!=a||0!=a&&0!=h&&a!=h||0!=r&&0!=h&&r!=h)},s.prototype._dataPointFromXY=function(t,e){var i,o=100,n=null,r=null,a=null,h=new d(t,e);if(this.style===s.STYLE.BAR||this.style===s.STYLE.BARCOLOR||this.style===s.STYLE.BARSIZE)for(i=this.dataPoints.length-1;i>=0;i--){n=this.dataPoints[i];var l=n.surfaces;if(l)for(var c=l.length-1;c>=0;c--){var p=l[c],u=p.corners,m=[u[0].screen,u[1].screen,u[2].screen],f=[u[2].screen,u[3].screen,u[0].screen];if(this._insideTriangle(h,m)||this._insideTriangle(h,f))return n}}else for(i=0;ib)&&o>b&&(a=b,r=n)}}return r},s.prototype._showTooltip=function(t){var e,i,s;this.tooltip?(e=this.tooltip.dom.content,i=this.tooltip.dom.line,s=this.tooltip.dom.dot):(e=document.createElement("div"),e.style.position="absolute",e.style.padding="10px",e.style.border="1px solid #4d4d4d",e.style.color="#1a1a1a",e.style.background="rgba(255,255,255,0.7)",e.style.borderRadius="2px",e.style.boxShadow="5px 5px 10px rgba(128,128,128,0.5)",i=document.createElement("div"),i.style.position="absolute",i.style.height="40px",i.style.width="0",i.style.borderLeft="1px solid #4d4d4d",s=document.createElement("div"),s.style.position="absolute",s.style.height="0",s.style.width="0",s.style.border="5px solid #4d4d4d",s.style.borderRadius="5px",this.tooltip={dataPoint:null,dom:{content:e,line:i,dot:s}}),this._hideTooltip(),this.tooltip.dataPoint=t,e.innerHTML="function"==typeof this.showTooltip?this.showTooltip(t.point):"
x:"+t.point.x+"
y:"+t.point.y+"
z:"+t.point.z+"
",e.style.left="0",e.style.top="0",this.frame.appendChild(e),this.frame.appendChild(i),this.frame.appendChild(s);var o=e.offsetWidth,n=e.offsetHeight,r=i.offsetHeight,a=s.offsetWidth,h=s.offsetHeight,d=t.screen.x-o/2;d=Math.min(Math.max(d,10),this.frame.clientWidth-10-o),i.style.left=t.screen.x+"px",i.style.top=t.screen.y-r+"px",e.style.left=d+"px",e.style.top=t.screen.y-r-n+"px",s.style.left=t.screen.x-a/2+"px",s.style.top=t.screen.y-h/2+"px"},s.prototype._hideTooltip=function(){if(this.tooltip){this.tooltip.dataPoint=null;for(var t in this.tooltip.dom)if(this.tooltip.dom.hasOwnProperty(t)){var e=this.tooltip.dom[t];e&&e.parentNode&&e.parentNode.removeChild(e)}}},getMouseX=function(t){return"clientX"in t?t.clientX:t.targetTouches[0]&&t.targetTouches[0].clientX||0},getMouseY=function(t){return"clientY"in t?t.clientY:t.targetTouches[0]&&t.targetTouches[0].clientY||0},t.exports=s},function(t,e,i){var s=i(9);Camera=function(){this.armLocation=new s,this.armRotation={},this.armRotation.horizontal=0,this.armRotation.vertical=0,this.armLength=1.7,this.cameraLocation=new s,this.cameraRotation=new s(.5*Math.PI,0,0),this.calculateCameraOrientation()},Camera.prototype.setArmLocation=function(t,e,i){this.armLocation.x=t,this.armLocation.y=e,this.armLocation.z=i,this.calculateCameraOrientation()},Camera.prototype.setArmRotation=function(t,e){void 0!==t&&(this.armRotation.horizontal=t),void 0!==e&&(this.armRotation.vertical=e,this.armRotation.vertical<0&&(this.armRotation.vertical=0),this.armRotation.vertical>.5*Math.PI&&(this.armRotation.vertical=.5*Math.PI)),(void 0!==t||void 0!==e)&&this.calculateCameraOrientation()},Camera.prototype.getArmRotation=function(){var t={};return t.horizontal=this.armRotation.horizontal,t.vertical=this.armRotation.vertical,t},Camera.prototype.setArmLength=function(t){void 0!==t&&(this.armLength=t,this.armLength<.71&&(this.armLength=.71),this.armLength>5&&(this.armLength=5),this.calculateCameraOrientation())},Camera.prototype.getArmLength=function(){return this.armLength},Camera.prototype.getCameraLocation=function(){return this.cameraLocation},Camera.prototype.getCameraRotation=function(){return this.cameraRotation},Camera.prototype.calculateCameraOrientation=function(){this.cameraLocation.x=this.armLocation.x-this.armLength*Math.sin(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.y=this.armLocation.y-this.armLength*Math.cos(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.z=this.armLocation.z+this.armLength*Math.sin(this.armRotation.vertical),this.cameraRotation.x=Math.PI/2-this.armRotation.vertical,this.cameraRotation.y=0,this.cameraRotation.z=-this.armRotation.horizontal},t.exports=Camera},function(t,e,i){function s(t,e,i){this.data=t,this.column=e,this.graph=i,this.index=void 0,this.value=void 0,this.values=i.getDistinctValues(t.get(),this.column),this.values.sort(function(t,e){return t>e?1:e>t?-1:0}),this.values.length>0&&this.selectValue(0),this.dataPoints=[],this.loaded=!1,this.onLoadCallback=void 0,i.animationPreload?(this.loaded=!1,this.loadInBackground()):this.loaded=!0}var o=i(4);s.prototype.isLoaded=function(){return this.loaded},s.prototype.getLoadedProgress=function(){for(var t=this.values.length,e=0;this.dataPoints[e];)e++;return Math.round(e/t*100)},s.prototype.getLabel=function(){return this.graph.filterLabel},s.prototype.getColumn=function(){return this.column},s.prototype.getSelectedValue=function(){return void 0===this.index?void 0:this.values[this.index]},s.prototype.getValues=function(){return this.values},s.prototype.getValue=function(t){if(t>=this.values.length)throw"Error: index out of range";return this.values[t]},s.prototype._getDataPoints=function(t){if(void 0===t&&(t=this.index),void 0===t)return[];var e;if(this.dataPoints[t])e=this.dataPoints[t];else{var i={};i.column=this.column,i.value=this.values[t];var s=new o(this.data,{filter:function(t){return t[i.column]==i.value}}).get();e=this.graph._getDataPoints(s),this.dataPoints[t]=e}return e},s.prototype.setOnLoadCallback=function(t){this.onLoadCallback=t},s.prototype.selectValue=function(t){if(t>=this.values.length)throw"Error: index out of range";this.index=t,this.value=this.values[t]},s.prototype.loadInBackground=function(t){void 0===t&&(t=0);var e=this.graph.frame;if(t0&&(t--,this.setIndex(t))},s.prototype.next=function(){var t=this.getIndex();t0?this.setIndex(0):this.index=void 0},s.prototype.setIndex=function(t){if(!(ts&&(s=0),s>this.values.length-1&&(s=this.values.length-1),s},s.prototype.indexToLeft=function(t){var e=parseFloat(this.frame.bar.style.width)-this.frame.slide.clientWidth-10,i=t/(this.values.length-1)*e,s=i+3;return s},s.prototype._onMouseMove=function(t){var e=t.clientX-this.startClientX,i=this.startSlideX+e,s=this.leftToIndex(i);this.setIndex(s),o.preventDefault()},s.prototype._onMouseUp=function(){this.frame.style.cursor="auto",o.removeEventListener(document,"mousemove",this.onmousemove),o.removeEventListener(document,"mouseup",this.onmouseup),o.preventDefault()},t.exports=s},function(t){function e(t,e,i,s){this._start=0,this._end=0,this._step=1,this.prettyStep=!0,this.precision=5,this._current=0,this.setRange(t,e,i,s)}e.prototype.setRange=function(t,e,i,s){this._start=t?t:0,this._end=e?e:0,this.setStep(i,s)},e.prototype.setStep=function(t,i){void 0===t||0>=t||(void 0!==i&&(this.prettyStep=i),this._step=this.prettyStep===!0?e.calculatePrettyStep(t):t)},e.calculatePrettyStep=function(t){var e=function(t){return Math.log(t)/Math.LN10},i=Math.pow(10,Math.round(e(t))),s=2*Math.pow(10,Math.round(e(t/2))),o=5*Math.pow(10,Math.round(e(t/5))),n=i;return Math.abs(s-t)<=Math.abs(n-t)&&(n=s),Math.abs(o-t)<=Math.abs(n-t)&&(n=o),0>=n&&(n=1),n},e.prototype.getCurrent=function(){return parseFloat(this._current.toPrecision(this.precision))},e.prototype.getStep=function(){return this._step},e.prototype.start=function(){this._current=this._start-this._start%this._step},e.prototype.next=function(){this._current+=this._step},e.prototype.end=function(){return this._current>this._end},t.exports=e},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");var o=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:"bottom",width:null,height:null,maxHeight:null,minHeight:null},this.options=r.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},util:{snap:null,toScreen:o._toScreen.bind(o),toGlobalScreen:o._toGlobalScreen.bind(o),toTime:o._toTime.bind(o),toGlobalTime:o._toGlobalTime.bind(o)}},this.range=new d(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new l(this.body),this.components.push(this.timeAxis),this.body.util.snap=this.timeAxis.snap.bind(this.timeAxis),this.currentTime=new c(this.body),this.components.push(this.currentTime),this.customTime=new p(this.body),this.components.push(this.customTime),this.itemSet=new u(this.body),this.components.push(this.itemSet),this.itemsData=null,this.groupsData=null,i&&this.setOptions(i),e?this.setItems(e):this.redraw()}var o=i(44),n=i(40),r=i(1),a=i(3),h=i(4),d=i(15),l=i(27),c=i(19),p=i(20),u=i(24);o(s.prototype),s.prototype._create=function(t){this.dom={},this.dom.root=document.createElement("div"),this.dom.background=document.createElement("div"),this.dom.backgroundVertical=document.createElement("div"),this.dom.backgroundHorizontal=document.createElement("div"),this.dom.centerContainer=document.createElement("div"),this.dom.leftContainer=document.createElement("div"),this.dom.rightContainer=document.createElement("div"),this.dom.center=document.createElement("div"),this.dom.left=document.createElement("div"),this.dom.right=document.createElement("div"),this.dom.top=document.createElement("div"),this.dom.bottom=document.createElement("div"),this.dom.shadowTop=document.createElement("div"),this.dom.shadowBottom=document.createElement("div"),this.dom.shadowTopLeft=document.createElement("div"),this.dom.shadowBottomLeft=document.createElement("div"),this.dom.shadowTopRight=document.createElement("div"),this.dom.shadowBottomRight=document.createElement("div"),this.dom.background.className="vispanel background",this.dom.backgroundVertical.className="vispanel background vertical",this.dom.backgroundHorizontal.className="vispanel background horizontal",this.dom.centerContainer.className="vispanel center",this.dom.leftContainer.className="vispanel left",this.dom.rightContainer.className="vispanel right",this.dom.top.className="vispanel top",this.dom.bottom.className="vispanel bottom",this.dom.left.className="content",this.dom.center.className="content",this.dom.right.className="content",this.dom.shadowTop.className="shadow top",this.dom.shadowBottom.className="shadow bottom",this.dom.shadowTopLeft.className="shadow top",this.dom.shadowBottomLeft.className="shadow bottom",this.dom.shadowTopRight.className="shadow top",this.dom.shadowBottomRight.className="shadow bottom",this.dom.root.appendChild(this.dom.background),this.dom.root.appendChild(this.dom.backgroundVertical),this.dom.root.appendChild(this.dom.backgroundHorizontal),this.dom.root.appendChild(this.dom.centerContainer),this.dom.root.appendChild(this.dom.leftContainer),this.dom.root.appendChild(this.dom.rightContainer),this.dom.root.appendChild(this.dom.top),this.dom.root.appendChild(this.dom.bottom),this.dom.centerContainer.appendChild(this.dom.center),this.dom.leftContainer.appendChild(this.dom.left),this.dom.rightContainer.appendChild(this.dom.right),this.dom.centerContainer.appendChild(this.dom.shadowTop),this.dom.centerContainer.appendChild(this.dom.shadowBottom),this.dom.leftContainer.appendChild(this.dom.shadowTopLeft),this.dom.leftContainer.appendChild(this.dom.shadowBottomLeft),this.dom.rightContainer.appendChild(this.dom.shadowTopRight),this.dom.rightContainer.appendChild(this.dom.shadowBottomRight),this.on("rangechange",this.redraw.bind(this)),this.on("change",this.redraw.bind(this)),this.on("touch",this._onTouch.bind(this)),this.on("pinch",this._onPinch.bind(this)),this.on("dragstart",this._onDragStart.bind(this)),this.on("drag",this._onDrag.bind(this)),this.hammer=n(this.dom.root,{prevent_default:!0}),this.listeners={};var e=this,i=["touch","pinch","tap","doubletap","hold","dragstart","drag","dragend","mousewheel","DOMMouseScroll"];if(i.forEach(function(t){var i=function(){var i=[t].concat(Array.prototype.slice.call(arguments,0));e.emit.apply(e,i)};e.hammer.on(t,i),e.listeners[t]=i}),this.props={root:{},background:{},centerContainer:{},leftContainer:{},rightContainer:{},center:{},left:{},right:{},top:{},bottom:{},border:{},scrollTop:0,scrollTopMin:0},this.touch={},!t)throw new Error("No container provided");t.appendChild(this.dom.root)},s.prototype.destroy=function(){this.clear(),this.off(),this._stopAutoResize(),this.dom.root.parentNode&&this.dom.root.parentNode.removeChild(this.dom.root),this.dom=null;for(var t in this.listeners)this.listeners.hasOwnProperty(t)&&delete this.listeners[t];this.listeners=null,this.hammer=null,this.components.forEach(function(t){t.destroy()}),this.body=null},s.prototype.setOptions=function(t){if(t){var e=["width","height","minHeight","maxHeight","autoResize","start","end","orientation"];r.selectiveExtend(e,this.options,t),this._initAutoResize()}if(this.components.forEach(function(e){e.setOptions(t)}),t&&t.order)throw new Error("Option order is deprecated. There is no replacement for this feature.");this.redraw()},s.prototype.setCustomTime=function(t){if(!this.customTime)throw new Error("Cannot get custom time: Custom time bar is not enabled");this.customTime.setCustomTime(t)},s.prototype.getCustomTime=function(){if(!this.customTime)throw new Error("Cannot get custom time: Custom time bar is not enabled");return this.customTime.getCustomTime()},s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof a||t instanceof h?t:new a(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.itemSet&&this.itemSet.setItems(e),i&&("start"in this.options||"end"in this.options)){this.fit();var s="start"in this.options?r.convert(this.options.start,"Date"):null,o="end"in this.options?r.convert(this.options.end,"Date"):null;this.setWindow(s,o)}},s.prototype.getVisibleItems=function(){return this.itemSet&&this.itemSet.getVisibleItems()||[]},s.prototype.setGroups=function(t){var e;e=t?t instanceof a||t instanceof h?t:new a(t):null,this.groupsData=e,this.itemSet.setGroups(e)},s.prototype.clear=function(t){(!t||t.items)&&this.setItems(null),(!t||t.groups)&&this.setGroups(null),(!t||t.options)&&(this.components.forEach(function(t){t.setOptions(t.defaultOptions)}),this.setOptions(this.defaultOptions))},s.prototype.fit=function(){var t=this.getItemRange(),e=t.min,i=t.max;if(null!=e&&null!=i){var s=i.valueOf()-e.valueOf();0>=s&&(s=864e5),e=new Date(e.valueOf()-.05*s),i=new Date(i.valueOf()+.05*s)}(null!==e||null!==i)&&this.range.setRange(e,i)},s.prototype.getItemRange=function(){var t=this.itemsData.getDataSet(),e=null,i=null;if(t){var s=t.min("start");e=s?r.convert(s.start,"Date").valueOf():null;var o=t.max("start");o&&(i=r.convert(o.start,"Date").valueOf());var n=t.max("end");n&&(i=null==i?r.convert(n.end,"Date").valueOf():Math.max(i,r.convert(n.end,"Date").valueOf()))}return{min:null!=e?new Date(e):null,max:null!=i?new Date(i):null}},s.prototype.setSelection=function(t){this.itemSet&&this.itemSet.setSelection(t)},s.prototype.getSelection=function(){return this.itemSet&&this.itemSet.getSelection()||[]},s.prototype.setWindow=function(t,e){if(1==arguments.length){var i=arguments[0];this.range.setRange(i.start,i.end)}else this.range.setRange(t,e)},s.prototype.getWindow=function(){var t=this.range.getRange();return{start:new Date(t.start),end:new Date(t.end)}},s.prototype.redraw=function(){var t=!1,e=this.options,i=this.props,s=this.dom;if(s){s.root.className="vis timeline root "+e.orientation,s.root.style.maxHeight=r.option.asSize(e.maxHeight,""),s.root.style.minHeight=r.option.asSize(e.minHeight,""),s.root.style.width=r.option.asSize(e.width,""),i.border.left=(s.centerContainer.offsetWidth-s.centerContainer.clientWidth)/2,i.border.right=i.border.left,i.border.top=(s.centerContainer.offsetHeight-s.centerContainer.clientHeight)/2,i.border.bottom=i.border.top;var o=s.root.offsetHeight-s.root.clientHeight,n=s.root.offsetWidth-s.root.clientWidth;i.center.height=s.center.offsetHeight,i.left.height=s.left.offsetHeight,i.right.height=s.right.offsetHeight,i.top.height=s.top.clientHeight||-i.border.top,i.bottom.height=s.bottom.clientHeight||-i.border.bottom;var a=Math.max(i.left.height,i.center.height,i.right.height),h=i.top.height+a+i.bottom.height+o+i.border.top+i.border.bottom;s.root.style.height=r.option.asSize(e.height,h+"px"),i.root.height=s.root.offsetHeight,i.background.height=i.root.height-o;var d=i.root.height-i.top.height-i.bottom.height-o;i.centerContainer.height=d,i.leftContainer.height=d,i.rightContainer.height=i.leftContainer.height,i.root.width=s.root.offsetWidth,i.background.width=i.root.width-n,i.left.width=s.leftContainer.clientWidth||-i.border.left,i.leftContainer.width=i.left.width,i.right.width=s.rightContainer.clientWidth||-i.border.right,i.rightContainer.width=i.right.width;var l=i.root.width-i.left.width-i.right.width-n;i.center.width=l,i.centerContainer.width=l,i.top.width=l,i.bottom.width=l,s.background.style.height=i.background.height+"px",s.backgroundVertical.style.height=i.background.height+"px",s.backgroundHorizontal.style.height=i.centerContainer.height+"px",s.centerContainer.style.height=i.centerContainer.height+"px",s.leftContainer.style.height=i.leftContainer.height+"px",s.rightContainer.style.height=i.rightContainer.height+"px",s.background.style.width=i.background.width+"px",s.backgroundVertical.style.width=i.centerContainer.width+"px",s.backgroundHorizontal.style.width=i.background.width+"px",s.centerContainer.style.width=i.center.width+"px",s.top.style.width=i.top.width+"px",s.bottom.style.width=i.bottom.width+"px",s.background.style.left="0",s.background.style.top="0",s.backgroundVertical.style.left=i.left.width+"px",s.backgroundVertical.style.top="0",s.backgroundHorizontal.style.left="0",s.backgroundHorizontal.style.top=i.top.height+"px",s.centerContainer.style.left=i.left.width+"px",s.centerContainer.style.top=i.top.height+"px",s.leftContainer.style.left="0",s.leftContainer.style.top=i.top.height+"px",s.rightContainer.style.left=i.left.width+i.center.width+"px",s.rightContainer.style.top=i.top.height+"px",s.top.style.left=i.left.width+"px",s.top.style.top="0",s.bottom.style.left=i.left.width+"px",s.bottom.style.top=i.top.height+i.centerContainer.height+"px",this._updateScrollTop();var c=this.props.scrollTop;"bottom"==e.orientation&&(c+=Math.max(this.props.centerContainer.height-this.props.center.height-this.props.border.top-this.props.border.bottom,0)),s.center.style.left="0",s.center.style.top=c+"px",s.left.style.left="0",s.left.style.top=c+"px",s.right.style.left="0",s.right.style.top=c+"px";var p=0==this.props.scrollTop?"hidden":"",u=this.props.scrollTop==this.props.scrollTopMin?"hidden":"";s.shadowTop.style.visibility=p,s.shadowBottom.style.visibility=u,s.shadowTopLeft.style.visibility=p,s.shadowBottomLeft.style.visibility=u,s.shadowTopRight.style.visibility=p,s.shadowBottomRight.style.visibility=u,this.components.forEach(function(e){t=e.redraw()||t}),t&&this.redraw()}},s.prototype.repaint=function(){throw new Error("Function repaint is deprecated. Use redraw instead.")},s.prototype._toTime=function(t){var e=this.range.conversion(this.props.center.width);return new Date(t/e.scale+e.offset)},s.prototype._toGlobalTime=function(t){var e=this.range.conversion(this.props.root.width);return new Date(t/e.scale+e.offset)},s.prototype._toScreen=function(t){var e=this.range.conversion(this.props.center.width);return(t.valueOf()-e.offset)*e.scale},s.prototype._toGlobalScreen=function(t){var e=this.range.conversion(this.props.root.width);return(t.valueOf()-e.offset)*e.scale},s.prototype._initAutoResize=function(){1==this.options.autoResize?this._startAutoResize():this._stopAutoResize()},s.prototype._startAutoResize=function(){var t=this;this._stopAutoResize(),this._onResize=function(){return 1!=t.options.autoResize?void t._stopAutoResize():void(t.dom.root&&(t.dom.root.clientWidth!=t.props.lastWidth||t.dom.root.clientHeight!=t.props.lastHeight)&&(t.props.lastWidth=t.dom.root.clientWidth,t.props.lastHeight=t.dom.root.clientHeight,t.emit("change")))},r.addEventListener(window,"resize",this._onResize),this.watchTimer=setInterval(this._onResize,1e3)},s.prototype._stopAutoResize=function(){this.watchTimer&&(clearInterval(this.watchTimer),this.watchTimer=void 0),r.removeEventListener(window,"resize",this._onResize),this._onResize=null},s.prototype._onTouch=function(){this.touch.allowDragging=!0},s.prototype._onPinch=function(){this.touch.allowDragging=!1},s.prototype._onDragStart=function(){this.touch.initialScrollTop=this.props.scrollTop},s.prototype._onDrag=function(t){if(this.touch.allowDragging){var e=t.gesture.deltaY,i=this._getScrollTop(),s=this._setScrollTop(this.touch.initialScrollTop+e);s!=i&&this.redraw()}},s.prototype._setScrollTop=function(t){return this.props.scrollTop=t,this._updateScrollTop(),this.props.scrollTop},s.prototype._updateScrollTop=function(){var t=Math.min(this.props.centerContainer.height-this.props.center.height,0);return t!=this.props.scrollTopMin&&("bottom"==this.options.orientation&&(this.props.scrollTop+=t-this.props.scrollTopMin),this.props.scrollTopMin=t),this.props.scrollTop>0&&(this.props.scrollTop=0),this.props.scrollTop=s&&(s=864e5),e=new Date(e.valueOf()-.05*s),i=new Date(i.valueOf()+.05*s)}(null!==e||null!==i)&&this.range.setRange(e,i)},s.prototype.getItemRange=function(){var t=this.itemsData,e=null,i=null;if(t){var s=t.min("start");e=s?r.convert(s.start,"Date").valueOf():null;var o=t.max("start");o&&(i=r.convert(o.start,"Date").valueOf());var n=t.max("end");n&&(i=null==i?r.convert(n.end,"Date").valueOf():Math.max(i,r.convert(n.end,"Date").valueOf()))}return{min:null!=e?new Date(e):null,max:null!=i?new Date(i):null}},s.prototype.setWindow=function(t,e){if(1==arguments.length){var i=arguments[0];this.range.setRange(i.start,i.end)}else this.range.setRange(t,e)},s.prototype.getWindow=function(){var t=this.range.getRange();return{start:new Date(t.start),end:new Date(t.end)}},s.prototype.redraw=function(){var t=!1,e=this.options,i=this.props,s=this.dom;if(s){s.root.className="vis timeline root "+e.orientation,s.root.style.maxHeight=r.option.asSize(e.maxHeight,""),s.root.style.minHeight=r.option.asSize(e.minHeight,""),s.root.style.width=r.option.asSize(e.width,""),i.border.left=(s.centerContainer.offsetWidth-s.centerContainer.clientWidth)/2,i.border.right=i.border.left,i.border.top=(s.centerContainer.offsetHeight-s.centerContainer.clientHeight)/2,i.border.bottom=i.border.top;var o=s.root.offsetHeight-s.root.clientHeight,n=s.root.offsetWidth-s.root.clientWidth;i.center.height=s.center.offsetHeight,i.left.height=s.left.offsetHeight,i.right.height=s.right.offsetHeight,i.top.height=s.top.clientHeight||-i.border.top,i.bottom.height=s.bottom.clientHeight||-i.border.bottom;var a=Math.max(i.left.height,i.center.height,i.right.height),h=i.top.height+a+i.bottom.height+o+i.border.top+i.border.bottom;s.root.style.height=r.option.asSize(e.height,h+"px"),i.root.height=s.root.offsetHeight,i.background.height=i.root.height-o;var d=i.root.height-i.top.height-i.bottom.height-o;i.centerContainer.height=d,i.leftContainer.height=d,i.rightContainer.height=i.leftContainer.height,i.root.width=s.root.offsetWidth,i.background.width=i.root.width-n,i.left.width=s.leftContainer.clientWidth||-i.border.left,i.leftContainer.width=i.left.width,i.right.width=s.rightContainer.clientWidth||-i.border.right,i.rightContainer.width=i.right.width;var l=i.root.width-i.left.width-i.right.width-n;i.center.width=l,i.centerContainer.width=l,i.top.width=l,i.bottom.width=l,s.background.style.height=i.background.height+"px",s.backgroundVertical.style.height=i.background.height+"px",s.backgroundHorizontalContainer.style.height=i.centerContainer.height+"px",s.centerContainer.style.height=i.centerContainer.height+"px",s.leftContainer.style.height=i.leftContainer.height+"px",s.rightContainer.style.height=i.rightContainer.height+"px",s.background.style.width=i.background.width+"px",s.backgroundVertical.style.width=i.centerContainer.width+"px",s.backgroundHorizontalContainer.style.width=i.background.width+"px",s.backgroundHorizontal.style.width=i.background.width+"px",s.centerContainer.style.width=i.center.width+"px",s.top.style.width=i.top.width+"px",s.bottom.style.width=i.bottom.width+"px",s.background.style.left="0",s.background.style.top="0",s.backgroundVertical.style.left=i.left.width+"px",s.backgroundVertical.style.top="0",s.backgroundHorizontalContainer.style.left="0",s.backgroundHorizontalContainer.style.top=i.top.height+"px",s.centerContainer.style.left=i.left.width+"px",s.centerContainer.style.top=i.top.height+"px",s.leftContainer.style.left="0",s.leftContainer.style.top=i.top.height+"px",s.rightContainer.style.left=i.left.width+i.center.width+"px",s.rightContainer.style.top=i.top.height+"px",s.top.style.left=i.left.width+"px",s.top.style.top="0",s.bottom.style.left=i.left.width+"px",s.bottom.style.top=i.top.height+i.centerContainer.height+"px",this._updateScrollTop();var c=this.props.scrollTop;"bottom"==e.orientation&&(c+=Math.max(this.props.centerContainer.height-this.props.center.height-this.props.border.top-this.props.border.bottom,0)),s.center.style.left="0",s.center.style.top=c+"px",s.backgroundHorizontal.style.left="0",s.backgroundHorizontal.style.top=c+"px",s.left.style.left="0",s.left.style.top=c+"px",s.right.style.left="0",s.right.style.top=c+"px";var p=0==this.props.scrollTop?"hidden":"",u=this.props.scrollTop==this.props.scrollTopMin?"hidden":"";s.shadowTop.style.visibility=p,s.shadowBottom.style.visibility=u,s.shadowTopLeft.style.visibility=p,s.shadowBottomLeft.style.visibility=u,s.shadowTopRight.style.visibility=p,s.shadowBottomRight.style.visibility=u,this.components.forEach(function(e){t=e.redraw()||t}),t&&this.redraw()}},s.prototype._toTime=function(t){var e=this.range.conversion(this.props.center.width);return new Date(t/e.scale+e.offset)},s.prototype._toGlobalTime=function(t){var e=this.range.conversion(this.props.root.width);return new Date(t/e.scale+e.offset)},s.prototype._toScreen=function(t){var e=this.range.conversion(this.props.center.width);return(t.valueOf()-e.offset)*e.scale},s.prototype._toGlobalScreen=function(t){var e=this.range.conversion(this.props.root.width);return(t.valueOf()-e.offset)*e.scale},s.prototype._initAutoResize=function(){1==this.options.autoResize?this._startAutoResize():this._stopAutoResize()},s.prototype._startAutoResize=function(){var t=this;this._stopAutoResize(),this._onResize=function(){return 1!=t.options.autoResize?void t._stopAutoResize():void(t.dom.root&&(t.dom.root.clientWidth!=t.props.lastWidth||t.dom.root.clientHeight!=t.props.lastHeight)&&(t.props.lastWidth=t.dom.root.clientWidth,t.props.lastHeight=t.dom.root.clientHeight,t.emit("change")))},r.addEventListener(window,"resize",this._onResize),this.watchTimer=setInterval(this._onResize,1e3)},s.prototype._stopAutoResize=function(){this.watchTimer&&(clearInterval(this.watchTimer),this.watchTimer=void 0),r.removeEventListener(window,"resize",this._onResize),this._onResize=null},s.prototype._onTouch=function(){this.touch.allowDragging=!0},s.prototype._onPinch=function(){this.touch.allowDragging=!1},s.prototype._onDragStart=function(){this.touch.initialScrollTop=this.props.scrollTop},s.prototype._onDrag=function(t){if(this.touch.allowDragging){var e=t.gesture.deltaY,i=this._getScrollTop(),s=this._setScrollTop(this.touch.initialScrollTop+e);s!=i&&this.redraw()}},s.prototype._setScrollTop=function(t){return this.props.scrollTop=t,this._updateScrollTop(),this.props.scrollTop},s.prototype._updateScrollTop=function(){var t=Math.min(this.props.centerContainer.height-this.props.center.height,0);return t!=this.props.scrollTopMin&&("bottom"==this.options.orientation&&(this.props.scrollTop+=t-this.props.scrollTopMin),this.props.scrollTopMin=t),this.props.scrollTop>0&&(this.props.scrollTop=0),this.props.scrollTopn&&(h=n);for(var d=!1,l=h;Math.abs(l)<=Math.abs(n);l++){a=Math.pow(10,l);for(var c=0;c=o){d=!0,r=c;break +}}if(1==d)break}this.stepIndex=r,this.scale=a,this.step=a*this.minorSteps[r]},e.prototype.first=function(){this.setFirst()},e.prototype.setFirst=function(){var t=this._start-this.scale*this.minorSteps[this.stepIndex],e=this._end+this.scale*this.minorSteps[this.stepIndex];this.marginEnd=this.roundToMinor(e),this.marginStart=this.roundToMinor(t),this.marginRange=this.marginEnd-this.marginStart,this.current=this.marginEnd},e.prototype.roundToMinor=function(t){var e=t-t%(this.scale*this.minorSteps[this.stepIndex]);return t%(this.scale*this.minorSteps[this.stepIndex])>.5*this.scale*this.minorSteps[this.stepIndex]?e+this.scale*this.minorSteps[this.stepIndex]:e},e.prototype.hasNext=function(){return this.current>=this.marginStart},e.prototype.next=function(){var t=this.current;this.current-=this.step,this.current==t&&(this.current=this._end)},e.prototype.previous=function(){this.current+=this.step,this.marginEnd+=this.step,this.marginRange=this.marginEnd-this.marginStart},e.prototype.getCurrent=function(){for(var t=""+Number(this.current).toPrecision(5),e=t.length-1;e>0;e--){if("0"!=t[e]){if("."==t[e]||","==t[e]){t=t.slice(0,e);break}break}t=t.slice(0,e)}return t},e.prototype.snap=function(){},e.prototype.isMajor=function(){return this.current%(this.scale*this.majorSteps[this.stepIndex])==0},t.exports=e},function(t,e,i){function s(t,e){var i=h().hours(0).minutes(0).seconds(0).milliseconds(0);this.start=i.clone().add("days",-3).valueOf(),this.end=i.clone().add("days",4).valueOf(),this.body=t,this.defaultOptions={start:null,end:null,direction:"horizontal",moveable:!0,zoomable:!0,min:null,max:null,zoomMin:10,zoomMax:31536e10},this.options=r.extend({},this.defaultOptions),this.props={touch:{}},this.body.emitter.on("dragstart",this._onDragStart.bind(this)),this.body.emitter.on("drag",this._onDrag.bind(this)),this.body.emitter.on("dragend",this._onDragEnd.bind(this)),this.body.emitter.on("hold",this._onHold.bind(this)),this.body.emitter.on("mousewheel",this._onMouseWheel.bind(this)),this.body.emitter.on("DOMMouseScroll",this._onMouseWheel.bind(this)),this.body.emitter.on("touch",this._onTouch.bind(this)),this.body.emitter.on("pinch",this._onPinch.bind(this)),this.setOptions(e)}function o(t){if("horizontal"!=t&&"vertical"!=t)throw new TypeError('Unknown direction "'+t+'". Choose "horizontal" or "vertical".')}function n(t,e){return{x:t.pageX-r.getAbsoluteLeft(e),y:t.pageY-r.getAbsoluteTop(e)}}var r=i(1),a=i(41),h=i(39),d=i(18);s.prototype=new d,s.prototype.setOptions=function(t){if(t){var e=["direction","min","max","zoomMin","zoomMax","moveable","zoomable"];r.selectiveExtend(e,this.options,t),("start"in t||"end"in t)&&this.setRange(t.start,t.end)}},s.prototype.setRange=function(t,e){var i=this._applyRange(t,e);if(i){var s={start:new Date(this.start),end:new Date(this.end)};this.body.emitter.emit("rangechange",s),this.body.emitter.emit("rangechanged",s)}},s.prototype._applyRange=function(t,e){var i,s=null!=t?r.convert(t,"Date").valueOf():this.start,o=null!=e?r.convert(e,"Date").valueOf():this.end,n=null!=this.options.max?r.convert(this.options.max,"Date").valueOf():null,a=null!=this.options.min?r.convert(this.options.min,"Date").valueOf():null;if(isNaN(s)||null===s)throw new Error('Invalid start "'+t+'"');if(isNaN(o)||null===o)throw new Error('Invalid end "'+e+'"');if(s>o&&(o=s),null!==a&&a>s&&(i=a-s,s+=i,o+=i,null!=n&&o>n&&(o=n)),null!==n&&o>n&&(i=o-n,s-=i,o-=i,null!=a&&a>s&&(s=a)),null!==this.options.zoomMin){var h=parseFloat(this.options.zoomMin);0>h&&(h=0),h>o-s&&(this.end-this.start===h?(s=this.start,o=this.end):(i=h-(o-s),s-=i/2,o+=i/2))}if(null!==this.options.zoomMax){var d=parseFloat(this.options.zoomMax);0>d&&(d=0),o-s>d&&(this.end-this.start===d?(s=this.start,o=this.end):(i=o-s-d,s+=i/2,o-=i/2))}var l=this.start!=s||this.end!=o;return this.start=s,this.end=o,l},s.prototype.getRange=function(){return{start:this.start,end:this.end}},s.prototype.conversion=function(t){return s.conversion(this.start,this.end,t)},s.conversion=function(t,e,i){return 0!=i&&e-t!=0?{offset:t,scale:i/(e-t)}:{offset:0,scale:1}},s.prototype._onDragStart=function(){this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.start=this.start,this.props.touch.end=this.end,this.body.dom.root&&(this.body.dom.root.style.cursor="move"))},s.prototype._onDrag=function(t){if(this.options.moveable){var e=this.options.direction;if(o(e),this.props.touch.allowDragging){var i="horizontal"==e?t.gesture.deltaX:t.gesture.deltaY,s=this.props.touch.end-this.props.touch.start,n="horizontal"==e?this.body.domProps.center.width:this.body.domProps.center.height,r=-i/n*s;this._applyRange(this.props.touch.start+r,this.props.touch.end+r),this.body.emitter.emit("rangechange",{start:new Date(this.start),end:new Date(this.end)})}}},s.prototype._onDragEnd=function(){this.options.moveable&&this.props.touch.allowDragging&&(this.body.dom.root&&(this.body.dom.root.style.cursor="auto"),this.body.emitter.emit("rangechanged",{start:new Date(this.start),end:new Date(this.end)}))},s.prototype._onMouseWheel=function(t){if(this.options.zoomable&&this.options.moveable){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i;i=0>e?1-e/5:1/(1+e/5);var s=a.fakeGesture(this,t),o=n(s.center,this.body.dom.center),r=this._pointerToDate(o);this.zoom(i,r)}t.preventDefault()}},s.prototype._onTouch=function(){this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.allowDragging=!0,this.props.touch.center=null},s.prototype._onHold=function(){this.props.touch.allowDragging=!1},s.prototype._onPinch=function(t){if(this.options.zoomable&&this.options.moveable&&(this.props.touch.allowDragging=!1,t.gesture.touches.length>1)){this.props.touch.center||(this.props.touch.center=n(t.gesture.center,this.body.dom.center));var e=1/t.gesture.scale,i=this._pointerToDate(this.props.touch.center),s=parseInt(i+(this.props.touch.start-i)*e),o=parseInt(i+(this.props.touch.end-i)*e);this.setRange(s,o)}},s.prototype._pointerToDate=function(t){var e,i=this.options.direction;if(o(i),"horizontal"==i){var s=this.body.domProps.center.width;return e=this.conversion(s),t.x/e.scale+e.offset}var n=this.body.domProps.center.height;return e=this.conversion(n),t.y/e.scale+e.offset},s.prototype.zoom=function(t,e){null==e&&(e=(this.start+this.end)/2);var i=e+(this.start-e)*t,s=e+(this.end-e)*t;this.setRange(i,s)},s.prototype.move=function(t){var e=this.end-this.start,i=this.start+e*t,s=this.end+e*t;this.start=i,this.end=s},s.prototype.moveTo=function(t){var e=(this.start+this.end)/2,i=e-t,s=this.start-i,o=this.end-i;this.setRange(s,o)},t.exports=s},function(t,e){var i=.001;e.orderByStart=function(t){t.sort(function(t,e){return t.data.start-e.data.start})},e.orderByEnd=function(t){t.sort(function(t,e){var i="end"in t.data?t.data.end:t.data.start,s="end"in e.data?e.data.end:e.data.start;return i-s})},e.stack=function(t,i,s){var o,n;if(s)for(o=0,n=t.length;n>o;o++)t[o].top=null;for(o=0,n=t.length;n>o;o++){var r=t[o];if(null===r.top){r.top=i.axis;do{for(var a=null,h=0,d=t.length;d>h;h++){var l=t[h];if(null!==l.top&&l!==r&&e.collision(r,l,i.item)){a=l;break}}null!=a&&(r.top=a.top+a.height+i.item.vertical)}while(a)}}},e.nostack=function(t,e){var i,s;for(i=0,s=t.length;s>i;i++)t[i].top=e.axis},e.collision=function(t,e,s){return t.left-s.horizontal+ie.left&&t.top-s.vertical+ie.top}},function(t,e,i){function s(t,e,i){this.current=new Date,this._start=new Date,this._end=new Date,this.autoScale=!0,this.scale=s.SCALE.DAY,this.step=1,this.setRange(t,e,i)}var o=i(39);s.SCALE={MILLISECOND:1,SECOND:2,MINUTE:3,HOUR:4,DAY:5,WEEKDAY:6,MONTH:7,YEAR:8},s.prototype.setRange=function(t,e,i){if(!(t instanceof Date&&e instanceof Date))throw"No legal start or end date in method setRange";this._start=void 0!=t?new Date(t.valueOf()):new Date,this._end=void 0!=e?new Date(e.valueOf()):new Date,this.autoScale&&this.setMinimumStep(i)},s.prototype.first=function(){this.current=new Date(this._start.valueOf()),this.roundToMinor()},s.prototype.roundToMinor=function(){switch(this.scale){case s.SCALE.YEAR:this.current.setFullYear(this.step*Math.floor(this.current.getFullYear()/this.step)),this.current.setMonth(0);case s.SCALE.MONTH:this.current.setDate(1);case s.SCALE.DAY:case s.SCALE.WEEKDAY:this.current.setHours(0);case s.SCALE.HOUR:this.current.setMinutes(0);case s.SCALE.MINUTE:this.current.setSeconds(0);case s.SCALE.SECOND:this.current.setMilliseconds(0)}if(1!=this.step)switch(this.scale){case s.SCALE.MILLISECOND:this.current.setMilliseconds(this.current.getMilliseconds()-this.current.getMilliseconds()%this.step);break;case s.SCALE.SECOND:this.current.setSeconds(this.current.getSeconds()-this.current.getSeconds()%this.step);break;case s.SCALE.MINUTE:this.current.setMinutes(this.current.getMinutes()-this.current.getMinutes()%this.step);break;case s.SCALE.HOUR:this.current.setHours(this.current.getHours()-this.current.getHours()%this.step);break;case s.SCALE.WEEKDAY:case s.SCALE.DAY:this.current.setDate(this.current.getDate()-1-(this.current.getDate()-1)%this.step+1);break;case s.SCALE.MONTH:this.current.setMonth(this.current.getMonth()-this.current.getMonth()%this.step);break;case s.SCALE.YEAR:this.current.setFullYear(this.current.getFullYear()-this.current.getFullYear()%this.step)}},s.prototype.hasNext=function(){return this.current.valueOf()<=this._end.valueOf()},s.prototype.next=function(){var t=this.current.valueOf();if(this.current.getMonth()<6)switch(this.scale){case s.SCALE.MILLISECOND:this.current=new Date(this.current.valueOf()+this.step);break;case s.SCALE.SECOND:this.current=new Date(this.current.valueOf()+1e3*this.step);break;case s.SCALE.MINUTE:this.current=new Date(this.current.valueOf()+1e3*this.step*60);break;case s.SCALE.HOUR:this.current=new Date(this.current.valueOf()+1e3*this.step*60*60);var e=this.current.getHours();this.current.setHours(e-e%this.step);break;case s.SCALE.WEEKDAY:case s.SCALE.DAY:this.current.setDate(this.current.getDate()+this.step);break;case s.SCALE.MONTH:this.current.setMonth(this.current.getMonth()+this.step);break;case s.SCALE.YEAR:this.current.setFullYear(this.current.getFullYear()+this.step)}else switch(this.scale){case s.SCALE.MILLISECOND:this.current=new Date(this.current.valueOf()+this.step);break;case s.SCALE.SECOND:this.current.setSeconds(this.current.getSeconds()+this.step);break;case s.SCALE.MINUTE:this.current.setMinutes(this.current.getMinutes()+this.step);break;case s.SCALE.HOUR:this.current.setHours(this.current.getHours()+this.step);break;case s.SCALE.WEEKDAY:case s.SCALE.DAY:this.current.setDate(this.current.getDate()+this.step);break;case s.SCALE.MONTH:this.current.setMonth(this.current.getMonth()+this.step);break;case s.SCALE.YEAR:this.current.setFullYear(this.current.getFullYear()+this.step)}if(1!=this.step)switch(this.scale){case s.SCALE.MILLISECOND:this.current.getMilliseconds()0&&(this.step=e),this.autoScale=!1},s.prototype.setAutoScale=function(t){this.autoScale=t},s.prototype.setMinimumStep=function(t){if(void 0!=t){var e=31104e6,i=2592e6,o=864e5,n=36e5,r=6e4,a=1e3,h=1;1e3*e>t&&(this.scale=s.SCALE.YEAR,this.step=1e3),500*e>t&&(this.scale=s.SCALE.YEAR,this.step=500),100*e>t&&(this.scale=s.SCALE.YEAR,this.step=100),50*e>t&&(this.scale=s.SCALE.YEAR,this.step=50),10*e>t&&(this.scale=s.SCALE.YEAR,this.step=10),5*e>t&&(this.scale=s.SCALE.YEAR,this.step=5),e>t&&(this.scale=s.SCALE.YEAR,this.step=1),3*i>t&&(this.scale=s.SCALE.MONTH,this.step=3),i>t&&(this.scale=s.SCALE.MONTH,this.step=1),5*o>t&&(this.scale=s.SCALE.DAY,this.step=5),2*o>t&&(this.scale=s.SCALE.DAY,this.step=2),o>t&&(this.scale=s.SCALE.DAY,this.step=1),o/2>t&&(this.scale=s.SCALE.WEEKDAY,this.step=1),4*n>t&&(this.scale=s.SCALE.HOUR,this.step=4),n>t&&(this.scale=s.SCALE.HOUR,this.step=1),15*r>t&&(this.scale=s.SCALE.MINUTE,this.step=15),10*r>t&&(this.scale=s.SCALE.MINUTE,this.step=10),5*r>t&&(this.scale=s.SCALE.MINUTE,this.step=5),r>t&&(this.scale=s.SCALE.MINUTE,this.step=1),15*a>t&&(this.scale=s.SCALE.SECOND,this.step=15),10*a>t&&(this.scale=s.SCALE.SECOND,this.step=10),5*a>t&&(this.scale=s.SCALE.SECOND,this.step=5),a>t&&(this.scale=s.SCALE.SECOND,this.step=1),200*h>t&&(this.scale=s.SCALE.MILLISECOND,this.step=200),100*h>t&&(this.scale=s.SCALE.MILLISECOND,this.step=100),50*h>t&&(this.scale=s.SCALE.MILLISECOND,this.step=50),10*h>t&&(this.scale=s.SCALE.MILLISECOND,this.step=10),5*h>t&&(this.scale=s.SCALE.MILLISECOND,this.step=5),h>t&&(this.scale=s.SCALE.MILLISECOND,this.step=1)}},s.prototype.snap=function(t){var e=new Date(t.valueOf());if(this.scale==s.SCALE.YEAR){var i=e.getFullYear()+Math.round(e.getMonth()/12);e.setFullYear(Math.round(i/this.step)*this.step),e.setMonth(0),e.setDate(0),e.setHours(0),e.setMinutes(0),e.setSeconds(0),e.setMilliseconds(0)}else if(this.scale==s.SCALE.MONTH)e.getDate()>15?(e.setDate(1),e.setMonth(e.getMonth()+1)):e.setDate(1),e.setHours(0),e.setMinutes(0),e.setSeconds(0),e.setMilliseconds(0);else if(this.scale==s.SCALE.DAY){switch(this.step){case 5:case 2:e.setHours(24*Math.round(e.getHours()/24));break;default:e.setHours(12*Math.round(e.getHours()/12))}e.setMinutes(0),e.setSeconds(0),e.setMilliseconds(0)}else if(this.scale==s.SCALE.WEEKDAY){switch(this.step){case 5:case 2:e.setHours(12*Math.round(e.getHours()/12));break;default:e.setHours(6*Math.round(e.getHours()/6))}e.setMinutes(0),e.setSeconds(0),e.setMilliseconds(0)}else if(this.scale==s.SCALE.HOUR){switch(this.step){case 4:e.setMinutes(60*Math.round(e.getMinutes()/60));break;default:e.setMinutes(30*Math.round(e.getMinutes()/30))}e.setSeconds(0),e.setMilliseconds(0)}else if(this.scale==s.SCALE.MINUTE){switch(this.step){case 15:case 10:e.setMinutes(5*Math.round(e.getMinutes()/5)),e.setSeconds(0);break;case 5:e.setSeconds(60*Math.round(e.getSeconds()/60));break;default:e.setSeconds(30*Math.round(e.getSeconds()/30))}e.setMilliseconds(0)}else if(this.scale==s.SCALE.SECOND)switch(this.step){case 15:case 10:e.setSeconds(5*Math.round(e.getSeconds()/5)),e.setMilliseconds(0);break;case 5:e.setMilliseconds(1e3*Math.round(e.getMilliseconds()/1e3));break;default:e.setMilliseconds(500*Math.round(e.getMilliseconds()/500))}else if(this.scale==s.SCALE.MILLISECOND){var o=this.step>5?this.step/2:1;e.setMilliseconds(Math.round(e.getMilliseconds()/o)*o)}return e},s.prototype.isMajor=function(){switch(this.scale){case s.SCALE.MILLISECOND:return 0==this.current.getMilliseconds();case s.SCALE.SECOND:return 0==this.current.getSeconds();case s.SCALE.MINUTE:return 0==this.current.getHours()&&0==this.current.getMinutes();case s.SCALE.HOUR:return 0==this.current.getHours();case s.SCALE.WEEKDAY:case s.SCALE.DAY:return 1==this.current.getDate();case s.SCALE.MONTH:return 0==this.current.getMonth();case s.SCALE.YEAR:return!1;default:return!1}},s.prototype.getLabelMinor=function(t){switch(void 0==t&&(t=this.current),this.scale){case s.SCALE.MILLISECOND:return o(t).format("SSS");case s.SCALE.SECOND:return o(t).format("s");case s.SCALE.MINUTE:return o(t).format("HH:mm");case s.SCALE.HOUR:return o(t).format("HH:mm");case s.SCALE.WEEKDAY:return o(t).format("ddd D");case s.SCALE.DAY:return o(t).format("D");case s.SCALE.MONTH:return o(t).format("MMM");case s.SCALE.YEAR:return o(t).format("YYYY");default:return""}},s.prototype.getLabelMajor=function(t){switch(void 0==t&&(t=this.current),this.scale){case s.SCALE.MILLISECOND:return o(t).format("HH:mm:ss");case s.SCALE.SECOND:return o(t).format("D MMMM HH:mm");case s.SCALE.MINUTE:case s.SCALE.HOUR:return o(t).format("ddd D MMMM");case s.SCALE.WEEKDAY:case s.SCALE.DAY:return o(t).format("MMMM YYYY");case s.SCALE.MONTH:return o(t).format("YYYY");case s.SCALE.YEAR:return"";default:return""}},t.exports=s},function(t){function e(){this.options=null,this.props=null}e.prototype.setOptions=function(t){t&&util.extend(this.options,t)},e.prototype.redraw=function(){return!1},e.prototype.destroy=function(){},e.prototype._isResized=function(){var t=this.props._previousWidth!==this.props.width||this.props._previousHeight!==this.props.height;return this.props._previousWidth=this.props.width,this.props._previousHeight=this.props.height,t},t.exports=e},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCurrentTime:!0},this.options=o.extend({},this.defaultOptions),this._create(),this.setOptions(e)}var o=i(1),n=i(18);s.prototype=new n,s.prototype._create=function(){var t=document.createElement("div");t.className="currenttime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t},s.prototype.destroy=function(){this.options.showCurrentTime=!1,this.redraw(),this.body=null},s.prototype.setOptions=function(t){t&&o.selectiveExtend(["showCurrentTime"],this.options,t)},s.prototype.redraw=function(){if(this.options.showCurrentTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar),this.start());var e=new Date,i=this.body.util.toScreen(e);this.bar.style.left=i+"px",this.bar.title="Current time: "+e}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),this.stop();return!1},s.prototype.start=function(){function t(){e.stop();var i=e.body.range.conversion(e.body.domProps.center.width).scale,s=1/i/10;30>s&&(s=30),s>1e3&&(s=1e3),e.redraw(),e.currentTimeTimer=setTimeout(t,s)}var e=this;t()},s.prototype.stop=function(){void 0!==this.currentTimeTimer&&(clearTimeout(this.currentTimeTimer),delete this.currentTimeTimer)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCustomTime:!1},this.options=n.extend({},this.defaultOptions),this.customTime=new Date,this.eventParams={},this._create(),this.setOptions(e)}var o=i(40),n=i(1),r=i(18);s.prototype=new r,s.prototype.setOptions=function(t){t&&n.selectiveExtend(["showCustomTime"],this.options,t)},s.prototype._create=function(){var t=document.createElement("div");t.className="customtime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t;var e=document.createElement("div");e.style.position="relative",e.style.top="0px",e.style.left="-10px",e.style.height="100%",e.style.width="20px",t.appendChild(e),this.hammer=o(t,{prevent_default:!0}),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this))},s.prototype.destroy=function(){this.options.showCustomTime=!1,this.redraw(),this.hammer.enable(!1),this.hammer=null,this.body=null},s.prototype.redraw=function(){if(this.options.showCustomTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar));var e=this.body.util.toScreen(this.customTime);this.bar.style.left=e+"px",this.bar.title="Time: "+this.customTime}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar);return!1},s.prototype.setCustomTime=function(t){this.customTime=new Date(t.valueOf()),this.redraw()},s.prototype.getCustomTime=function(){return new Date(this.customTime.valueOf())},s.prototype._onDragStart=function(t){this.eventParams.dragging=!0,this.eventParams.customTime=this.customTime,t.stopPropagation(),t.preventDefault()},s.prototype._onDrag=function(t){if(this.eventParams.dragging){var e=t.gesture.deltaX,i=this.body.util.toScreen(this.eventParams.customTime)+e,s=this.body.util.toTime(i);this.setCustomTime(s),this.body.emitter.emit("timechange",{time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault()}},s.prototype._onDragEnd=function(t){this.eventParams.dragging&&(this.body.emitter.emit("timechanged",{time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault())},t.exports=s},function(t,e,i){function s(t,e,i){this.id=o.randomUUID(),this.body=t,this.defaultOptions={orientation:"left",showMinorLabels:!0,showMajorLabels:!0,icons:!0,majorLinesOffset:7,minorLinesOffset:4,labelOffsetX:10,labelOffsetY:2,iconWidth:20,width:"40px",visible:!0},this.linegraphSVG=i,this.props={},this.DOMelements={lines:{},labels:{}},this.dom={},this.range={start:0,end:0},this.options=o.extend({},this.defaultOptions),this.conversionFactor=1,this.setOptions(e),this.width=Number((""+this.options.width).replace("px","")),this.minWidth=this.width,this.height=this.linegraphSVG.offsetHeight,this.stepPixels=25,this.stepPixelsForced=25,this.lineOffset=0,this.master=!0,this.svgElements={},this.groups={},this.amountOfGroups=0,this._create()}var o=i(1),n=i(2),r=i(18),a=i(14);s.prototype=new r,s.prototype.addGroup=function(t,e){this.groups.hasOwnProperty(t)||(this.groups[t]=e),this.amountOfGroups+=1},s.prototype.updateGroup=function(t,e){this.groups[t]=e},s.prototype.removeGroup=function(t){this.groups.hasOwnProperty(t)&&(delete this.groups[t],this.amountOfGroups-=1)},s.prototype.setOptions=function(t){if(t){var e=!1;this.options.orientation!=t.orientation&&void 0!==t.orientation&&(e=!0);var i=["orientation","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","width","visible"];o.selectiveExtend(i,this.options,t),this.minWidth=Number((""+this.options.width).replace("px","")),1==e&&this.dom.frame&&(this.hide(),this.show())}},s.prototype._create=function(){this.dom.frame=document.createElement("div"),this.dom.frame.style.width=this.options.width,this.dom.frame.style.height=this.height,this.dom.lineContainer=document.createElement("div"),this.dom.lineContainer.style.width="100%",this.dom.lineContainer.style.height=this.height,this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="absolute",this.svg.style.top="0px",this.svg.style.height="100%",this.svg.style.width="100%",this.svg.style.display="block",this.dom.frame.appendChild(this.svg)},s.prototype._redrawGroupIcons=function(){n.prepareElements(this.svgElements);var t,e=this.options.iconWidth,i=15,s=4,o=s+.5*i;t="left"==this.options.orientation?s:this.width-e-s;for(var r in this.groups)this.groups.hasOwnProperty(r)&&(this.groups[r].drawIcon(t,o,this.svgElements,this.svg,e,i),o+=i+s);n.cleanupElements(this.svgElements)},s.prototype.show=function(){this.dom.frame.parentNode||("left"==this.options.orientation?this.body.dom.left.appendChild(this.dom.frame):this.body.dom.right.appendChild(this.dom.frame)),this.dom.lineContainer.parentNode||this.body.dom.backgroundHorizontal.appendChild(this.dom.lineContainer)},s.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.lineContainer.parentNode&&this.dom.lineContainer.parentNode.removeChild(this.dom.lineContainer)},s.prototype.setRange=function(t,e){this.range.start=t,this.range.end=e},s.prototype.redraw=function(){var t=!1;if(0==this.amountOfGroups)this.hide();else{this.show(),this.height=Number(this.linegraphSVG.style.height.replace("px","")),this.dom.lineContainer.style.height=this.height+"px",this.width=1==this.options.visible?Number((""+this.options.width).replace("px","")):0;var e=this.props,i=this.dom.frame;i.className="dataaxis",this._calculateCharSize();var s=this.options.orientation,o=this.options.showMinorLabels,n=this.options.showMajorLabels;e.minorLabelHeight=o?e.minorCharHeight:0,e.majorLabelHeight=n?e.majorCharHeight:0,e.minorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.minorLinesOffset,e.minorLineHeight=1,e.majorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.majorLinesOffset,e.majorLineHeight=1,"left"==s?(i.style.top="0",i.style.left="0",i.style.bottom="",i.style.width=this.width+"px",i.style.height=this.height+"px"):(i.style.top="",i.style.bottom="0",i.style.left="0",i.style.width=this.width+"px",i.style.height=this.height+"px"),t=this._redrawLabels(),1==this.options.icons&&this._redrawGroupIcons()}return t},s.prototype._redrawLabels=function(){n.prepareElements(this.DOMelements);var t=this.options.orientation,e=this.master?this.props.majorCharHeight||10:this.stepPixelsForced,i=new a(this.range.start,this.range.end,e,this.dom.frame.offsetHeight);this.step=i,i.first();var s=this.dom.frame.offsetHeight/(i.marginRange/i.step+1);this.stepPixels=s;var o=this.height/s,r=0;if(0==this.master){s=this.stepPixelsForced,r=Math.round(this.height/s-o);for(var h=0;.5*r>h;h++)i.previous();o=this.height/s}this.valueAtZero=i.marginEnd;var d=0,l=1;i.next(),this.maxLabelSize=0;for(var c=0;l=0&&this._redrawLabel(c-2,i.getCurrent(),t,"yAxis major",this.props.majorCharHeight),this._redrawLine(c,t,"grid horizontal major",this.options.majorLinesOffset,this.props.majorLineWidth)):this._redrawLine(c,t,"grid horizontal minor",this.options.minorLinesOffset,this.props.minorLineWidth),i.next(),l++}this.conversionFactor=d/((o-1)*i.step);var u=1==this.options.icons?this.options.iconWidth+this.options.labelOffsetX+15:this.options.labelOffsetX+15;return this.maxLabelSize>this.width-u&&1==this.options.visible?(this.width=this.maxLabelSize+u,this.options.width=this.width+"px",n.cleanupElements(this.DOMelements),this.redraw(),!0):this.maxLabelSizethis.minWidth?(this.width=Math.max(this.minWidth,this.maxLabelSize+u),this.options.width=this.width+"px",n.cleanupElements(this.DOMelements),this.redraw(),!0):(n.cleanupElements(this.DOMelements),!1)},s.prototype._redrawLabel=function(t,e,i,s,o){var r=n.getDOMElement("div",this.DOMelements,this.dom.frame);r.className=s,r.innerHTML=e,"left"==i?(r.style.left="-"+this.options.labelOffsetX+"px",r.style.textAlign="right"):(r.style.right="-"+this.options.labelOffsetX+"px",r.style.textAlign="left"),r.style.top=t-.5*o+this.options.labelOffsetY+"px",e+="";var a=Math.max(this.props.majorCharWidth,this.props.minorCharWidth);this.maxLabelSizee.axis){var c=d-e.axis;l-=c,o.forEach(h,function(t){t.top-=c})}a=l+e.item.vertical/2}else a=e.axis+e.item.vertical;a=Math.max(a,this.props.label.height);var p=this.dom.foreground;this.top=p.offsetTop,this.left=p.offsetLeft,this.width=p.offsetWidth,s=o.updateProperty(this,"height",a)||s,s=o.updateProperty(this.props.label,"width",this.dom.inner.clientWidth)||s,s=o.updateProperty(this.props.label,"height",this.dom.inner.clientHeight)||s,this.dom.background.style.height=a+"px",this.dom.foreground.style.height=a+"px",this.dom.label.style.height=a+"px";for(var u=0,m=this.visibleItems.length;m>u;u++){var f=this.visibleItems[u];f.repositionY()}return s},s.prototype.show=function(){this.dom.label.parentNode||this.itemSet.dom.labelSet.appendChild(this.dom.label),this.dom.foreground.parentNode||this.itemSet.dom.foreground.appendChild(this.dom.foreground),this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background),this.dom.axis.parentNode||this.itemSet.dom.axis.appendChild(this.dom.axis)},s.prototype.hide=function(){var t=this.dom.label;t.parentNode&&t.parentNode.removeChild(t);var e=this.dom.foreground;e.parentNode&&e.parentNode.removeChild(e);var i=this.dom.background;i.parentNode&&i.parentNode.removeChild(i);var s=this.dom.axis;s.parentNode&&s.parentNode.removeChild(s)},s.prototype.add=function(t){if(this.items[t.id]=t,t.setParent(this),t instanceof r&&-1==this.visibleItems.indexOf(t)){var e=this.itemSet.body.range;this._checkIfVisible(t,this.visibleItems,e)}},s.prototype.remove=function(t){delete this.items[t.id],t.setParent(this.itemSet);var e=this.visibleItems.indexOf(t);-1!=e&&this.visibleItems.splice(e,1)},s.prototype.removeFromDataSet=function(t){this.itemSet.removeItem(t.id)},s.prototype.order=function(){var t=o.toArray(this.items);this.orderedItems.byStart=t,this.orderedItems.byEnd=this._constructByEndArray(t),n.orderByStart(this.orderedItems.byStart),n.orderByEnd(this.orderedItems.byEnd)},s.prototype._constructByEndArray=function(t){for(var e=[],i=0;i0)for(n=0;n=0&&!this._checkIfInvisible(t.byStart[n],r,i);n--);for(n=s+1;n=0&&!this._checkIfInvisible(t.byEnd[n],r,i);n--);for(n=a+1;ne;e++)s=this.selection[e],o=this.items[s],o&&o.unselect();for(this.selection=[],e=0,i=t.length;i>e;e++)s=t[e],o=this.items[s],o&&(this.selection.push(s),o.select())}},s.prototype.getSelection=function(){return this.selection.concat([])},s.prototype.getVisibleItems=function(){var t=this.body.range.getRange(),e=this.body.util.toScreen(t.start),i=this.body.util.toScreen(t.end),s=[];for(var o in this.groups)if(this.groups.hasOwnProperty(o))for(var n=this.groups[o],r=n.visibleItems,a=0;ae&&s.push(h.id)}return s},s.prototype._deselect=function(t){for(var e=this.selection,i=0,s=e.length;s>i;i++)if(e[i]==t){e.splice(i,1);break}},s.prototype.redraw=function(){var t=this.options.margin,e=this.body.range,i=n.option.asSize,s=this.options,o=s.orientation,r=!1,a=this.dom.frame,h=s.editable.updateTime||s.editable.updateGroup;a.className="itemset"+(h?" editable":""),r=this._orderGroups()||r;var d=e.end-e.start,l=d!=this.lastVisibleInterval||this.props.width!=this.props.lastWidth;l&&(this.stackDirty=!0),this.lastVisibleInterval=d,this.props.lastWidth=this.props.width;var c=this.stackDirty,p=this._firstGroup(),u={item:t.item,axis:t.axis},m={item:t.item,axis:t.item.vertical/2},f=0,g=t.axis+t.item.vertical;return n.forEach(this.groups,function(t){var i=t==p?u:m,s=t.redraw(e,i,c);r=s||r,f+=t.height}),f=Math.max(f,g),this.stackDirty=!1,a.style.height=i(f),this.props.top=a.offsetTop,this.props.left=a.offsetLeft,this.props.width=a.offsetWidth,this.props.height=f,this.dom.axis.style.top=i("top"==o?this.body.domProps.top.height+this.body.domProps.border.top:this.body.domProps.top.height+this.body.domProps.centerContainer.height),this.dom.axis.style.left=this.body.domProps.border.left+"px",r=this._isResized()||r},s.prototype._firstGroup=function(){var t="top"==this.options.orientation?0:this.groupIds.length-1,e=this.groupIds[t],i=this.groups[e]||this.groups[u];return i||null},s.prototype._updateUngrouped=function(){var t=this.groups[u];if(this.groupsData)t&&(t.hide(),delete this.groups[u]);else if(!t){var e=null,i=null;t=new d(e,i,this),this.groups[u]=t;for(var s in this.items)this.items.hasOwnProperty(s)&&t.add(this.items[s]);t.show()}},s.prototype.getLabelSet=function(){return this.dom.labelSet},s.prototype.setItems=function(t){var e,i=this,s=this.itemsData;if(t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.itemsData=t}else this.itemsData=null;if(s&&(n.forEach(this.itemListeners,function(t,e){s.off(e,t)}),e=s.getIds(),this._onRemove(e)),this.itemsData){var o=this.id;n.forEach(this.itemListeners,function(t,e){i.itemsData.on(e,t,o)}),e=this.itemsData.getIds(),this._onAdd(e),this._updateUngrouped()}},s.prototype.getItems=function(){return this.itemsData},s.prototype.setGroups=function(t){var e,i=this;if(this.groupsData&&(n.forEach(this.groupListeners,function(t,e){i.groupsData.unsubscribe(e,t)}),e=this.groupsData.getIds(),this.groupsData=null,this._onRemoveGroups(e)),t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.groupsData=t}else this.groupsData=null;if(this.groupsData){var s=this.id;n.forEach(this.groupListeners,function(t,e){i.groupsData.on(e,t,s)}),e=this.groupsData.getIds(),this._onAddGroups(e)}this._updateUngrouped(),this._order(),this.body.emitter.emit("change")},s.prototype.getGroups=function(){return this.groupsData},s.prototype.removeItem=function(t){var e=this.itemsData.get(t),i=this.itemsData.getDataSet();e&&this.options.onRemove(e,function(e){e&&i.remove(t)})},s.prototype._onUpdate=function(t){var e=this;t.forEach(function(t){var i=e.itemsData.get(t,e.itemOptions),o=e.items[t],n=i.type||e.options.type||(i.end?"range":"box"),r=s.types[n];if(o&&(r&&o instanceof r?e._updateItem(o,i):(e._removeItem(o),o=null)),!o){if(!r)throw new TypeError("rangeoverflow"==n?'Item type "rangeoverflow" is deprecated. Use css styling instead: .vis.timeline .item.range .content {overflow: visible;}':'Unknown item type "'+n+'"');o=new r(i,e.conversion,e.options),o.id=t,e._addItem(o)}}),this._order(),this.stackDirty=!0,this.body.emitter.emit("change")},s.prototype._onAdd=s.prototype._onUpdate,s.prototype._onRemove=function(t){var e=0,i=this;t.forEach(function(t){var s=i.items[t];s&&(e++,i._removeItem(s))}),e&&(this._order(),this.stackDirty=!0,this.body.emitter.emit("change"))},s.prototype._order=function(){n.forEach(this.groups,function(t){t.order()})},s.prototype._onUpdateGroups=function(t){this._onAddGroups(t)},s.prototype._onAddGroups=function(t){var e=this;t.forEach(function(t){var i=e.groupsData.get(t),s=e.groups[t];if(s)s.setData(i);else{if(t==u)throw new Error("Illegal group id. "+t+" is a reserved id.");var o=Object.create(e.options);n.extend(o,{height:null}),s=new d(t,i,e),e.groups[t]=s;for(var r in e.items)if(e.items.hasOwnProperty(r)){var a=e.items[r];a.data.group==t&&s.add(a)}s.order(),s.show()}}),this.body.emitter.emit("change")},s.prototype._onRemoveGroups=function(t){var e=this.groups;t.forEach(function(t){var i=e[t];i&&(i.hide(),delete e[t])}),this.markDirty(),this.body.emitter.emit("change")},s.prototype._orderGroups=function(){if(this.groupsData){var t=this.groupsData.getIds({order:this.options.groupOrder}),e=!n.equalArray(t,this.groupIds);if(e){var i=this.groups;t.forEach(function(t){i[t].hide()}),t.forEach(function(t){i[t].show()}),this.groupIds=t}return e}return!1},s.prototype._addItem=function(t){this.items[t.id]=t;var e=this.groupsData?t.data.group:u,i=this.groups[e];i&&i.add(t)},s.prototype._updateItem=function(t,e){var i=t.data.group;if(t.data=e,t.displayed&&t.redraw(),i!=t.data.group){var s=this.groups[i];s&&s.remove(t);var o=this.groupsData?t.data.group:u,n=this.groups[o];n&&n.add(t)}},s.prototype._removeItem=function(t){t.hide(),delete this.items[t.id];var e=this.selection.indexOf(t.id);-1!=e&&this.selection.splice(e,1);var i=this.groupsData?t.data.group:u,s=this.groups[i];s&&s.remove(t)},s.prototype._constructByEndArray=function(t){for(var e=[],i=0;i0||o.length>0)&&this.body.emitter.emit("select",{items:this.getSelection()}),t.stopPropagation()}},s.prototype._onAddItem=function(t){if(this.options.selectable&&this.options.editable.add){var e=this,i=this.body.util.snap||null,o=s.itemFromTarget(t);if(o){var r=e.itemsData.get(o.id);this.options.onUpdate(r,function(t){t&&e.itemsData.update(t)})}else{var a=n.getAbsoluteLeft(this.dom.frame),h=t.gesture.center.pageX-a,d=this.body.util.toTime(h),l={start:i?i(d):d,content:"new item"};if("range"===this.options.type){var c=this.body.util.toTime(h+this.props.width/5);l.end=i?i(c):c}l[this.itemsData.fieldId]=n.randomUUID();var p=s.groupFromTarget(t);p&&(l.group=p.groupId),this.options.onAdd(l,function(t){t&&e.itemsData.add(l)})}}},s.prototype._onMultiSelectItem=function(t){if(this.options.selectable){var e,i=s.itemFromTarget(t);if(i){e=this.getSelection();var o=e.indexOf(i.id);-1==o?e.push(i.id):e.splice(o,1),this.setSelection(e),this.body.emitter.emit("select",{items:this.getSelection()}),t.stopPropagation()}}},s.itemFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-item"))return e["timeline-item"];e=e.parentNode}return null},s.groupFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-group"))return e["timeline-group"];e=e.parentNode}return null},s.itemSetFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-itemset"))return e["timeline-itemset"];e=e.parentNode}return null},t.exports=s},function(t,e,i){function s(t,e,i){this.body=t,this.defaultOptions={enabled:!0,icons:!0,iconSize:20,iconSpacing:6,left:{visible:!0,position:"top-left"},right:{visible:!0,position:"top-left"}},this.side=i,this.options=o.extend({},this.defaultOptions),this.svgElements={},this.dom={},this.groups={},this.amountOfGroups=0,this._create(),this.setOptions(e)}var o=i(1),n=i(2),r=i(18);s.prototype=new r,s.prototype.addGroup=function(t,e){this.groups.hasOwnProperty(t)||(this.groups[t]=e),this.amountOfGroups+=1},s.prototype.updateGroup=function(t,e){this.groups[t]=e},s.prototype.removeGroup=function(t){this.groups.hasOwnProperty(t)&&(delete this.groups[t],this.amountOfGroups-=1)},s.prototype._create=function(){this.dom.frame=document.createElement("div"),this.dom.frame.className="legend",this.dom.frame.style.position="absolute",this.dom.frame.style.top="10px",this.dom.frame.style.display="block",this.dom.textArea=document.createElement("div"),this.dom.textArea.className="legendText",this.dom.textArea.style.position="relative",this.dom.textArea.style.top="0px",this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="absolute",this.svg.style.top="0px",this.svg.style.width=this.options.iconSize+5+"px",this.dom.frame.appendChild(this.svg),this.dom.frame.appendChild(this.dom.textArea)},s.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame)},s.prototype.show=function(){this.dom.frame.parentNode||this.body.dom.center.appendChild(this.dom.frame)},s.prototype.setOptions=function(t){var e=["enabled","orientation","icons","left","right"];o.selectiveDeepExtend(e,this.options,t)},s.prototype.redraw=function(){if(0==this.options[this.side].visible||0==this.amountOfGroups||0==this.options.enabled)this.hide();else{this.show(),"top-left"==this.options[this.side].position||"bottom-left"==this.options[this.side].position?(this.dom.frame.style.left="4px",this.dom.frame.style.textAlign="left",this.dom.textArea.style.textAlign="left",this.dom.textArea.style.left=this.options.iconSize+15+"px",this.dom.textArea.style.right="",this.svg.style.left="0px",this.svg.style.right=""):(this.dom.frame.style.right="4px",this.dom.frame.style.textAlign="right",this.dom.textArea.style.textAlign="right",this.dom.textArea.style.right=this.options.iconSize+15+"px",this.dom.textArea.style.left="",this.svg.style.right="0px",this.svg.style.left=""),"top-left"==this.options[this.side].position||"top-right"==this.options[this.side].position?(this.dom.frame.style.top=4-Number(this.body.dom.center.style.top.replace("px",""))+"px",this.dom.frame.style.bottom=""):(this.dom.frame.style.bottom=4-Number(this.body.dom.center.style.top.replace("px",""))+"px",this.dom.frame.style.top=""),0==this.options.icons?(this.dom.frame.style.width=this.dom.textArea.offsetWidth+10+"px",this.dom.textArea.style.right="",this.dom.textArea.style.left="",this.svg.style.width="0px"):(this.dom.frame.style.width=this.options.iconSize+15+this.dom.textArea.offsetWidth+10+"px",this.drawLegendIcons());var t="";for(var e in this.groups)this.groups.hasOwnProperty(e)&&(t+=this.groups[e].content+"
");this.dom.textArea.innerHTML=t,this.dom.textArea.style.lineHeight=.75*this.options.iconSize+this.options.iconSpacing+"px"}},s.prototype.drawLegendIcons=function(){if(this.dom.frame.parentNode){n.prepareElements(this.svgElements);var t=window.getComputedStyle(this.dom.frame).paddingTop,e=Number(t.replace("px","")),i=e,s=this.options.iconSize,o=.75*this.options.iconSize,r=e+.5*o+3;this.svg.style.width=s+5+e+"px";for(var a in this.groups)this.groups.hasOwnProperty(a)&&(this.groups[a].drawIcon(i,r,this.svgElements,this.svg,s,o),r+=o+this.options.iconSpacing);n.cleanupElements(this.svgElements)}},t.exports=s},function(t,e,i){function s(t,e){this.id=o.randomUUID(),this.body=t,this.defaultOptions={yAxisOrientation:"left",defaultGroup:"default",sort:!0,sampling:!0,graphHeight:"400px",shaded:{enabled:!1,orientation:"bottom"},style:"line",barChart:{width:50,align:"center"},catmullRom:{enabled:!0,parametrization:"centripetal",alpha:.5},drawPoints:{enabled:!0,size:6,style:"square"},dataAxis:{showMinorLabels:!0,showMajorLabels:!0,icons:!1,width:"40px",visible:!0},legend:{enabled:!1,icons:!0,left:{visible:!0,position:"top-left"},right:{visible:!0,position:"top-right"}}},this.options=o.extend({},this.defaultOptions),this.dom={},this.props={},this.hammer=null,this.groups={};var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e){i._onAdd(e.items)},update:function(t,e){i._onUpdate(e.items)},remove:function(t,e){i._onRemove(e.items)}},this.groupListeners={add:function(t,e){i._onAddGroups(e.items)},update:function(t,e){i._onUpdateGroups(e.items)},remove:function(t,e){i._onRemoveGroups(e.items)}},this.items={},this.selection=[],this.lastStart=this.body.range.start,this.touchParams={},this.svgElements={},this.setOptions(e),this.groupsUsingDefaultStyles=[0],this.body.emitter.on("rangechange",function(){if(0!=i.lastStart){var t=i.body.range.start-i.lastStart,e=i.body.range.end-i.body.range.start;if(0!=i.width){var s=i.width/e,o=t*s;i.svg.style.left=-i.width-o+"px"}}}),this.body.emitter.on("rangechanged",function(){i.lastStart=i.body.range.start,i.svg.style.left=o.option.asSize(-i.width),i._updateGraph.apply(i)}),this._create(),this.body.emitter.emit("change")}var o=i(1),n=i(2),r=i(3),a=i(4),h=i(18),d=i(21),l=i(22),c=i(25),p="__ungrouped__";s.prototype=new h,s.prototype._create=function(){var t=document.createElement("div");t.className="LineGraph",this.dom.frame=t,this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="relative",this.svg.style.height=(""+this.options.graphHeight).replace("px","")+"px",this.svg.style.display="block",t.appendChild(this.svg),this.options.dataAxis.orientation="left",this.yAxisLeft=new d(this.body,this.options.dataAxis,this.svg),this.options.dataAxis.orientation="right",this.yAxisRight=new d(this.body,this.options.dataAxis,this.svg),delete this.options.dataAxis.orientation,this.legendLeft=new c(this.body,this.options.legend,"left"),this.legendRight=new c(this.body,this.options.legend,"right"),this.show()},s.prototype.setOptions=function(t){if(t){var e=["sampling","defaultGroup","graphHeight","yAxisOrientation","style","barChart","dataAxis","sort"];o.selectiveDeepExtend(e,this.options,t),o.mergeOptions(this.options,t,"catmullRom"),o.mergeOptions(this.options,t,"drawPoints"),o.mergeOptions(this.options,t,"shaded"),o.mergeOptions(this.options,t,"legend"),t.catmullRom&&"object"==typeof t.catmullRom&&t.catmullRom.parametrization&&("uniform"==t.catmullRom.parametrization?this.options.catmullRom.alpha=0:"chordal"==t.catmullRom.parametrization?this.options.catmullRom.alpha=1:(this.options.catmullRom.parametrization="centripetal",this.options.catmullRom.alpha=.5)),this.yAxisLeft&&void 0!==t.dataAxis&&(this.yAxisLeft.setOptions(this.options.dataAxis),this.yAxisRight.setOptions(this.options.dataAxis)),this.legendLeft&&void 0!==t.legend&&(this.legendLeft.setOptions(this.options.legend),this.legendRight.setOptions(this.options.legend)),this.groups.hasOwnProperty(p)&&this.groups[p].setOptions(t)}this.dom.frame&&this._updateGraph()},s.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame)},s.prototype.show=function(){this.dom.frame.parentNode||this.body.dom.center.appendChild(this.dom.frame)},s.prototype.setItems=function(t){var e,i=this,s=this.itemsData;if(t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.itemsData=t}else this.itemsData=null;if(s&&(o.forEach(this.itemListeners,function(t,e){s.off(e,t)}),e=s.getIds(),this._onRemove(e)),this.itemsData){var n=this.id;o.forEach(this.itemListeners,function(t,e){i.itemsData.on(e,t,n)}),e=this.itemsData.getIds(),this._onAdd(e)}this._updateUngrouped(),this._updateGraph(),this.redraw()},s.prototype.setGroups=function(t){var e,i=this;if(this.groupsData&&(o.forEach(this.groupListeners,function(t,e){i.groupsData.unsubscribe(e,t)}),e=this.groupsData.getIds(),this.groupsData=null,this._onRemoveGroups(e)),t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.groupsData=t}else this.groupsData=null;if(this.groupsData){var s=this.id;o.forEach(this.groupListeners,function(t,e){i.groupsData.on(e,t,s)}),e=this.groupsData.getIds(),this._onAddGroups(e)}this._onUpdate()},s.prototype._onUpdate=function(){this._updateUngrouped(),this._updateAllGroupData(),this._updateGraph(),this.redraw()},s.prototype._onAdd=function(t){this._onUpdate(t)},s.prototype._onRemove=function(t){this._onUpdate(t)},s.prototype._onUpdateGroups=function(t){for(var e=0;e0){for(s=0;su){e.push(g);break}e.push(g)}}else for(var f=0;fp&&g.x0){for(var p=0;pi?i:a,d=s>d?s:d):(r=!0,h=h>i?i:h,l=s>l?s:l)}1==n&&this.yAxisLeft.setRange(a,d),1==r&&this.yAxisRight.setRange(h,l)}return o=this._toggleAxisVisiblity(n,this.yAxisLeft)||o,o=this._toggleAxisVisiblity(r,this.yAxisRight)||o,1==r&&1==n?(this.yAxisLeft.drawIcons=!0,this.yAxisRight.drawIcons=!0):(this.yAxisLeft.drawIcons=!1,this.yAxisRight.drawIcons=!1),this.yAxisRight.master=!n,0==this.yAxisRight.master?(1==r&&(this.yAxisLeft.lineOffset=this.yAxisRight.width),o=this.yAxisLeft.redraw()||o,this.yAxisRight.stepPixelsForced=this.yAxisLeft.stepPixels,o=this.yAxisRight.redraw()||o):o=this.yAxisRight.redraw()||o,o},s.prototype._toggleAxisVisiblity=function(t,e){var i=!1;return 0==t?e.dom.frame.parentNode&&(e.hide(),i=!0):e.dom.frame.parentNode||(e.show(),i=!0),i +},s.prototype._drawBarGraph=function(t,e){if(null!=t&&t.length>0){var i,s=.1*e.options.barChart.width,o=0,r=e.options.barChart.width;"left"==e.options.barChart.align?o-=.5*r:"right"==e.options.barChart.align&&(o+=.5*r);for(var a=0;a0&&(i=Math.min(i,Math.abs(t[a-1].x-t[a].x))),r>i&&(r=s>i?s:i),n.drawBar(t[a].x+o,t[a].y,r,e.zeroPosition-t[a].y,e.className+" bar",this.svgElements,this.svg);1==e.options.drawPoints.enabled&&this._drawPoints(t,e,this.svgElements,this.svg,o)}},s.prototype._drawLineGraph=function(t,e){if(null!=t&&t.length>0){var i,s,o=Number(this.svg.style.height.replace("px",""));if(i=n.getSVGElement("path",this.svgElements,this.svg),i.setAttributeNS(null,"class",e.className),s=1==e.options.catmullRom.enabled?this._catmullRom(t,e):this._linear(t),1==e.options.shaded.enabled){var r,a=n.getSVGElement("path",this.svgElements,this.svg);r="top"==e.options.shaded.orientation?"M"+t[0].x+",0 "+s+"L"+t[t.length-1].x+",0":"M"+t[0].x+","+o+" "+s+"L"+t[t.length-1].x+","+o,a.setAttributeNS(null,"class",e.className+" fill"),a.setAttributeNS(null,"d",r)}i.setAttributeNS(null,"d","M"+s),1==e.options.drawPoints.enabled&&this._drawPoints(t,e,this.svgElements,this.svg)}},s.prototype._drawPoints=function(t,e,i,s,o){void 0===o&&(o=0);for(var r=0;rp;p+=r)i=n(t[p].x)+this.width-1,s=t[p].y,o.push({x:i,y:s}),h=h>s?s:h,d=s>d?s:d;return{min:h,max:d,data:o}},s.prototype._convertYvalues=function(t,e){var i,s,o=[],n=this.yAxisLeft,r=Number(this.svg.style.height.replace("px",""));"right"==e.options.yAxisOrientation&&(n=this.yAxisRight);for(var a=0;al;l++)e=0==l?t[0]:t[l-1],i=t[l],s=t[l+1],o=d>l+2?t[l+2]:s,n={x:(-e.x+6*i.x+s.x)*h,y:(-e.y+6*i.y+s.y)*h},r={x:(i.x+6*s.x-o.x)*h,y:(i.y+6*s.y-o.y)*h},a+="C"+n.x+","+n.y+" "+r.x+","+r.y+" "+s.x+","+s.y+" ";return a},s.prototype._catmullRom=function(t,e){var i=e.options.catmullRom.alpha;if(0==i||void 0===i)return this._catmullRomUniform(t);for(var s,o,n,r,a,h,d,l,c,p,u,m,f,g,v,y,b,_,x,w=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",S=t.length,M=0;S-1>M;M++)s=0==M?t[0]:t[M-1],o=t[M],n=t[M+1],r=S>M+2?t[M+2]:n,d=Math.sqrt(Math.pow(s.x-o.x,2)+Math.pow(s.y-o.y,2)),l=Math.sqrt(Math.pow(o.x-n.x,2)+Math.pow(o.y-n.y,2)),c=Math.sqrt(Math.pow(n.x-r.x,2)+Math.pow(n.y-r.y,2)),g=Math.pow(c,i),y=Math.pow(c,2*i),v=Math.pow(l,i),b=Math.pow(l,2*i),x=Math.pow(d,i),_=Math.pow(d,2*i),p=2*_+3*x*v+b,u=2*y+3*g*v+b,m=3*x*(x+v),m>0&&(m=1/m),f=3*g*(g+v),f>0&&(f=1/f),a={x:(-b*s.x+p*o.x+_*n.x)*m,y:(-b*s.y+p*o.y+_*n.y)*m},h={x:(y*o.x+u*n.x-b*r.x)*f,y:(y*o.y+u*n.y-b*r.y)*f},0==a.x&&0==a.y&&(a=o),0==h.x&&0==h.y&&(h=n),w+="C"+a.x+","+a.y+" "+h.x+","+h.y+" "+n.x+","+n.y+" ";return w},s.prototype._linear=function(t){for(var e="",i=0;id;){d++;var l=n.getCurrent(),c=this.body.util.toScreen(l),p=n.isMajor();this.options.showMinorLabels&&this._repaintMinorText(c,n.getLabelMinor(),t),p&&this.options.showMajorLabels?(c>0&&(void 0==h&&(h=c),this._repaintMajorText(c,n.getLabelMajor(),t)),this._repaintMajorLine(c,t)):this._repaintMinorLine(c,t),n.next()}if(this.options.showMajorLabels){var u=this.body.util.toTime(0),m=n.getLabelMajor(u),f=m.length*(this.props.majorCharWidth||10)+10;(void 0==h||h>f)&&this._repaintMajorText(0,m,t)}o.forEach(this.dom.redundant,function(t){for(;t.length;){var e=t.pop();e&&e.parentNode&&e.parentNode.removeChild(e)}})},s.prototype._repaintMinorText=function(t,e,i){var s=this.dom.redundant.minorTexts.shift();if(!s){var o=document.createTextNode("");s=document.createElement("div"),s.appendChild(o),s.className="text minor",this.dom.foreground.appendChild(s)}this.dom.minorTexts.push(s),s.childNodes[0].nodeValue=e,s.style.top="top"==i?this.props.majorLabelHeight+"px":"0",s.style.left=t+"px"},s.prototype._repaintMajorText=function(t,e,i){var s=this.dom.redundant.majorTexts.shift();if(!s){var o=document.createTextNode(e);s=document.createElement("div"),s.className="text major",s.appendChild(o),this.dom.foreground.appendChild(s)}this.dom.majorTexts.push(s),s.childNodes[0].nodeValue=e,s.style.top="top"==i?"0":this.props.minorLabelHeight+"px",s.style.left=t+"px"},s.prototype._repaintMinorLine=function(t,e){var i=this.dom.redundant.minorLines.shift();i||(i=document.createElement("div"),i.className="grid vertical minor",this.dom.background.appendChild(i)),this.dom.minorLines.push(i);var s=this.props;i.style.top="top"==e?s.majorLabelHeight+"px":this.body.domProps.top.height+"px",i.style.height=s.minorLineHeight+"px",i.style.left=t-s.minorLineWidth/2+"px"},s.prototype._repaintMajorLine=function(t,e){var i=this.dom.redundant.majorLines.shift();i||(i=document.createElement("DIV"),i.className="grid vertical major",this.dom.background.appendChild(i)),this.dom.majorLines.push(i);var s=this.props;i.style.top="top"==e?"0":this.body.domProps.top.height+"px",i.style.left=t-s.majorLineWidth/2+"px",i.style.height=s.majorLineHeight+"px"},s.prototype._calculateCharSize=function(){this.dom.measureCharMinor||(this.dom.measureCharMinor=document.createElement("DIV"),this.dom.measureCharMinor.className="text minor measure",this.dom.measureCharMinor.style.position="absolute",this.dom.measureCharMinor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMinor)),this.props.minorCharHeight=this.dom.measureCharMinor.clientHeight,this.props.minorCharWidth=this.dom.measureCharMinor.clientWidth,this.dom.measureCharMajor||(this.dom.measureCharMajor=document.createElement("DIV"),this.dom.measureCharMajor.className="text minor measure",this.dom.measureCharMajor.style.position="absolute",this.dom.measureCharMajor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMajor)),this.props.majorCharHeight=this.dom.measureCharMajor.clientHeight,this.props.majorCharWidth=this.dom.measureCharMajor.clientWidth},s.prototype.snap=function(t){return this.step.snap(t)},t.exports=s},function(t,e,i){function s(t,e,i){this.id=null,this.parent=null,this.data=t,this.dom=null,this.conversion=e||{},this.options=i||{},this.selected=!1,this.displayed=!1,this.dirty=!0,this.top=null,this.left=null,this.width=null,this.height=null}var o=i(40);s.prototype.select=function(){this.selected=!0,this.displayed&&this.redraw()},s.prototype.unselect=function(){this.selected=!1,this.displayed&&this.redraw()},s.prototype.setParent=function(t){this.displayed?(this.hide(),this.parent=t,this.parent&&this.show()):this.parent=t},s.prototype.isVisible=function(){return!1},s.prototype.show=function(){return!1},s.prototype.hide=function(){return!1},s.prototype.redraw=function(){},s.prototype.repositionX=function(){},s.prototype.repositionY=function(){},s.prototype._repaintDeleteButton=function(t){if(this.selected&&this.options.editable.remove&&!this.dom.deleteButton){var e=this,i=document.createElement("div");i.className="delete",i.title="Delete this item",o(i,{preventDefault:!0}).on("tap",function(t){e.parent.removeFromDataSet(e),t.stopPropagation()}),t.appendChild(i),this.dom.deleteButton=i}else!this.selected&&this.dom.deleteButton&&(this.dom.deleteButton.parentNode&&this.dom.deleteButton.parentNode.removeChild(this.dom.deleteButton),this.dom.deleteButton=null)},t.exports=s},function(t,e,i){function s(t,e,i){if(this.props={dot:{width:0,height:0},line:{width:0,height:0}},t&&void 0==t.start)throw new Error('Property "start" missing in item '+t);o.call(this,t,e,i)}var o=i(28);s.prototype=new o(null,null,null),s.prototype.isVisible=function(t){var e=(t.end-t.start)/4;return this.data.start>t.start-e&&this.data.startt.start-e&&this.data.startt.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),t.box["timeline-item"]=this),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.foreground;if(!e)throw new Error("Cannot redraw time axis: parent has no foreground container element");e.appendChild(t.box)}if(this.displayed=!0,this.data.content!=this.content){if(this.content=this.data.content,this.content instanceof Element)t.content.innerHTML="",t.content.appendChild(this.content);else{if(void 0==this.data.content)throw new Error('Property "content" missing in item '+this.data.id);t.content.innerHTML=this.content}this.dirty=!0}this.data.title!=this.title&&(t.box.title=this.data.title,this.title=this.data.title);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");this.className!=i&&(this.className=i,t.box.className=this.baseClassName+i,this.dirty=!0),this.dirty&&(this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.props.content.width=this.dom.content.offsetWidth,this.height=this.dom.box.offsetHeight,this.dirty=!1),this._repaintDeleteButton(t.box),this._repaintDragLeft(),this._repaintDragRight()},s.prototype.show=function(){this.displayed||this.redraw()},s.prototype.hide=function(){if(this.displayed){var t=this.dom.box;t.parentNode&&t.parentNode.removeChild(t),this.top=null,this.left=null,this.displayed=!1}},s.prototype.repositionX=function(){var t,e=this.props,i=this.parent.width,s=this.conversion.toScreen(this.data.start),o=this.conversion.toScreen(this.data.end),n=this.options.padding;-i>s&&(s=-i),o>2*i&&(o=2*i);var r=Math.max(o-s,1);this.overflow?(t=Math.max(-s,0),this.left=s,this.width=r+this.props.content.width):(t=0>s?Math.min(-s,o-s-e.content.width-2*n):0,this.left=s,this.width=r),this.dom.box.style.left=this.left+"px",this.dom.box.style.width=r+"px",this.dom.content.style.left=t+"px"},s.prototype.repositionY=function(){var t=this.options.orientation,e=this.dom.box;e.style.top="top"==t?this.top+"px":this.parent.height-this.top-this.height+"px"},s.prototype._repaintDragLeft=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragLeft){var t=document.createElement("div");t.className="drag-left",t.dragLeftItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragLeft=t}else!this.selected&&this.dom.dragLeft&&(this.dom.dragLeft.parentNode&&this.dom.dragLeft.parentNode.removeChild(this.dom.dragLeft),this.dom.dragLeft=null)},s.prototype._repaintDragRight=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragRight){var t=document.createElement("div");t.className="drag-right",t.dragRightItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragRight=t}else!this.selected&&this.dom.dragRight&&(this.dom.dragRight.parentNode&&this.dom.dragRight.parentNode.removeChild(this.dom.dragRight),this.dom.dragRight=null)},t.exports=s},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this._initializeMixinLoaders(),this.containerElement=t,this.width="100%",this.height="100%",this.renderRefreshRate=60,this.renderTimestep=1e3/this.renderRefreshRate,this.renderTime=.5*this.renderTimestep,this.maxPhysicsTicksPerRender=3,this.physicsDiscreteStepsize=.5,this.stabilize=!0,this.selectable=!0,this.initializing=!0,this.triggerFunctions={add:null,edit:null,editEdge:null,connect:null,del:null},this.constants={nodes:{radiusMin:10,radiusMax:30,radius:10,shape:"ellipse",image:void 0,widthMin:16,widthMax:64,fixed:!1,fontColor:"black",fontSize:14,fontFace:"verdana",level:-1,color:{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},borderColor:"#2B7CE9",backgroundColor:"#97C2FC",highlightColor:"#D2E5FF",group:void 0,borderWidth:1},edges:{widthMin:1,widthMax:15,width:1,widthSelectionMultiplier:2,hoverWidth:1.5,style:"line",color:{color:"#848484",highlight:"#848484",hover:"#848484"},fontColor:"#343434",fontSize:14,fontFace:"arial",fontFill:"white",arrowScaleFactor:1,dash:{length:10,gap:5,altLength:void 0},inheritColor:"from"},configurePhysics:!1,physics:{barnesHut:{enabled:!0,theta:1/.6,gravitationalConstant:-2e3,centralGravity:.3,springLength:95,springConstant:.04,damping:.09},repulsion:{centralGravity:0,springLength:200,springConstant:.05,nodeDistance:100,damping:.09},hierarchicalRepulsion:{enabled:!1,centralGravity:0,springLength:100,springConstant:.01,nodeDistance:150,damping:.09},damping:null,centralGravity:null,springLength:null,springConstant:null},clustering:{enabled:!1,initialMaxNodes:100,clusterThreshold:500,reduceToNodes:300,chainThreshold:.4,clusterEdgeThreshold:20,sectorThreshold:100,screenSizeThreshold:.2,fontSizeMultiplier:4,maxFontSize:1e3,forceAmplification:.1,distanceAmplification:.1,edgeGrowth:20,nodeScaling:{width:1,height:1,radius:1},maxNodeSizeIncrements:600,activeAreaBoxSize:80,clusterLevelDifference:2},navigation:{enabled:!1},keyboard:{enabled:!1,speed:{x:10,y:10,zoom:.02}},dataManipulation:{enabled:!1,initiallyVisible:!1},hierarchicalLayout:{enabled:!1,levelSeparation:150,nodeSpacing:100,direction:"UD"},freezeForStabilization:!1,smoothCurves:{enabled:!0,dynamic:!0,type:"continuous",roundness:.5},dynamicSmoothCurves:!0,maxVelocity:30,minVelocity:.1,stabilizationIterations:1e3,labels:{add:"Add Node",edit:"Edit",link:"Add Link",del:"Delete selected",editNode:"Edit Node",editEdge:"Edit Edge",back:"Back",addDescription:"Click in an empty space to place a new node.",linkDescription:"Click on a node and drag the edge to another node to connect them.",editEdgeDescription:"Click on the control points and drag them to a node to connect to it.",addError:"The function for add does not support two arguments (data,callback).",linkError:"The function for connect does not support two arguments (data,callback).",editError:"The function for edit does not support two arguments (data, callback).",editBoundError:"No edit function has been bound to this button.",deleteError:"The function for delete does not support two arguments (data, callback).",deleteClusterError:"Clusters cannot be deleted."},tooltip:{delay:300,fontColor:"black",fontSize:14,fontFace:"verdana",color:{border:"#666",background:"#FFFFC6"}},dragNetwork:!0,dragNodes:!0,zoomable:!0,hover:!1,hideEdgesOnDrag:!1,hideNodesOnDrag:!1},this.hoverObj={nodes:{},edges:{}},this.controlNodesActive=!1;var o=this;this.groups=new p,this.images=new u,this.images.setOnloadCallback(function(){o._redraw()}),this.xIncrement=0,this.yIncrement=0,this.zoomIncrement=0,this._loadPhysicsSystem(),this._create(),this._loadSectorSystem(),this._loadClusterSystem(),this._loadSelectionSystem(),this._loadHierarchySystem(),this._setTranslation(this.frame.clientWidth/2,this.frame.clientHeight/2),this._setScale(1),this.setOptions(i),this.freezeSimulation=!1,this.cachedFunctions={},this.calculationNodes={},this.calculationNodeIndices=[],this.nodeIndices=[],this.nodes={},this.edges={},this.canvasTopLeft={x:0,y:0},this.canvasBottomRight={x:0,y:0},this.pointerPosition={x:0,y:0},this.areaCenter={},this.scale=1,this.previousScale=this.scale,this.nodesData=null,this.edgesData=null,this.nodesListeners={add:function(t,e){o._addNodes(e.items),o.start()},update:function(t,e){o._updateNodes(e.items),o.start()},remove:function(t,e){o._removeNodes(e.items),o.start()}},this.edgesListeners={add:function(t,e){o._addEdges(e.items),o.start()},update:function(t,e){o._updateEdges(e.items),o.start()},remove:function(t,e){o._removeEdges(e.items),o.start()}},this.moving=!0,this.timer=void 0,this.setData(e,this.constants.clustering.enabled||this.constants.hierarchicalLayout.enabled),this.initializing=!1,1==this.constants.hierarchicalLayout.enabled?this._setupHierarchicalLayout():0==this.stabilize&&this.zoomExtent(!0,this.constants.clustering.enabled),this.constants.clustering.enabled&&this.startWithClustering()}var o=i(44),n=i(40),r=i(45),a=i(1),h=i(41),d=i(3),l=i(4),c=i(38),p=i(34),u=i(35),m=i(36),f=i(33),g=i(37),v=i(43);i(42),o(s.prototype),s.prototype._getScriptPath=function(){for(var t=document.getElementsByTagName("script"),e=0;et.x&&(s=t.x),ot.y&&(e=t.y),i=this.constants.clustering.initialMaxNodes?49.07548/(o+142.05338)+91444e-8:12.662/(o+7.4147)+.0964822:1==this.constants.clustering.enabled&&o>=this.constants.clustering.initialMaxNodes?77.5271985/(o+187.266146)+476710517e-13:30.5062972/(o+19.93597763)+.08413486;var n=Math.min(this.frame.canvas.clientWidth/600,this.frame.canvas.clientHeight/600);i*=n}else{var r=1.1*(Math.abs(s.minX)+Math.abs(s.maxX)),a=1.1*(Math.abs(s.minY)+Math.abs(s.maxY)),h=this.frame.canvas.clientWidth/r,d=this.frame.canvas.clientHeight/a;i=d>=h?h:d}i>1&&(i=1),this._setScale(i),this._centerNetwork(s),0==e&&(this.moving=!0,this.start())},s.prototype._updateNodeIndexList=function(){this._clearNodeIndexList();for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodeIndices.push(t)},s.prototype.setData=function(t,e){if(void 0===e&&(e=!1),t&&t.dot&&(t.nodes||t.edges))throw new SyntaxError('Data must contain either parameter "dot" or parameter pair "nodes" and "edges", but not both.');if(this.setOptions(t&&t.options),t&&t.dot){if(t&&t.dot){var i=c.DOTToGraph(t.dot);return void this.setData(i)}}else this._setNodes(t&&t.nodes),this._setEdges(t&&t.edges);if(this._putDataInSector(),!e)if(this.stabilize){var s=this;setTimeout(function(){s._stabilize(),s.start()},0)}else this.start()},s.prototype.setOptions=function(t){if(t){var e;if(void 0!==t.width&&(this.width=t.width),void 0!==t.height&&(this.height=t.height),void 0!==t.stabilize&&(this.stabilize=t.stabilize),void 0!==t.selectable&&(this.selectable=t.selectable),void 0!==t.freezeForStabilization&&(this.constants.freezeForStabilization=t.freezeForStabilization),void 0!==t.configurePhysics&&(this.constants.configurePhysics=t.configurePhysics),void 0!==t.stabilizationIterations&&(this.constants.stabilizationIterations=t.stabilizationIterations),void 0!==t.dragNetwork&&(this.constants.dragNetwork=t.dragNetwork),void 0!==t.dragNodes&&(this.constants.dragNodes=t.dragNodes),void 0!==t.zoomable&&(this.constants.zoomable=t.zoomable),void 0!==t.hover&&(this.constants.hover=t.hover),void 0!==t.hideEdgesOnDrag&&(this.constants.hideEdgesOnDrag=t.hideEdgesOnDrag),void 0!==t.hideNodesOnDrag&&(this.constants.hideNodesOnDrag=t.hideNodesOnDrag),void 0!==t.dragGraph)throw new Error("Option dragGraph is renamed to dragNetwork");if(void 0!==t.labels)for(e in t.labels)t.labels.hasOwnProperty(e)&&(this.constants.labels[e]=t.labels[e]);if(t.onAdd&&(this.triggerFunctions.add=t.onAdd),t.onEdit&&(this.triggerFunctions.edit=t.onEdit),t.onEditEdge&&(this.triggerFunctions.editEdge=t.onEditEdge),t.onConnect&&(this.triggerFunctions.connect=t.onConnect),t.onDelete&&(this.triggerFunctions.del=t.onDelete),t.physics){if(t.physics.barnesHut){this.constants.physics.barnesHut.enabled=!0;for(e in t.physics.barnesHut)t.physics.barnesHut.hasOwnProperty(e)&&(this.constants.physics.barnesHut[e]=t.physics.barnesHut[e])}if(t.physics.repulsion){this.constants.physics.barnesHut.enabled=!1;for(e in t.physics.repulsion)t.physics.repulsion.hasOwnProperty(e)&&(this.constants.physics.repulsion[e]=t.physics.repulsion[e])}if(t.physics.hierarchicalRepulsion){this.constants.hierarchicalLayout.enabled=!0,this.constants.physics.hierarchicalRepulsion.enabled=!0,this.constants.physics.barnesHut.enabled=!1;for(e in t.physics.hierarchicalRepulsion)t.physics.hierarchicalRepulsion.hasOwnProperty(e)&&(this.constants.physics.hierarchicalRepulsion[e]=t.physics.hierarchicalRepulsion[e])}}if(void 0!==t.smoothCurves)if("boolean"==typeof t.smoothCurves)this.constants.smoothCurves.enabled=t.smoothCurves;else{this.constants.smoothCurves.enabled=!0;for(e in t.smoothCurves)t.smoothCurves.hasOwnProperty(e)&&(this.constants.smoothCurves[e]=t.smoothCurves[e])}if(t.hierarchicalLayout){this.constants.hierarchicalLayout.enabled=!0;for(e in t.hierarchicalLayout)t.hierarchicalLayout.hasOwnProperty(e)&&(this.constants.hierarchicalLayout[e]=t.hierarchicalLayout[e])}else void 0!==t.hierarchicalLayout&&(this.constants.hierarchicalLayout.enabled=!1);if(t.clustering){this.constants.clustering.enabled=!0;for(e in t.clustering)t.clustering.hasOwnProperty(e)&&(this.constants.clustering[e]=t.clustering[e])}else void 0!==t.clustering&&(this.constants.clustering.enabled=!1);if(t.navigation){this.constants.navigation.enabled=!0;for(e in t.navigation)t.navigation.hasOwnProperty(e)&&(this.constants.navigation[e]=t.navigation[e])}else void 0!==t.navigation&&(this.constants.navigation.enabled=!1);if(t.keyboard){this.constants.keyboard.enabled=!0;for(e in t.keyboard)t.keyboard.hasOwnProperty(e)&&(this.constants.keyboard[e]=t.keyboard[e])}else void 0!==t.keyboard&&(this.constants.keyboard.enabled=!1);if(t.dataManipulation){this.constants.dataManipulation.enabled=!0;for(e in t.dataManipulation)t.dataManipulation.hasOwnProperty(e)&&(this.constants.dataManipulation[e]=t.dataManipulation[e]);this.editMode=this.constants.dataManipulation.initiallyVisible}else void 0!==t.dataManipulation&&(this.constants.dataManipulation.enabled=!1);if(t.edges){for(e in t.edges)t.edges.hasOwnProperty(e)&&"object"!=typeof t.edges[e]&&(this.constants.edges[e]=t.edges[e]);void 0!==t.edges.color&&(a.isString(t.edges.color)?(this.constants.edges.color={},this.constants.edges.color.color=t.edges.color,this.constants.edges.color.highlight=t.edges.color,this.constants.edges.color.hover=t.edges.color):(void 0!==t.edges.color.color&&(this.constants.edges.color.color=t.edges.color.color),void 0!==t.edges.color.highlight&&(this.constants.edges.color.highlight=t.edges.color.highlight),void 0!==t.edges.color.hover&&(this.constants.edges.color.hover=t.edges.color.hover))),t.edges.fontColor||void 0!==t.edges.color&&(a.isString(t.edges.color)?this.constants.edges.fontColor=t.edges.color:void 0!==t.edges.color.color&&(this.constants.edges.fontColor=t.edges.color.color)),t.edges.dash&&(void 0!==t.edges.dash.length&&(this.constants.edges.dash.length=t.edges.dash.length),void 0!==t.edges.dash.gap&&(this.constants.edges.dash.gap=t.edges.dash.gap),void 0!==t.edges.dash.altLength&&(this.constants.edges.dash.altLength=t.edges.dash.altLength)) +}if(t.nodes){for(e in t.nodes)t.nodes.hasOwnProperty(e)&&(this.constants.nodes[e]=t.nodes[e]);t.nodes.color&&(this.constants.nodes.color=a.parseColor(t.nodes.color))}if(t.groups)for(var i in t.groups)if(t.groups.hasOwnProperty(i)){var s=t.groups[i];this.groups.add(i,s)}if(t.tooltip){for(e in t.tooltip)t.tooltip.hasOwnProperty(e)&&(this.constants.tooltip[e]=t.tooltip[e]);t.tooltip.color&&(this.constants.tooltip.color=a.parseColor(t.tooltip.color))}}this._loadPhysicsSystem(),this._loadNavigationControls(),this._loadManipulationSystem(),this._configureSmoothCurves(),this._createKeyBinds(),this.setSize(this.width,this.height),this.moving=!0,this.start()},s.prototype._create=function(){for(;this.containerElement.hasChildNodes();)this.containerElement.removeChild(this.containerElement.firstChild);if(this.frame=document.createElement("div"),this.frame.className="network-frame",this.frame.style.position="relative",this.frame.style.overflow="hidden",this.frame.canvas=document.createElement("canvas"),this.frame.canvas.style.position="relative",this.frame.appendChild(this.frame.canvas),!this.frame.canvas.getContext){var t=document.createElement("DIV");t.style.color="red",t.style.fontWeight="bold",t.style.padding="10px",t.innerHTML="Error: your browser does not support HTML canvas",this.frame.canvas.appendChild(t)}var e=this;this.drag={},this.pinch={},this.hammer=n(this.frame.canvas,{prevent_default:!0}),this.hammer.on("tap",e._onTap.bind(e)),this.hammer.on("doubletap",e._onDoubleTap.bind(e)),this.hammer.on("hold",e._onHold.bind(e)),this.hammer.on("pinch",e._onPinch.bind(e)),this.hammer.on("touch",e._onTouch.bind(e)),this.hammer.on("dragstart",e._onDragStart.bind(e)),this.hammer.on("drag",e._onDrag.bind(e)),this.hammer.on("dragend",e._onDragEnd.bind(e)),this.hammer.on("release",e._onRelease.bind(e)),this.hammer.on("mousewheel",e._onMouseWheel.bind(e)),this.hammer.on("DOMMouseScroll",e._onMouseWheel.bind(e)),this.hammer.on("mousemove",e._onMouseMoveTitle.bind(e)),this.containerElement.appendChild(this.frame)},s.prototype._createKeyBinds=function(){var t=this;this.mousetrap=r,this.mousetrap.reset(),1==this.constants.keyboard.enabled&&(this.mousetrap.bind("up",this._moveUp.bind(t),"keydown"),this.mousetrap.bind("up",this._yStopMoving.bind(t),"keyup"),this.mousetrap.bind("down",this._moveDown.bind(t),"keydown"),this.mousetrap.bind("down",this._yStopMoving.bind(t),"keyup"),this.mousetrap.bind("left",this._moveLeft.bind(t),"keydown"),this.mousetrap.bind("left",this._xStopMoving.bind(t),"keyup"),this.mousetrap.bind("right",this._moveRight.bind(t),"keydown"),this.mousetrap.bind("right",this._xStopMoving.bind(t),"keyup"),this.mousetrap.bind("=",this._zoomIn.bind(t),"keydown"),this.mousetrap.bind("=",this._stopZoom.bind(t),"keyup"),this.mousetrap.bind("-",this._zoomOut.bind(t),"keydown"),this.mousetrap.bind("-",this._stopZoom.bind(t),"keyup"),this.mousetrap.bind("[",this._zoomIn.bind(t),"keydown"),this.mousetrap.bind("[",this._stopZoom.bind(t),"keyup"),this.mousetrap.bind("]",this._zoomOut.bind(t),"keydown"),this.mousetrap.bind("]",this._stopZoom.bind(t),"keyup"),this.mousetrap.bind("pageup",this._zoomIn.bind(t),"keydown"),this.mousetrap.bind("pageup",this._stopZoom.bind(t),"keyup"),this.mousetrap.bind("pagedown",this._zoomOut.bind(t),"keydown"),this.mousetrap.bind("pagedown",this._stopZoom.bind(t),"keyup")),1==this.constants.dataManipulation.enabled&&(this.mousetrap.bind("escape",this._createManipulatorBar.bind(t)),this.mousetrap.bind("del",this._deleteSelected.bind(t)))},s.prototype._getPointer=function(t){return{x:t.pageX-a.getAbsoluteLeft(this.frame.canvas),y:t.pageY-a.getAbsoluteTop(this.frame.canvas)}},s.prototype._onTouch=function(t){this.drag.pointer=this._getPointer(t.gesture.center),this.drag.pinched=!1,this.pinch.scale=this._getScale(),this._handleTouch(this.drag.pointer)},s.prototype._onDragStart=function(){this._handleDragStart()},s.prototype._handleDragStart=function(){var t=this.drag,e=this._getNodeAt(t.pointer);if(t.dragging=!0,t.selection=[],t.translation=this._getTranslation(),t.nodeId=null,null!=e){t.nodeId=e.id,e.isSelected()||this._selectObject(e,!1);for(var i in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(i)){var s=this.selectionObj.nodes[i],o={id:s.id,node:s,x:s.x,y:s.y,xFixed:s.xFixed,yFixed:s.yFixed};s.xFixed=!0,s.yFixed=!0,t.selection.push(o)}}},s.prototype._onDrag=function(t){this._handleOnDrag(t)},s.prototype._handleOnDrag=function(t){if(!this.drag.pinched){var e=this._getPointer(t.gesture.center),i=this,s=this.drag,o=s.selection;if(o&&o.length&&1==this.constants.dragNodes){var n=e.x-s.pointer.x,r=e.y-s.pointer.y;o.forEach(function(t){var e=t.node;t.xFixed||(e.x=i._XconvertDOMtoCanvas(i._XconvertCanvasToDOM(t.x)+n)),t.yFixed||(e.y=i._YconvertDOMtoCanvas(i._YconvertCanvasToDOM(t.y)+r))}),this.moving||(this.moving=!0,this.start())}else if(1==this.constants.dragNetwork){var a=e.x-this.drag.pointer.x,h=e.y-this.drag.pointer.y;this._setTranslation(this.drag.translation.x+a,this.drag.translation.y+h),this._redraw()}}},s.prototype._onDragEnd=function(){this.drag.dragging=!1;var t=this.drag.selection;t&&(t.forEach(function(t){t.node.xFixed=t.xFixed,t.node.yFixed=t.yFixed}),this.moving=!0,this.start()),this._redraw()},s.prototype._onTap=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleTap(e)},s.prototype._onDoubleTap=function(t){var e=this._getPointer(t.gesture.center);this._handleDoubleTap(e)},s.prototype._onHold=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleOnHold(e)},s.prototype._onRelease=function(t){var e=this._getPointer(t.gesture.center);this._handleOnRelease(e)},s.prototype._onPinch=function(t){var e=this._getPointer(t.gesture.center);this.drag.pinched=!0,"scale"in this.pinch||(this.pinch.scale=1);var i=this.pinch.scale*t.gesture.scale;this._zoom(i,e)},s.prototype._zoom=function(t,e){if(1==this.constants.zoomable){var i=this._getScale();1e-5>t&&(t=1e-5),t>10&&(t=10);var s=null;void 0!==this.drag&&1==this.drag.dragging&&(s=this.DOMtoCanvas(this.drag.pointer));var o=this._getTranslation(),n=t/i,r=(1-n)*e.x+o.x*n,a=(1-n)*e.y+o.y*n;if(this.areaCenter={x:this._XconvertDOMtoCanvas(e.x),y:this._YconvertDOMtoCanvas(e.y)},this._setScale(t),this._setTranslation(r,a),this.updateClustersDefault(),null!=s){var h=this.canvasToDOM(s);this.drag.pointer.x=h.x,this.drag.pointer.y=h.y}return this._redraw(),t>i?this.emit("zoom",{direction:"+"}):this.emit("zoom",{direction:"-"}),t}},s.prototype._onMouseWheel=function(t){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i=this._getScale(),s=e/10;0>e&&(s/=1-s),i*=1+s;var o=h.fakeGesture(this,t),n=this._getPointer(o.center);this._zoom(i,n)}t.preventDefault()},s.prototype._onMouseMoveTitle=function(t){var e=h.fakeGesture(this,t),i=this._getPointer(e.center);this.popupObj&&this._checkHidePopup(i);var s=this,o=function(){s._checkShowPopup(i)};if(this.popupTimer&&clearInterval(this.popupTimer),this.drag.dragging||(this.popupTimer=setTimeout(o,this.constants.tooltip.delay)),1==this.constants.hover){for(var n in this.hoverObj.edges)this.hoverObj.edges.hasOwnProperty(n)&&(this.hoverObj.edges[n].hover=!1,delete this.hoverObj.edges[n]);var r=this._getNodeAt(i);null==r&&(r=this._getEdgeAt(i)),null!=r&&this._hoverObject(r);for(var a in this.hoverObj.nodes)this.hoverObj.nodes.hasOwnProperty(a)&&(r instanceof m&&r.id!=a||r instanceof f||null==r)&&(this._blurObject(this.hoverObj.nodes[a]),delete this.hoverObj.nodes[a]);this.redraw()}},s.prototype._checkShowPopup=function(t){var e,i={left:this._XconvertDOMtoCanvas(t.x),top:this._YconvertDOMtoCanvas(t.y),right:this._XconvertDOMtoCanvas(t.x),bottom:this._YconvertDOMtoCanvas(t.y)},s=this.popupObj;if(void 0==this.popupObj){var o=this.nodes;for(e in o)if(o.hasOwnProperty(e)){var n=o[e];if(void 0!==n.getTitle()&&n.isOverlappingWith(i)){this.popupObj=n;break}}}if(void 0===this.popupObj){var r=this.edges;for(e in r)if(r.hasOwnProperty(e)){var a=r[e];if(a.connected&&void 0!==a.getTitle()&&a.isOverlappingWith(i)){this.popupObj=a;break}}}if(this.popupObj){if(this.popupObj!=s){var h=this;h.popup||(h.popup=new g(h.frame,h.constants.tooltip)),h.popup.setPosition(t.x-3,t.y-3),h.popup.setText(h.popupObj.getTitle()),h.popup.show()}}else this.popup&&this.popup.hide()},s.prototype._checkHidePopup=function(t){this.popupObj&&this._getNodeAt(t)||(this.popupObj=void 0,this.popup&&this.popup.hide())},s.prototype.setSize=function(t,e){this.frame.style.width=t,this.frame.style.height=e,this.frame.canvas.style.width="100%",this.frame.canvas.style.height="100%",this.frame.canvas.width=this.frame.canvas.clientWidth,this.frame.canvas.height=this.frame.canvas.clientHeight,void 0!==this.manipulationDiv&&(this.manipulationDiv.style.width=this.frame.canvas.clientWidth+"px"),void 0!==this.navigationDivs&&void 0!==this.navigationDivs.wrapper&&(this.navigationDivs.wrapper.style.width=this.frame.canvas.clientWidth+"px",this.navigationDivs.wrapper.style.height=this.frame.canvas.clientHeight+"px"),this.emit("resize",{width:this.frame.canvas.width,height:this.frame.canvas.height})},s.prototype._setNodes=function(t){var e=this.nodesData;if(t instanceof d||t instanceof l)this.nodesData=t;else if(t instanceof Array)this.nodesData=new d,this.nodesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.nodesData=new d}if(e&&a.forEach(this.nodesListeners,function(t,i){e.off(i,t)}),this.nodes={},this.nodesData){var i=this;a.forEach(this.nodesListeners,function(t,e){i.nodesData.on(e,t)});var s=this.nodesData.getIds();this._addNodes(s)}this._updateSelection()},s.prototype._addNodes=function(t){for(var e,i=0,s=t.length;s>i;i++){e=t[i];var o=this.nodesData.get(e),n=new m(o,this.images,this.groups,this.constants);if(this.nodes[e]=n,!(0!=n.xFixed&&0!=n.yFixed||null!==n.x&&null!==n.y)){var r=1*t.length,a=2*Math.PI*Math.random();0==n.xFixed&&(n.x=r*Math.cos(a)),0==n.yFixed&&(n.y=r*Math.sin(a))}this.moving=!0}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateValueRange(this.nodes),this.updateLabels()},s.prototype._updateNodes=function(t){for(var e=this.nodes,i=this.nodesData,s=0,o=t.length;o>s;s++){var n=t[s],r=e[n],a=i.get(n);r?r.setProperties(a,this.constants):(r=new m(properties,this.images,this.groups,this.constants),e[n]=r)}this.moving=!0,1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateNodeIndexList(),this._reconnectEdges(),this._updateValueRange(e)},s.prototype._removeNodes=function(t){for(var e=this.nodes,i=0,s=t.length;s>i;i++){var o=t[i];delete e[o]}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateSelection(),this._updateValueRange(e)},s.prototype._setEdges=function(t){var e=this.edgesData;if(t instanceof d||t instanceof l)this.edgesData=t;else if(t instanceof Array)this.edgesData=new d,this.edgesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.edgesData=new d}if(e&&a.forEach(this.edgesListeners,function(t,i){e.off(i,t)}),this.edges={},this.edgesData){var i=this;a.forEach(this.edgesListeners,function(t,e){i.edgesData.on(e,t)});var s=this.edgesData.getIds();this._addEdges(s)}this._reconnectEdges()},s.prototype._addEdges=function(t){for(var e=this.edges,i=this.edgesData,s=0,o=t.length;o>s;s++){var n=t[s],r=e[n];r&&r.disconnect();var a=i.get(n,{showInternalIds:!0});e[n]=new f(a,this,this.constants)}this.moving=!0,this._updateValueRange(e),this._createBezierNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes()},s.prototype._updateEdges=function(t){for(var e=this.edges,i=this.edgesData,s=0,o=t.length;o>s;s++){var n=t[s],r=i.get(n),a=e[n];a?(a.disconnect(),a.setProperties(r,this.constants),a.connect()):(a=new f(r,this,this.constants),this.edges[n]=a)}this._createBezierNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this.moving=!0,this._updateValueRange(e)},s.prototype._removeEdges=function(t){for(var e=this.edges,i=0,s=t.length;s>i;i++){var o=t[i],n=e[o];n&&(null!=n.via&&delete this.sectors.support.nodes[n.via.id],n.disconnect(),delete e[o])}this.moving=!0,this._updateValueRange(e),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes()},s.prototype._reconnectEdges=function(){var t,e=this.nodes,i=this.edges;for(t in e)e.hasOwnProperty(t)&&(e[t].edges=[]);for(t in i)if(i.hasOwnProperty(t)){var s=i[t];s.from=null,s.to=null,s.connect()}},s.prototype._updateValueRange=function(t){var e,i=void 0,s=void 0;for(e in t)if(t.hasOwnProperty(e)){var o=t[e].getValue();void 0!==o&&(i=void 0===i?o:Math.min(o,i),s=void 0===s?o:Math.max(o,s))}if(void 0!==i&&void 0!==s)for(e in t)t.hasOwnProperty(e)&&t[e].setValueRange(i,s)},s.prototype.redraw=function(){this.setSize(this.width,this.height),this._redraw()},s.prototype._redraw=function(){var t=this.frame.canvas.getContext("2d"),e=this.frame.canvas.width,i=this.frame.canvas.height;t.clearRect(0,0,e,i),t.save(),t.translate(this.translation.x,this.translation.y),t.scale(this.scale,this.scale),this.canvasTopLeft={x:this._XconvertDOMtoCanvas(0),y:this._YconvertDOMtoCanvas(0)},this.canvasBottomRight={x:this._XconvertDOMtoCanvas(this.frame.canvas.clientWidth),y:this._YconvertDOMtoCanvas(this.frame.canvas.clientHeight)},this._doInAllSectors("_drawAllSectorNodes",t),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideEdgesOnDrag)&&this._doInAllSectors("_drawEdges",t),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideNodesOnDrag)&&this._doInAllSectors("_drawNodes",t,!1),1==this.controlNodesActive&&this._doInAllSectors("_drawControlNodes",t),t.restore()},s.prototype._setTranslation=function(t,e){void 0===this.translation&&(this.translation={x:0,y:0}),void 0!==t&&(this.translation.x=t),void 0!==e&&(this.translation.y=e),this.emit("viewChanged")},s.prototype._getTranslation=function(){return{x:this.translation.x,y:this.translation.y}},s.prototype._setScale=function(t){this.scale=t},s.prototype._getScale=function(){return this.scale},s.prototype._XconvertDOMtoCanvas=function(t){return(t-this.translation.x)/this.scale},s.prototype._XconvertCanvasToDOM=function(t){return t*this.scale+this.translation.x},s.prototype._YconvertDOMtoCanvas=function(t){return(t-this.translation.y)/this.scale},s.prototype._YconvertCanvasToDOM=function(t){return t*this.scale+this.translation.y},s.prototype.canvasToDOM=function(t){return{x:this._XconvertCanvasToDOM(t.x),y:this._YconvertCanvasToDOM(t.y)}},s.prototype.DOMtoCanvas=function(t){return{x:this._XconvertDOMtoCanvas(t.x),y:this._YconvertDOMtoCanvas(t.y)}},s.prototype._drawNodes=function(t,e){void 0===e&&(e=!1);var i=this.nodes,s=[];for(var o in i)i.hasOwnProperty(o)&&(i[o].setScaleAndPos(this.scale,this.canvasTopLeft,this.canvasBottomRight),i[o].isSelected()?s.push(o):(i[o].inArea()||e)&&i[o].draw(t));for(var n=0,r=s.length;r>n;n++)(i[s[n]].inArea()||e)&&i[s[n]].draw(t)},s.prototype._drawEdges=function(t){var e=this.edges;for(var i in e)if(e.hasOwnProperty(i)){var s=e[i];s.setScale(this.scale),s.connected&&e[i].draw(t)}},s.prototype._drawControlNodes=function(t){var e=this.edges;for(var i in e)e.hasOwnProperty(i)&&e[i]._drawControlNodes(t)},s.prototype._stabilize=function(){1==this.constants.freezeForStabilization&&this._freezeDefinedNodes();for(var t=0;this.moving&&t0)for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStepLimited(e,this.constants.maxVelocity),s=!0);else for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStep(e),s=!0);if(1==s){var o=this.constants.minVelocity/Math.max(this.scale,.05);o>.5*this.constants.maxVelocity?this.moving=!0:(this.moving=this._isMoving(o),0==this.moving&&this.emit("stabilized",{iterations:null}),this.moving=this.moving||this.configurePhysics)}},s.prototype._physicsTick=function(){this.freezeSimulation||this.moving&&(this._doInAllActiveSectors("_initializeForceCalculation"),this._doInAllActiveSectors("_discreteStepNodes"),this.constants.smoothCurves&&this._doInSupportSector("_discreteStepNodes"),this._findCenter(this._getRange()))},s.prototype._animationStep=function(){this.timer=void 0,this._handleNavigation(),this.start();var t=Date.now(),e=1;this._physicsTick();for(var i=Date.now()-t;i<.9*(this.renderTimestep-this.renderTime)&&eh}return!1},s.prototype._getColor=function(){var t=this.color;return"to"==this.inheritColor?t={highlight:this.to.color.highlight.border,hover:this.to.color.hover.border,color:this.to.color.border}:("from"==this.inheritColor||1==this.inheritColor)&&(t={highlight:this.from.color.highlight.border,hover:this.from.color.hover.border,color:this.from.color.border}),1==this.selected?t.highlight:1==this.hover?t.hover:t.color},s.prototype._drawLine=function(t){if(t.strokeStyle=this._getColor(),t.lineWidth=this._getLineWidth(),this.from!=this.to){var e,i=this._line(t);if(this.label){if(1==this.smoothCurves.enabled&&null!=i){var s=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),o=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:s,y:o}}else e=this._pointOnLine(.5);this._label(t,this.label,e.x,e.y)}}else{var n,r,a=this.length/4,h=this.from;h.width||h.resize(t),h.width>h.height?(n=h.x+h.width/2,r=h.y-a):(n=h.x+a,r=h.y-h.height/2),this._circle(t,n,r,a),e=this._pointOnCircle(n,r,a,.5),this._label(t,this.label,e.x,e.y)}},s.prototype._getLineWidth=function(){return 1==this.selected?Math.min(this.widthSelected,this.widthMax)*this.networkScaleInv:1==this.hover?Math.min(this.hoverWidth,this.widthMax)*this.networkScaleInv:this.width*this.networkScaleInv},s.prototype._getViaCoordinates=function(){var t=null,e=null,i=this.smoothCurves.roundness,s=this.smoothCurves.type,o=Math.abs(this.from.x-this.to.x),n=Math.abs(this.from.y-this.to.y);return"discrete"==s||"diagonalCross"==s?Math.abs(this.from.x-this.to.x)this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n)),"discrete"==s&&(t=i*n>o?this.from.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o)),"discrete"==s&&(e=i*o>n?this.from.y:e)):"straightCross"==s?Math.abs(this.from.x-this.to.x)Math.abs(this.from.y-this.to.y)&&(t=this.from.xthis.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n,t=this.to.x>t?this.to.x:t):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n,t=this.to.x>t?this.to.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xe?this.to.y:e):this.from.x>this.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o,e=this.to.y>e?this.to.y:e):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o,e=this.to.yl.height?(a=l.x+.5*l.width,h=l.y-d):(a=l.x+d,h=l.y-.5*l.height),this._circle(t,a,h,d);var s=.2*Math.PI,o=(10+5*this.width)*this.arrowScaleFactor;e=this._pointOnCircle(a,h,d,.5),t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&(e=this._pointOnCircle(a,h,d,.5),this._label(t,this.label,e.x,e.y))}},s.prototype._drawArrow=function(t){1==this.selected?(t.strokeStyle=this.color.highlight,t.fillStyle=this.color.highlight):1==this.hover?(t.strokeStyle=this.color.hover,t.fillStyle=this.color.hover):(t.strokeStyle=this.color.color,t.fillStyle=this.color.color),t.lineWidth=this._getLineWidth(); +var e,i;if(this.from!=this.to){e=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x);var s,o=this.to.x-this.from.x,n=this.to.y-this.from.y,r=Math.sqrt(o*o+n*n),a=this.from.distanceToBorder(t,e+Math.PI),h=(r-a)/r,d=h*this.from.x+(1-h)*this.to.x,l=h*this.from.y+(1-h)*this.to.y;1==this.smoothCurves.dynamic&&1==this.smoothCurves.enabled?s=this.via:1==this.smoothCurves.enabled&&(s=this._getViaCoordinates()),1==this.smoothCurves.enabled&&null!=s.x&&(e=Math.atan2(this.to.y-s.y,this.to.x-s.x),o=this.to.x-s.x,n=this.to.y-s.y,r=Math.sqrt(o*o+n*n));var c,p,u=this.to.distanceToBorder(t,e),m=(r-u)/r;if(1==this.smoothCurves.enabled&&null!=s.x?(c=(1-m)*s.x+m*this.to.x,p=(1-m)*s.y+m*this.to.y):(c=(1-m)*this.from.x+m*this.to.x,p=(1-m)*this.from.y+m*this.to.y),t.beginPath(),t.moveTo(d,l),1==this.smoothCurves.enabled&&null!=s.x?t.quadraticCurveTo(s.x,s.y,c,p):t.lineTo(c,p),t.stroke(),i=(10+5*this.width)*this.arrowScaleFactor,t.arrow(c,p,e,i),t.fill(),t.stroke(),this.label){var f;if(1==this.smoothCurves.enabled&&null!=s){var g=.5*(.5*(this.from.x+s.x)+.5*(this.to.x+s.x)),v=.5*(.5*(this.from.y+s.y)+.5*(this.to.y+s.y));f={x:g,y:v}}else f=this._pointOnLine(.5);this._label(t,this.label,f.x,f.y)}}else{var y,b,_,x=this.from,w=.25*Math.max(100,this.length);x.width||x.resize(t),x.width>x.height?(y=x.x+.5*x.width,b=x.y-w,_={x:y,y:x.y,angle:.9*Math.PI}):(y=x.x+w,b=x.y-.5*x.height,_={x:x.x,y:b,angle:.6*Math.PI}),t.beginPath(),t.arc(y,b,w,0,2*Math.PI,!1),t.stroke();var i=(10+5*this.width)*this.arrowScaleFactor;t.arrow(_.x,_.y,_.angle,i),t.fill(),t.stroke(),this.label&&(f=this._pointOnCircle(y,b,w,.5),this._label(t,this.label,f.x,f.y))}},s.prototype._getDistanceToEdge=function(t,e,i,s,o,n){if(this.from!=this.to){if(1==this.smoothCurves.enabled){var r,a;if(1==this.smoothCurves.enabled&&1==this.smoothCurves.dynamic)r=this.via.x,a=this.via.y;else{var h=this._getViaCoordinates();r=h.x,a=h.y}var d,l,c,p,u,m,f,g=1e9;for(l=0;10>l;l++)c=.1*l,p=Math.pow(1-c,2)*t+2*c*(1-c)*r+Math.pow(c,2)*i,u=Math.pow(1-c,2)*e+2*c*(1-c)*a+Math.pow(c,2)*s,l>0&&(d=this._getDistanceToLine(m,f,p,u,o,n),g=g>d?d:g),m=p,f=u;return g}return this._getDistanceToLine(t,e,i,s,o,n)}var p,u,v,y,b=this.length/4,_=this.from;return _.width||_.resize(ctx),_.width>_.height?(p=_.x+_.width/2,u=_.y-b):(p=_.x+b,u=_.y-_.height/2),v=p-o,y=u-n,Math.abs(Math.sqrt(v*v+y*y)-b)},s.prototype._getDistanceToLine=function(t,e,i,s,o,n){var r=i-t,a=s-e,h=r*r+a*a,d=((o-t)*r+(n-e)*a)/h;d>1?d=1:0>d&&(d=0);var l=t+d*r,c=e+d*a,p=l-o,u=c-n;return Math.sqrt(p*p+u*u)},s.prototype.setScale=function(t){this.networkScaleInv=1/t},s.prototype.select=function(){this.selected=!0},s.prototype.unselect=function(){this.selected=!1},s.prototype.positionBezierNode=function(){null!==this.via&&(this.via.x=.5*(this.from.x+this.to.x),this.via.y=.5*(this.from.y+this.to.y))},s.prototype._drawControlNodes=function(t){if(1==this.controlNodesEnabled){if(null===this.controlNodes.from&&null===this.controlNodes.to){var e="edgeIdFrom:".concat(this.id),i="edgeIdTo:".concat(this.id),s={nodes:{group:"",radius:8},physics:{damping:0},clustering:{maxNodeSizeIncrements:0,nodeScaling:{width:0,height:0,radius:0}}};this.controlNodes.from=new n({id:e,shape:"dot",color:{background:"#ff4e00",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s),this.controlNodes.to=new n({id:i,shape:"dot",color:{background:"#ff4e00",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s)}0==this.controlNodes.from.selected&&0==this.controlNodes.to.selected&&(this.controlNodes.positions=this.getControlNodePositions(t),this.controlNodes.from.x=this.controlNodes.positions.from.x,this.controlNodes.from.y=this.controlNodes.positions.from.y,this.controlNodes.to.x=this.controlNodes.positions.to.x,this.controlNodes.to.y=this.controlNodes.positions.to.y),this.controlNodes.from.draw(t),this.controlNodes.to.draw(t)}else this.controlNodes={from:null,to:null,positions:{}}},s.prototype._enableControlNodes=function(){this.controlNodesEnabled=!0},s.prototype._disableControlNodes=function(){this.controlNodesEnabled=!1},s.prototype._getSelectedControlNode=function(t,e){var i=this.controlNodes.positions,s=Math.sqrt(Math.pow(t-i.from.x,2)+Math.pow(e-i.from.y,2)),o=Math.sqrt(Math.pow(t-i.to.x,2)+Math.pow(e-i.to.y,2));return 15>s?(this.connectedNode=this.from,this.from=this.controlNodes.from,this.controlNodes.from):15>o?(this.connectedNode=this.to,this.to=this.controlNodes.to,this.controlNodes.to):null},s.prototype._restoreControlNodes=function(){1==this.controlNodes.from.selected&&(this.from=this.connectedNode,this.connectedNode=null,this.controlNodes.from.unselect()),1==this.controlNodes.to.selected&&(this.to=this.connectedNode,this.connectedNode=null,this.controlNodes.to.unselect())},s.prototype.getControlNodePositions=function(t){var e,i=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),s=this.to.x-this.from.x,o=this.to.y-this.from.y,n=Math.sqrt(s*s+o*o),r=this.from.distanceToBorder(t,i+Math.PI),a=(n-r)/n,h=a*this.from.x+(1-a)*this.to.x,d=a*this.from.y+(1-a)*this.to.y;1==this.smoothCurves.dynamic&&1==this.smoothCurves.enabled?e=this.via:1==this.smoothCurves.enabled&&(e=this._getViaCoordinates()),1==this.smoothCurves.enabled&&null!=e.x&&(i=Math.atan2(this.to.y-e.y,this.to.x-e.x),s=this.to.x-e.x,o=this.to.y-e.y,n=Math.sqrt(s*s+o*o));var l,c,p=this.to.distanceToBorder(t,i),u=(n-p)/n;return 1==this.smoothCurves.enabled&&null!=e.x?(l=(1-u)*e.x+u*this.to.x,c=(1-u)*e.y+u*this.to.y):(l=(1-u)*this.from.x+u*this.to.x,c=(1-u)*this.from.y+u*this.to.y),{from:{x:h,y:d},to:{x:l,y:c}}},t.exports=s},function(t,e,i){function s(){this.clear(),this.defaultIndex=0}var o=i(1);s.DEFAULT=[{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},{border:"#FFA500",background:"#FFFF00",highlight:{border:"#FFA500",background:"#FFFFA3"},hover:{border:"#FFA500",background:"#FFFFA3"}},{border:"#FA0A10",background:"#FB7E81",highlight:{border:"#FA0A10",background:"#FFAFB1"},hover:{border:"#FA0A10",background:"#FFAFB1"}},{border:"#41A906",background:"#7BE141",highlight:{border:"#41A906",background:"#A1EC76"},hover:{border:"#41A906",background:"#A1EC76"}},{border:"#E129F0",background:"#EB7DF4",highlight:{border:"#E129F0",background:"#F0B3F5"},hover:{border:"#E129F0",background:"#F0B3F5"}},{border:"#7C29F0",background:"#AD85E4",highlight:{border:"#7C29F0",background:"#D3BDF0"},hover:{border:"#7C29F0",background:"#D3BDF0"}},{border:"#C37F00",background:"#FFA807",highlight:{border:"#C37F00",background:"#FFCA66"},hover:{border:"#C37F00",background:"#FFCA66"}},{border:"#4220FB",background:"#6E6EFD",highlight:{border:"#4220FB",background:"#9B9BFD"},hover:{border:"#4220FB",background:"#9B9BFD"}},{border:"#FD5A77",background:"#FFC0CB",highlight:{border:"#FD5A77",background:"#FFD1D9"},hover:{border:"#FD5A77",background:"#FFD1D9"}},{border:"#4AD63A",background:"#C2FABC",highlight:{border:"#4AD63A",background:"#E6FFE3"},hover:{border:"#4AD63A",background:"#E6FFE3"}}],s.prototype.clear=function(){this.groups={},this.groups.length=function(){var t=0;for(var e in this)this.hasOwnProperty(e)&&t++;return t}},s.prototype.get=function(t){var e=this.groups[t];if(void 0==e){var i=this.defaultIndex%s.DEFAULT.length;this.defaultIndex++,e={},e.color=s.DEFAULT[i],this.groups[t]=e}return e},s.prototype.add=function(t,e){return this.groups[t]=e,e.color&&(e.color=o.parseColor(e.color)),e},t.exports=s},function(t){function e(){this.images={},this.callback=void 0}e.prototype.setOnloadCallback=function(t){this.callback=t},e.prototype.load=function(t){var e=this.images[t];if(void 0==e){var i=this;e=new Image,this.images[t]=e,e.onload=function(){i.callback&&i.callback(this)},e.src=t}return e},t.exports=e},function(t,e,i){function s(t,e,i,s){this.selected=!1,this.hover=!1,this.edges=[],this.dynamicEdges=[],this.reroutedEdges={},this.group=s.nodes.group,this.fontSize=Number(s.nodes.fontSize),this.fontFace=s.nodes.fontFace,this.fontColor=s.nodes.fontColor,this.fontDrawThreshold=3,this.color=s.nodes.color,this.id=void 0,this.shape=s.nodes.shape,this.image=s.nodes.image,this.x=null,this.y=null,this.xFixed=!1,this.yFixed=!1,this.horizontalAlignLeft=!0,this.verticalAlignTop=!0,this.radius=s.nodes.radius,this.baseRadiusValue=s.nodes.radius,this.radiusFixed=!1,this.radiusMin=s.nodes.radiusMin,this.radiusMax=s.nodes.radiusMax,this.level=-1,this.preassignedLevel=!1,this.borderWidth=s.nodes.borderWidth,this.borderWidthSelected=s.nodes.borderWidthSelected,this.imagelist=e,this.grouplist=i,this.fx=0,this.fy=0,this.vx=0,this.vy=0,this.minForce=s.minForce,this.damping=s.physics.damping,this.mass=1,this.fixedData={x:null,y:null},this.setProperties(t,s),this.resetCluster(),this.dynamicEdgesLength=0,this.clusterSession=0,this.clusterSizeWidthFactor=s.clustering.nodeScaling.width,this.clusterSizeHeightFactor=s.clustering.nodeScaling.height,this.clusterSizeRadiusFactor=s.clustering.nodeScaling.radius,this.maxNodeSizeIncrements=s.clustering.maxNodeSizeIncrements,this.growthIndicator=0,this.networkScaleInv=1,this.networkScale=1,this.canvasTopLeft={x:-300,y:-300},this.canvasBottomRight={x:300,y:300},this.parentEdgeId=null}var o=i(1);s.prototype.resetCluster=function(){this.formationScale=void 0,this.clusterSize=1,this.containedNodes={},this.containedEdges={},this.clusterSessions=[]},s.prototype.attachEdge=function(t){-1==this.edges.indexOf(t)&&this.edges.push(t),-1==this.dynamicEdges.indexOf(t)&&this.dynamicEdges.push(t),this.dynamicEdgesLength=this.dynamicEdges.length},s.prototype.detachEdge=function(t){var e=this.edges.indexOf(t);-1!=e&&(this.edges.splice(e,1),this.dynamicEdges.splice(e,1)),this.dynamicEdgesLength=this.dynamicEdges.length},s.prototype.setProperties=function(t,e){if(t){if(this.originalLabel=void 0,void 0!==t.id&&(this.id=t.id),void 0!==t.label&&(this.label=t.label,this.originalLabel=t.label),void 0!==t.title&&(this.title=t.title),void 0!==t.group&&(this.group=t.group),void 0!==t.x&&(this.x=t.x),void 0!==t.y&&(this.y=t.y),void 0!==t.value&&(this.value=t.value),void 0!==t.level&&(this.level=t.level,this.preassignedLevel=!0),void 0!==t.borderWidth&&(this.borderWidth=t.borderWidth),void 0!==t.borderWidthSelected&&(this.borderWidthSelected=t.borderWidthSelected),void 0!==t.mass&&(this.mass=t.mass),void 0!==t.horizontalAlignLeft&&(this.horizontalAlignLeft=t.horizontalAlignLeft),void 0!==t.verticalAlignTop&&(this.verticalAlignTop=t.verticalAlignTop),void 0!==t.triggerFunction&&(this.triggerFunction=t.triggerFunction),void 0===this.id)throw"Node must have an id";if(void 0!==this.group){var i=this.grouplist.get(this.group);for(var s in i)i.hasOwnProperty(s)&&(this[s]=i[s])}if(void 0!==t.shape&&(this.shape=t.shape),void 0!==t.image&&(this.image=t.image),void 0!==t.radius&&(this.radius=t.radius,this.baseRadiusValue=this.radius),void 0!==t.color&&(this.color=o.parseColor(t.color)),void 0!==t.fontColor&&(this.fontColor=t.fontColor),void 0!==t.fontSize&&(this.fontSize=t.fontSize),void 0!==t.fontFace&&(this.fontFace=t.fontFace),void 0!==this.image&&""!=this.image){if(!this.imagelist)throw"No imagelist provided";this.imageObj=this.imagelist.load(this.image)}switch(this.xFixed=this.xFixed||void 0!==t.x&&!t.allowedToMoveX,this.yFixed=this.yFixed||void 0!==t.y&&!t.allowedToMoveY,this.radiusFixed=this.radiusFixed||void 0!==t.radius,"image"==this.shape&&(this.radiusMin=e.nodes.widthMin,this.radiusMax=e.nodes.widthMax),this.shape){case"database":this.draw=this._drawDatabase,this.resize=this._resizeDatabase;break;case"box":this.draw=this._drawBox,this.resize=this._resizeBox;break;case"circle":this.draw=this._drawCircle,this.resize=this._resizeCircle;break;case"ellipse":this.draw=this._drawEllipse,this.resize=this._resizeEllipse;break;case"image":this.draw=this._drawImage,this.resize=this._resizeImage;break;case"text":this.draw=this._drawText,this.resize=this._resizeText;break;case"dot":this.draw=this._drawDot,this.resize=this._resizeShape;break;case"square":this.draw=this._drawSquare,this.resize=this._resizeShape;break;case"triangle":this.draw=this._drawTriangle,this.resize=this._resizeShape;break;case"triangleDown":this.draw=this._drawTriangleDown,this.resize=this._resizeShape;break;case"star":this.draw=this._drawStar,this.resize=this._resizeShape;break;default:this.draw=this._drawEllipse,this.resize=this._resizeEllipse}this._reset()}},s.prototype.select=function(){this.selected=!0,this._reset()},s.prototype.unselect=function(){this.selected=!1,this._reset()},s.prototype.clearSizeCache=function(){this._reset()},s.prototype._reset=function(){this.width=void 0,this.height=void 0},s.prototype.getTitle=function(){return"function"==typeof this.title?this.title():this.title},s.prototype.distanceToBorder=function(t,e){var i=1;switch(this.width||this.resize(t),this.shape){case"circle":case"dot":return this.radius+i;case"ellipse":var s=this.width/2,o=this.height/2,n=Math.sin(e)*s,r=Math.cos(e)*o;return s*o/Math.sqrt(n*n+r*r);case"box":case"image":case"text":default:return this.width?Math.min(Math.abs(this.width/2/Math.cos(e)),Math.abs(this.height/2/Math.sin(e)))+i:0}},s.prototype._setForce=function(t,e){this.fx=t,this.fy=e},s.prototype._addForce=function(t,e){this.fx+=t,this.fy+=e},s.prototype.discreteStep=function(t){if(!this.xFixed){var e=this.damping*this.vx,i=(this.fx-e)/this.mass;this.vx+=i*t,this.x+=this.vx*t}if(!this.yFixed){var s=this.damping*this.vy,o=(this.fy-s)/this.mass;this.vy+=o*t,this.y+=this.vy*t}},s.prototype.discreteStepLimited=function(t,e){if(this.xFixed)this.fx=0;else{var i=this.damping*this.vx,s=(this.fx-i)/this.mass;this.vx+=s*t,this.vx=Math.abs(this.vx)>e?this.vx>0?e:-e:this.vx,this.x+=this.vx*t}if(this.yFixed)this.fy=0;else{var o=this.damping*this.vy,n=(this.fy-o)/this.mass;this.vy+=n*t,this.vy=Math.abs(this.vy)>e?this.vy>0?e:-e:this.vy,this.y+=this.vy*t}},s.prototype.isFixed=function(){return this.xFixed&&this.yFixed},s.prototype.isMoving=function(t){return Math.abs(this.vx)>t||Math.abs(this.vy)>t},s.prototype.isSelected=function(){return this.selected},s.prototype.getValue=function(){return this.value},s.prototype.getDistance=function(t,e){var i=this.x-t,s=this.y-e;return Math.sqrt(i*i+s*s)},s.prototype.setValueRange=function(t,e){if(!this.radiusFixed&&void 0!==this.value)if(e==t)this.radius=(this.radiusMin+this.radiusMax)/2;else{var i=(this.radiusMax-this.radiusMin)/(e-t);this.radius=(this.value-t)*i+this.radiusMin}this.baseRadiusValue=this.radius},s.prototype.draw=function(){throw"Draw method not initialized for node"},s.prototype.resize=function(){throw"Resize method not initialized for node"},s.prototype.isOverlappingWith=function(t){return this.leftt.left&&this.topt.top},s.prototype._resizeImage=function(){if(!this.width||!this.height){var t,e;if(this.value){this.radius=this.baseRadiusValue;var i=this.imageObj.height/this.imageObj.width;void 0!==i?(t=this.radius||this.imageObj.width,e=this.radius*i||this.imageObj.height):(t=0,e=0)}else t=this.imageObj.width,e=this.imageObj.height;this.width=t,this.height=e,this.growthIndicator=0,this.width>0&&this.height>0&&(this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-t)}},s.prototype._drawImage=function(t){this._resizeImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e;if(0!=this.imageObj.width){if(this.clusterSize>1){var i=this.clusterSize>1?10:0;i*=this.networkScaleInv,i=Math.min(.2*this.width,i),t.globalAlpha=.5,t.drawImage(this.imageObj,this.left-i,this.top-i,this.width+2*i,this.height+2*i)}t.globalAlpha=1,t.drawImage(this.imageObj,this.left,this.top,this.width,this.height),e=this.y+this.height/2}else e=this.y;this._label(t,this.label,this.x,e,void 0,"top")},s.prototype._resizeBox=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawBox=function(t){this._resizeBox(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.borderWidth,s=this.borderWidthSelected||2*this.borderWidth;t.strokeStyle=this.selected?this.color.highlight.border:this.hover?this.color.hover.border:this.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.roundRect(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth,this.radius),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.color.highlight.background:this.color.background,t.roundRect(this.left,this.top,this.width,this.height,this.radius),t.fill(),t.stroke(),this._label(t,this.label,this.x,this.y)},s.prototype._resizeDatabase=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=i.width+2*e;this.width=s,this.height=s,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-s}},s.prototype._drawDatabase=function(t){this._resizeDatabase(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.borderWidth,s=this.borderWidthSelected||2*this.borderWidth;t.strokeStyle=this.selected?this.color.highlight.border:this.hover?this.color.hover.border:this.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.database(this.x-this.width/2-2*t.lineWidth,this.y-.5*this.height-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.color.highlight.background:this.hover?this.color.hover.background:this.color.background,t.database(this.x-this.width/2,this.y-.5*this.height,this.width,this.height),t.fill(),t.stroke(),this._label(t,this.label,this.x,this.y)},s.prototype._resizeCircle=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=Math.max(i.width,i.height)+2*e;this.radius=s/2,this.width=s,this.height=s,this.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.radius-.5*s}},s.prototype._drawCircle=function(t){this._resizeCircle(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.borderWidth,s=this.borderWidthSelected||2*this.borderWidth;t.strokeStyle=this.selected?this.color.highlight.border:this.hover?this.color.hover.border:this.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.circle(this.x,this.y,this.radius+2*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.color.highlight.background:this.hover?this.color.hover.background:this.color.background,t.circle(this.x,this.y,this.radius),t.fill(),t.stroke(),this._label(t,this.label,this.x,this.y)},s.prototype._resizeEllipse=function(t){if(!this.width){var e=this.getTextSize(t);this.width=1.5*e.width,this.height=2*e.height,this.width1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.ellipse(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.color.highlight.background:this.hover?this.color.hover.background:this.color.background,t.ellipse(this.left,this.top,this.width,this.height),t.fill(),t.stroke(),this._label(t,this.label,this.x,this.y)},s.prototype._drawDot=function(t){this._drawShape(t,"circle")},s.prototype._drawTriangle=function(t){this._drawShape(t,"triangle")},s.prototype._drawTriangleDown=function(t){this._drawShape(t,"triangleDown")},s.prototype._drawSquare=function(t){this._drawShape(t,"square")},s.prototype._drawStar=function(t){this._drawShape(t,"star")},s.prototype._resizeShape=function(){if(!this.width){this.radius=this.baseRadiusValue;var t=2*this.radius;this.width=t,this.height=t,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-t}},s.prototype._drawShape=function(t,e){this._resizeShape(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var i=2.5,s=this.borderWidth,o=this.borderWidthSelected||2*this.borderWidth,n=2;switch(e){case"dot":n=2;break;case"square":n=2;break;case"triangle":n=3;break;case"triangleDown":n=3;break;case"star":n=4}t.strokeStyle=this.selected?this.color.highlight.border:this.hover?this.color.hover.border:this.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t[e](this.x,this.y,this.radius+n*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.color.highlight.background:this.hover?this.color.hover.background:this.color.background,t[e](this.x,this.y,this.radius),t.fill(),t.stroke(),this.label&&this._label(t,this.label,this.x,this.y+this.height/2,void 0,"top",!0)},s.prototype._resizeText=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawText=function(t){this._resizeText(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._label(t,this.label,this.x,this.y)},s.prototype._label=function(t,e,i,s,o,n,r){if(e&&this.fontSize*this.networkScale>this.fontDrawThreshold){t.font=(this.selected?"bold ":"")+this.fontSize+"px "+this.fontFace,t.fillStyle=this.fontColor||"black",t.textAlign=o||"center",t.textBaseline=n||"middle";var a=e.split("\n"),h=a.length,d=this.fontSize+4,l=s+(1-h)/2*d;1==r&&(l=s+(1-h)/(2*d));for(var c=0;h>c;c++)t.fillText(a[c],i,l),l+=d}},s.prototype.getTextSize=function(t){if(void 0!==this.label){t.font=(this.selected?"bold ":"")+this.fontSize+"px "+this.fontFace;for(var e=this.label.split("\n"),i=(this.fontSize+4)*e.length,s=0,o=0,n=e.length;n>o;o++)s=Math.max(s,t.measureText(e[o]).width);return{width:s,height:i}}return{width:0,height:0}},s.prototype.inArea=function(){return void 0!==this.width?this.x+this.width*this.networkScaleInv>=this.canvasTopLeft.x&&this.x-this.width*this.networkScaleInv=this.canvasTopLeft.y&&this.y-this.height*this.networkScaleInv=this.canvasTopLeft.x&&this.x=this.canvasTopLeft.y&&this.ys&&(n=s-e-this.padding),no&&(r=o-i-this.padding),ri;i++)if(e.id===r.nodes[i].id){o=r.nodes[i];break}for(o||(o={id:e.id},t.node&&(o.attr=a(o.attr,t.node))),i=n.length-1;i>=0;i--){var h=n[i];h.nodes||(h.nodes=[]),-1==h.nodes.indexOf(o)&&h.nodes.push(o)}e.attr&&(o.attr=a(o.attr,e.attr))}function l(t,e){if(t.edges||(t.edges=[]),t.edges.push(e),t.edge){var i=a({},t.edge);e.attr=a(i,e.attr)}}function c(t,e,i,s,o){var n={from:e,to:i,type:s};return t.edge&&(n.attr=a({},t.edge)),n.attr=a(n.attr||{},o),n}function p(){for(k=C.NULL,O="";" "==L||" "==L||"\n"==L||"\r"==L;)o();do{var t=!1;if("#"==L){for(var e=T-1;" "==D.charAt(e)||" "==D.charAt(e);)e--;if("\n"==D.charAt(e)||""==D.charAt(e)){for(;""!=L&&"\n"!=L;)o();t=!0}}if("/"==L&&"/"==n()){for(;""!=L&&"\n"!=L;)o();t=!0}if("/"==L&&"*"==n()){for(;""!=L;){if("*"==L&&"/"==n()){o(),o();break}o()}t=!0}for(;" "==L||" "==L||"\n"==L||"\r"==L;)o()}while(t);if(""==L)return void(k=C.DELIMITER);var i=L+n();if(E[i])return k=C.DELIMITER,O=i,o(),void o();if(E[L])return k=C.DELIMITER,O=L,void o();if(r(L)||"-"==L){for(O+=L,o();r(L);)O+=L,o();return"false"==O?O=!1:"true"==O?O=!0:isNaN(Number(O))||(O=Number(O)),void(k=C.IDENTIFIER)}if('"'==L){for(o();""!=L&&('"'!=L||'"'==L&&'"'==n());)O+=L,'"'==L&&o(),o();if('"'!=L)throw x('End of string " expected');return o(),void(k=C.IDENTIFIER)}for(k=C.UNKNOWN;""!=L;)O+=L,o();throw new SyntaxError('Syntax error in part "'+w(O,30)+'"')}function u(){var t={};if(s(),p(),"strict"==O&&(t.strict=!0,p()),("graph"==O||"digraph"==O)&&(t.type=O,p()),k==C.IDENTIFIER&&(t.id=O,p()),"{"!=O)throw x("Angle bracket { expected");if(p(),m(t),"}"!=O)throw x("Angle bracket } expected");if(p(),""!==O)throw x("End of file expected");return p(),delete t.node,delete t.edge,delete t.graph,t}function m(t){for(;""!==O&&"}"!=O;)f(t),";"==O&&p()}function f(t){var e=g(t);if(e)return void b(t,e);var i=v(t);if(!i){if(k!=C.IDENTIFIER)throw x("Identifier expected");var s=O;if(p(),"="==O){if(p(),k!=C.IDENTIFIER)throw x("Identifier expected");t[s]=O,p()}else y(t,s)}}function g(t){var e=null;if("subgraph"==O&&(e={},e.type="subgraph",p(),k==C.IDENTIFIER&&(e.id=O,p())),"{"==O){if(p(),e||(e={}),e.parent=t,e.node=t.node,e.edge=t.edge,e.graph=t.graph,m(e),"}"!=O)throw x("Angle bracket } expected");p(),delete e.node,delete e.edge,delete e.graph,delete e.parent,t.subgraphs||(t.subgraphs=[]),t.subgraphs.push(e)}return e}function v(t){return"node"==O?(p(),t.node=_(),"node"):"edge"==O?(p(),t.edge=_(),"edge"):"graph"==O?(p(),t.graph=_(),"graph"):null}function y(t,e){var i={id:e},s=_();s&&(i.attr=s),d(t,i),b(t,e)}function b(t,e){for(;"->"==O||"--"==O;){var i,s=O;p();var o=g(t);if(o)i=o;else{if(k!=C.IDENTIFIER)throw x("Identifier or subgraph expected");i=O,d(t,{id:i}),p()}var n=_(),r=c(t,e,i,s,n);l(t,r),e=i}}function _(){for(var t=null;"["==O;){for(p(),t={};""!==O&&"]"!=O;){if(k!=C.IDENTIFIER)throw x("Attribute name expected");var e=O;if(p(),"="!=O)throw x("Equal sign = expected");if(p(),k!=C.IDENTIFIER)throw x("Attribute value expected");var i=O;h(t,e,i),p(),","==O&&p()}if("]"!=O)throw x("Bracket ] expected");p()}return t}function x(t){return new SyntaxError(t+', got "'+w(O,30)+'" (char '+T+")")}function w(t,e){return t.length<=e?t:t.substr(0,27)+"..."}function S(t,e,i){t instanceof Array?t.forEach(function(t){e instanceof Array?e.forEach(function(e){i(t,e)}):i(t,e)}):e instanceof Array?e.forEach(function(e){i(t,e)}):i(t,e)}function M(t){function e(t){var e={from:t.from,to:t.to};return a(e,t.attr),e.style="->"==t.type?"arrow":"line",e}var s=i(t),o={nodes:[],edges:[],options:{}};return s.nodes&&s.nodes.forEach(function(t){var e={id:t.id,label:String(t.label||t.id)};a(e,t.attr),e.image&&(e.shape="image"),o.nodes.push(e)}),s.edges&&s.edges.forEach(function(t){var i,s;i=t.from instanceof Object?t.from.nodes:{id:t.from},s=t.to instanceof Object?t.to.nodes:{id:t.to},t.from instanceof Object&&t.from.edges&&t.from.edges.forEach(function(t){var i=e(t);o.edges.push(i)}),S(i,s,function(i,s){var n=c(o,i.id,s.id,t.type,t.attr),r=e(n);o.edges.push(r)}),t.to instanceof Object&&t.to.edges&&t.to.edges.forEach(function(t){var i=e(t);o.edges.push(i)})}),s.attr&&(o.options=s.attr),o}var C={NULL:0,DELIMITER:1,IDENTIFIER:2,UNKNOWN:3},E={"{":!0,"}":!0,"[":!0,"]":!0,";":!0,"=":!0,",":!0,"->":!0,"--":!0},D="",T=0,L="",O="",k=C.NULL,N=/[a-zA-Z_0-9.:#]/;e.parseDOT=i,e.DOTToGraph=M},function(t,e,i){t.exports="undefined"!=typeof window&&window.moment||i(46)},function(t,e,i){t.exports="undefined"!=typeof window?window.Hammer||i(47):function(){throw Error("hammer.js is only available in a browser, not in node.js.")}},function(t,e,i){var s=i(40);e.fakeGesture=function(t,e){var i=null,o=s.event.getTouchList(e,i),n=s.event.collectEventData(this,i,o,e); +return isNaN(n.center.pageX)&&(n.center.pageX=e.pageX),isNaN(n.center.pageY)&&(n.center.pageY=e.pageY),n}},function(){"undefined"!=typeof CanvasRenderingContext2D&&(CanvasRenderingContext2D.prototype.circle=function(t,e,i){this.beginPath(),this.arc(t,e,i,0,2*Math.PI,!1)},CanvasRenderingContext2D.prototype.square=function(t,e,i){this.beginPath(),this.rect(t-i,e-i,2*i,2*i)},CanvasRenderingContext2D.prototype.triangle=function(t,e,i){this.beginPath();var s=2*i,o=s/2,n=Math.sqrt(3)/6*s,r=Math.sqrt(s*s-o*o);this.moveTo(t,e-(r-n)),this.lineTo(t+o,e+n),this.lineTo(t-o,e+n),this.lineTo(t,e-(r-n)),this.closePath()},CanvasRenderingContext2D.prototype.triangleDown=function(t,e,i){this.beginPath();var s=2*i,o=s/2,n=Math.sqrt(3)/6*s,r=Math.sqrt(s*s-o*o);this.moveTo(t,e+(r-n)),this.lineTo(t+o,e-n),this.lineTo(t-o,e-n),this.lineTo(t,e+(r-n)),this.closePath()},CanvasRenderingContext2D.prototype.star=function(t,e,i){this.beginPath();for(var s=0;10>s;s++){var o=s%2===0?1.3*i:.5*i;this.lineTo(t+o*Math.sin(2*s*Math.PI/10),e-o*Math.cos(2*s*Math.PI/10))}this.closePath()},CanvasRenderingContext2D.prototype.roundRect=function(t,e,i,s,o){var n=Math.PI/180;0>i-2*o&&(o=i/2),0>s-2*o&&(o=s/2),this.beginPath(),this.moveTo(t+o,e),this.lineTo(t+i-o,e),this.arc(t+i-o,e+o,o,270*n,360*n,!1),this.lineTo(t+i,e+s-o),this.arc(t+i-o,e+s-o,o,0,90*n,!1),this.lineTo(t+o,e+s),this.arc(t+o,e+s-o,o,90*n,180*n,!1),this.lineTo(t,e+o),this.arc(t+o,e+o,o,180*n,270*n,!1)},CanvasRenderingContext2D.prototype.ellipse=function(t,e,i,s){var o=.5522848,n=i/2*o,r=s/2*o,a=t+i,h=e+s,d=t+i/2,l=e+s/2;this.beginPath(),this.moveTo(t,l),this.bezierCurveTo(t,l-r,d-n,e,d,e),this.bezierCurveTo(d+n,e,a,l-r,a,l),this.bezierCurveTo(a,l+r,d+n,h,d,h),this.bezierCurveTo(d-n,h,t,l+r,t,l)},CanvasRenderingContext2D.prototype.database=function(t,e,i,s){var o=1/3,n=i,r=s*o,a=.5522848,h=n/2*a,d=r/2*a,l=t+n,c=e+r,p=t+n/2,u=e+r/2,m=e+(s-r/2),f=e+s;this.beginPath(),this.moveTo(l,u),this.bezierCurveTo(l,u+d,p+h,c,p,c),this.bezierCurveTo(p-h,c,t,u+d,t,u),this.bezierCurveTo(t,u-d,p-h,e,p,e),this.bezierCurveTo(p+h,e,l,u-d,l,u),this.lineTo(l,m),this.bezierCurveTo(l,m+d,p+h,f,p,f),this.bezierCurveTo(p-h,f,t,m+d,t,m),this.lineTo(t,u)},CanvasRenderingContext2D.prototype.arrow=function(t,e,i,s){var o=t-s*Math.cos(i),n=e-s*Math.sin(i),r=t-.9*s*Math.cos(i),a=e-.9*s*Math.sin(i),h=o+s/3*Math.cos(i+.5*Math.PI),d=n+s/3*Math.sin(i+.5*Math.PI),l=o+s/3*Math.cos(i-.5*Math.PI),c=n+s/3*Math.sin(i-.5*Math.PI);this.beginPath(),this.moveTo(t,e),this.lineTo(h,d),this.lineTo(r,a),this.lineTo(l,c),this.closePath()},CanvasRenderingContext2D.prototype.dashedLine=function(t,e,i,s,o){o||(o=[10,5]),0==p&&(p=.001);var n=o.length;this.moveTo(t,e);for(var r=i-t,a=s-e,h=a/r,d=Math.sqrt(r*r+a*a),l=0,c=!0;d>=.1;){var p=o[l++%n];p>d&&(p=d);var u=Math.sqrt(p*p/(1+h*h));0>r&&(u=-u),t+=u,e+=h*u,this[c?"lineTo":"moveTo"](t,e),d-=p,c=!c}})},function(t,e,i){var s=i(54),o=i(48),n=i(49),r=i(50),a=i(51),h=i(52),d=i(53);e._loadMixin=function(t){for(var e in t)t.hasOwnProperty(e)&&(this[e]=t[e])},e._clearMixin=function(t){for(var e in t)t.hasOwnProperty(e)&&(this[e]=void 0)},e._loadPhysicsSystem=function(){this._loadMixin(s),this._loadSelectedForceSolver(),1==this.constants.configurePhysics&&this._loadPhysicsConfiguration()},e._loadClusterSystem=function(){this.clusterSession=0,this.hubThreshold=5,this._loadMixin(o)},e._loadSectorSystem=function(){this.sectors={},this.activeSector=["default"],this.sectors.active={},this.sectors.active["default"]={nodes:{},edges:{},nodeIndices:[],formationScale:1,drawingNode:void 0},this.sectors.frozen={},this.sectors.support={nodes:{},edges:{},nodeIndices:[],formationScale:1,drawingNode:void 0},this.nodeIndices=this.sectors.active["default"].nodeIndices,this._loadMixin(n)},e._loadSelectionSystem=function(){this.selectionObj={nodes:{},edges:{}},this._loadMixin(r)},e._loadManipulationSystem=function(){this.blockConnectingEdgeSelection=!1,this.forceAppendSelection=!1,1==this.constants.dataManipulation.enabled?(void 0===this.manipulationDiv&&(this.manipulationDiv=document.createElement("div"),this.manipulationDiv.className="network-manipulationDiv",this.manipulationDiv.id="network-manipulationDiv",this.manipulationDiv.style.display=1==this.editMode?"block":"none",this.containerElement.insertBefore(this.manipulationDiv,this.frame)),void 0===this.editModeDiv&&(this.editModeDiv=document.createElement("div"),this.editModeDiv.className="network-manipulation-editMode",this.editModeDiv.id="network-manipulation-editMode",this.editModeDiv.style.display=1==this.editMode?"none":"block",this.containerElement.insertBefore(this.editModeDiv,this.frame)),void 0===this.closeDiv&&(this.closeDiv=document.createElement("div"),this.closeDiv.className="network-manipulation-closeDiv",this.closeDiv.id="network-manipulation-closeDiv",this.closeDiv.style.display=this.manipulationDiv.style.display,this.containerElement.insertBefore(this.closeDiv,this.frame)),this._loadMixin(a),this._createManipulatorBar()):void 0!==this.manipulationDiv&&(this._createManipulatorBar(),this.containerElement.removeChild(this.manipulationDiv),this.containerElement.removeChild(this.editModeDiv),this.containerElement.removeChild(this.closeDiv),this.manipulationDiv=void 0,this.editModeDiv=void 0,this.closeDiv=void 0,this._clearMixin(a))},e._loadNavigationControls=function(){this._loadMixin(h),this._cleanNavigation(),1==this.constants.navigation.enabled&&this._loadNavigationElements()},e._loadHierarchySystem=function(){this._loadMixin(d)}},function(t){function e(t){return t?i(t):void 0}function i(t){for(var i in e.prototype)t[i]=e.prototype[i];return t}t.exports=e,e.prototype.on=e.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks[t]=this._callbacks[t]||[]).push(e),this},e.prototype.once=function(t,e){function i(){s.off(t,i),e.apply(this,arguments)}var s=this;return this._callbacks=this._callbacks||{},i.fn=e,this.on(t,i),this},e.prototype.off=e.prototype.removeListener=e.prototype.removeAllListeners=e.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var i=this._callbacks[t];if(!i)return this;if(1==arguments.length)return delete this._callbacks[t],this;for(var s,o=0;os;++s)i[s].apply(this,e)}return this},e.prototype.listeners=function(t){return this._callbacks=this._callbacks||{},this._callbacks[t]||[]},e.prototype.hasListeners=function(t){return!!this.listeners(t).length}},function(t){function e(t,e,i){return t.addEventListener?t.addEventListener(e,i,!1):void t.attachEvent("on"+e,i)}function i(t){return"keypress"==t.type?String.fromCharCode(t.which):_[t.which]?_[t.which]:x[t.which]?x[t.which]:String.fromCharCode(t.which).toLowerCase()}function s(t){var e=t.target||t.srcElement,i=e.tagName;return(" "+e.className+" ").indexOf(" mousetrap ")>-1?!1:"INPUT"==i||"SELECT"==i||"TEXTAREA"==i||e.contentEditable&&"true"==e.contentEditable}function o(t,e){return t.sort().join(",")===e.sort().join(",")}function n(t){t=t||{};var e,i=!1;for(e in E)t[e]?i=!0:E[e]=0;i||(T=!1)}function r(t,e,i,s,n){var r,a,h=[];if(!M[t])return[];for("keyup"==i&&c(t)&&(e=[t]),r=0;r95&&112>t||_.hasOwnProperty(t)&&(y[_[t]]=t)}return y}function m(t,e,i){return i||(i=u()[t]?"keydown":"keypress"),"keypress"==i&&e.length&&(i="keydown"),i}function f(t,e,s,o){E[t]=0,o||(o=m(e[0],[]));var r,a=function(){T=o,++E[t],p()},d=function(t){h(s,t),"keyup"!==o&&(D=i(t)),setTimeout(n,10)};for(r=0;r1)return f(t,d,e,i);for(h="+"===t?["+"]:t.split("+"),n=0;n":".","?":"/","|":"\\"},S={option:"alt",command:"meta","return":"enter",escape:"esc"},M={},C={},E={},D=!1,T=!1,L=1;20>L;++L)_[111+L]="f"+L;for(L=0;9>=L;++L)_[L+96]=L;e(document,"keypress",l),e(document,"keydown",l),e(document,"keyup",l);var O={bind:function(t,e,i){return v(t instanceof Array?t:[t],e,i),C[t+":"+i]=e,this},unbind:function(t,e){return C[t+":"+e]&&(delete C[t+":"+e],this.bind(t,function(){},e)),this},trigger:function(t,e){return C[t+":"+e](),this},reset:function(){return M={},C={},this}};t.exports=O},function(t,e,i){var s;(function(t,o){(function(n){function r(t,e,i){switch(arguments.length){case 2:return null!=t?t:e;case 3:return null!=t?t:null!=e?e:i;default:throw new Error("Implement me")}}function a(){return{empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1}}function h(t,e){function i(){ve.suppressDeprecationWarnings===!1&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+t)}var s=!0;return m(function(){return s&&(i(),s=!1),e.apply(this,arguments)},e)}function d(t,e){return function(i){return v(t.call(this,i),e)}}function l(t,e){return function(i){return this.lang().ordinal(t.call(this,i),e)}}function c(){}function p(t){O(t),m(this,t)}function u(t){var e=S(t),i=e.year||0,s=e.quarter||0,o=e.month||0,n=e.week||0,r=e.day||0,a=e.hour||0,h=e.minute||0,d=e.second||0,l=e.millisecond||0;this._milliseconds=+l+1e3*d+6e4*h+36e5*a,this._days=+r+7*n,this._months=+o+3*s+12*i,this._data={},this._bubble()}function m(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i]);return e.hasOwnProperty("toString")&&(t.toString=e.toString),e.hasOwnProperty("valueOf")&&(t.valueOf=e.valueOf),t}function f(t){var e,i={};for(e in t)t.hasOwnProperty(e)&&ke.hasOwnProperty(e)&&(i[e]=t[e]);return i}function g(t){return 0>t?Math.ceil(t):Math.floor(t)}function v(t,e,i){for(var s=""+Math.abs(t),o=t>=0;s.lengths;s++)(i&&t[s]!==e[s]||!i&&C(t[s])!==C(e[s]))&&r++;return r+n}function w(t){if(t){var e=t.toLowerCase().replace(/(.)s$/,"$1");t=ri[t]||ai[e]||e}return t}function S(t){var e,i,s={};for(i in t)t.hasOwnProperty(i)&&(e=w(i),e&&(s[e]=t[i]));return s}function M(t){var e,i;if(0===t.indexOf("week"))e=7,i="day";else{if(0!==t.indexOf("month"))return;e=12,i="month"}ve[t]=function(s,o){var r,a,h=ve.fn._lang[t],d=[];if("number"==typeof s&&(o=s,s=n),a=function(t){var e=ve().utc().set(i,t);return h.call(ve.fn._lang,e,s||"")},null!=o)return a(o);for(r=0;e>r;r++)d.push(a(r));return d}}function C(t){var e=+t,i=0;return 0!==e&&isFinite(e)&&(i=e>=0?Math.floor(e):Math.ceil(e)),i}function E(t,e){return new Date(Date.UTC(t,e+1,0)).getUTCDate()}function D(t,e,i){return re(ve([t,11,31+e-i]),e,i).week}function T(t){return L(t)?366:365}function L(t){return t%4===0&&t%100!==0||t%400===0}function O(t){var e;t._a&&-2===t._pf.overflow&&(e=t._a[Me]<0||t._a[Me]>11?Me:t._a[Ce]<1||t._a[Ce]>E(t._a[Se],t._a[Me])?Ce:t._a[Ee]<0||t._a[Ee]>23?Ee:t._a[De]<0||t._a[De]>59?De:t._a[Te]<0||t._a[Te]>59?Te:t._a[Le]<0||t._a[Le]>999?Le:-1,t._pf._overflowDayOfYear&&(Se>e||e>Ce)&&(e=Ce),t._pf.overflow=e)}function k(t){return null==t._isValid&&(t._isValid=!isNaN(t._d.getTime())&&t._pf.overflow<0&&!t._pf.empty&&!t._pf.invalidMonth&&!t._pf.nullInput&&!t._pf.invalidFormat&&!t._pf.userInvalidated,t._strict&&(t._isValid=t._isValid&&0===t._pf.charsLeftOver&&0===t._pf.unusedTokens.length)),t._isValid}function N(t){return t?t.toLowerCase().replace("_","-"):t}function I(t,e){return e._isUTC?ve(t).zone(e._offset||0):ve(t).local()}function A(t,e){return e.abbr=t,Oe[t]||(Oe[t]=new c),Oe[t].set(e),Oe[t]}function z(t){delete Oe[t]}function P(t){var e,s,o,n,r=0,a=function(t){if(!Oe[t]&&Ne)try{i(55)("./"+t)}catch(e){}return Oe[t]};if(!t)return ve.fn._lang;if(!b(t)){if(s=a(t))return s;t=[t]}for(;r0;){if(s=a(n.slice(0,e).join("-")))return s;if(o&&o.length>=e&&x(n,o,!0)>=e-1)break;e--}r++}return ve.fn._lang}function R(t){return t.match(/\[[\s\S]/)?t.replace(/^\[|\]$/g,""):t.replace(/\\/g,"")}function F(t){var e,i,s=t.match(Pe);for(e=0,i=s.length;i>e;e++)s[e]=pi[s[e]]?pi[s[e]]:R(s[e]);return function(o){var n="";for(e=0;i>e;e++)n+=s[e]instanceof Function?s[e].call(o,t):s[e];return n}}function H(t,e){return t.isValid()?(e=Y(e,t.lang()),hi[e]||(hi[e]=F(e)),hi[e](t)):t.lang().invalidDate()}function Y(t,e){function i(t){return e.longDateFormat(t)||t}var s=5;for(Re.lastIndex=0;s>=0&&Re.test(t);)t=t.replace(Re,i),Re.lastIndex=0,s-=1;return t}function B(t,e){var i,s=e._strict;switch(t){case"Q":return Ze;case"DDDD":return Ke;case"YYYY":case"GGGG":case"gggg":return s?$e:Ye;case"Y":case"G":case"g":return Qe;case"YYYYYY":case"YYYYY":case"GGGGG":case"ggggg":return s?Je:Be;case"S":if(s)return Ze;case"SS":if(s)return qe;case"SSS":if(s)return Ke;case"DDD":return He;case"MMM":case"MMMM":case"dd":case"ddd":case"dddd":return Ge;case"a":case"A":return P(e._l)._meridiemParse;case"X":return Ue;case"Z":case"ZZ":return je;case"T":return Ve;case"SSSS":return We;case"MM":case"DD":case"YY":case"GG":case"gg":case"HH":case"hh":case"mm":case"ss":case"ww":case"WW":return s?qe:Fe;case"M":case"D":case"d":case"H":case"h":case"m":case"s":case"w":case"W":case"e":case"E":return Fe;case"Do":return Xe;default:return i=new RegExp(K(q(t.replace("\\","")),"i"))}}function W(t){t=t||"";var e=t.match(je)||[],i=e[e.length-1]||[],s=(i+"").match(oi)||["-",0,0],o=+(60*s[1])+C(s[2]);return"+"===s[0]?-o:o}function G(t,e,i){var s,o=i._a;switch(t){case"Q":null!=e&&(o[Me]=3*(C(e)-1));break;case"M":case"MM":null!=e&&(o[Me]=C(e)-1);break;case"MMM":case"MMMM":s=P(i._l).monthsParse(e),null!=s?o[Me]=s:i._pf.invalidMonth=e;break;case"D":case"DD":null!=e&&(o[Ce]=C(e));break;case"Do":null!=e&&(o[Ce]=C(parseInt(e,10)));break;case"DDD":case"DDDD":null!=e&&(i._dayOfYear=C(e));break;case"YY":o[Se]=ve.parseTwoDigitYear(e);break;case"YYYY":case"YYYYY":case"YYYYYY":o[Se]=C(e);break;case"a":case"A":i._isPm=P(i._l).isPM(e);break;case"H":case"HH":case"h":case"hh":o[Ee]=C(e);break;case"m":case"mm":o[De]=C(e);break;case"s":case"ss":o[Te]=C(e);break;case"S":case"SS":case"SSS":case"SSSS":o[Le]=C(1e3*("0."+e));break;case"X":i._d=new Date(1e3*parseFloat(e));break;case"Z":case"ZZ":i._useUTC=!0,i._tzm=W(e);break;case"dd":case"ddd":case"dddd":s=P(i._l).weekdaysParse(e),null!=s?(i._w=i._w||{},i._w.d=s):i._pf.invalidWeekday=e;break;case"w":case"ww":case"W":case"WW":case"d":case"e":case"E":t=t.substr(0,1);case"gggg":case"GGGG":case"GGGGG":t=t.substr(0,2),e&&(i._w=i._w||{},i._w[t]=C(e));break;case"gg":case"GG":i._w=i._w||{},i._w[t]=ve.parseTwoDigitYear(e)}}function j(t){var e,i,s,o,n,a,h,d;e=t._w,null!=e.GG||null!=e.W||null!=e.E?(n=1,a=4,i=r(e.GG,t._a[Se],re(ve(),1,4).year),s=r(e.W,1),o=r(e.E,1)):(d=P(t._l),n=d._week.dow,a=d._week.doy,i=r(e.gg,t._a[Se],re(ve(),n,a).year),s=r(e.w,1),null!=e.d?(o=e.d,n>o&&++s):o=null!=e.e?e.e+n:n),h=ae(i,s,o,a,n),t._a[Se]=h.year,t._dayOfYear=h.dayOfYear}function V(t){var e,i,s,o,n=[];if(!t._d){for(s=X(t),t._w&&null==t._a[Ce]&&null==t._a[Me]&&j(t),t._dayOfYear&&(o=r(t._a[Se],s[Se]),t._dayOfYear>T(o)&&(t._pf._overflowDayOfYear=!0),i=ie(o,0,t._dayOfYear),t._a[Me]=i.getUTCMonth(),t._a[Ce]=i.getUTCDate()),e=0;3>e&&null==t._a[e];++e)t._a[e]=n[e]=s[e];for(;7>e;e++)t._a[e]=n[e]=null==t._a[e]?2===e?1:0:t._a[e];t._d=(t._useUTC?ie:ee).apply(null,n),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()+t._tzm)}}function U(t){var e;t._d||(e=S(t._i),t._a=[e.year,e.month,e.day,e.hour,e.minute,e.second,e.millisecond],V(t))}function X(t){var e=new Date;return t._useUTC?[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()]:[e.getFullYear(),e.getMonth(),e.getDate()]}function Z(t){if(t._f===ve.ISO_8601)return void J(t);t._a=[],t._pf.empty=!0;var e,i,s,o,n,r=P(t._l),a=""+t._i,h=a.length,d=0;for(s=Y(t._f,r).match(Pe)||[],e=0;e0&&t._pf.unusedInput.push(n),a=a.slice(a.indexOf(i)+i.length),d+=i.length),pi[o]?(i?t._pf.empty=!1:t._pf.unusedTokens.push(o),G(o,i,t)):t._strict&&!i&&t._pf.unusedTokens.push(o);t._pf.charsLeftOver=h-d,a.length>0&&t._pf.unusedInput.push(a),t._isPm&&t._a[Ee]<12&&(t._a[Ee]+=12),t._isPm===!1&&12===t._a[Ee]&&(t._a[Ee]=0),V(t),O(t)}function q(t){return t.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,i,s,o){return e||i||s||o})}function K(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function $(t){var e,i,s,o,n;if(0===t._f.length)return t._pf.invalidFormat=!0,void(t._d=new Date(0/0));for(o=0;on)&&(s=n,i=e));m(t,i||e)}function J(t){var e,i,s=t._i,o=ti.exec(s);if(o){for(t._pf.iso=!0,e=0,i=ii.length;i>e;e++)if(ii[e][1].exec(s)){t._f=ii[e][0]+(o[6]||" ");break}for(e=0,i=si.length;i>e;e++)if(si[e][1].exec(s)){t._f+=si[e][0];break}s.match(je)&&(t._f+="Z"),Z(t)}else t._isValid=!1}function Q(t){J(t),t._isValid===!1&&(delete t._isValid,ve.createFromInputFallback(t))}function te(t){var e=t._i,i=Ie.exec(e);e===n?t._d=new Date:i?t._d=new Date(+i[1]):"string"==typeof e?Q(t):b(e)?(t._a=e.slice(0),V(t)):_(e)?t._d=new Date(+e):"object"==typeof e?U(t):"number"==typeof e?t._d=new Date(e):ve.createFromInputFallback(t)}function ee(t,e,i,s,o,n,r){var a=new Date(t,e,i,s,o,n,r);return 1970>t&&a.setFullYear(t),a}function ie(t){var e=new Date(Date.UTC.apply(null,arguments));return 1970>t&&e.setUTCFullYear(t),e}function se(t,e){if("string"==typeof t)if(isNaN(t)){if(t=e.weekdaysParse(t),"number"!=typeof t)return null}else t=parseInt(t,10);return t}function oe(t,e,i,s,o){return o.relativeTime(e||1,!!i,t,s)}function ne(t,e,i){var s=we(Math.abs(t)/1e3),o=we(s/60),n=we(o/60),r=we(n/24),a=we(r/365),h=s0,h[4]=i,oe.apply({},h)}function re(t,e,i){var s,o=i-e,n=i-t.day();return n>o&&(n-=7),o-7>n&&(n+=7),s=ve(t).add("d",n),{week:Math.ceil(s.dayOfYear()/7),year:s.year()}}function ae(t,e,i,s,o){var n,r,a=ie(t,0,1).getUTCDay();return a=0===a?7:a,i=null!=i?i:o,n=o-a+(a>s?7:0)-(o>a?7:0),r=7*(e-1)+(i-o)+n+1,{year:r>0?t:t-1,dayOfYear:r>0?r:T(t-1)+r}}function he(t){var e=t._i,i=t._f;return null===e||i===n&&""===e?ve.invalid({nullInput:!0}):("string"==typeof e&&(t._i=e=P().preparse(e)),ve.isMoment(e)?(t=f(e),t._d=new Date(+e._d)):i?b(i)?$(t):Z(t):te(t),new p(t))}function de(t,e){var i,s;if(1===e.length&&b(e[0])&&(e=e[0]),!e.length)return ve();for(i=e[0],s=1;s=0?"+":"-";return e+v(Math.abs(t),6)},gg:function(){return v(this.weekYear()%100,2)},gggg:function(){return v(this.weekYear(),4)},ggggg:function(){return v(this.weekYear(),5)},GG:function(){return v(this.isoWeekYear()%100,2)},GGGG:function(){return v(this.isoWeekYear(),4)},GGGGG:function(){return v(this.isoWeekYear(),5)},e:function(){return this.weekday()},E:function(){return this.isoWeekday()},a:function(){return this.lang().meridiem(this.hours(),this.minutes(),!0)},A:function(){return this.lang().meridiem(this.hours(),this.minutes(),!1)},H:function(){return this.hours()},h:function(){return this.hours()%12||12},m:function(){return this.minutes()},s:function(){return this.seconds()},S:function(){return C(this.milliseconds()/100)},SS:function(){return v(C(this.milliseconds()/10),2)},SSS:function(){return v(this.milliseconds(),3)},SSSS:function(){return v(this.milliseconds(),3)},Z:function(){var t=-this.zone(),e="+";return 0>t&&(t=-t,e="-"),e+v(C(t/60),2)+":"+v(C(t)%60,2)},ZZ:function(){var t=-this.zone(),e="+";return 0>t&&(t=-t,e="-"),e+v(C(t/60),2)+v(C(t)%60,2)},z:function(){return this.zoneAbbr()},zz:function(){return this.zoneName()},X:function(){return this.unix()},Q:function(){return this.quarter()}},ui=["months","monthsShort","weekdays","weekdaysShort","weekdaysMin"];li.length;)be=li.pop(),pi[be+"o"]=l(pi[be],be);for(;ci.length;)be=ci.pop(),pi[be+be]=d(pi[be],2);for(pi.DDDD=d(pi.DDD,3),m(c.prototype,{set:function(t){var e,i;for(i in t)e=t[i],"function"==typeof e?this[i]=e:this["_"+i]=e},_months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),months:function(t){return this._months[t.month()]},_monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),monthsShort:function(t){return this._monthsShort[t.month()]},monthsParse:function(t){var e,i,s;for(this._monthsParse||(this._monthsParse=[]),e=0;12>e;e++)if(this._monthsParse[e]||(i=ve.utc([2e3,e]),s="^"+this.months(i,"")+"|^"+this.monthsShort(i,""),this._monthsParse[e]=new RegExp(s.replace(".",""),"i")),this._monthsParse[e].test(t))return e},_weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdays:function(t){return this._weekdays[t.day()]},_weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysShort:function(t){return this._weekdaysShort[t.day()]},_weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),weekdaysMin:function(t){return this._weekdaysMin[t.day()]},weekdaysParse:function(t){var e,i,s;for(this._weekdaysParse||(this._weekdaysParse=[]),e=0;7>e;e++)if(this._weekdaysParse[e]||(i=ve([2e3,1]).day(e),s="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[e]=new RegExp(s.replace(".",""),"i")),this._weekdaysParse[e].test(t))return e},_longDateFormat:{LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D YYYY",LLL:"MMMM D YYYY LT",LLLL:"dddd, MMMM D YYYY LT"},longDateFormat:function(t){var e=this._longDateFormat[t];return!e&&this._longDateFormat[t.toUpperCase()]&&(e=this._longDateFormat[t.toUpperCase()].replace(/MMMM|MM|DD|dddd/g,function(t){return t.slice(1)}),this._longDateFormat[t]=e),e},isPM:function(t){return"p"===(t+"").toLowerCase().charAt(0)},_meridiemParse:/[ap]\.?m?\.?/i,meridiem:function(t,e,i){return t>11?i?"pm":"PM":i?"am":"AM"},_calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},calendar:function(t,e){var i=this._calendar[t];return"function"==typeof i?i.apply(e):i},_relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},relativeTime:function(t,e,i,s){var o=this._relativeTime[i];return"function"==typeof o?o(t,e,i,s):o.replace(/%d/i,t)},pastFuture:function(t,e){var i=this._relativeTime[t>0?"future":"past"];return"function"==typeof i?i(e):i.replace(/%s/i,e)},ordinal:function(t){return this._ordinal.replace("%d",t)},_ordinal:"%d",preparse:function(t){return t},postformat:function(t){return t},week:function(t){return re(t,this._week.dow,this._week.doy).week},_week:{dow:0,doy:6},_invalidDate:"Invalid date",invalidDate:function(){return this._invalidDate}}),ve=function(t,e,i,s){var o;return"boolean"==typeof i&&(s=i,i=n),o={},o._isAMomentObject=!0,o._i=t,o._f=e,o._l=i,o._strict=s,o._isUTC=!1,o._pf=a(),he(o)},ve.suppressDeprecationWarnings=!1,ve.createFromInputFallback=h("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.",function(t){t._d=new Date(t._i)}),ve.min=function(){var t=[].slice.call(arguments,0);return de("isBefore",t)},ve.max=function(){var t=[].slice.call(arguments,0);return de("isAfter",t)},ve.utc=function(t,e,i,s){var o;return"boolean"==typeof i&&(s=i,i=n),o={},o._isAMomentObject=!0,o._useUTC=!0,o._isUTC=!0,o._l=i,o._i=t,o._f=e,o._strict=s,o._pf=a(),he(o).utc()},ve.unix=function(t){return ve(1e3*t)},ve.duration=function(t,e){var i,s,o,n=t,r=null;return ve.isDuration(t)?n={ms:t._milliseconds,d:t._days,M:t._months}:"number"==typeof t?(n={},e?n[e]=t:n.milliseconds=t):(r=Ae.exec(t))?(i="-"===r[1]?-1:1,n={y:0,d:C(r[Ce])*i,h:C(r[Ee])*i,m:C(r[De])*i,s:C(r[Te])*i,ms:C(r[Le])*i}):(r=ze.exec(t))&&(i="-"===r[1]?-1:1,o=function(t){var e=t&&parseFloat(t.replace(",","."));return(isNaN(e)?0:e)*i},n={y:o(r[2]),M:o(r[3]),d:o(r[4]),h:o(r[5]),m:o(r[6]),s:o(r[7]),w:o(r[8])}),s=new u(n),ve.isDuration(t)&&t.hasOwnProperty("_lang")&&(s._lang=t._lang),s},ve.version=_e,ve.defaultFormat=ei,ve.ISO_8601=function(){},ve.momentProperties=ke,ve.updateOffset=function(){},ve.relativeTimeThreshold=function(t,e){return di[t]===n?!1:(di[t]=e,!0)},ve.lang=function(t,e){var i;return t?(e?A(N(t),e):null===e?(z(t),t="en"):Oe[t]||P(t),i=ve.duration.fn._lang=ve.fn._lang=P(t),i._abbr):ve.fn._lang._abbr},ve.langData=function(t){return t&&t._lang&&t._lang._abbr&&(t=t._lang._abbr),P(t)},ve.isMoment=function(t){return t instanceof p||null!=t&&t.hasOwnProperty("_isAMomentObject")},ve.isDuration=function(t){return t instanceof u},be=ui.length-1;be>=0;--be)M(ui[be]);ve.normalizeUnits=function(t){return w(t)},ve.invalid=function(t){var e=ve.utc(0/0);return null!=t?m(e._pf,t):e._pf.userInvalidated=!0,e},ve.parseZone=function(){return ve.apply(null,arguments).parseZone()},ve.parseTwoDigitYear=function(t){return C(t)+(C(t)>68?1900:2e3)},m(ve.fn=p.prototype,{clone:function(){return ve(this)},valueOf:function(){return+this._d+6e4*(this._offset||0)},unix:function(){return Math.floor(+this/1e3)},toString:function(){return this.clone().lang("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},toDate:function(){return this._offset?new Date(+this):this._d},toISOString:function(){var t=ve(this).utc();return 00:!1},parsingFlags:function(){return m({},this._pf)},invalidAt:function(){return this._pf.overflow},utc:function(){return this.zone(0)},local:function(){return this.zone(0),this._isUTC=!1,this},format:function(t){var e=H(this,t||ve.defaultFormat);return this.lang().postformat(e)},add:function(t,e){var i;return i="string"==typeof t&&"string"==typeof e?ve.duration(isNaN(+e)?+t:+e,isNaN(+e)?e:t):"string"==typeof t?ve.duration(+e,t):ve.duration(t,e),y(this,i,1),this},subtract:function(t,e){var i;return i="string"==typeof t&&"string"==typeof e?ve.duration(isNaN(+e)?+t:+e,isNaN(+e)?e:t):"string"==typeof t?ve.duration(+e,t):ve.duration(t,e),y(this,i,-1),this +},diff:function(t,e,i){var s,o,n=I(t,this),r=6e4*(this.zone()-n.zone());return e=w(e),"year"===e||"month"===e?(s=432e5*(this.daysInMonth()+n.daysInMonth()),o=12*(this.year()-n.year())+(this.month()-n.month()),o+=(this-ve(this).startOf("month")-(n-ve(n).startOf("month")))/s,o-=6e4*(this.zone()-ve(this).startOf("month").zone()-(n.zone()-ve(n).startOf("month").zone()))/s,"year"===e&&(o/=12)):(s=this-n,o="second"===e?s/1e3:"minute"===e?s/6e4:"hour"===e?s/36e5:"day"===e?(s-r)/864e5:"week"===e?(s-r)/6048e5:s),i?o:g(o)},from:function(t,e){return ve.duration(this.diff(t)).lang(this.lang()._abbr).humanize(!e)},fromNow:function(t){return this.from(ve(),t)},calendar:function(t){var e=t||ve(),i=I(e,this).startOf("day"),s=this.diff(i,"days",!0),o=-6>s?"sameElse":-1>s?"lastWeek":0>s?"lastDay":1>s?"sameDay":2>s?"nextDay":7>s?"nextWeek":"sameElse";return this.format(this.lang().calendar(o,this))},isLeapYear:function(){return L(this.year())},isDST:function(){return this.zone()+ve(t).startOf(e)},isBefore:function(t,e){return e="undefined"!=typeof e?e:"millisecond",+this.clone().startOf(e)<+ve(t).startOf(e)},isSame:function(t,e){return e=e||"ms",+this.clone().startOf(e)===+I(t,this).startOf(e)},min:h("moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548",function(t){return t=ve.apply(null,arguments),this>t?this:t}),max:h("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(t){return t=ve.apply(null,arguments),t>this?this:t}),zone:function(t,e){var i=this._offset||0;return null==t?this._isUTC?i:this._d.getTimezoneOffset():("string"==typeof t&&(t=W(t)),Math.abs(t)<16&&(t=60*t),this._offset=t,this._isUTC=!0,i!==t&&(!e||this._changeInProgress?y(this,ve.duration(i-t,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,ve.updateOffset(this,!0),this._changeInProgress=null)),this)},zoneAbbr:function(){return this._isUTC?"UTC":""},zoneName:function(){return this._isUTC?"Coordinated Universal Time":""},parseZone:function(){return this._tzm?this.zone(this._tzm):"string"==typeof this._i&&this.zone(this._i),this},hasAlignedHourOffset:function(t){return t=t?ve(t).zone():0,(this.zone()-t)%60===0},daysInMonth:function(){return E(this.year(),this.month())},dayOfYear:function(t){var e=we((ve(this).startOf("day")-ve(this).startOf("year"))/864e5)+1;return null==t?e:this.add("d",t-e)},quarter:function(t){return null==t?Math.ceil((this.month()+1)/3):this.month(3*(t-1)+this.month()%3)},weekYear:function(t){var e=re(this,this.lang()._week.dow,this.lang()._week.doy).year;return null==t?e:this.add("y",t-e)},isoWeekYear:function(t){var e=re(this,1,4).year;return null==t?e:this.add("y",t-e)},week:function(t){var e=this.lang().week(this);return null==t?e:this.add("d",7*(t-e))},isoWeek:function(t){var e=re(this,1,4).week;return null==t?e:this.add("d",7*(t-e))},weekday:function(t){var e=(this.day()+7-this.lang()._week.dow)%7;return null==t?e:this.add("d",t-e)},isoWeekday:function(t){return null==t?this.day()||7:this.day(this.day()%7?t:t-7)},isoWeeksInYear:function(){return D(this.year(),1,4)},weeksInYear:function(){var t=this._lang._week;return D(this.year(),t.dow,t.doy)},get:function(t){return t=w(t),this[t]()},set:function(t,e){return t=w(t),"function"==typeof this[t]&&this[t](e),this},lang:function(t){return t===n?this._lang:(this._lang=P(t),this)}}),ve.fn.millisecond=ve.fn.milliseconds=ue("Milliseconds",!1),ve.fn.second=ve.fn.seconds=ue("Seconds",!1),ve.fn.minute=ve.fn.minutes=ue("Minutes",!1),ve.fn.hour=ve.fn.hours=ue("Hours",!0),ve.fn.date=ue("Date",!0),ve.fn.dates=h("dates accessor is deprecated. Use date instead.",ue("Date",!0)),ve.fn.year=ue("FullYear",!0),ve.fn.years=h("years accessor is deprecated. Use year instead.",ue("FullYear",!0)),ve.fn.days=ve.fn.day,ve.fn.months=ve.fn.month,ve.fn.weeks=ve.fn.week,ve.fn.isoWeeks=ve.fn.isoWeek,ve.fn.quarters=ve.fn.quarter,ve.fn.toJSON=ve.fn.toISOString,m(ve.duration.fn=u.prototype,{_bubble:function(){var t,e,i,s,o=this._milliseconds,n=this._days,r=this._months,a=this._data;a.milliseconds=o%1e3,t=g(o/1e3),a.seconds=t%60,e=g(t/60),a.minutes=e%60,i=g(e/60),a.hours=i%24,n+=g(i/24),a.days=n%30,r+=g(n/30),a.months=r%12,s=g(r/12),a.years=s},weeks:function(){return g(this.days()/7)},valueOf:function(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*C(this._months/12)},humanize:function(t){var e=+this,i=ne(e,!t,this.lang());return t&&(i=this.lang().pastFuture(e,i)),this.lang().postformat(i)},add:function(t,e){var i=ve.duration(t,e);return this._milliseconds+=i._milliseconds,this._days+=i._days,this._months+=i._months,this._bubble(),this},subtract:function(t,e){var i=ve.duration(t,e);return this._milliseconds-=i._milliseconds,this._days-=i._days,this._months-=i._months,this._bubble(),this},get:function(t){return t=w(t),this[t.toLowerCase()+"s"]()},as:function(t){return t=w(t),this["as"+t.charAt(0).toUpperCase()+t.slice(1)+"s"]()},lang:ve.fn.lang,toIsoString:function(){var t=Math.abs(this.years()),e=Math.abs(this.months()),i=Math.abs(this.days()),s=Math.abs(this.hours()),o=Math.abs(this.minutes()),n=Math.abs(this.seconds()+this.milliseconds()/1e3);return this.asSeconds()?(this.asSeconds()<0?"-":"")+"P"+(t?t+"Y":"")+(e?e+"M":"")+(i?i+"D":"")+(s||o||n?"T":"")+(s?s+"H":"")+(o?o+"M":"")+(n?n+"S":""):"P0D"}});for(be in ni)ni.hasOwnProperty(be)&&(fe(be,ni[be]),me(be.toLowerCase()));fe("Weeks",6048e5),ve.duration.fn.asMonths=function(){return(+this-31536e6*this.years())/2592e6+12*this.years()},ve.lang("en",{ordinal:function(t){var e=t%10,i=1===C(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+i}}),Ne?o.exports=ve:(s=function(t,e,i){return i.config&&i.config()&&i.config().noGlobal===!0&&(xe.moment=ye),ve}.call(e,i,e,o),!(s!==n&&(o.exports=s)),ge(!0))}).call(this)}).call(e,function(){return this}(),i(59)(t))},function(t,e,i){var s;!function(o,n){"use strict";function r(){a.READY||(w.determineEventTypes(),x.each(a.gestures,function(t){M.register(t)}),w.onTouch(a.DOCUMENT,v,M.detect),w.onTouch(a.DOCUMENT,y,M.detect),a.READY=!0)}var a=function C(t,e){return new C.Instance(t,e||{})};a.VERSION="1.1.3",a.defaults={behavior:{userSelect:"none",touchAction:"pan-y",touchCallout:"none",contentZooming:"none",userDrag:"none",tapHighlightColor:"rgba(0,0,0,0)"}},a.DOCUMENT=document,a.HAS_POINTEREVENTS=navigator.pointerEnabled||navigator.msPointerEnabled,a.HAS_TOUCHEVENTS="ontouchstart"in o,a.IS_MOBILE=/mobile|tablet|ip(ad|hone|od)|android|silk/i.test(navigator.userAgent),a.NO_MOUSEEVENTS=a.HAS_TOUCHEVENTS&&a.IS_MOBILE||a.HAS_POINTEREVENTS,a.CALCULATE_INTERVAL=25;var h={},d=a.DIRECTION_DOWN="down",l=a.DIRECTION_LEFT="left",c=a.DIRECTION_UP="up",p=a.DIRECTION_RIGHT="right",u=a.POINTER_MOUSE="mouse",m=a.POINTER_TOUCH="touch",f=a.POINTER_PEN="pen",g=a.EVENT_START="start",v=a.EVENT_MOVE="move",y=a.EVENT_END="end",b=a.EVENT_RELEASE="release",_=a.EVENT_TOUCH="touch";a.READY=!1,a.plugins=a.plugins||{},a.gestures=a.gestures||{};var x=a.utils={extend:function(t,e,i){for(var s in e)!e.hasOwnProperty(s)||t[s]!==n&&i||(t[s]=e[s]);return t},on:function(t,e,i){t.addEventListener(e,i,!1)},off:function(t,e,i){t.removeEventListener(e,i,!1)},each:function(t,e,i){var s,o;if("forEach"in t)t.forEach(e,i);else if(t.length!==n){for(s=0,o=t.length;o>s;s++)if(e.call(i,t[s],s,t)===!1)return}else for(s in t)if(t.hasOwnProperty(s)&&e.call(i,t[s],s,t)===!1)return},inStr:function(t,e){return t.indexOf(e)>-1},inArray:function(t,e){if(t.indexOf){var i=t.indexOf(e);return-1===i?!1:i}for(var s=0,o=t.length;o>s;s++)if(t[s]===e)return s;return!1},toArray:function(t){return Array.prototype.slice.call(t,0)},hasParent:function(t,e){for(;t;){if(t==e)return!0;t=t.parentNode}return!1},getCenter:function(t){var e=[],i=[],s=[],o=[],n=Math.min,r=Math.max;return 1===t.length?{pageX:t[0].pageX,pageY:t[0].pageY,clientX:t[0].clientX,clientY:t[0].clientY}:(x.each(t,function(t){e.push(t.pageX),i.push(t.pageY),s.push(t.clientX),o.push(t.clientY)}),{pageX:(n.apply(Math,e)+r.apply(Math,e))/2,pageY:(n.apply(Math,i)+r.apply(Math,i))/2,clientX:(n.apply(Math,s)+r.apply(Math,s))/2,clientY:(n.apply(Math,o)+r.apply(Math,o))/2})},getVelocity:function(t,e,i){return{x:Math.abs(e/t)||0,y:Math.abs(i/t)||0}},getAngle:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return 180*Math.atan2(s,i)/Math.PI},getDirection:function(t,e){var i=Math.abs(t.clientX-e.clientX),s=Math.abs(t.clientY-e.clientY);return i>=s?t.clientX-e.clientX>0?l:p:t.clientY-e.clientY>0?c:d},getDistance:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return Math.sqrt(i*i+s*s)},getScale:function(t,e){return t.length>=2&&e.length>=2?this.getDistance(e[0],e[1])/this.getDistance(t[0],t[1]):1},getRotation:function(t,e){return t.length>=2&&e.length>=2?this.getAngle(e[1],e[0])-this.getAngle(t[1],t[0]):0},isVertical:function(t){return t==c||t==d},setPrefixedCss:function(t,e,i,s){var o=["","Webkit","Moz","O","ms"];e=x.toCamelCase(e);for(var n=0;n0&&this.started&&(r=v),this.started=!0;var d=this.collectEventData(i,r,o,t);return e!=y&&s.call(M,d),a&&(d.changedLength=h,d.eventType=a,s.call(M,d),d.eventType=r,delete d.changedLength),r==y&&(s.call(M,d),this.started=!1),r},determineEventTypes:function(){var t;return t=a.HAS_POINTEREVENTS?o.PointerEvent?["pointerdown","pointermove","pointerup pointercancel lostpointercapture"]:["MSPointerDown","MSPointerMove","MSPointerUp MSPointerCancel MSLostPointerCapture"]:a.NO_MOUSEEVENTS?["touchstart","touchmove","touchend touchcancel"]:["touchstart mousedown","touchmove mousemove","touchend touchcancel mouseup"],h[g]=t[0],h[v]=t[1],h[y]=t[2],h},getTouchList:function(t,e){if(a.HAS_POINTEREVENTS)return S.getTouchList();if(t.touches){if(e==v)return t.touches;var i=[],s=[].concat(x.toArray(t.touches),x.toArray(t.changedTouches)),o=[];return x.each(s,function(t){x.inArray(i,t.identifier)===!1&&o.push(t),i.push(t.identifier)}),o}return t.identifier=1,[t]},collectEventData:function(t,e,i,s){var o=m;return x.inStr(s.type,"mouse")||S.matchType(u,s)?o=u:S.matchType(f,s)&&(o=f),{center:x.getCenter(i),timeStamp:Date.now(),target:s.target,touches:i,eventType:e,pointerType:o,srcEvent:s,preventDefault:function(){var t=this.srcEvent;t.preventManipulation&&t.preventManipulation(),t.preventDefault&&t.preventDefault()},stopPropagation:function(){this.srcEvent.stopPropagation()},stopDetect:function(){return M.stopDetect()}}}},S=a.PointerEvent={pointers:{},getTouchList:function(){var t=[];return x.each(this.pointers,function(e){t.push(e)}),t},updatePointer:function(t,e){t==y||t!=y&&1!==e.buttons?delete this.pointers[e.pointerId]:(e.identifier=e.pointerId,this.pointers[e.pointerId]=e)},matchType:function(t,e){if(!e.pointerType)return!1;var i=e.pointerType,s={};return s[u]=i===(e.MSPOINTER_TYPE_MOUSE||u),s[m]=i===(e.MSPOINTER_TYPE_TOUCH||m),s[f]=i===(e.MSPOINTER_TYPE_PEN||f),s[t]},reset:function(){this.pointers={}}},M=a.detection={gestures:[],current:null,previous:null,stopped:!1,startDetect:function(t,e){this.current||(this.stopped=!1,this.current={inst:t,startEvent:x.extend({},e),lastEvent:!1,lastCalcEvent:!1,futureCalcEvent:!1,lastCalcData:{},name:""},this.detect(e))},detect:function(t){if(this.current&&!this.stopped){t=this.extendEventData(t);var e=this.current.inst,i=e.options;return x.each(this.gestures,function(s){!this.stopped&&e.enabled&&i[s.name]&&s.handler.call(s,t,e)},this),this.current&&(this.current.lastEvent=t),t.eventType==y&&this.stopDetect(),t}},stopDetect:function(){this.previous=x.extend({},this.current),this.current=null,this.stopped=!0},getCalculatedData:function(t,e,i,s,o){var n=this.current,r=!1,h=n.lastCalcEvent,d=n.lastCalcData;h&&t.timeStamp-h.timeStamp>a.CALCULATE_INTERVAL&&(e=h.center,i=t.timeStamp-h.timeStamp,s=t.center.clientX-h.center.clientX,o=t.center.clientY-h.center.clientY,r=!0),(t.eventType==_||t.eventType==b)&&(n.futureCalcEvent=t),(!n.lastCalcEvent||r)&&(d.velocity=x.getVelocity(i,s,o),d.angle=x.getAngle(e,t.center),d.direction=x.getDirection(e,t.center),n.lastCalcEvent=n.futureCalcEvent||t,n.futureCalcEvent=t),t.velocityX=d.velocity.x,t.velocityY=d.velocity.y,t.interimAngle=d.angle,t.interimDirection=d.direction},extendEventData:function(t){var e=this.current,i=e.startEvent,s=e.lastEvent||i;(t.eventType==_||t.eventType==b)&&(i.touches=[],x.each(t.touches,function(t){i.touches.push({clientX:t.clientX,clientY:t.clientY})}));var o=t.timeStamp-i.timeStamp,n=t.center.clientX-i.center.clientX,r=t.center.clientY-i.center.clientY;return this.getCalculatedData(t,s.center,o,n,r),x.extend(t,{startEvent:i,deltaTime:o,deltaX:n,deltaY:r,distance:x.getDistance(i.center,t.center),angle:x.getAngle(i.center,t.center),direction:x.getDirection(i.center,t.center),scale:x.getScale(i.touches,t.touches),rotation:x.getRotation(i.touches,t.touches)}),t},register:function(t){var e=t.defaults||{};return e[t.name]===n&&(e[t.name]=!0),x.extend(a.defaults,e,!0),t.index=t.index||1e3,this.gestures.push(t),this.gestures.sort(function(t,e){return t.indexe.index?1:0}),this.gestures}};a.Instance=function(t,e){var i=this;r(),this.element=t,this.enabled=!0,x.each(e,function(t,i){delete e[i],e[x.toCamelCase(i)]=t}),this.options=x.extend(x.extend({},a.defaults),e||{}),this.options.behavior&&x.toggleBehavior(this.element,this.options.behavior,!0),this.eventStartHandler=w.onTouch(t,g,function(t){i.enabled&&t.eventType==g?M.startDetect(i,t):t.eventType==_&&M.detect(t)}),this.eventHandlers=[]},a.Instance.prototype={on:function(t,e){var i=this;return w.on(i.element,t,e,function(t){i.eventHandlers.push({gesture:t,handler:e})}),i},off:function(t,e){var i=this;return w.off(i.element,t,e,function(t){var s=x.inArray({gesture:t,handler:e});s!==!1&&i.eventHandlers.splice(s,1)}),i},trigger:function(t,e){e||(e={});var i=a.DOCUMENT.createEvent("Event");i.initEvent(t,!0,!0),i.gesture=e;var s=this.element;return x.hasParent(e.target,s)&&(s=e.target),s.dispatchEvent(i),this},enable:function(t){return this.enabled=t,this},dispose:function(){var t,e;for(x.toggleBehavior(this.element,this.options.behavior,!1),t=-1;e=this.eventHandlers[++t];)x.off(this.element,e.gesture,e.handler);return this.eventHandlers=[],w.off(this.element,h[g],this.eventStartHandler),null}},function(t){function e(e,s){var o=M.current;if(!(s.options.dragMaxTouches>0&&e.touches.length>s.options.dragMaxTouches))switch(e.eventType){case g:i=!1;break;case v:if(e.distance0)){var r=Math.abs(s.options.dragMinDistance/e.distance);n.pageX+=e.deltaX*r,n.pageY+=e.deltaY*r,n.clientX+=e.deltaX*r,n.clientY+=e.deltaY*r,e=M.extendEventData(e)}(o.lastEvent.dragLockToAxis||s.options.dragLockToAxis&&s.options.dragLockMinDistance<=e.distance)&&(e.dragLockToAxis=!0);var a=o.lastEvent.direction;e.dragLockToAxis&&a!==e.direction&&(e.direction=x.isVertical(a)?e.deltaY<0?c:d:e.deltaX<0?l:p),i||(s.trigger(t+"start",e),i=!0),s.trigger(t,e),s.trigger(t+e.direction,e);var h=x.isVertical(e.direction);(s.options.dragBlockVertical&&h||s.options.dragBlockHorizontal&&!h)&&e.preventDefault();break;case b:i&&e.changedLength<=s.options.dragMaxTouches&&(s.trigger(t+"end",e),i=!1);break;case y:i=!1}}var i=!1;a.gestures.Drag={name:t,index:50,handler:e,defaults:{dragMinDistance:10,dragDistanceCorrection:!0,dragMaxTouches:1,dragBlockHorizontal:!1,dragBlockVertical:!1,dragLockToAxis:!1,dragLockMinDistance:25}}}("drag"),a.gestures.Gesture={name:"gesture",index:1337,handler:function(t,e){e.trigger(this.name,t)}},function(t){function e(e,s){var o=s.options,n=M.current;switch(e.eventType){case g:clearTimeout(i),n.name=t,i=setTimeout(function(){n&&n.name==t&&s.trigger(t,e)},o.holdTimeout);break;case v:e.distance>o.holdThreshold&&clearTimeout(i);break;case b:clearTimeout(i)}}var i;a.gestures.Hold={name:t,index:10,defaults:{holdTimeout:500,holdThreshold:2},handler:e}}("hold"),a.gestures.Release={name:"release",index:1/0,handler:function(t,e){t.eventType==b&&e.trigger(this.name,t)}},a.gestures.Swipe={name:"swipe",index:40,defaults:{swipeMinTouches:1,swipeMaxTouches:1,swipeVelocityX:.6,swipeVelocityY:.6},handler:function(t,e){if(t.eventType==b){var i=t.touches.length,s=e.options;if(is.swipeMaxTouches)return;(t.velocityX>s.swipeVelocityX||t.velocityY>s.swipeVelocityY)&&(e.trigger(this.name,t),e.trigger(this.name+t.direction,t))}}},function(t){function e(e,s){var o,n,r=s.options,a=M.current,h=M.previous;switch(e.eventType){case g:i=!1;break;case v:i=i||e.distance>r.tapMaxDistance;break;case y:!x.inStr(e.srcEvent.type,"cancel")&&e.deltaTimes.options.transformMinRotation&&s.trigger("rotate",e),o>s.options.transformMinScale&&(s.trigger("pinch",e),s.trigger("pinch"+(e.scale<1?"in":"out"),e));break;case b:i&&e.changedLength<2&&(s.trigger(t+"end",e),i=!1)}}var i=!1;a.gestures.Transform={name:t,index:45,defaults:{transformMinScale:.01,transformMinRotation:1},handler:e}}("transform"),s=function(){return a}.call(e,i,e,t),!(s!==n&&(t.exports=s))}(window)},function(t,e){e.startWithClustering=function(){this.clusterToFit(this.constants.clustering.initialMaxNodes,!0),this.updateLabels(),this.stabilize&&this._stabilize(),this.start()},e.clusterToFit=function(t,e){for(var i=this.nodeIndices.length,s=50,o=0;i>t&&s>o;)o%3==0?(this.forceAggregateHubs(!0),this.normalizeClusterLevels()):this.increaseClusterLevel(),i=this.nodeIndices.length,o+=1;o>0&&1==e&&this.repositionNodes(),this._updateCalculationNodes()},e.openCluster=function(t){var e=this.moving;if(t.clusterSize>this.constants.clustering.sectorThreshold&&this._nodeInActiveArea(t)&&("default"!=this._sector()||1!=this.nodeIndices.length)){this._addSector(t);for(var i=0;this.nodeIndices.lengthi;)this.decreaseClusterLevel(),i+=1}else this._expandClusterNode(t,!1,!0),this._updateNodeIndexList(),this._updateDynamicEdges(),this._updateCalculationNodes(),this.updateLabels();this.moving!=e&&this.start()},e.updateClustersDefault=function(){1==this.constants.clustering.enabled&&this.updateClusters(0,!1,!1)},e.increaseClusterLevel=function(){this.updateClusters(-1,!1,!0)},e.decreaseClusterLevel=function(){this.updateClusters(1,!1,!0)},e.updateClusters=function(t,e,i,s){var o=this.moving,n=this.nodeIndices.length;this.previousScale>this.scale&&0==t&&this._collapseSector(),this.previousScale>this.scale||-1==t?this._formClusters(i):(this.previousScalethis.scale||-1==t)&&(this._aggregateHubs(i),this._updateNodeIndexList()),(this.previousScale>this.scale||-1==t)&&(this.handleChains(),this._updateNodeIndexList()),this.previousScale=this.scale,this._updateDynamicEdges(),this.updateLabels(),this.nodeIndices.lengththis.constants.clustering.chainThreshold&&this._reduceAmountOfChains(1-this.constants.clustering.chainThreshold/t)},e._aggregateHubs=function(t){this._getHubSize(),this._formClustersByHub(t,!1)},e.forceAggregateHubs=function(t){var e=this.moving,i=this.nodeIndices.length;this._aggregateHubs(!0),this._updateNodeIndexList(),this._updateDynamicEdges(),this.updateLabels(),this.nodeIndices.length!=i&&(this.clusterSession+=1),(0==t||void 0===t)&&this.moving!=e&&this.start()},e._openClustersBySize=function(){for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];1==e.inView()&&(e.width*this.scale>this.constants.clustering.screenSizeThreshold*this.frame.canvas.clientWidth||e.height*this.scale>this.constants.clustering.screenSizeThreshold*this.frame.canvas.clientHeight)&&this.openCluster(e)}},e._openClusters=function(t,e){for(var i=0;i1&&(t.clusterSizei)){var r=n.from,a=n.to;n.to.mass>n.from.mass&&(r=n.to,a=n.from),1==a.dynamicEdgesLength?this._addToCluster(r,a,!1):1==r.dynamicEdgesLength&&this._addToCluster(a,r,!1)}}},e._forceClustersByZoom=function(){for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];if(1==e.dynamicEdgesLength&&0!=e.dynamicEdges.length){var i=e.dynamicEdges[0],s=i.toId==e.id?this.nodes[i.fromId]:this.nodes[i.toId];e.id!=s.id&&(s.mass>e.mass?this._addToCluster(s,e,!0):this._addToCluster(e,s,!0))}}},e._clusterToSmallestNeighbour=function(t){for(var e=-1,i=null,s=0;so.clusterSessions.length&&(e=o.clusterSessions.length,i=o)}null!=o&&void 0!==this.nodes[o.id]&&this._addToCluster(o,t,!0)},e._formClustersByHub=function(t,e){for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&this._formClusterFromHub(this.nodes[i],t,e)},e._formClusterFromHub=function(t,e,i,s){if(void 0===s&&(s=0),t.dynamicEdgesLength>=this.hubThreshold&&0==i||t.dynamicEdgesLength==this.hubThreshold&&1==i){for(var o,n,r,a=this.constants.clustering.clusterEdgeThreshold/this.scale,h=!1,d=[],l=t.dynamicEdges.length,c=0;l>c;c++)d.push(t.dynamicEdges[c].id);if(0==e)for(h=!1,c=0;l>c;c++){var p=this.edges[d[c]];if(void 0!==p&&p.connected&&p.toId!=p.fromId&&(o=p.to.x-p.from.x,n=p.to.y-p.from.y,r=Math.sqrt(o*o+n*n),a>r)){h=!0;break}}if(!e&&h||e)for(c=0;l>c;c++)if(p=this.edges[d[c]],void 0!==p){var u=this.nodes[p.fromId==t.id?p.toId:p.fromId];u.dynamicEdges.length<=this.hubThreshold+s&&u.id!=t.id&&this._addToCluster(t,u,e)}}},e._addToCluster=function(t,e,i){t.containedNodes[e.id]=e;for(var s=0;s1)for(var s=0;s1&&(e.label="[".concat(String(e.clusterSize),"]"))}for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(e=this.nodes[t],1==e.clusterSize&&(e.label=void 0!==e.originalLabel?e.originalLabel:String(e.id)))},e.normalizeClusterLevels=function(){var t,e=0,i=1e9,s=0;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(s=this.nodes[t].clusterSessions.length,s>e&&(e=s),i>s&&(i=s));if(e-i>this.constants.clustering.clusterLevelDifference){var o=this.nodeIndices.length,n=e-this.constants.clustering.clusterLevelDifference;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodes[t].clusterSessions.lengths&&(s=n.dynamicEdgesLength),t+=n.dynamicEdgesLength,e+=Math.pow(n.dynamicEdgesLength,2),i+=1}t/=i,e/=i;var r=e-Math.pow(t,2),a=Math.sqrt(r);this.hubThreshold=Math.floor(t+2*a),this.hubThreshold>s&&(this.hubThreshold=s)},e._reduceAmountOfChains=function(t){this.hubThreshold=2;var e=Math.floor(this.nodeIndices.length*t);for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&2==this.nodes[i].dynamicEdgesLength&&this.nodes[i].dynamicEdges.length>=2&&e>0&&(this._formClusterFromHub(this.nodes[i],!0,!0,1),e-=1)},e._getChainFraction=function(){var t=0,e=0;for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&(2==this.nodes[i].dynamicEdgesLength&&this.nodes[i].dynamicEdges.length>=2&&(t+=1),e+=1);return t/e}},function(t,e,i){var s=i(1);e._putDataInSector=function(){this.sectors.active[this._sector()].nodes=this.nodes,this.sectors.active[this._sector()].edges=this.edges,this.sectors.active[this._sector()].nodeIndices=this.nodeIndices +},e._switchToSector=function(t,e){void 0===e||"active"==e?this._switchToActiveSector(t):this._switchToFrozenSector(t)},e._switchToActiveSector=function(t){this.nodeIndices=this.sectors.active[t].nodeIndices,this.nodes=this.sectors.active[t].nodes,this.edges=this.sectors.active[t].edges},e._switchToSupportSector=function(){this.nodeIndices=this.sectors.support.nodeIndices,this.nodes=this.sectors.support.nodes,this.edges=this.sectors.support.edges},e._switchToFrozenSector=function(t){this.nodeIndices=this.sectors.frozen[t].nodeIndices,this.nodes=this.sectors.frozen[t].nodes,this.edges=this.sectors.frozen[t].edges},e._loadLatestSector=function(){this._switchToSector(this._sector())},e._sector=function(){return this.activeSector[this.activeSector.length-1]},e._previousSector=function(){if(this.activeSector.length>1)return this.activeSector[this.activeSector.length-2];throw new TypeError("there are not enough sectors in the this.activeSector array.")},e._setActiveSector=function(t){this.activeSector.push(t)},e._forgetLastSector=function(){this.activeSector.pop()},e._createNewSector=function(t){this.sectors.active[t]={nodes:{},edges:{},nodeIndices:[],formationScale:this.scale,drawingNode:void 0},this.sectors.active[t].drawingNode=new Node({id:t,color:{background:"#eaefef",border:"495c5e"}},{},{},this.constants),this.sectors.active[t].drawingNode.clusterSize=2},e._deleteActiveSector=function(t){delete this.sectors.active[t]},e._deleteFrozenSector=function(t){delete this.sectors.frozen[t]},e._freezeSector=function(t){this.sectors.frozen[t]=this.sectors.active[t],this._deleteActiveSector(t)},e._activateSector=function(t){this.sectors.active[t]=this.sectors.frozen[t],this._deleteFrozenSector(t)},e._mergeThisWithFrozen=function(t){for(var e in this.nodes)this.nodes.hasOwnProperty(e)&&(this.sectors.frozen[t].nodes[e]=this.nodes[e]);for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.sectors.frozen[t].edges[i]=this.edges[i]);for(var s=0;s1?this[t](s[0],s[1]):this[t](e)}this._loadLatestSector()},e._doInSupportSector=function(t,e){if(void 0===e)this._switchToSupportSector(),this[t]();else{this._switchToSupportSector();var i=Array.prototype.splice.call(arguments,1);i.length>1?this[t](i[0],i[1]):this[t](e)}this._loadLatestSector()},e._doInAllFrozenSectors=function(t,e){if(void 0===e)for(var i in this.sectors.frozen)this.sectors.frozen.hasOwnProperty(i)&&(this._switchToFrozenSector(i),this[t]());else for(var i in this.sectors.frozen)if(this.sectors.frozen.hasOwnProperty(i)){this._switchToFrozenSector(i);var s=Array.prototype.splice.call(arguments,1);s.length>1?this[t](s[0],s[1]):this[t](e)}this._loadLatestSector()},e._doInAllSectors=function(t,e){var i=Array.prototype.splice.call(arguments,1);void 0===e?(this._doInAllActiveSectors(t),this._doInAllFrozenSectors(t)):i.length>1?(this._doInAllActiveSectors(t,i[0],i[1]),this._doInAllFrozenSectors(t,i[0],i[1])):(this._doInAllActiveSectors(t,e),this._doInAllFrozenSectors(t,e))},e._clearNodeIndexList=function(){var t=this._sector();this.sectors.active[t].nodeIndices=[],this.nodeIndices=this.sectors.active[t].nodeIndices},e._drawSectorNodes=function(t,e){var i,s=1e9,o=-1e9,n=1e9,r=-1e9;for(var a in this.sectors[e])if(this.sectors[e].hasOwnProperty(a)&&void 0!==this.sectors[e][a].drawingNode){this._switchToSector(a,e),s=1e9,o=-1e9,n=1e9,r=-1e9;for(var h in this.nodes)this.nodes.hasOwnProperty(h)&&(i=this.nodes[h],i.resize(t),n>i.x-.5*i.width&&(n=i.x-.5*i.width),ri.y-.5*i.height&&(s=i.y-.5*i.height),o0?this.nodes[i[i.length-1]]:null},e._getEdgesOverlappingWith=function(t,e){var i=this.edges;for(var s in i)i.hasOwnProperty(s)&&i[s].isOverlappingWith(t)&&e.push(s)},e._getAllEdgesOverlappingWith=function(t){var e=[];return this._doInAllActiveSectors("_getEdgesOverlappingWith",t,e),e},e._getEdgeAt=function(t){var e=this._pointerToPositionObject(t),i=this._getAllEdgesOverlappingWith(e);return i.length>0?this.edges[i[i.length-1]]:null},e._addToSelection=function(t){t instanceof s?this.selectionObj.nodes[t.id]=t:this.selectionObj.edges[t.id]=t},e._addToHover=function(t){t instanceof s?this.hoverObj.nodes[t.id]=t:this.hoverObj.edges[t.id]=t},e._removeFromSelection=function(t){t instanceof s?delete this.selectionObj.nodes[t.id]:delete this.selectionObj.edges[t.id]},e._unselectAll=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].unselect();for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&this.selectionObj.edges[i].unselect();this.selectionObj={nodes:{},edges:{}},0==t&&this.emit("select",this.getSelection())},e._unselectClusters=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].clusterSize>1&&(this.selectionObj.nodes[e].unselect(),this._removeFromSelection(this.selectionObj.nodes[e]));0==t&&this.emit("select",this.getSelection())},e._getSelectedNodeCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedNode=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return this.selectionObj.nodes[t];return null},e._getSelectedEdge=function(){for(var t in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(t))return this.selectionObj.edges[t];return null},e._getSelectedEdgeCount=function(){var t=0;for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedObjectCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&(t+=1);return t},e._selectionIsEmpty=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return!1;for(var e in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(e))return!1;return!0},e._clusterInSelection=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t)&&this.selectionObj.nodes[t].clusterSize>1)return!0;return!1},e._selectConnectedEdges=function(t){for(var e=0;ee;e++){s=t[e];var o=this.nodes[s];if(!o)throw new RangeError('Node with id "'+s+'" not found');this._selectObject(o,!0,!0)}console.log("setSelection is deprecated. Please use selectNodes instead."),this.redraw()},e.selectNodes=function(t,e){var i,s,o;if(!t||void 0==t.length)throw"Selection must be an array with ids";for(this._unselectAll(!0),i=0,s=t.length;s>i;i++){o=t[i];var n=this.nodes[o];if(!n)throw new RangeError('Node with id "'+o+'" not found');this._selectObject(n,!0,!0,e)}this.redraw()},e.selectEdges=function(t){var e,i,s;if(!t||void 0==t.length)throw"Selection must be an array with ids";for(this._unselectAll(!0),e=0,i=t.length;i>e;e++){s=t[e];var o=this.edges[s];if(!o)throw new RangeError('Edge with id "'+s+'" not found');this._selectObject(o,!0,!0,highlightEdges)}this.redraw()},e._updateSelection=function(){for(var t in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(t)&&(this.nodes.hasOwnProperty(t)||delete this.selectionObj.nodes[t]);for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(this.edges.hasOwnProperty(e)||delete this.selectionObj.edges[e])}},function(t,e,i){var s=i(1),o=i(36),n=i(33);e._clearManipulatorBar=function(){for(;this.manipulationDiv.hasChildNodes();)this.manipulationDiv.removeChild(this.manipulationDiv.firstChild)},e._restoreOverloadedFunctions=function(){for(var t in this.cachedFunctions)this.cachedFunctions.hasOwnProperty(t)&&(this[t]=this.cachedFunctions[t])},e._toggleEditMode=function(){this.editMode=!this.editMode;var t=document.getElementById("network-manipulationDiv"),e=document.getElementById("network-manipulation-closeDiv"),i=document.getElementById("network-manipulation-editMode");1==this.editMode?(t.style.display="block",e.style.display="block",i.style.display="none",e.onclick=this._toggleEditMode.bind(this)):(t.style.display="none",e.style.display="none",i.style.display="block",e.onclick=null),this._createManipulatorBar()},e._createManipulatorBar=function(){if(this.boundFunction&&this.off("select",this.boundFunction),void 0!==this.edgeBeingEdited&&(this.edgeBeingEdited._disableControlNodes(),this.edgeBeingEdited=void 0,this.selectedControlNode=null,this.controlNodesActive=!1),this._restoreOverloadedFunctions(),this.freezeSimulation=!1,this.blockConnectingEdgeSelection=!1,this.forceAppendSelection=!1,1==this.editMode){for(;this.manipulationDiv.hasChildNodes();)this.manipulationDiv.removeChild(this.manipulationDiv.firstChild);this.manipulationDiv.innerHTML=""+this.constants.labels.add+"
"+this.constants.labels.link+"",1==this._getSelectedNodeCount()&&this.triggerFunctions.edit?this.manipulationDiv.innerHTML+="
"+this.constants.labels.editNode+"":1==this._getSelectedEdgeCount()&&0==this._getSelectedNodeCount()&&(this.manipulationDiv.innerHTML+="
"+this.constants.labels.editEdge+""),0==this._selectionIsEmpty()&&(this.manipulationDiv.innerHTML+="
"+this.constants.labels.del+"");var t=document.getElementById("network-manipulate-addNode");t.onclick=this._createAddNodeToolbar.bind(this);var e=document.getElementById("network-manipulate-connectNode");if(e.onclick=this._createAddEdgeToolbar.bind(this),1==this._getSelectedNodeCount()&&this.triggerFunctions.edit){var i=document.getElementById("network-manipulate-editNode");i.onclick=this._editNode.bind(this)}else if(1==this._getSelectedEdgeCount()&&0==this._getSelectedNodeCount()){var i=document.getElementById("network-manipulate-editEdge");i.onclick=this._createEditEdgeToolbar.bind(this)}if(0==this._selectionIsEmpty()){var s=document.getElementById("network-manipulate-delete");s.onclick=this._deleteSelected.bind(this)}var o=document.getElementById("network-manipulation-closeDiv");o.onclick=this._toggleEditMode.bind(this),this.boundFunction=this._createManipulatorBar.bind(this),this.on("select",this.boundFunction)}else{this.editModeDiv.innerHTML=""+this.constants.labels.edit+"";var n=document.getElementById("network-manipulate-editModeButton");n.onclick=this._toggleEditMode.bind(this)}},e._createAddNodeToolbar=function(){this._clearManipulatorBar(),this.boundFunction&&this.off("select",this.boundFunction),this.manipulationDiv.innerHTML=""+this.constants.labels.back+"
"+this.constants.labels.addDescription+"";var t=document.getElementById("network-manipulate-back");t.onclick=this._createManipulatorBar.bind(this),this.boundFunction=this._addNode.bind(this),this.on("select",this.boundFunction)},e._createAddEdgeToolbar=function(){this._clearManipulatorBar(),this._unselectAll(!0),this.freezeSimulation=!0,this.boundFunction&&this.off("select",this.boundFunction),this._unselectAll(),this.forceAppendSelection=!1,this.blockConnectingEdgeSelection=!0,this.manipulationDiv.innerHTML=""+this.constants.labels.back+"
"+this.constants.labels.linkDescription+"";var t=document.getElementById("network-manipulate-back");t.onclick=this._createManipulatorBar.bind(this),this.boundFunction=this._handleConnect.bind(this),this.on("select",this.boundFunction),this.cachedFunctions._handleTouch=this._handleTouch,this.cachedFunctions._handleOnRelease=this._handleOnRelease,this._handleTouch=this._handleConnect,this._handleOnRelease=this._finishConnect,this._redraw()},e._createEditEdgeToolbar=function(){this._clearManipulatorBar(),this.controlNodesActive=!0,this.boundFunction&&this.off("select",this.boundFunction),this.edgeBeingEdited=this._getSelectedEdge(),this.edgeBeingEdited._enableControlNodes(),this.manipulationDiv.innerHTML=""+this.constants.labels.back+"
"+this.constants.labels.editEdgeDescription+"";var t=document.getElementById("network-manipulate-back");t.onclick=this._createManipulatorBar.bind(this),this.cachedFunctions._handleTouch=this._handleTouch,this.cachedFunctions._handleOnRelease=this._handleOnRelease,this.cachedFunctions._handleTap=this._handleTap,this.cachedFunctions._handleDragStart=this._handleDragStart,this.cachedFunctions._handleOnDrag=this._handleOnDrag,this._handleTouch=this._selectControlNode,this._handleTap=function(){},this._handleOnDrag=this._controlNodeDrag,this._handleDragStart=function(){},this._handleOnRelease=this._releaseControlNode,this._redraw()},e._selectControlNode=function(t){this.edgeBeingEdited.controlNodes.from.unselect(),this.edgeBeingEdited.controlNodes.to.unselect(),this.selectedControlNode=this.edgeBeingEdited._getSelectedControlNode(this._XconvertDOMtoCanvas(t.x),this._YconvertDOMtoCanvas(t.y)),null!==this.selectedControlNode&&(this.selectedControlNode.select(),this.freezeSimulation=!0),this._redraw()},e._controlNodeDrag=function(t){var e=this._getPointer(t.gesture.center);null!==this.selectedControlNode&&void 0!==this.selectedControlNode&&(this.selectedControlNode.x=this._XconvertDOMtoCanvas(e.x),this.selectedControlNode.y=this._YconvertDOMtoCanvas(e.y)),this._redraw()},e._releaseControlNode=function(t){var e=this._getNodeAt(t);null!=e?(1==this.edgeBeingEdited.controlNodes.from.selected&&(this._editEdge(e.id,this.edgeBeingEdited.to.id),this.edgeBeingEdited.controlNodes.from.unselect()),1==this.edgeBeingEdited.controlNodes.to.selected&&(this._editEdge(this.edgeBeingEdited.from.id,e.id),this.edgeBeingEdited.controlNodes.to.unselect())):this.edgeBeingEdited._restoreControlNodes(),this.freezeSimulation=!1,this._redraw()},e._handleConnect=function(t){if(0==this._getSelectedNodeCount()){var e=this._getNodeAt(t);null!=e&&(e.clusterSize>1?alert("Cannot create edges to a cluster."):(this._selectObject(e,!1),this.sectors.support.nodes.targetNode=new o({id:"targetNode"},{},{},this.constants),this.sectors.support.nodes.targetNode.x=e.x,this.sectors.support.nodes.targetNode.y=e.y,this.sectors.support.nodes.targetViaNode=new o({id:"targetViaNode"},{},{},this.constants),this.sectors.support.nodes.targetViaNode.x=e.x,this.sectors.support.nodes.targetViaNode.y=e.y,this.sectors.support.nodes.targetViaNode.parentEdgeId="connectionEdge",this.edges.connectionEdge=new n({id:"connectionEdge",from:e.id,to:this.sectors.support.nodes.targetNode.id},this,this.constants),this.edges.connectionEdge.from=e,this.edges.connectionEdge.connected=!0,this.edges.connectionEdge.smooth=!0,this.edges.connectionEdge.selected=!0,this.edges.connectionEdge.to=this.sectors.support.nodes.targetNode,this.edges.connectionEdge.via=this.sectors.support.nodes.targetViaNode,this.cachedFunctions._handleOnDrag=this._handleOnDrag,this._handleOnDrag=function(t){var e=this._getPointer(t.gesture.center);this.sectors.support.nodes.targetNode.x=this._XconvertDOMtoCanvas(e.x),this.sectors.support.nodes.targetNode.y=this._YconvertDOMtoCanvas(e.y),this.sectors.support.nodes.targetViaNode.x=.5*(this._XconvertDOMtoCanvas(e.x)+this.edges.connectionEdge.from.x),this.sectors.support.nodes.targetViaNode.y=this._YconvertDOMtoCanvas(e.y)},this.moving=!0,this.start()))}},e._finishConnect=function(t){if(1==this._getSelectedNodeCount()){this._handleOnDrag=this.cachedFunctions._handleOnDrag,delete this.cachedFunctions._handleOnDrag;var e=this.edges.connectionEdge.fromId;delete this.edges.connectionEdge,delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode;var i=this._getNodeAt(t);null!=i&&(i.clusterSize>1?alert("Cannot create edges to a cluster."):(this._createEdge(e,i.id),this._createManipulatorBar())),this._unselectAll()}},e._addNode=function(){if(this._selectionIsEmpty()&&1==this.editMode){var t=this._pointerToPositionObject(this.pointerPosition),e={id:s.randomUUID(),x:t.left,y:t.top,label:"new",allowedToMoveX:!0,allowedToMoveY:!0};if(this.triggerFunctions.add)if(2==this.triggerFunctions.add.length){var i=this;this.triggerFunctions.add(e,function(t){i.nodesData.add(t),i._createManipulatorBar(),i.moving=!0,i.start()})}else alert(this.constants.labels.addError),this._createManipulatorBar(),this.moving=!0,this.start();else this.nodesData.add(e),this._createManipulatorBar(),this.moving=!0,this.start()}},e._createEdge=function(t,e){if(1==this.editMode){var i={from:t,to:e};if(this.triggerFunctions.connect)if(2==this.triggerFunctions.connect.length){var s=this;this.triggerFunctions.connect(i,function(t){s.edgesData.add(t),s.moving=!0,s.start()})}else alert(this.constants.labels.linkError),this.moving=!0,this.start();else this.edgesData.add(i),this.moving=!0,this.start()}},e._editEdge=function(t,e){if(1==this.editMode){var i={id:this.edgeBeingEdited.id,from:t,to:e};if(this.triggerFunctions.editEdge)if(2==this.triggerFunctions.editEdge.length){var s=this;this.triggerFunctions.editEdge(i,function(t){s.edgesData.update(t),s.moving=!0,s.start()})}else alert(this.constants.labels.linkError),this.moving=!0,this.start();else this.edgesData.update(i),this.moving=!0,this.start()}},e._editNode=function(){if(this.triggerFunctions.edit&&1==this.editMode){var t=this._getSelectedNode(),e={id:t.id,label:t.label,group:t.group,shape:t.shape,color:{background:t.color.background,border:t.color.border,highlight:{background:t.color.highlight.background,border:t.color.highlight.border}}};if(2==this.triggerFunctions.edit.length){var i=this;this.triggerFunctions.edit(e,function(t){i.nodesData.update(t),i._createManipulatorBar(),i.moving=!0,i.start()})}else alert(this.constants.labels.editError)}else alert(this.constants.labels.editBoundError)},e._deleteSelected=function(){if(!this._selectionIsEmpty()&&1==this.editMode)if(this._clusterInSelection())alert(this.constants.labels.deleteClusterError);else{var t=this.getSelectedNodes(),e=this.getSelectedEdges();if(this.triggerFunctions.del){var i=this,s={nodes:t,edges:e};(this.triggerFunctions.del.length=2)?this.triggerFunctions.del(s,function(t){i.edgesData.remove(t.edges),i.nodesData.remove(t.nodes),i._unselectAll(),i.moving=!0,i.start()}):alert(this.constants.labels.deleteError)}else this.edgesData.remove(e),this.nodesData.remove(t),this._unselectAll(),this.moving=!0,this.start()}}},function(t,e,i){var s=i(1);e._cleanNavigation=function(){var t=document.getElementById("network-navigation_wrapper");null!=t&&this.containerElement.removeChild(t),document.onmouseup=null},e._loadNavigationElements=function(){this._cleanNavigation(),this.navigationDivs={};var t=["up","down","left","right","zoomIn","zoomOut","zoomExtends"],e=["_moveUp","_moveDown","_moveLeft","_moveRight","_zoomIn","_zoomOut","zoomExtent"];this.navigationDivs.wrapper=document.createElement("div"),this.navigationDivs.wrapper.id="network-navigation_wrapper",this.navigationDivs.wrapper.style.position="absolute",this.navigationDivs.wrapper.style.width=this.frame.canvas.clientWidth+"px",this.navigationDivs.wrapper.style.height=this.frame.canvas.clientHeight+"px",this.containerElement.insertBefore(this.navigationDivs.wrapper,this.frame);for(var i=0;i0){"RL"==this.constants.hierarchicalLayout.direction||"DU"==this.constants.hierarchicalLayout.direction?this.constants.hierarchicalLayout.levelSeparation*=-1:this.constants.hierarchicalLayout.levelSeparation=Math.abs(this.constants.hierarchicalLayout.levelSeparation),"RL"==this.constants.hierarchicalLayout.direction||"LR"==this.constants.hierarchicalLayout.direction?1==this.constants.smoothCurves.enabled&&(this.constants.smoothCurves.type="vertical"):1==this.constants.smoothCurves.enabled&&(this.constants.smoothCurves.type="horizontal");var t,e,i=0,s=!1,o=!1;for(e in this.nodes)this.nodes.hasOwnProperty(e)&&(t=this.nodes[e],-1!=t.level?s=!0:o=!0,is&&(n.xFixed=!1,n.x=i[n.level].minPos,r=!0):n.yFixed&&n.level>s&&(n.yFixed=!1,n.y=i[n.level].minPos,r=!0),1==r&&(i[n.level].minPos+=i[n.level].nodeSpacing,n.edges.length>1&&this._placeBranchNodes(n.edges,n.id,i,n.level))}},e._setLevel=function(t,e,i){for(var s=0;st)&&(o.level=t,e.length>1&&this._setLevel(t+1,o.edges,o.id))}},e._restoreNodes=function(){for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.nodes[t].xFixed=!1,this.nodes[t].yFixed=!1)}},function(t,e,i){function s(){this.constants.smoothCurves.enabled=!this.constants.smoothCurves.enabled;var t=document.getElementById("graph_toggleSmooth");t.style.background=1==this.constants.smoothCurves.enabled?"#A4FF56":"#FF8532",this._configureSmoothCurves(!1)}function o(){for(var t in this.calculationNodes)this.calculationNodes.hasOwnProperty(t)&&(this.calculationNodes[t].vx=0,this.calculationNodes[t].vy=0,this.calculationNodes[t].fx=0,this.calculationNodes[t].fy=0);1==this.constants.hierarchicalLayout.enabled?(this._setupHierarchicalLayout(),a.call(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),a.call(this,"graph_H_cg",1,"physics_centralGravity"),a.call(this,"graph_H_sc",1,"physics_springConstant"),a.call(this,"graph_H_sl",1,"physics_springLength"),a.call(this,"graph_H_damp",1,"physics_damping")):this.repositionNodes(),this.moving=!0,this.start() +}function n(){var t="No options are required, default values used.",e=[],i=document.getElementById("graph_physicsMethod1"),s=document.getElementById("graph_physicsMethod2");if(1==i.checked){if(this.constants.physics.barnesHut.gravitationalConstant!=this.backupConstants.physics.barnesHut.gravitationalConstant&&e.push("gravitationalConstant: "+this.constants.physics.barnesHut.gravitationalConstant),this.constants.physics.centralGravity!=this.backupConstants.physics.barnesHut.centralGravity&&e.push("centralGravity: "+this.constants.physics.centralGravity),this.constants.physics.springLength!=this.backupConstants.physics.barnesHut.springLength&&e.push("springLength: "+this.constants.physics.springLength),this.constants.physics.springConstant!=this.backupConstants.physics.barnesHut.springConstant&&e.push("springConstant: "+this.constants.physics.springConstant),this.constants.physics.damping!=this.backupConstants.physics.barnesHut.damping&&e.push("damping: "+this.constants.physics.damping),0!=e.length){t="var options = {",t+="physics: {barnesHut: {";for(var o=0;othis.constants.clustering.clusterThreshold&&1==this.constants.clustering.enabled&&this.clusterToFit(this.constants.clustering.reduceToNodes,!1),this._calculateForces())},e._calculateForces=function(){this._calculateGravitationalForces(),this._calculateNodeForces(),this.constants.physics.springConstant>0&&(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic?this._calculateSpringForcesWithSupport():1==this.constants.physics.hierarchicalRepulsion.enabled?this._calculateHierarchicalSpringForces():this._calculateSpringForces())},e._updateCalculationNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this.calculationNodes={},this.calculationNodeIndices=[];for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.calculationNodes[t]=this.nodes[t]);var e=this.sectors.support.nodes;for(var i in e)e.hasOwnProperty(i)&&(this.edges.hasOwnProperty(e[i].parentEdgeId)?this.calculationNodes[i]=e[i]:e[i]._setForce(0,0));for(var s in this.calculationNodes)this.calculationNodes.hasOwnProperty(s)&&this.calculationNodeIndices.push(s)}else this.calculationNodes=this.nodes,this.calculationNodeIndices=this.nodeIndices},e._calculateGravitationalForces=function(){var t,e,i,s,o,n=this.calculationNodes,r=this.constants.physics.centralGravity,a=0;for(o=0;oSimulation Mode:Barnes HutRepulsionHierarchical
Options:
',this.containerElement.parentElement.insertBefore(this.physicsConfiguration,this.containerElement),this.optionsDiv=document.createElement("div"),this.optionsDiv.style.fontSize="14px",this.optionsDiv.style.fontFamily="verdana",this.containerElement.parentElement.insertBefore(this.optionsDiv,this.containerElement);var e;e=document.getElementById("graph_BH_gc"),e.onchange=a.bind(this,"graph_BH_gc",-1,"physics_barnesHut_gravitationalConstant"),e=document.getElementById("graph_BH_cg"),e.onchange=a.bind(this,"graph_BH_cg",1,"physics_centralGravity"),e=document.getElementById("graph_BH_sc"),e.onchange=a.bind(this,"graph_BH_sc",1,"physics_springConstant"),e=document.getElementById("graph_BH_sl"),e.onchange=a.bind(this,"graph_BH_sl",1,"physics_springLength"),e=document.getElementById("graph_BH_damp"),e.onchange=a.bind(this,"graph_BH_damp",1,"physics_damping"),e=document.getElementById("graph_R_nd"),e.onchange=a.bind(this,"graph_R_nd",1,"physics_repulsion_nodeDistance"),e=document.getElementById("graph_R_cg"),e.onchange=a.bind(this,"graph_R_cg",1,"physics_centralGravity"),e=document.getElementById("graph_R_sc"),e.onchange=a.bind(this,"graph_R_sc",1,"physics_springConstant"),e=document.getElementById("graph_R_sl"),e.onchange=a.bind(this,"graph_R_sl",1,"physics_springLength"),e=document.getElementById("graph_R_damp"),e.onchange=a.bind(this,"graph_R_damp",1,"physics_damping"),e=document.getElementById("graph_H_nd"),e.onchange=a.bind(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),e=document.getElementById("graph_H_cg"),e.onchange=a.bind(this,"graph_H_cg",1,"physics_centralGravity"),e=document.getElementById("graph_H_sc"),e.onchange=a.bind(this,"graph_H_sc",1,"physics_springConstant"),e=document.getElementById("graph_H_sl"),e.onchange=a.bind(this,"graph_H_sl",1,"physics_springLength"),e=document.getElementById("graph_H_damp"),e.onchange=a.bind(this,"graph_H_damp",1,"physics_damping"),e=document.getElementById("graph_H_direction"),e.onchange=a.bind(this,"graph_H_direction",t,"hierarchicalLayout_direction"),e=document.getElementById("graph_H_levsep"),e.onchange=a.bind(this,"graph_H_levsep",1,"hierarchicalLayout_levelSeparation"),e=document.getElementById("graph_H_nspac"),e.onchange=a.bind(this,"graph_H_nspac",1,"hierarchicalLayout_nodeSpacing");var i=document.getElementById("graph_physicsMethod1"),d=document.getElementById("graph_physicsMethod2"),l=document.getElementById("graph_physicsMethod3");d.checked=!0,this.constants.physics.barnesHut.enabled&&(i.checked=!0),this.constants.hierarchicalLayout.enabled&&(l.checked=!0);var c=document.getElementById("graph_toggleSmooth"),p=document.getElementById("graph_repositionNodes"),u=document.getElementById("graph_generateOptions");c.onclick=s.bind(this),p.onclick=o.bind(this),u.onclick=n.bind(this),c.style.background=1==this.constants.smoothCurves&&0==this.constants.dynamicSmoothCurves?"#A4FF56":"#FF8532",r.apply(this),i.onchange=r.bind(this),d.onchange=r.bind(this),l.onchange=r.bind(this)}},e._overWriteGraphConstants=function(t,e){var i=t.split("_");1==i.length?this.constants[i[0]]=e:2==i.length?this.constants[i[0]][i[1]]=e:3==i.length&&(this.constants[i[0]][i[1]][i[2]]=e)}},function(t,e,i){function s(t){return i(o(t))}function o(t){return n[t]||function(){throw new Error("Cannot find module '"+t+"'.")}()}var n={};s.keys=function(){return Object.keys(n)},s.resolve=o,t.exports=s},function(t,e){e._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l,c=this.calculationNodes,p=this.calculationNodeIndices,u=-2/3,m=4/3,f=this.constants.physics.repulsion.nodeDistance,g=f;for(d=0;di&&(r=.5*g>i?1:v*i+m,r*=0==n?1:1+n*this.constants.clustering.forceAmplification,r/=i,s=t*r,o=e*r,a.fx-=s,a.fy-=o,h.fx+=s,h.fy+=o)}}},function(t,e){e._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l=this.calculationNodes,c=this.calculationNodeIndices,p=this.constants.physics.hierarchicalRepulsion.nodeDistance;for(h=0;hi?-Math.pow(u*i,2)+Math.pow(u*p,2):0,0==i?i=.01:n/=i,s=t*n,o=e*n,r.fx-=s,r.fy-=o,a.fx+=s,a.fy+=o}},e._calculateHierarchicalSpringForces=function(){for(var t,e,i,s,o,n,r,a,h,d=this.edges,l=this.calculationNodes,c=this.calculationNodeIndices,p=0;pn;n++)t=e[i[n]],this._getForceContribution(o.root.children.NW,t),this._getForceContribution(o.root.children.NE,t),this._getForceContribution(o.root.children.SW,t),this._getForceContribution(o.root.children.SE,t)}},e._getForceContribution=function(t,e){if(t.childrenCount>0){var i,s,o;if(i=t.centerOfMass.x-e.x,s=t.centerOfMass.y-e.y,o=Math.sqrt(i*i+s*s),o*t.calcSize>this.constants.physics.barnesHut.theta){0==o&&(o=.1*Math.random(),i=o);var n=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.mass/(o*o*o),r=i*n,a=s*n;e.fx+=r,e.fy+=a}else if(4==t.childrenCount)this._getForceContribution(t.children.NW,e),this._getForceContribution(t.children.NE,e),this._getForceContribution(t.children.SW,e),this._getForceContribution(t.children.SE,e);else if(t.children.data.id!=e.id){0==o&&(o=.5*Math.random(),i=o);var n=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.mass/(o*o*o),r=i*n,a=s*n;e.fx+=r,e.fy+=a}}},e._formBarnesHutTree=function(t,e){for(var i,s=e.length,o=Number.MAX_VALUE,n=Number.MAX_VALUE,r=-Number.MAX_VALUE,a=-Number.MAX_VALUE,h=0;s>h;h++){var d=t[e[h]].x,l=t[e[h]].y;o>d&&(o=d),d>r&&(r=d),n>l&&(n=l),l>a&&(a=l)}var c=Math.abs(r-o)-Math.abs(a-n);c>0?(n-=.5*c,a+=.5*c):(o+=.5*c,r-=.5*c);var p=1e-5,u=Math.max(p,Math.abs(r-o)),m=.5*u,f=.5*(o+r),g=.5*(n+a),v={root:{centerOfMass:{x:0,y:0},mass:0,range:{minX:f-m,maxX:f+m,minY:g-m,maxY:g+m},size:u,calcSize:1/u,children:{data:null},maxWidth:0,level:0,childrenCount:4}};for(this._splitBranch(v.root),h=0;s>h;h++)i=t[e[h]],this._placeInTree(v.root,i);this.barnesHutTree=v},e._updateBranchMass=function(t,e){var i=t.mass+e.mass,s=1/i;t.centerOfMass.x=t.centerOfMass.x*t.mass+e.x*e.mass,t.centerOfMass.x*=s,t.centerOfMass.y=t.centerOfMass.y*t.mass+e.y*e.mass,t.centerOfMass.y*=s,t.mass=i;var o=Math.max(Math.max(e.height,e.radius),e.width);t.maxWidth=t.maxWidthe.x?t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NW"):this._placeInRegion(t,e,"SW"):t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NE"):this._placeInRegion(t,e,"SE")},e._placeInRegion=function(t,e,i){switch(t.children[i].childrenCount){case 0:t.children[i].children.data=e,t.children[i].childrenCount=1,this._updateBranchMass(t.children[i],e);break;case 1:t.children[i].children.data.x==e.x&&t.children[i].children.data.y==e.y?(e.x+=Math.random(),e.y+=Math.random()):(this._splitBranch(t.children[i]),this._placeInTree(t.children[i],e));break;case 4:this._placeInTree(t.children[i],e)}},e._splitBranch=function(t){var e=null;1==t.childrenCount&&(e=t.children.data,t.mass=0,t.centerOfMass.x=0,t.centerOfMass.y=0),t.childrenCount=4,t.children.data=null,this._insertRegion(t,"NW"),this._insertRegion(t,"NE"),this._insertRegion(t,"SW"),this._insertRegion(t,"SE"),null!=e&&this._placeInTree(t,e)},e._insertRegion=function(t,e){var i,s,o,n,r=.5*t.size;switch(e){case"NW":i=t.range.minX,s=t.range.minX+r,o=t.range.minY,n=t.range.minY+r;break;case"NE":i=t.range.minX+r,s=t.range.maxX,o=t.range.minY,n=t.range.minY+r;break;case"SW":i=t.range.minX,s=t.range.minX+r,o=t.range.minY+r,n=t.range.maxY;break;case"SE":i=t.range.minX+r,s=t.range.maxX,o=t.range.minY+r,n=t.range.maxY}t.children[e]={centerOfMass:{x:0,y:0},mass:0,range:{minX:i,maxX:s,minY:o,maxY:n},size:.5*t.size,calcSize:2*t.calcSize,children:{data:null},maxWidth:0,level:t.level+1,childrenCount:0}},e._drawTree=function(t,e){void 0!==this.barnesHutTree&&(t.lineWidth=1,this._drawBranch(this.barnesHutTree.root,t,e))},e._drawBranch=function(t,e,i){void 0===i&&(i="#FF0000"),4==t.childrenCount&&(this._drawBranch(t.children.NW,e),this._drawBranch(t.children.NE,e),this._drawBranch(t.children.SE,e),this._drawBranch(t.children.SW,e)),e.strokeStyle=i,e.beginPath(),e.moveTo(t.range.minX,t.range.minY),e.lineTo(t.range.maxX,t.range.minY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.minY),e.lineTo(t.range.maxX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.maxY),e.lineTo(t.range.minX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.minX,t.range.maxY),e.lineTo(t.range.minX,t.range.minY),e.stroke()}},function(t){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children=[],t.webpackPolyfill=1),t}}])}); //# sourceMappingURL=vis.map \ No newline at end of file diff --git a/gulpfile.js b/gulpfile.js index 95ec63e6..8a780cf5 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -47,6 +47,10 @@ var webpackConfig = { filename: VIS_JS, sourcePrefix: ' ' }, + // exclude requires of moment.js language files + module: { + wrappedContextRegExp: /$^/ + }, plugins: [ bannerPlugin ], cache: true }; diff --git a/index.js b/index.js index 65b202e8..3b1897c6 100644 --- a/index.js +++ b/index.js @@ -62,3 +62,7 @@ exports.network = { exports.Graph = function () { throw new Error('Graph is renamed to Network. Please create a graph as new vis.Network(...)'); }; + +// bundled external libraries +exports.moment = require('./lib/module/moment'); +exports.hammer = require('./lib/module/hammer');