MediaWiki:Graph.js: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
No edit summary |
||
(16 intermediate revisions by the same user not shown) | |||
Line 840: | Line 840: | ||
]; | ]; | ||
// unique | //////////////////////// | ||
// all the function used for drawing and fixing the data | |||
//////////////////////// | |||
//////////////////////// | |||
// first part, unique | |||
//////////////////////// | |||
// all the code used in this first part is used uniquely in this part, and is used to get the right data to display on every pages of the wiki zoo | |||
function getAllUrlParams(url) { | function getAllUrlParams(url) { | ||
Line 880: | Line 888: | ||
} | } | ||
// useless for now | |||
function arraysEqual(a,b) { | function arraysEqual(a,b) { | ||
Line 897: | Line 906: | ||
function getdirectasczoo(nodeid){ | function getdirectasczoo(nodeid){ | ||
// get all direct ascendant of an item | |||
// return an array of them | |||
for (i=0;i<zooData.length;i++){ | for (i=0;i<zooData.length;i++){ | ||
if (typeof zooData[i].requires !== 'undefined') { | if (typeof zooData[i].requires !== 'undefined') { | ||
Line 912: | Line 924: | ||
function getdirectdeszoo(nodeid){ | function getdirectdeszoo(nodeid){ | ||
// get all direct descendant of an item | |||
// return an array of them | |||
let directdes = []; | let directdes = []; | ||
for (i=0;i<zooData.length;i++){ | for (i=0;i<zooData.length;i++){ | ||
Line 936: | Line 951: | ||
function getasczoo(nodeids){ | function getasczoo(nodeids){ | ||
// return an array of every ascendant of an item, including the ascendant of them recursively | |||
nodestest.length=0; | nodestest.length=0; | ||
bool=false; | bool=false; | ||
Line 941: | Line 957: | ||
nodestest.push(getdirectasczoo(nodeids[j])); | nodestest.push(getdirectasczoo(nodeids[j])); | ||
} | } | ||
// we find the ascendant of all the nodes selected (or the unique one to start) | |||
nodesids=nodestest.flat(); | nodesids=nodestest.flat(); | ||
let uniquenodes= [...new Set(nodesids)]; | let uniquenodes= [...new Set(nodesids)]; | ||
var bool = false; | var bool = false; | ||
// we test if in this iteration all the asc are included in the array of ascendant, what would mean that the search is over | |||
for (i=0;i<nodeids.length;i++){ | for (i=0;i<nodeids.length;i++){ | ||
if( !nodeids.includes(uniquenodes[i]) ){ | if( !nodeids.includes(uniquenodes[i]) ){ | ||
Line 950: | Line 968: | ||
} | } | ||
} | } | ||
//if new elements are found, we find the ascendants again | |||
if (bool==true){ | if (bool==true){ | ||
return getasczoo(uniquenodes); | return getasczoo(uniquenodes); | ||
Line 958: | Line 977: | ||
function getdeszoo(nodeids){ | function getdeszoo(nodeids){ | ||
// we find the desc of the desc.. and return them in an array, other method | |||
return nodeids | return nodeids | ||
.reduce( | .reduce( | ||
Line 966: | Line 986: | ||
function lineagezoo(nodeid){ | function lineagezoo(nodeid){ | ||
// we concatenate all the ascendant and descendant in an unique array lineage returned | |||
let lineage=[]; | let lineage=[]; | ||
Line 979: | Line 1,000: | ||
} | } | ||
// get the url of current page | |||
function getProperUrl(){ | function getProperUrl(){ | ||
var url = window.location.toString(); | var url = window.location.toString(); | ||
Line 990: | Line 1,011: | ||
function noParty() { | function noParty() { | ||
// we want to express the requirement of an element that is a protocol party in its parent protocol | |||
// so that every protocol requires the the requirement of its party | |||
// we find every protocol party, then search for their parent, and add its requirement to the parents | |||
// finally delete the protocol party from the data | |||
for (i=0;i<zooData.length;i++){ | for (i=0;i<zooData.length;i++){ | ||
if(zooData[i]['category']=='protocol_party'){ | if(zooData[i]['category']=='protocol_party'){ | ||
Line 1,010: | Line 1,035: | ||
function unique(){ | function unique(){ | ||
// we use the proper data for the page we are in | |||
if (typeof getAllUrlParams().title !== 'undefined'){ | if (typeof getAllUrlParams().title !== 'undefined'){ | ||
if (getAllUrlParams().title.length >0 && getAllUrlParams().title | var titre= getAllUrlParams().title; | ||
// if we are on not on the main page or the graph page, we dont need to erase anything from the data | |||
if (getAllUrlParams().title.length >0 && getAllUrlParams().title != "main_page" && getAllUrlParams().title != "graphs" ){ | |||
// we find the right item from zoo data by comparing its .uri entry to match witch the current url | |||
for (i=0;i<zooData.length;i++){ | |||
if ( typeof zooData[i].uri !== 'undefined'){ | if ( typeof zooData[i].uri !== 'undefined'){ | ||
if (zooData[i].uri==getProperUrl()){ | if (zooData[i].uri==getProperUrl()){ | ||
Line 1,020: | Line 1,050: | ||
} | } | ||
} | } | ||
// we then select only the lineage of this right item from the zoo | |||
// by creating a new zoo from the selected id returned by the lineage function | |||
var toKeep= lineagezoo(selected); | var toKeep= lineagezoo(selected); | ||
var newZoo= []; | var newZoo= []; | ||
Line 1,029: | Line 1,061: | ||
} | } | ||
} | } | ||
// finally we erase all zoodata and replace it by all the items found | |||
let unique = [...new Set(newZoo)]; | let unique = [...new Set(newZoo)]; | ||
zooData.length=0; | zooData.length=0; | ||
Line 1,035: | Line 1,068: | ||
} | } | ||
} | } | ||
// if we are in these pages we erase the protocol party to show uniquely the graph without complexing it with all the protocol party | |||
else {noParty();} | else {noParty();} | ||
} | } | ||
Line 1,044: | Line 1,078: | ||
// transformation data for protocol_party and graphs in pages | // transformation data for protocol_party and graphs in pages | ||
// first function called | |||
unique(); | unique(); | ||
// loading data | //////////////////////// | ||
// second part, loading data and displaying data | |||
//////////////////////// | |||
// creating the nodes and the edges | |||
const nodes = zooData.map(n => { | const nodes = zooData.map(n => { | ||
return { | return { | ||
Line 1,067: | Line 1,106: | ||
}); | }); | ||
// we can change parameters of the edges like their colors | |||
const edges = zooData.reduce( | const edges = zooData.reduce( | ||
(edges, node) => { | (edges, node) => { | ||
Line 1,084: | Line 1,124: | ||
var which= true; | var which= true; | ||
var textbutton=""; | var textbutton=""; | ||
function buttonclicked(){ | function buttonclicked(){ | ||
// function called on onclick on the button element displayed in the graph page | |||
// empty the graph, redrawing it and changing the button text | |||
if (which == true){ | if (which == true){ | ||
which=false; | which=false; | ||
Line 1,099: | Line 1,142: | ||
} | } | ||
} | } | ||
var network= null; | |||
function redrawAll() { | function redrawAll() { | ||
// function used to draw the graph from all the parameters expressed before | |||
var container = document.getElementById('mynetwork'); | var container = document.getElementById('mynetwork'); | ||
var options = { | var options = { | ||
Line 1,128: | Line 1,175: | ||
}; | }; | ||
network = new vis.Network(container, data, options); | |||
allNodes = nodesDataset.get({ returnType: 'Object' }); | allNodes = nodesDataset.get({ returnType: 'Object' }); | ||
allEdges = edgesDataset.get({ returnType: 'Object' }); | allEdges = edgesDataset.get({ returnType: 'Object' }); | ||
Line 1,147: | Line 1,194: | ||
function visitWikiNode(params) { | function visitWikiNode(params) { | ||
// onclick on an item of the graph to redirect on its uri | |||
const selectedNodeId = params.nodes[0]; | const selectedNodeId = params.nodes[0]; | ||
const selectedNode = allNodes[selectedNodeId]; | const selectedNode = allNodes[selectedNodeId]; | ||
Line 1,152: | Line 1,200: | ||
} | } | ||
//////////////////////// | |||
// third part : get the right interactions when clicking nodes | |||
//////////////////////// | |||
// resources | // resources | ||
Line 1,158: | Line 1,209: | ||
const Rhighlight = (nodeIds, nodeIds2) => { | const Rhighlight = (nodeIds, nodeIds2) => { | ||
//coloring the nodes the right way so that the highliting looks right | |||
// its a contextual fix of the normal behaviour of the library | |||
for (let nodeId in allNodes) { | for (let nodeId in allNodes) { | ||
if (nodeIds2.includes(nodeId)){ allNodes[nodeId].color = 'rgba(50, 126, 130,0.5)';} | if (nodeIds2.includes(nodeId)){ allNodes[nodeId].color = 'rgba(50, 126, 130,0.5)';} | ||
Line 1,167: | Line 1,220: | ||
const getDoables = (selectedResources) => { | const getDoables = (selectedResources) => { | ||
// finding all the right ressources doable with the ressource selected, and its children, recursively | |||
const RgetDirectDesc = (nodeId) => { | const RgetDirectDesc = (nodeId) => { | ||
const desc = edges | const desc = edges | ||
Line 1,236: | Line 1,289: | ||
function emptyR(){ | function emptyR(){ | ||
// empty the list of selected node | |||
selectNode({nodes:[]}); | selectNode({nodes:[]}); | ||
} | } | ||
Line 1,241: | Line 1,295: | ||
function RselectNode(params) { | function RselectNode(params) { | ||
// getting the right selection of nodes (that will be correctly highlighted) | |||
// fixing the normal behaviour of the library | |||
var booltest= false; | var booltest= false; | ||
Line 1,259: | Line 1,314: | ||
// we find the fathers of every item which is a subtype that is include in the selected resources | |||
let father = []; | let father = []; | ||
for (var i=0; i<zooData.length;i++){ | for (var i=0; i<zooData.length;i++){ | ||
Line 1,271: | Line 1,326: | ||
} | } | ||
// we add them to the selection, and re run again the resources function, to get their doables | |||
let selection= selectedResources.concat(father); | let selection= selectedResources.concat(father); | ||
const impliedDoables = getDoables(selection); | const impliedDoables = getDoables(selection); | ||
// then we search in the zoodata the items that has a subtype, then compare them to the selected item | |||
// then their sons are selected and added to an array of items that will be highlighted differently | |||
let fathers=[]; | let fathers=[]; | ||
for (i=0;i<zooData.length;i++){ | for (i=0;i<zooData.length;i++){ | ||
Line 1,300: | Line 1,359: | ||
} | } | ||
// we highlight the selected items and their subtype | |||
Rhighlight(impliedDoables,highlightsub); | Rhighlight(impliedDoables,highlightsub); | ||
Line 1,306: | Line 1,366: | ||
if (allNodes.hasOwnProperty(nodeId)) { updateArray.push(allNodes[nodeId]); } | if (allNodes.hasOwnProperty(nodeId)) { updateArray.push(allNodes[nodeId]); } | ||
} | } | ||
// we update the dataset | |||
nodesDataset.update(updateArray); | nodesDataset.update(updateArray); | ||
} | } | ||
Line 1,313: | Line 1,374: | ||
const highlight = (nodeIds, nodeIds2) => { | const highlight = (nodeIds, nodeIds2) => { | ||
//parameters of highlighting | |||
for (let nodeId in allNodes) { | for (let nodeId in allNodes) { | ||
if (nodeIds2.includes(nodeId)){ allNodes[nodeId].color = 'rgba(50, 126, 130,0.5)';} | if (nodeIds2.includes(nodeId)){ allNodes[nodeId].color = 'rgba(50, 126, 130,0.5)';} | ||
Line 1,324: | Line 1,386: | ||
function edgesfix(nodesids){ | function edgesfix(nodesids){ | ||
// fixing the display ot the edges so that the colors match their "from" node | |||
if (nodesids.length!==0){ | if (nodesids.length!==0){ | ||
for (i=0;i<edges.length;i++){ | for (i=0;i<edges.length;i++){ | ||
Line 1,344: | Line 1,407: | ||
} | } | ||
// boolean that calls the the resources or the lineage graph | |||
var which= true; | var which= true; | ||
var textbutton=""; | var textbutton=""; | ||
//useless, this function is directly in the "display the graph" part | |||
function trace(){ | function trace(){ | ||
if (which==true){ selectNode;} | if (which==true){ selectNode;} | ||
Line 1,354: | Line 1,417: | ||
} | } | ||
// get the selected lineage | |||
const selectLineage = (params) => { | const selectLineage = (params) => { | ||
const selectedNodeId = params.nodes[0]; | const selectedNodeId = params.nodes[0]; | ||
Line 1,395: | Line 1,460: | ||
function emptyL(){ | function emptyL(){ | ||
//empty the selection of nodes | |||
selectNode({nodes:[]}); | selectNode({nodes:[]}); | ||
} | } | ||
function sons(params){ | function sons(params){ | ||
// same as in the ressources, all the subtypes are selected | |||
const selectedNodeId = params.nodes[0]; | const selectedNodeId = params.nodes[0]; | ||
var sons= []; | var sons= []; | ||
Line 1,434: | Line 1,500: | ||
function selectNode(params) { | function selectNode(params) { | ||
// function called on click if this is the lineage graph selected | |||
const lineage = selectLineage(params); | const lineage = selectLineage(params); | ||
Line 1,452: | Line 1,519: | ||
} | } | ||
// we update the dataset, and the edgesset because of the edgesfix | |||
nodesDataset.update(updateArray); | nodesDataset.update(updateArray); | ||
edgesDataset.update(edges); | edgesDataset.update(edges); | ||
Line 1,458: | Line 1,526: | ||
} | } | ||
redrawAll(); | redrawAll(); | ||
/////////////////// | |||
// final part: animation | |||
/////////////////// | |||
// if we are in the knowledge graph page, the graph start by an animation | |||
if (document.getElementById('biggraph')){ | |||
setTimeout(showAnimation,100); | |||
// the animation is divided in two part, the focus on a random item, then returning on a larger view | |||
function showAnimation() { | |||
focusOnOne(); | |||
setTimeout(notFocus,1500); | |||
} | |||
function focusOnOne() { | |||
// the focus is made on a random node with all the options above | |||
var alea= Math.floor(Math.random() * 87); | |||
var nodeId=network["body"]["nodeIndices"][alea]; | |||
var options = { | |||
scale: 0.5, | |||
offset: {x:0,y:0}, | |||
animation: { | |||
duration: 1500, | |||
easingFunction: "easeInOutCubic" | |||
} | |||
}; | |||
network.focus(nodeId, options); | |||
} | |||
function notFocus() { | |||
// the larger view is made from a selected node with all the options above | |||
var nodeId ="q_coin"; | |||
// the node "from the middle" needs to be changed to suit the datas if the layout change | |||
var options = { | |||
scale: 0.1, | |||
offset: {x:0,y:0}, | |||
animation: { | |||
duration: 1200, | |||
easingFunction: "easeInOutCubic" | |||
} | |||
}; | |||
network.focus(nodeId, options); | |||
} | |||
} |
Latest revision as of 10:34, 2 June 2020
// each js files in one file // vis network /** * vis.js * https://github.com/almende/vis * * A dynamic, browser-based visualization library. * * @version 4.24.6 * @date 2019-06-26 * * @license * Copyright (C) 2011-2017 Almende B.V, http://almende.com * * Vis.js is dual licensed under both * * * The Apache 2.0 License * http://www.apache.org/licenses/LICENSE-2.0 * * and * * * The MIT License * http://opensource.org/licenses/MIT * * Vis.js may be distributed under either license. */ !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.vis=t():e.vis=t()}("undefined"!=typeof self?self:this,function(){return function(e){function t(o){if(i[o])return i[o].exports;var n=i[o]={i:o,l:!1,exports:{}};return e[o].call(n.exports,n,n.exports,t),n.l=!0,n.exports}var i={};return t.m=e,t.c=i,t.d=function(e,i,o){t.o(e,i)||Object.defineProperty(e,i,{configurable:!1,enumerable:!0,get:o})},t.n=function(e){var i=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(i,"a",i),i},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=85)}([function(e,t,i){"use strict";t.__esModule=!0,t.default=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}},function(e,t,i){"use strict";t.__esModule=!0;var o=i(129),n=function(e){return e&&e.__esModule?e:{default:e}}(o);t.default=function(){function e(e,t){for(var i=0;i<t.length;i++){var o=t[i];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),(0,n.default)(e,o.key,o)}}return function(t,i,o){return i&&e(t.prototype,i),o&&e(t,o),t}}()},function(e,t,i){e.exports={default:i(144),__esModule:!0}},function(e,t,i){"use strict";t.__esModule=!0;var o=i(7),n=function(e){return e&&e.__esModule?e:{default:e}}(o);t.default=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==(void 0===t?"undefined":(0,n.default)(t))&&"function"!=typeof t?e:t}},function(e,t,i){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var n=i(146),s=o(n),r=i(31),a=o(r),d=i(7),h=o(d);t.default=function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+(void 0===t?"undefined":(0,h.default)(t)));e.prototype=(0,a.default)(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(s.default?(0,s.default)(e,t):e.__proto__=t)}},function(e,t,i){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function n(e,t,i,o){var n=!1;!0===o&&(n=null===t[i]&&void 0!==e[i]),n?delete e[i]:e[i]=t[i]}var s=i(58),r=o(s),a=i(31),d=o(a),h=i(9),l=o(h),u=i(7),c=o(u),f=i(71),p=i(119);t.isNumber=function(e){return e instanceof Number||"number"==typeof e},t.recursiveDOMDelete=function(e){if(e)for(;!0===e.hasChildNodes();)t.recursiveDOMDelete(e.firstChild),e.removeChild(e.firstChild)},t.isString=function(e){return e instanceof String||"string"==typeof e},t.isDate=function(e){if(e instanceof Date)return!0;if(t.isString(e)){if(v.exec(e))return!0;if(!isNaN(Date.parse(e)))return!0}return!1},t.randomUUID=function(){return p.v4()},t.fillIfDefined=function(e,i){var o=arguments.length>2&&void 0!==arguments[2]&&arguments[2];for(var s in e)void 0!==i[s]&&(null===i[s]||"object"!==(0,c.default)(i[s])?n(e,i,s,o):"object"===(0,c.default)(e[s])&&t.fillIfDefined(e[s],i[s],o))},t.extend=function(e){for(var t=1;t<arguments.length;t++){var i=arguments[t];for(var o in i)i.hasOwnProperty(o)&&(e[o]=i[o])}return e},t.selectiveExtend=function(e,t){if(!Array.isArray(e))throw new Error("Array with property names expected as first argument");for(var i=2;i<arguments.length;i++)for(var o=arguments[i],n=0;n<e.length;n++){var s=e[n];o&&o.hasOwnProperty(s)&&(t[s]=o[s])}return t},t.selectiveDeepExtend=function(e,i,o){var s=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(Array.isArray(o))throw new TypeError("Arrays are not supported by deepExtend");for(var r=0;r<e.length;r++){var a=e[r];if(o.hasOwnProperty(a))if(o[a]&&o[a].constructor===Object)void 0===i[a]&&(i[a]={}),i[a].constructor===Object?t.deepExtend(i[a],o[a],!1,s):n(i,o,a,s);else{if(Array.isArray(o[a]))throw new TypeError("Arrays are not supported by deepExtend");n(i,o,a,s)}}return i},t.selectiveNotDeepExtend=function(e,i,o){var s=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(Array.isArray(o))throw new TypeError("Arrays are not supported by deepExtend");for(var r in o)if(o.hasOwnProperty(r)&&-1===e.indexOf(r))if(o[r]&&o[r].constructor===Object)void 0===i[r]&&(i[r]={}),i[r].constructor===Object?t.deepExtend(i[r],o[r]):n(i,o,r,s);else if(Array.isArray(o[r])){i[r]=[];for(var a=0;a<o[r].length;a++)i[r].push(o[r][a])}else n(i,o,r,s);return i},t.deepExtend=function(e,i){var o=arguments.length>2&&void 0!==arguments[2]&&arguments[2],s=arguments.length>3&&void 0!==arguments[3]&&arguments[3];for(var r in i)if(i.hasOwnProperty(r)||!0===o)if(i[r]&&i[r].constructor===Object)void 0===e[r]&&(e[r]={}),e[r].constructor===Object?t.deepExtend(e[r],i[r],o):n(e,i,r,s);else if(Array.isArray(i[r])){e[r]=[];for(var a=0;a<i[r].length;a++)e[r].push(i[r][a])}else n(e,i,r,s);return e},t.equalArray=function(e,t){if(e.length!=t.length)return!1;for(var i=0,o=e.length;i<o;i++)if(e[i]!=t[i])return!1;return!0},t.convert=function(e,i){var o;if(void 0!==e){if(null===e)return null;if(!i)return e;if("string"!=typeof i&&!(i instanceof String))throw new Error("Type must be a string");switch(i){case"boolean":case"Boolean":return Boolean(e);case"number":case"Number":return t.isString(e)&&!isNaN(Date.parse(e))?f(e).valueOf():Number(e.valueOf());case"string":case"String":return String(e);case"Date":if(t.isNumber(e))return new Date(e);if(e instanceof Date)return new Date(e.valueOf());if(f.isMoment(e))return new Date(e.valueOf());if(t.isString(e))return o=v.exec(e),o?new Date(Number(o[1])):f(new Date(e)).toDate();throw new Error("Cannot convert object of type "+t.getType(e)+" to type Date");case"Moment":if(t.isNumber(e))return f(e);if(e instanceof Date)return f(e.valueOf());if(f.isMoment(e))return f(e);if(t.isString(e))return o=v.exec(e),f(o?Number(o[1]):e);throw new Error("Cannot convert object of type "+t.getType(e)+" to type Date");case"ISODate":if(t.isNumber(e))return new Date(e);if(e instanceof Date)return e.toISOString();if(f.isMoment(e))return e.toDate().toISOString();if(t.isString(e))return o=v.exec(e),o?new Date(Number(o[1])).toISOString():f(e).format();throw new Error("Cannot convert object of type "+t.getType(e)+" to type ISODate");case"ASPDate":if(t.isNumber(e))return"/Date("+e+")/";if(e instanceof Date)return"/Date("+e.valueOf()+")/";if(t.isString(e)){o=v.exec(e);return"/Date("+(o?new Date(Number(o[1])).valueOf():new Date(e).valueOf())+")/"}throw new Error("Cannot convert object of type "+t.getType(e)+" to type ASPDate");default:throw new Error('Unknown type "'+i+'"')}}};var v=/^\/?Date\((\-?\d+)/i;t.getType=function(e){var t=void 0===e?"undefined":(0,c.default)(e);return"object"==t?null===e?"null":e instanceof Boolean?"Boolean":e instanceof Number?"Number":e instanceof String?"String":Array.isArray(e)?"Array":e instanceof Date?"Date":"Object":"number"==t?"Number":"boolean"==t?"Boolean":"string"==t?"String":void 0===t?"undefined":t},t.copyAndExtendArray=function(e,t){for(var i=[],o=0;o<e.length;o++)i.push(e[o]);return i.push(t),i},t.copyArray=function(e){for(var t=[],i=0;i<e.length;i++)t.push(e[i]);return t},t.getAbsoluteLeft=function(e){return e.getBoundingClientRect().left},t.getAbsoluteRight=function(e){return e.getBoundingClientRect().right},t.getAbsoluteTop=function(e){return e.getBoundingClientRect().top},t.addClassName=function(e,t){var i=e.className.split(" "),o=t.split(" ");i=i.concat(o.filter(function(e){return i.indexOf(e)<0})),e.className=i.join(" ")},t.removeClassName=function(e,t){var i=e.className.split(" "),o=t.split(" ");i=i.filter(function(e){return o.indexOf(e)<0}),e.className=i.join(" ")},t.forEach=function(e,t){var i,o;if(Array.isArray(e))for(i=0,o=e.length;i<o;i++)t(e[i],i,e);else for(i in e)e.hasOwnProperty(i)&&t(e[i],i,e)},t.toArray=function(e){var t=[];for(var i in e)e.hasOwnProperty(i)&&t.push(e[i]);return t},t.updateProperty=function(e,t,i){return e[t]!==i&&(e[t]=i,!0)},t.throttle=function(e){var t=!1;return function(){t||(t=!0,requestAnimationFrame(function(){t=!1,e()}))}},t.addEventListener=function(e,t,i,o){e.addEventListener?(void 0===o&&(o=!1),"mousewheel"===t&&navigator.userAgent.indexOf("Firefox")>=0&&(t="DOMMouseScroll"),e.addEventListener(t,i,o)):e.attachEvent("on"+t,i)},t.removeEventListener=function(e,t,i,o){e.removeEventListener?(void 0===o&&(o=!1),"mousewheel"===t&&navigator.userAgent.indexOf("Firefox")>=0&&(t="DOMMouseScroll"),e.removeEventListener(t,i,o)):e.detachEvent("on"+t,i)},t.preventDefault=function(e){e||(e=window.event),e.preventDefault?e.preventDefault():e.returnValue=!1},t.getTarget=function(e){e||(e=window.event);var t;return e.target?t=e.target:e.srcElement&&(t=e.srcElement),void 0!=t.nodeType&&3==t.nodeType&&(t=t.parentNode),t},t.hasParent=function(e,t){for(var i=e;i;){if(i===t)return!0;i=i.parentNode}return!1},t.option={},t.option.asBoolean=function(e,t){return"function"==typeof e&&(e=e()),null!=e?0!=e:t||null},t.option.asNumber=function(e,t){return"function"==typeof e&&(e=e()),null!=e?Number(e)||t||null:t||null},t.option.asString=function(e,t){return"function"==typeof e&&(e=e()),null!=e?String(e):t||null},t.option.asSize=function(e,i){return"function"==typeof e&&(e=e()),t.isString(e)?e:t.isNumber(e)?e+"px":i||null},t.option.asElement=function(e,t){return"function"==typeof e&&(e=e()),e||t||null},t.hexToRGB=function(e){var t=/^#?([a-f\d])([a-f\d])([a-f\d])$/i;e=e.replace(t,function(e,t,i,o){return t+t+i+i+o+o});var i=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);return i?{r:parseInt(i[1],16),g:parseInt(i[2],16),b:parseInt(i[3],16)}:null},t.overrideOpacity=function(e,i){var o;return-1!=e.indexOf("rgba")?e:-1!=e.indexOf("rgb")?(o=e.substr(e.indexOf("(")+1).replace(")","").split(","),"rgba("+o[0]+","+o[1]+","+o[2]+","+i+")"):(o=t.hexToRGB(e),null==o?e:"rgba("+o.r+","+o.g+","+o.b+","+i+")")},t.RGBToHex=function(e,t,i){return"#"+((1<<24)+(e<<16)+(t<<8)+i).toString(16).slice(1)},t.parseColor=function(e){var i;if(!0===t.isString(e)){if(!0===t.isValidRGB(e)){var o=e.substr(4).substr(0,e.length-5).split(",").map(function(e){return parseInt(e)});e=t.RGBToHex(o[0],o[1],o[2])}if(!0===t.isValidHex(e)){var n=t.hexToHSV(e),s={h:n.h,s:.8*n.s,v:Math.min(1,1.02*n.v)},r={h:n.h,s:Math.min(1,1.25*n.s),v:.8*n.v},a=t.HSVToHex(r.h,r.s,r.v),d=t.HSVToHex(s.h,s.s,s.v);i={background:e,border:a,highlight:{background:d,border:a},hover:{background:d,border:a}}}else i={background:e,border:e,highlight:{background:e,border:e},hover:{background:e,border:e}}}else i={},i.background=e.background||void 0,i.border=e.border||void 0,t.isString(e.highlight)?i.highlight={border:e.highlight,background:e.highlight}:(i.highlight={},i.highlight.background=e.highlight&&e.highlight.background||void 0,i.highlight.border=e.highlight&&e.highlight.border||void 0),t.isString(e.hover)?i.hover={border:e.hover,background:e.hover}:(i.hover={},i.hover.background=e.hover&&e.hover.background||void 0,i.hover.border=e.hover&&e.hover.border||void 0);return i},t.RGBToHSV=function(e,t,i){e/=255,t/=255,i/=255;var o=Math.min(e,Math.min(t,i)),n=Math.max(e,Math.max(t,i));if(o==n)return{h:0,s:0,v:o};var s=e==o?t-i:i==o?e-t:i-e;return{h:60*((e==o?3:i==o?1:5)-s/(n-o))/360,s:(n-o)/n,v:n}};var g={split:function(e){var t={};return e.split(";").forEach(function(e){if(""!=e.trim()){var i=e.split(":"),o=i[0].trim(),n=i[1].trim();t[o]=n}}),t},join:function(e){return(0,l.default)(e).map(function(t){return t+": "+e[t]}).join("; ")}};t.addCssText=function(e,i){var o=g.split(e.style.cssText),n=g.split(i),s=t.extend(o,n);e.style.cssText=g.join(s)},t.removeCssText=function(e,t){var i=g.split(e.style.cssText),o=g.split(t);for(var n in o)o.hasOwnProperty(n)&&delete i[n];e.style.cssText=g.join(i)},t.HSVToRGB=function(e,t,i){var o,n,s,r=Math.floor(6*e),a=6*e-r,d=i*(1-t),h=i*(1-a*t),l=i*(1-(1-a)*t);switch(r%6){case 0:o=i,n=l,s=d;break;case 1:o=h,n=i,s=d;break;case 2:o=d,n=i,s=l;break;case 3:o=d,n=h,s=i;break;case 4:o=l,n=d,s=i;break;case 5:o=i,n=d,s=h}return{r:Math.floor(255*o),g:Math.floor(255*n),b:Math.floor(255*s)}},t.HSVToHex=function(e,i,o){var n=t.HSVToRGB(e,i,o);return t.RGBToHex(n.r,n.g,n.b)},t.hexToHSV=function(e){var i=t.hexToRGB(e);return t.RGBToHSV(i.r,i.g,i.b)},t.isValidHex=function(e){return/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(e)},t.isValidRGB=function(e){return e=e.replace(" ",""),/rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)/i.test(e)},t.isValidRGBA=function(e){return e=e.replace(" ",""),/rgba\((\d{1,3}),(\d{1,3}),(\d{1,3}),(.{1,3})\)/i.test(e)},t.selectiveBridgeObject=function(e,i){if(null!==i&&"object"===(void 0===i?"undefined":(0,c.default)(i))){for(var o=(0,d.default)(i),n=0;n<e.length;n++)i.hasOwnProperty(e[n])&&"object"==(0,c.default)(i[e[n]])&&(o[e[n]]=t.bridgeObject(i[e[n]]));return o}return null},t.bridgeObject=function(e){if(null!==e&&"object"===(void 0===e?"undefined":(0,c.default)(e))){var i=(0,d.default)(e);if(e instanceof Element)i=e;else{i=(0,d.default)(e);for(var o in e)e.hasOwnProperty(o)&&"object"==(0,c.default)(e[o])&&(i[o]=t.bridgeObject(e[o]))}return i}return null},t.insertSort=function(e,t){for(var i=0;i<e.length;i++){for(var o=e[i],n=i;n>0&&t(o,e[n-1])<0;n--)e[n]=e[n-1];e[n]=o}return e},t.mergeOptions=function(e,t,i){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},n=function(e){return null!==e&&void 0!==e},s=function(e){return null!==e&&"object"===(void 0===e?"undefined":(0,c.default)(e))};if(!s(e))throw new Error("Parameter mergeTarget must be an object");if(!s(t))throw new Error("Parameter options must be an object");if(!n(i))throw new Error("Parameter option must have a value");if(!s(o))throw new Error("Parameter globalOptions must be an object");var r=t[i],a=s(o)&&!function(e){for(var t in e)if(e.hasOwnProperty(t))return!1;return!0}(o),h=a?o[i]:void 0,l=h?h.enabled:void 0;if(void 0!==r){if("boolean"==typeof r)return s(e[i])||(e[i]={}),void(e[i].enabled=r);if(null===r&&!s(e[i])){if(!n(h))return;e[i]=(0,d.default)(h)}if(s(r)){var u=!0;void 0!==r.enabled?u=r.enabled:void 0!==l&&(u=h.enabled),function(e,t,i){s(e[i])||(e[i]={});var o=t[i],n=e[i];for(var r in o)o.hasOwnProperty(r)&&(n[r]=o[r])}(e,t,i),e[i].enabled=u}}},t.binarySearchCustom=function(e,t,i,o){for(var n=0,s=0,r=e.length-1;s<=r&&n<1e4;){var a=Math.floor((s+r)/2),d=e[a],h=void 0===o?d[i]:d[i][o],l=t(h);if(0==l)return a;-1==l?s=a+1:r=a-1,n++}return-1},t.binarySearchValue=function(e,t,i,o,n){var s,r,a,d,h=0,l=0,u=e.length-1;for(n=void 0!=n?n:function(e,t){return e==t?0:e<t?-1:1};l<=u&&h<1e4;){if(d=Math.floor(.5*(u+l)),s=e[Math.max(0,d-1)][i],r=e[d][i],a=e[Math.min(e.length-1,d+1)][i],0==n(r,t))return d;if(n(s,t)<0&&n(r,t)>0)return"before"==o?Math.max(0,d-1):d;if(n(r,t)<0&&n(a,t)>0)return"before"==o?d:Math.min(e.length-1,d+1);n(r,t)<0?l=d+1:u=d-1,h++}return-1},t.easingFunctions={linear:function(e){return e},easeInQuad:function(e){return e*e},easeOutQuad:function(e){return e*(2-e)},easeInOutQuad:function(e){return e<.5?2*e*e:(4-2*e)*e-1},easeInCubic:function(e){return e*e*e},easeOutCubic:function(e){return--e*e*e+1},easeInOutCubic:function(e){return e<.5?4*e*e*e:(e-1)*(2*e-2)*(2*e-2)+1},easeInQuart:function(e){return e*e*e*e},easeOutQuart:function(e){return 1- --e*e*e*e},easeInOutQuart:function(e){return e<.5?8*e*e*e*e:1-8*--e*e*e*e},easeInQuint:function(e){return e*e*e*e*e},easeOutQuint:function(e){return 1+--e*e*e*e*e},easeInOutQuint:function(e){return e<.5?16*e*e*e*e*e:1+16*--e*e*e*e*e}},t.getScrollBarWidth=function(){var e=document.createElement("p");e.style.width="100%",e.style.height="200px";var t=document.createElement("div");t.style.position="absolute",t.style.top="0px",t.style.left="0px",t.style.visibility="hidden",t.style.width="200px",t.style.height="150px",t.style.overflow="hidden",t.appendChild(e),document.body.appendChild(t);var i=e.offsetWidth;t.style.overflow="scroll";var o=e.offsetWidth;return i==o&&(o=t.clientWidth),document.body.removeChild(t),i-o},t.topMost=function(e,t){var i=void 0;Array.isArray(t)||(t=[t]);var o=!0,n=!1,s=void 0;try{for(var a,d=(0,r.default)(e);!(o=(a=d.next()).done);o=!0){var h=a.value;if(h){i=h[t[0]];for(var l=1;l<t.length;l++)i&&(i=i[t[l]]);if(void 0!==i)break}}}catch(e){n=!0,s=e}finally{try{!o&&d.return&&d.return()}finally{if(n)throw s}}return i}},function(e,t){var i=e.exports={version:"2.6.2"};"number"==typeof __e&&(__e=i)},function(e,t,i){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var n=i(104),s=o(n),r=i(106),a=o(r),d="function"==typeof a.default&&"symbol"==typeof s.default?function(e){return typeof e}:function(e){return e&&"function"==typeof a.default&&e.constructor===a.default&&e!==a.default.prototype?"symbol":typeof e};t.default="function"==typeof a.default&&"symbol"===d(s.default)?function(e){return void 0===e?"undefined":d(e)}:function(e){return e&&"function"==typeof a.default&&e.constructor===a.default&&e!==a.default.prototype?"symbol":void 0===e?"undefined":d(e)}},function(e,t,i){var o=i(44)("wks"),n=i(29),s=i(10).Symbol,r="function"==typeof s;(e.exports=function(e){return o[e]||(o[e]=r&&s[e]||(r?s:n)("Symbol."+e))}).store=o},function(e,t,i){e.exports={default:i(102),__esModule:!0}},function(e,t){var i=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=i)},function(e,t,i){var o=i(10),n=i(6),s=i(61),r=i(19),a=i(14),d=function(e,t,i){var h,l,u,c=e&d.F,f=e&d.G,p=e&d.S,v=e&d.P,g=e&d.B,y=e&d.W,m=f?n:n[t]||(n[t]={}),b=m.prototype,_=f?o:p?o[t]:(o[t]||{}).prototype;f&&(i=t);for(h in i)(l=!c&&_&&void 0!==_[h])&&a(m,h)||(u=l?_[h]:i[h],m[h]=f&&"function"!=typeof _[h]?i[h]:g&&l?s(u,o):y&&_[h]==u?function(e){var t=function(t,i,o){if(this instanceof e){switch(arguments.length){case 0:return new e;case 1:return new e(t);case 2:return new e(t,i)}return new e(t,i,o)}return e.apply(this,arguments)};return t.prototype=e.prototype,t}(u):v&&"function"==typeof u?s(Function.call,u):u,v&&((m.virtual||(m.virtual={}))[h]=u,e&d.R&&b&&!b[h]&&r(b,h,u)))};d.F=1,d.G=2,d.S=4,d.P=8,d.B=16,d.W=32,d.U=64,d.R=128,e.exports=d},function(e,t,i){var o=i(20),n=i(62),s=i(40),r=Object.defineProperty;t.f=i(13)?Object.defineProperty:function(e,t,i){if(o(e),t=s(t,!0),o(i),n)try{return r(e,t,i)}catch(e){}if("get"in i||"set"in i)throw TypeError("Accessors not supported!");return"value"in i&&(e[t]=i.value),e}},function(e,t,i){e.exports=!i(22)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(e,t){var i={}.hasOwnProperty;e.exports=function(e,t){return i.call(e,t)}},function(e,t,i){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var n=i(135),s=o(n),r=i(58),a=o(r);t.default=function(){function e(e,t){var i=[],o=!0,n=!1,s=void 0;try{for(var r,d=(0,a.default)(e);!(o=(r=d.next()).done)&&(i.push(r.value),!t||i.length!==t);o=!0);}catch(e){n=!0,s=e}finally{try{!o&&d.return&&d.return()}finally{if(n)throw s}}return i}return function(t,i){if(Array.isArray(t))return t;if((0,s.default)(Object(t)))return e(t,i);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}()},function(e,t,i){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var n=i(7),s=o(n),r=i(0),a=o(r),d=i(1),h=o(d),l=function(){function e(t,i,o){(0,a.default)(this,e),this.body=i,this.labelModule=o,this.setOptions(t),this.top=void 0,this.left=void 0,this.height=void 0,this.width=void 0,this.radius=void 0,this.margin=void 0,this.refreshNeeded=!0,this.boundingBox={top:0,left:0,right:0,bottom:0}}return(0,h.default)(e,[{key:"setOptions",value:function(e){this.options=e}},{key:"_setMargins",value:function(e){this.margin={},this.options.margin&&("object"==(0,s.default)(this.options.margin)?(this.margin.top=this.options.margin.top,this.margin.right=this.options.margin.right,this.margin.bottom=this.options.margin.bottom,this.margin.left=this.options.margin.left):(this.margin.top=this.options.margin,this.margin.right=this.options.margin,this.margin.bottom=this.options.margin,this.margin.left=this.options.margin)),e.adjustSizes(this.margin)}},{key:"_distanceToBorder",value:function(e,t){var i=this.options.borderWidth;return this.resize(e),Math.min(Math.abs(this.width/2/Math.cos(t)),Math.abs(this.height/2/Math.sin(t)))+i}},{key:"enableShadow",value:function(e,t){t.shadow&&(e.shadowColor=t.shadowColor,e.shadowBlur=t.shadowSize,e.shadowOffsetX=t.shadowX,e.shadowOffsetY=t.shadowY)}},{key:"disableShadow",value:function(e,t){t.shadow&&(e.shadowColor="rgba(0,0,0,0)",e.shadowBlur=0,e.shadowOffsetX=0,e.shadowOffsetY=0)}},{key:"enableBorderDashes",value:function(e,t){if(!1!==t.borderDashes)if(void 0!==e.setLineDash){var i=t.borderDashes;!0===i&&(i=[5,15]),e.setLineDash(i)}else console.warn("setLineDash is not supported in this browser. The dashed borders cannot be used."),this.options.shapeProperties.borderDashes=!1,t.borderDashes=!1}},{key:"disableBorderDashes",value:function(e,t){!1!==t.borderDashes&&(void 0!==e.setLineDash?e.setLineDash([0]):(console.warn("setLineDash is not supported in this browser. The dashed borders cannot be used."),this.options.shapeProperties.borderDashes=!1,t.borderDashes=!1))}},{key:"needsRefresh",value:function(e,t){return!0===this.refreshNeeded?(this.refreshNeeded=!1,!0):void 0===this.width||this.labelModule.differentState(e,t)}},{key:"initContextForDraw",value:function(e,t){var i=t.borderWidth/this.body.view.scale;e.lineWidth=Math.min(this.width,i),e.strokeStyle=t.borderColor,e.fillStyle=t.color}},{key:"performStroke",value:function(e,t){var i=t.borderWidth/this.body.view.scale;e.save(),i>0&&(this.enableBorderDashes(e,t),e.stroke(),this.disableBorderDashes(e,t)),e.restore()}},{key:"performFill",value:function(e,t){this.enableShadow(e,t),e.fill(),this.disableShadow(e,t),this.performStroke(e,t)}},{key:"_addBoundingBoxMargin",value:function(e){this.boundingBox.left-=e,this.boundingBox.top-=e,this.boundingBox.bottom+=e,this.boundingBox.right+=e}},{key:"_updateBoundingBox",value:function(e,t,i,o,n){void 0!==i&&this.resize(i,o,n),this.left=e-this.width/2,this.top=t-this.height/2,this.boundingBox.left=this.left,this.boundingBox.top=this.top,this.boundingBox.bottom=this.top+this.height,this.boundingBox.right=this.left+this.width}},{key:"updateBoundingBox",value:function(e,t,i,o,n){this._updateBoundingBox(e,t,i,o,n)}},{key:"getDimensionsFromLabel",value:function(e,t,i){this.textSize=this.labelModule.getTextSize(e,t,i);var o=this.textSize.width,n=this.textSize.height;return 0===o&&(o=14,n=14),{width:o,height:n}}}]),e}();t.default=l},function(e,t,i){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var n=i(2),s=o(n),r=i(0),a=o(r),d=i(1),h=o(d),l=i(3),u=o(l),c=i(4),f=o(c),p=i(16),v=o(p),g=function(e){function t(e,i,o){return(0,a.default)(this,t),(0,u.default)(this,(t.__proto__||(0,s.default)(t)).call(this,e,i,o))}return(0,f.default)(t,e),(0,h.default)(t,[{key:"resize",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.selected,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.hover,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{size:this.options.size};if(this.needsRefresh(t,i)){this.labelModule.getTextSize(e,t,i);var n=2*o.size;this.width=n,this.height=n,this.radius=.5*this.width}}},{key:"_drawShape",value:function(e,t,i,o,n,s,r,a){if(this.resize(e,s,r,a),this.left=o-this.width/2,this.top=n-this.height/2,this.initContextForDraw(e,a),e[t](o,n,a.size),this.performFill(e,a),void 0!==this.options.icon&&void 0!==this.options.icon.code&&(e.font=(s?"bold ":"")+this.height/2+"px "+(this.options.icon.face||"FontAwesome"),e.fillStyle=this.options.icon.color||"black",e.textAlign="center",e.textBaseline="middle",e.fillText(this.options.icon.code,o,n)),void 0!==this.options.label){this.labelModule.calculateLabelSize(e,s,r,o,n,"hanging");var d=n+.5*this.height+.5*this.labelModule.size.height;this.labelModule.draw(e,o,d,s,r,"hanging")}this.updateBoundingBox(o,n)}},{key:"updateBoundingBox",value:function(e,t){this.boundingBox.top=t-this.options.size,this.boundingBox.left=e-this.options.size,this.boundingBox.right=e+this.options.size,this.boundingBox.bottom=t+this.options.size,void 0!==this.options.label&&this.labelModule.size.width>0&&(this.boundingBox.left=Math.min(this.boundingBox.left,this.labelModule.size.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelModule.size.left+this.labelModule.size.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelModule.size.height))}}]),t}(v.default);t.default=g},function(e,t,i){var o=i(59),n=i(39);e.exports=function(e){return o(n(e))}},function(e,t,i){var o=i(12),n=i(28);e.exports=i(13)?function(e,t,i){return o.f(e,t,n(1,i))}:function(e,t,i){return e[t]=i,e}},function(e,t,i){var o=i(21);e.exports=function(e){if(!o(e))throw TypeError(e+" is not an object!");return e}},function(e,t){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},function(e,t){e.exports=function(e){try{return!!e()}catch(e){return!0}}},function(e,t,i){e.exports={default:i(122),__esModule:!0}},function(e,t,i){"use strict";function o(){var e=function(){};return{on:e,off:e,destroy:e,emit:e,get:function(t){return{set:e}}}}if("undefined"!=typeof window){var n=i(126),s=window.Hammer||i(127);e.exports=n(s,{preventDefault:"mouse"})}else e.exports=function(){return o()}},function(e,t){e.exports={}},function(e,t,i){var o=i(65),n=i(45);e.exports=Object.keys||function(e){return o(e,n)}},function(e,t){e.exports=!0},function(e,t){e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},function(e,t){var i=0,o=Math.random();e.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++i+o).toString(36))}},function(e,t,i){var o=i(39);e.exports=function(e){return Object(o(e))}},function(e,t,i){e.exports={default:i(100),__esModule:!0}},function(e,t){t.f={}.propertyIsEnumerable},function(e,t,i){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function n(e,t){if(e&&!Array.isArray(e)&&(t=e,e=null),this._options=t||{},this._data={},this.length=0,this._fieldId=this._options.fieldId||"id",this._type={},this._options.type)for(var i=(0,l.default)(this._options.type),o=0,n=i.length;o<n;o++){var s=i[o],r=this._options.type[s];this._type[s]="Date"==r||"ISODate"==r||"ASPDate"==r?"Date":r}this._subscribers={},e&&this.add(e),this.setOptions(t)}var s=i(23),r=o(s),a=i(7),d=o(a),h=i(9),l=o(h),u=i(5),c=i(72);n.prototype.setOptions=function(e){e&&void 0!==e.queue&&(!1===e.queue?this._queue&&(this._queue.destroy(),delete this._queue):(this._queue||(this._queue=c.extend(this,{replace:["add","update","remove"]})),"object"===(0,d.default)(e.queue)&&this._queue.setOptions(e.queue)))},n.prototype.on=function(e,t){var i=this._subscribers[e];i||(i=[],this._subscribers[e]=i),i.push({callback:t})},n.prototype.off=function(e,t){var i=this._subscribers[e];i&&(this._subscribers[e]=i.filter(function(e){return e.callback!=t}))},n.prototype._trigger=function(e,t,i){if("*"==e)throw new Error("Cannot trigger event *");var o=[];e in this._subscribers&&(o=o.concat(this._subscribers[e])),"*"in this._subscribers&&(o=o.concat(this._subscribers["*"]));for(var n=0,s=o.length;n<s;n++){var r=o[n];r.callback&&r.callback(e,t,i||null)}},n.prototype.add=function(e,t){var i,o=[],n=this;if(Array.isArray(e))for(var s=0,r=e.length;s<r;s++)i=n._addItem(e[s]),o.push(i);else{if(!e||"object"!==(void 0===e?"undefined":(0,d.default)(e)))throw new Error("Unknown dataType");i=n._addItem(e),o.push(i)}return o.length&&this._trigger("add",{items:o},t),o},n.prototype.update=function(e,t){var i=[],o=[],n=[],s=[],r=this,a=r._fieldId,h=function(e){var t=e[a];if(r._data[t]){var d=u.extend({},r._data[t]);t=r._updateItem(e),o.push(t),s.push(e),n.push(d)}else t=r._addItem(e),i.push(t)};if(Array.isArray(e))for(var l=0,c=e.length;l<c;l++)e[l]&&"object"===(0,d.default)(e[l])?h(e[l]):console.warn("Ignoring input item, which is not an object at index "+l);else{if(!e||"object"!==(void 0===e?"undefined":(0,d.default)(e)))throw new Error("Unknown dataType");h(e)}if(i.length&&this._trigger("add",{items:i},t),o.length){var f={items:o,oldData:n,data:s};this._trigger("update",f,t)}return i.concat(o)},n.prototype.get=function(e){var t,i,o,n=this,s=u.getType(arguments[0]);"String"==s||"Number"==s?(t=arguments[0],o=arguments[1]):"Array"==s?(i=arguments[0],o=arguments[1]):o=arguments[0];var r;if(o&&o.returnType){r=-1==["Array","Object"].indexOf(o.returnType)?"Array":o.returnType}else r="Array";var a,d,h,c,f,p=o&&o.type||this._options.type,v=o&&o.filter,g=[];if(void 0!=t)(a=n._getItem(t,p))&&v&&!v(a)&&(a=null);else if(void 0!=i)for(c=0,f=i.length;c<f;c++)a=n._getItem(i[c],p),v&&!v(a)||g.push(a);else for(d=(0,l.default)(this._data),c=0,f=d.length;c<f;c++)h=d[c],a=n._getItem(h,p),v&&!v(a)||g.push(a);if(o&&o.order&&void 0==t&&this._sort(g,o.order),o&&o.fields){var y=o.fields;if(void 0!=t)a=this._filterFields(a,y);else for(c=0,f=g.length;c<f;c++)g[c]=this._filterFields(g[c],y)}if("Object"==r){var m,b={};for(c=0,f=g.length;c<f;c++)m=g[c],b[m.id]=m;return b}return void 0!=t?a:g},n.prototype.getIds=function(e){var t,i,o,n,s,r=this._data,a=e&&e.filter,d=e&&e.order,h=e&&e.type||this._options.type,u=(0,l.default)(r),c=[];if(a)if(d){for(s=[],t=0,i=u.length;t<i;t++)o=u[t],n=this._getItem(o,h),a(n)&&s.push(n);for(this._sort(s,d),t=0,i=s.length;t<i;t++)c.push(s[t][this._fieldId])}else for(t=0,i=u.length;t<i;t++)o=u[t],n=this._getItem(o,h),a(n)&&c.push(n[this._fieldId]);else if(d){for(s=[],t=0,i=u.length;t<i;t++)o=u[t],s.push(r[o]);for(this._sort(s,d),t=0,i=s.length;t<i;t++)c.push(s[t][this._fieldId])}else for(t=0,i=u.length;t<i;t++)o=u[t],n=r[o],c.push(n[this._fieldId]);return c},n.prototype.getDataSet=function(){return this},n.prototype.forEach=function(e,t){var i,o,n,s,r=t&&t.filter,a=t&&t.type||this._options.type,d=this._data,h=(0,l.default)(d);if(t&&t.order){var u=this.get(t);for(i=0,o=u.length;i<o;i++)n=u[i],s=n[this._fieldId],e(n,s)}else for(i=0,o=h.length;i<o;i++)s=h[i],n=this._getItem(s,a),r&&!r(n)||e(n,s)},n.prototype.map=function(e,t){var i,o,n,s,r=t&&t.filter,a=t&&t.type||this._options.type,d=[],h=this._data,u=(0,l.default)(h);for(i=0,o=u.length;i<o;i++)n=u[i],s=this._getItem(n,a),r&&!r(s)||d.push(e(s,n));return t&&t.order&&this._sort(d,t.order),d},n.prototype._filterFields=function(e,t){if(!e)return e;var i,o,n={},s=(0,l.default)(e),r=s.length;if(Array.isArray(t))for(i=0;i<r;i++)o=s[i],-1!=t.indexOf(o)&&(n[o]=e[o]);else for(i=0;i<r;i++)o=s[i],t.hasOwnProperty(o)&&(n[t[o]]=e[o]);return n},n.prototype._sort=function(e,t){if(u.isString(t)){var i=t;e.sort(function(e,t){var o=e[i],n=t[i];return o>n?1:o<n?-1:0})}else{if("function"!=typeof t)throw new TypeError("Order must be a function or a string");e.sort(t)}},n.prototype.remove=function(e,t){var i,o,n,s,r=[],a=[],d=[];for(d=Array.isArray(e)?e:[e],i=0,o=d.length;i<o;i++)(s=this._remove(d[i]))&&void 0!=(n=s[this._fieldId])&&(r.push(n),a.push(s));return r.length&&this._trigger("remove",{items:r,oldData:a},t),r},n.prototype._remove=function(e){var t,i;return u.isNumber(e)||u.isString(e)?i=e:e&&"object"===(void 0===e?"undefined":(0,d.default)(e))&&(i=e[this._fieldId]),void 0!==i&&this._data[i]?(t=this._data[i],delete this._data[i],this.length--,t):null},n.prototype.clear=function(e){var t,i,o=(0,l.default)(this._data),n=[];for(t=0,i=o.length;t<i;t++)n.push(this._data[o[t]]);return this._data={},this.length=0,this._trigger("remove",{items:o,oldData:n},e),o},n.prototype.max=function(e){var t,i,o=this._data,n=(0,l.default)(o),s=null,r=null;for(t=0,i=n.length;t<i;t++){var a=n[t],d=o[a],h=d[e];null!=h&&(!s||h>r)&&(s=d,r=h)}return s},n.prototype.min=function(e){var t,i,o=this._data,n=(0,l.default)(o),s=null,r=null;for(t=0,i=n.length;t<i;t++){var a=n[t],d=o[a],h=d[e];null!=h&&(!s||h<r)&&(s=d,r=h)}return s},n.prototype.distinct=function(e){var t,i,o,n=this._data,s=(0,l.default)(n),r=[],a=this._options.type&&this._options.type[e]||null,d=0;for(t=0,o=s.length;t<o;t++){var h=s[t],c=n[h],f=c[e],p=!1;for(i=0;i<d;i++)if(r[i]==f){p=!0;break}p||void 0===f||(r[d]=f,d++)}if(a)for(t=0,o=r.length;t<o;t++)r[t]=u.convert(r[t],a);return r},n.prototype._addItem=function(e){var t=e[this._fieldId];if(void 0!=t){if(this._data[t])throw new Error("Cannot add item: item with id "+t+" already exists")}else t=u.randomUUID(),e[this._fieldId]=t;var i,o,n={},s=(0,l.default)(e);for(i=0,o=s.length;i<o;i++){var r=s[i],a=this._type[r];n[r]=u.convert(e[r],a)}return this._data[t]=n,this.length++,t},n.prototype._getItem=function(e,t){var i,o,n,s,r=this._data[e];if(!r)return null;var a={},d=(0,l.default)(r);if(t)for(n=0,s=d.length;n<s;n++)i=d[n],o=r[i],a[i]=u.convert(o,t[i]);else for(n=0,s=d.length;n<s;n++)i=d[n],o=r[i],a[i]=o;return a[this._fieldId]||(a[this._fieldId]=r.id),a},n.prototype._updateItem=function(e){var t=e[this._fieldId];if(void 0==t)throw new Error("Cannot update item: item has no id (item: "+(0,r.default)(e)+")");var i=this._data[t];if(!i)throw new Error("Cannot update item: no item with id "+t+" found");for(var o=(0,l.default)(e),n=0,s=o.length;n<s;n++){var a=o[n],d=this._type[a];i[a]=u.convert(e[a],d)}return t},e.exports=n},function(e,t,i){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var n=i(0),s=o(n),r=i(1),a=o(r),d=i(5),h=i(77).default,l=i(35).default,u=i(143).default,c=i(150).default,f=i(151).default,p=i(152).default,v=i(153).default,g=i(154).default,y=i(155).default,m=i(156).default,b=i(157).default,_=i(158).default,w=i(159).default,k=i(160).default,x=i(161).default,O=i(162).default,M=i(163).default,E=i(54),S=E.printStyle,D=function(){function e(t,i,o,n,r,a){(0,s.default)(this,e),this.options=d.bridgeObject(r),this.globalOptions=r,this.defaultOptions=a,this.body=i,this.edges=[],this.id=void 0,this.imagelist=o,this.grouplist=n,this.x=void 0,this.y=void 0,this.baseSize=this.options.size,this.baseFontSize=this.options.font.size,this.predefinedPosition=!1,this.selected=!1,this.hover=!1,this.labelModule=new h(this.body,this.options,!1),this.setOptions(t)}return(0,a.default)(e,[{key:"attachEdge",value:function(e){-1===this.edges.indexOf(e)&&this.edges.push(e)}},{key:"detachEdge",value:function(e){var t=this.edges.indexOf(e);-1!=t&&this.edges.splice(t,1)}},{key:"setOptions",value:function(t){var i=this.options.shape;if(t){if(void 0!==t.id&&(this.id=t.id),void 0===this.id)throw new Error("Node must have an id");e.checkMass(t,this.id),void 0!==t.x&&(null===t.x?(this.x=void 0,this.predefinedPosition=!1):(this.x=parseInt(t.x),this.predefinedPosition=!0)),void 0!==t.y&&(null===t.y?(this.y=void 0,this.predefinedPosition=!1):(this.y=parseInt(t.y),this.predefinedPosition=!0)),void 0!==t.size&&(this.baseSize=t.size),void 0!==t.value&&(t.value=parseFloat(t.value)),e.parseOptions(this.options,t,!0,this.globalOptions,this.grouplist);var o=[t,this.options,this.defaultOptions];return this.chooser=l.choosify("node",o),this._load_images(),this.updateLabelModule(t),this.updateShape(i),void 0!==t.hidden||void 0!==t.physics}}},{key:"_load_images",value:function(){if(("circularImage"===this.options.shape||"image"===this.options.shape)&&void 0===this.options.image)throw new Error("Option image must be defined for node type '"+this.options.shape+"'");if(void 0!==this.options.image){if(void 0===this.imagelist)throw new Error("Internal Error: No images provided");if("string"==typeof this.options.image)this.imageObj=this.imagelist.load(this.options.image,this.options.brokenImage,this.id);else{if(void 0===this.options.image.unselected)throw new Error("No unselected image provided");this.imageObj=this.imagelist.load(this.options.image.unselected,this.options.brokenImage,this.id),void 0!==this.options.image.selected?this.imageObjAlt=this.imagelist.load(this.options.image.selected,this.options.brokenImage,this.id):this.imageObjAlt=void 0}}}},{key:"getFormattingValues",value:function(){var e={color:this.options.color.background,borderWidth:this.options.borderWidth,borderColor:this.options.color.border,size:this.options.size,borderDashes:this.options.shapeProperties.borderDashes,borderRadius:this.options.shapeProperties.borderRadius,shadow:this.options.shadow.enabled,shadowColor:this.options.shadow.color,shadowSize:this.options.shadow.size,shadowX:this.options.shadow.x,shadowY:this.options.shadow.y};return this.selected||this.hover?!0===this.chooser?this.selected?(e.borderWidth*=2,e.color=this.options.color.highlight.background,e.borderColor=this.options.color.highlight.border,e.shadow=this.options.shadow.enabled):this.hover&&(e.color=this.options.color.hover.background,e.borderColor=this.options.color.hover.border,e.shadow=this.options.shadow.enabled):"function"==typeof this.chooser&&(this.chooser(e,this.options.id,this.selected,this.hover),!1===e.shadow&&(e.shadowColor===this.options.shadow.color&&e.shadowSize===this.options.shadow.size&&e.shadowX===this.options.shadow.x&&e.shadowY===this.options.shadow.y||(e.shadow=!0))):e.shadow=this.options.shadow.enabled,e}},{key:"updateLabelModule",value:function(t){void 0!==this.options.label&&null!==this.options.label||(this.options.label=""),e.updateGroupOptions(this.options,t,this.grouplist);var i=this.grouplist.get(this.options.group,!1),o=[t,this.options,i,this.globalOptions,this.defaultOptions];this.labelModule.update(this.options,o),void 0!==this.labelModule.baseSize&&(this.baseFontSize=this.labelModule.baseSize)}},{key:"updateShape",value:function(e){if(e===this.options.shape&&this.shape)this.shape.setOptions(this.options,this.imageObj,this.imageObjAlt);else switch(this.options.shape){case"box":this.shape=new u(this.options,this.body,this.labelModule);break;case"circle":this.shape=new c(this.options,this.body,this.labelModule);break;case"circularImage":this.shape=new f(this.options,this.body,this.labelModule,this.imageObj,this.imageObjAlt);break;case"database":this.shape=new p(this.options,this.body,this.labelModule);break;case"diamond":this.shape=new v(this.options,this.body,this.labelModule);break;case"dot":this.shape=new g(this.options,this.body,this.labelModule);break;case"ellipse":this.shape=new y(this.options,this.body,this.labelModule);break;case"icon":this.shape=new m(this.options,this.body,this.labelModule);break;case"image":this.shape=new b(this.options,this.body,this.labelModule,this.imageObj,this.imageObjAlt);break;case"square":this.shape=new _(this.options,this.body,this.labelModule);break;case"hexagon":this.shape=new w(this.options,this.body,this.labelModule);break;case"star":this.shape=new k(this.options,this.body,this.labelModule);break;case"text":this.shape=new x(this.options,this.body,this.labelModule);break;case"triangle":this.shape=new O(this.options,this.body,this.labelModule);break;case"triangleDown":this.shape=new M(this.options,this.body,this.labelModule);break;default:this.shape=new y(this.options,this.body,this.labelModule)}this.needsRefresh()}},{key:"select",value:function(){this.selected=!0,this.needsRefresh()}},{key:"unselect",value:function(){this.selected=!1,this.needsRefresh()}},{key:"needsRefresh",value:function(){this.shape.refreshNeeded=!0}},{key:"getTitle",value:function(){return this.options.title}},{key:"distanceToBorder",value:function(e,t){return this.shape.distanceToBorder(e,t)}},{key:"isFixed",value:function(){return this.options.fixed.x&&this.options.fixed.y}},{key:"isSelected",value:function(){return this.selected}},{key:"getValue",value:function(){return this.options.value}},{key:"getLabelSize",value:function(){return this.labelModule.size()}},{key:"setValueRange",value:function(e,t,i){if(void 0!==this.options.value){var o=this.options.scaling.customScalingFunction(e,t,i,this.options.value),n=this.options.scaling.max-this.options.scaling.min;if(!0===this.options.scaling.label.enabled){var s=this.options.scaling.label.max-this.options.scaling.label.min;this.options.font.size=this.options.scaling.label.min+o*s}this.options.size=this.options.scaling.min+o*n}else this.options.size=this.baseSize,this.options.font.size=this.baseFontSize;this.updateLabelModule()}},{key:"draw",value:function(e){var t=this.getFormattingValues();this.shape.draw(e,this.x,this.y,this.selected,this.hover,t)}},{key:"updateBoundingBox",value:function(e){this.shape.updateBoundingBox(this.x,this.y,e)}},{key:"resize",value:function(e){var t=this.getFormattingValues();this.shape.resize(e,this.selected,this.hover,t)}},{key:"getItemsOnPoint",value:function(e){var t=[];return this.labelModule.visible()&&l.pointInRect(this.labelModule.getSize(),e)&&t.push({nodeId:this.id,labelId:0}),l.pointInRect(this.shape.boundingBox,e)&&t.push({nodeId:this.id}),t}},{key:"isOverlappingWith",value:function(e){return this.shape.left<e.right&&this.shape.left+this.shape.width>e.left&&this.shape.top<e.bottom&&this.shape.top+this.shape.height>e.top}},{key:"isBoundingBoxOverlappingWith",value:function(e){return this.shape.boundingBox.left<e.right&&this.shape.boundingBox.right>e.left&&this.shape.boundingBox.top<e.bottom&&this.shape.boundingBox.bottom>e.top}}],[{key:"updateGroupOptions",value:function(e,t,i){if(void 0!==i){var o=e.group;if(void 0!==t&&void 0!==t.group&&o!==t.group)throw new Error("updateGroupOptions: group values in options don't match.");if("number"==typeof o||"string"==typeof o&&""!=o){var n=i.get(o),s=["font"];void 0!==t&&void 0!==t.color&&null!=t.color&&s.push("color"),d.selectiveNotDeepExtend(s,e,n),e.color=d.parseColor(e.color)}}}},{key:"parseOptions",value:function(t,i){var o=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},s=arguments[4],r=["color","fixed","shadow"];if(d.selectiveNotDeepExtend(r,t,i,o),e.checkMass(i),d.mergeOptions(t,i,"shadow",n),void 0!==i.color&&null!==i.color){var a=d.parseColor(i.color);d.fillIfDefined(t.color,a)}else!0===o&&null===i.color&&(t.color=d.bridgeObject(n.color));void 0!==i.fixed&&null!==i.fixed&&("boolean"==typeof i.fixed?(t.fixed.x=i.fixed,t.fixed.y=i.fixed):(void 0!==i.fixed.x&&"boolean"==typeof i.fixed.x&&(t.fixed.x=i.fixed.x),void 0!==i.fixed.y&&"boolean"==typeof i.fixed.y&&(t.fixed.y=i.fixed.y))),!0===o&&null===i.font&&(t.font=d.bridgeObject(n.font)),e.updateGroupOptions(t,i,s),void 0!==i.scaling&&d.mergeOptions(t.scaling,i.scaling,"label",n.scaling)}},{key:"checkMass",value:function(e,t){if(void 0!==e.mass&&e.mass<=0){var i="";void 0!==t&&(i=" in node id: "+t),console.log("%cNegative or zero mass disallowed"+i+", setting mass to 1.",S),e.mass=1}}}]),e}();t.default=D},function(e,t,i){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var n=i(7),s=o(n),r=i(0),a=o(r),d=i(1),h=o(d),l=i(5),u=function(){function e(){(0,a.default)(this,e)}return(0,h.default)(e,null,[{key:"choosify",value:function(e,t){var i=["node","edge","label"],o=!0,n=l.topMost(t,"chosen");if("boolean"==typeof n)o=n;else if("object"===(void 0===n?"undefined":(0,s.default)(n))){if(-1===i.indexOf(e))throw new Error("choosify: subOption '"+e+"' should be one of '"+i.join("', '")+"'");var r=l.topMost(t,["chosen",e]);"boolean"!=typeof r&&"function"!=typeof r||(o=r)}return o}},{key:"pointInRect",value:function(e,t,i){if(e.width<=0||e.height<=0)return!1;if(void 0!==i){var o={x:t.x-i.x,y:t.y-i.y};if(0!==i.angle){var n=-i.angle;t={x:Math.cos(n)*o.x-Math.sin(n)*o.y,y:Math.sin(n)*o.x+Math.cos(n)*o.y}}else t=o}var s=e.x+e.width,r=e.y+e.width;return e.left<t.x&&s>t.x&&e.top<t.y&&r>t.y}},{key:"isValidLabel",value:function(e){return"string"==typeof e&&""!==e}}]),e}();t.default=u},function(e,t,i){"use strict";t.onTouch=function(e,t){t.inputHandler=function(e){e.isFirst&&t(e)},e.on("hammer.input",t.inputHandler)},t.onRelease=function(e,t){return t.inputHandler=function(e){e.isFinal&&t(e)},e.on("hammer.input",t.inputHandler)},t.offTouch=function(e,t){e.off("hammer.input",t.inputHandler)},t.offRelease=t.offTouch,t.disablePreventDefaultVertically=function(e){return e.getTouchAction=function(){return["pan-y"]},e}},function(e,t,i){i(87);for(var o=i(10),n=i(19),s=i(25),r=i(8)("toStringTag"),a="CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList".split(","),d=0;d<a.length;d++){var h=a[d],l=o[h],u=l&&l.prototype;u&&!u[r]&&n(u,r,h),s[h]=s.Array}},function(e,t){var i={}.toString;e.exports=function(e){return i.call(e).slice(8,-1)}},function(e,t){e.exports=function(e){if(void 0==e)throw TypeError("Can't call method on "+e);return e}},function(e,t,i){var o=i(21);e.exports=function(e,t){if(!o(e))return e;var i,n;if(t&&"function"==typeof(i=e.toString)&&!o(n=i.call(e)))return n;if("function"==typeof(i=e.valueOf)&&!o(n=i.call(e)))return n;if(!t&&"function"==typeof(i=e.toString)&&!o(n=i.call(e)))return n;throw TypeError("Can't convert object to primitive value")}},function(e,t,i){var o=i(20),n=i(92),s=i(45),r=i(43)("IE_PROTO"),a=function(){},d=function(){var e,t=i(63)("iframe"),o=s.length;for(t.style.display="none",i(96).appendChild(t),t.src="javascript:",e=t.contentWindow.document,e.open(),e.write("<script>document.F=Object<\/script>"),e.close(),d=e.F;o--;)delete d.prototype[s[o]];return d()};e.exports=Object.create||function(e,t){var i;return null!==e?(a.prototype=o(e),i=new a,a.prototype=null,i[r]=e):i=d(),void 0===t?i:n(i,t)}},function(e,t){var i=Math.ceil,o=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?o:i)(e)}},function(e,t,i){var o=i(44)("keys"),n=i(29);e.exports=function(e){return o[e]||(o[e]=n(e))}},function(e,t,i){var o=i(6),n=i(10),s=n["__core-js_shared__"]||(n["__core-js_shared__"]={});(e.exports=function(e,t){return s[e]||(s[e]=void 0!==t?t:{})})("versions",[]).push({version:o.version,mode:i(27)?"pure":"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})},function(e,t){e.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(e,t,i){var o=i(12).f,n=i(14),s=i(8)("toStringTag");e.exports=function(e,t,i){e&&!n(e=i?e:e.prototype,s)&&o(e,s,{configurable:!0,value:t})}},function(e,t,i){"use strict";var o=i(97)(!0);i(60)(String,"String",function(e){this._t=String(e),this._i=0},function(){var e,t=this._t,i=this._i;return i>=t.length?{value:void 0,done:!0}:(e=o(t,i),this._i+=e.length,{value:e,done:!1})})},function(e,t,i){t.f=i(8)},function(e,t,i){var o=i(10),n=i(6),s=i(27),r=i(48),a=i(12).f;e.exports=function(e){var t=n.Symbol||(n.Symbol=s?{}:o.Symbol||{});"_"==e.charAt(0)||e in t||a(t,e,{value:r.f(e)})}},function(e,t){t.f=Object.getOwnPropertySymbols},function(e,t,i){"use strict";function o(e,t){this._data=null,this._ids={},this.length=0,this._options=t||{},this._fieldId="id",this._subscribers={};var i=this;this.listener=function(){i._onEvent.apply(i,arguments)},this.setData(e)}var n=i(9),s=function(e){return e&&e.__esModule?e:{default:e}}(n),r=i(5),a=i(33);o.prototype.setData=function(e){var t,i,o,n,s;if(this._data){for(this._data.off&&this._data.off("*",this.listener),t=this._data.getIds({filter:this._options&&this._options.filter}),s=[],o=0,n=t.length;o<n;o++)s.push(this._data._data[t[o]]);this._ids={},this.length=0,this._trigger("remove",{items:t,oldData:s})}if(this._data=e,this._data){for(this._fieldId=this._options.fieldId||this._data&&this._data.options&&this._data.options.fieldId||"id",t=this._data.getIds({filter:this._options&&this._options.filter}),o=0,n=t.length;o<n;o++)i=t[o],this._ids[i]=!0;this.length=t.length,this._trigger("add",{items:t}),this._data.on&&this._data.on("*",this.listener)}},o.prototype.refresh=function(){var e,t,i,o=this._data.getIds({filter:this._options&&this._options.filter}),n=(0,s.default)(this._ids),r={},a=[],d=[],h=[];for(t=0,i=o.length;t<i;t++)e=o[t],r[e]=!0,this._ids[e]||(a.push(e),this._ids[e]=!0);for(t=0,i=n.length;t<i;t++)e=n[t],r[e]||(d.push(e),h.push(this._data._data[e]),delete this._ids[e]);this.length+=a.length-d.length,a.length&&this._trigger("add",{items:a}),d.length&&this._trigger("remove",{items:d,oldData:h})},o.prototype.get=function(e){var t,i,o,n=this,s=r.getType(arguments[0]);"String"==s||"Number"==s||"Array"==s?(t=arguments[0],i=arguments[1],o=arguments[2]):(i=arguments[0],o=arguments[1]);var a=r.extend({},this._options,i);this._options.filter&&i&&i.filter&&(a.filter=function(e){return n._options.filter(e)&&i.filter(e)});var d=[];return void 0!=t&&d.push(t),d.push(a),d.push(o),this._data&&this._data.get.apply(this._data,d)},o.prototype.getIds=function(e){var t;if(this._data){var i,o=this._options.filter;i=e&&e.filter?o?function(t){return o(t)&&e.filter(t)}:e.filter:o,t=this._data.getIds({filter:i,order:e&&e.order})}else t=[];return t},o.prototype.map=function(e,t){var i=[];if(this._data){var o,n=this._options.filter;o=t&&t.filter?n?function(e){return n(e)&&t.filter(e)}:t.filter:n,i=this._data.map(e,{filter:o,order:t&&t.order})}else i=[];return i},o.prototype.getDataSet=function(){for(var e=this;e instanceof o;)e=e._data;return e||null},o.prototype._onEvent=function(e,t,i){var o,n,s,r,a=t&&t.items,d=[],h=[],l=[],u=[],c=[],f=[];if(a&&this._data){switch(e){case"add":for(o=0,n=a.length;o<n;o++)s=a[o],(r=this.get(s))&&(this._ids[s]=!0,d.push(s));break;case"update":for(o=0,n=a.length;o<n;o++)s=a[o],r=this.get(s),r?this._ids[s]?(h.push(s),c.push(t.data[o]),u.push(t.oldData[o])):(this._ids[s]=!0,d.push(s)):this._ids[s]&&(delete this._ids[s],l.push(s),f.push(t.oldData[o]));break;case"remove":for(o=0,n=a.length;o<n;o++)s=a[o],this._ids[s]&&(delete this._ids[s],l.push(s),f.push(t.oldData[o]))}this.length+=d.length-l.length,d.length&&this._trigger("add",{items:d},i),h.length&&this._trigger("update",{items:h,oldData:u,data:c},i),l.length&&this._trigger("remove",{items:l,oldData:f},i)}},o.prototype.on=a.prototype.on,o.prototype.off=a.prototype.off,o.prototype._trigger=a.prototype._trigger,o.prototype.subscribe=o.prototype.on,o.prototype.unsubscribe=o.prototype.off,e.exports=o},function(e,t,i){"use strict";var o,n,s;!function(i,r){n=[],o=r,void 0!==(s="function"==typeof o?o.apply(t,n):o)&&(e.exports=s)}(0,function(){function e(e){var t,i=e&&e.preventDefault||!1,o=e&&e.container||window,n={},s={keydown:{},keyup:{}},r={};for(t=97;t<=122;t++)r[String.fromCharCode(t)]={code:t-97+65,shift:!1};for(t=65;t<=90;t++)r[String.fromCharCode(t)]={code:t,shift:!0};for(t=0;t<=9;t++)r[""+t]={code:48+t,shift:!1};for(t=1;t<=12;t++)r["F"+t]={code:111+t,shift:!1};for(t=0;t<=9;t++)r["num"+t]={code:96+t,shift:!1};r["num*"]={code:106,shift:!1},r["num+"]={code:107,shift:!1},r["num-"]={code:109,shift:!1},r["num/"]={code:111,shift:!1},r["num."]={code:110,shift:!1},r.left={code:37,shift:!1},r.up={code:38,shift:!1},r.right={code:39,shift:!1},r.down={code:40,shift:!1},r.space={code:32,shift:!1},r.enter={code:13,shift:!1},r.shift={code:16,shift:void 0},r.esc={code:27,shift:!1},r.backspace={code:8,shift:!1},r.tab={code:9,shift:!1},r.ctrl={code:17,shift:!1},r.alt={code:18,shift:!1},r.delete={code:46,shift:!1},r.pageup={code:33,shift:!1},r.pagedown={code:34,shift:!1},r["="]={code:187,shift:!1},r["-"]={code:189,shift:!1},r["]"]={code:221,shift:!1},r["["]={code:219,shift:!1};var a=function(e){h(e,"keydown")},d=function(e){h(e,"keyup")},h=function(e,t){if(void 0!==s[t][e.keyCode]){for(var o=s[t][e.keyCode],n=0;n<o.length;n++)void 0===o[n].shift?o[n].fn(e):1==o[n].shift&&1==e.shiftKey?o[n].fn(e):0==o[n].shift&&0==e.shiftKey&&o[n].fn(e);1==i&&e.preventDefault()}};return n.bind=function(e,t,i){if(void 0===i&&(i="keydown"),void 0===r[e])throw new Error("unsupported key: "+e);void 0===s[i][r[e].code]&&(s[i][r[e].code]=[]),s[i][r[e].code].push({fn:t,shift:r[e].shift})},n.bindAll=function(e,t){void 0===t&&(t="keydown");for(var i in r)r.hasOwnProperty(i)&&n.bind(i,e,t)},n.getKey=function(e){for(var t in r)if(r.hasOwnProperty(t)){if(1==e.shiftKey&&1==r[t].shift&&e.keyCode==r[t].code)return t;if(0==e.shiftKey&&0==r[t].shift&&e.keyCode==r[t].code)return t;if(e.keyCode==r[t].code&&"shift"==t)return t}return"unknown key, currently not supported"},n.unbind=function(e,t,i){if(void 0===i&&(i="keydown"),void 0===r[e])throw new Error("unsupported key: "+e);if(void 0!==t){var o=[],n=s[i][r[e].code];if(void 0!==n)for(var a=0;a<n.length;a++)n[a].fn==t&&n[a].shift==r[e].shift||o.push(s[i][r[e].code][a]);s[i][r[e].code]=o}else s[i][r[e].code]=[]},n.reset=function(){s={keydown:{},keyup:{}}},n.destroy=function(){s={keydown:{},keyup:{}},o.removeEventListener("keydown",a,!0),o.removeEventListener("keyup",d,!0)},o.addEventListener("keydown",a,!0),o.addEventListener("keyup",d,!0),n}return e})},function(e,t,i){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var n=i(2),s=o(n),r=i(0),a=o(r),d=i(1),h=o(d),l=i(3),u=o(l),c=i(4),f=o(c),p=i(16),v=o(p),g=function(e){function t(e,i,o){(0,a.default)(this,t);var n=(0,u.default)(this,(t.__proto__||(0,s.default)(t)).call(this,e,i,o));return n.labelOffset=0,n.selected=!1,n}return(0,f.default)(t,e),(0,h.default)(t,[{key:"setOptions",value:function(e,t,i){this.options=e,void 0===t&&void 0===i||this.setImages(t,i)}},{key:"setImages",value:function(e,t){t&&this.selected?(this.imageObj=t,this.imageObjAlt=e):(this.imageObj=e,this.imageObjAlt=t)}},{key:"switchImages",value:function(e){var t=e&&!this.selected||!e&&this.selected;if(this.selected=e,void 0!==this.imageObjAlt&&t){var i=this.imageObj;this.imageObj=this.imageObjAlt,this.imageObjAlt=i}}},{key:"_resizeImage",value:function(){var e,t;if(!1===this.options.shapeProperties.useImageSize){var i=1,o=1;this.imageObj.width&&this.imageObj.height&&(this.imageObj.width>this.imageObj.height?i=this.imageObj.width/this.imageObj.height:o=this.imageObj.height/this.imageObj.width),e=2*this.options.size*i,t=2*this.options.size*o}else e=this.imageObj.width,t=this.imageObj.height;this.width=e,this.height=t,this.radius=.5*this.width}},{key:"_drawRawCircle",value:function(e,t,i,o){this.initContextForDraw(e,o),e.circle(t,i,o.size),this.performFill(e,o)}},{key:"_drawImageAtPosition",value:function(e,t){if(0!=this.imageObj.width){e.globalAlpha=1,this.enableShadow(e,t);var i=1;!0===this.options.shapeProperties.interpolation&&(i=this.imageObj.width/this.width/this.body.view.scale),this.imageObj.drawImageAtPosition(e,i,this.left,this.top,this.width,this.height),this.disableShadow(e,t)}}},{key:"_drawImageLabel",value:function(e,t,i,o,n){var s,r=0;if(void 0!==this.height){r=.5*this.height;var a=this.labelModule.getTextSize(e,o,n);a.lineCount>=1&&(r+=a.height/2)}s=i+r,this.options.label&&(this.labelOffset=r),this.labelModule.draw(e,t,s,o,n,"hanging")}}]),t}(v.default);t.default=g},function(e,t,i){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0}),t.printStyle=void 0;var n=i(23),s=o(n),r=i(7),a=o(r),d=i(9),h=o(d),l=i(0),u=o(l),c=i(1),f=o(c),p=i(5),v=!1,g=void 0,y="background: #FFeeee; color: #dd0000",m=function(){function e(){(0,u.default)(this,e)}return(0,f.default)(e,null,[{key:"validate",value:function(t,i,o){v=!1,g=i;var n=i;return void 0!==o&&(n=i[o]),e.parse(t,n,[]),v}},{key:"parse",value:function(t,i,o){for(var n in t)t.hasOwnProperty(n)&&e.check(n,t,i,o)}},{key:"check",value:function(t,i,o,n){if(void 0===o[t]&&void 0===o.__any__)return void e.getSuggestion(t,o,n);var s=t,r=!0;void 0===o[t]&&void 0!==o.__any__&&(s="__any__",r="object"===e.getType(i[t]));var a=o[s];r&&void 0!==a.__type__&&(a=a.__type__),e.checkFields(t,i,o,s,a,n)}},{key:"checkFields",value:function(t,i,o,n,s,r){var a=function(i){console.log("%c"+i+e.printLocation(r,t),y)},d=e.getType(i[t]),l=s[d];void 0!==l?"array"===e.getType(l)&&-1===l.indexOf(i[t])?(a('Invalid option detected in "'+t+'". Allowed values are:'+e.print(l)+' not "'+i[t]+'". '),v=!0):"object"===d&&"__any__"!==n&&(r=p.copyAndExtendArray(r,t),e.parse(i[t],o[n],r)):void 0===s.any&&(a('Invalid type received for "'+t+'". Expected: '+e.print((0,h.default)(s))+". Received ["+d+'] "'+i[t]+'"'),v=!0)}},{key:"getType",value:function(e){var t=void 0===e?"undefined":(0,a.default)(e);return"object"===t?null===e?"null":e instanceof Boolean?"boolean":e instanceof Number?"number":e instanceof String?"string":Array.isArray(e)?"array":e instanceof Date?"date":void 0!==e.nodeType?"dom":!0===e._isAMomentObject?"moment":"object":"number"===t?"number":"boolean"===t?"boolean":"string"===t?"string":void 0===t?"undefined":t}},{key:"getSuggestion",value:function(t,i,o){var n=e.findInOptions(t,i,o,!1),s=e.findInOptions(t,g,[],!0),r=void 0;r=void 0!==n.indexMatch?" in "+e.printLocation(n.path,t,"")+'Perhaps it was incomplete? Did you mean: "'+n.indexMatch+'"?\n\n':s.distance<=4&&n.distance>s.distance?" in "+e.printLocation(n.path,t,"")+"Perhaps it was misplaced? Matching option found at: "+e.printLocation(s.path,s.closestMatch,""):n.distance<=8?'. Did you mean "'+n.closestMatch+'"?'+e.printLocation(n.path,t):". Did you mean one of these: "+e.print((0,h.default)(i))+e.printLocation(o,t),console.log('%cUnknown option detected: "'+t+'"'+r,y),v=!0}},{key:"findInOptions",value:function(t,i,o){var n=arguments.length>3&&void 0!==arguments[3]&&arguments[3],s=1e9,r="",a=[],d=t.toLowerCase(),h=void 0;for(var l in i){var u=void 0;if(void 0!==i[l].__type__&&!0===n){var c=e.findInOptions(t,i[l],p.copyAndExtendArray(o,l));s>c.distance&&(r=c.closestMatch,a=c.path,s=c.distance,h=c.indexMatch)}else-1!==l.toLowerCase().indexOf(d)&&(h=l),u=e.levenshteinDistance(t,l),s>u&&(r=l,a=p.copyArray(o),s=u)}return{closestMatch:r,path:a,distance:s,indexMatch:h}}},{key:"printLocation",value:function(e,t){for(var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"Problem value found at: \n",o="\n\n"+i+"options = {\n",n=0;n<e.length;n++){for(var s=0;s<n+1;s++)o+=" ";o+=e[n]+": {\n"}for(var r=0;r<e.length+1;r++)o+=" ";o+=t+"\n";for(var a=0;a<e.length+1;a++){for(var d=0;d<e.length-a;d++)o+=" ";o+="}\n"}return o+"\n\n"}},{key:"print",value:function(e){return(0,s.default)(e).replace(/(\")|(\[)|(\])|(,"__type__")/g,"").replace(/(\,)/g,", ")}},{key:"levenshteinDistance",value:function(e,t){if(0===e.length)return t.length;if(0===t.length)return e.length;var i,o=[];for(i=0;i<=t.length;i++)o[i]=[i];var n;for(n=0;n<=e.length;n++)o[0][n]=n;for(i=1;i<=t.length;i++)for(n=1;n<=e.length;n++)t.charAt(i-1)==e.charAt(n-1)?o[i][n]=o[i-1][n-1]:o[i][n]=Math.min(o[i-1][n-1]+1,Math.min(o[i][n-1]+1,o[i-1][n]+1));return o[t.length][e.length]}}]),e}();t.default=m,t.printStyle=y},function(e,t,i){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var n=i(23),s=o(n),r=i(7),a=o(r),d=i(31),h=o(d),l=i(0),u=o(l),c=i(1),f=o(c),p=i(5),v=i(77).default,g=i(35).default,y=i(165).default,m=i(167).default,b=i(168).default,_=i(169).default,w=function(){function e(t,i,o,n){if((0,u.default)(this,e),void 0===i)throw new Error("No body provided");this.options=p.bridgeObject(o),this.globalOptions=o,this.defaultOptions=n,this.body=i,this.id=void 0,this.fromId=void 0,this.toId=void 0,this.selected=!1,this.hover=!1,this.labelDirty=!0,this.baseWidth=this.options.width,this.baseFontSize=this.options.font.size,this.from=void 0,this.to=void 0,this.edgeType=void 0,this.connected=!1,this.labelModule=new v(this.body,this.options,!0),this.setOptions(t)}return(0,f.default)(e,[{key:"setOptions",value:function(t){if(t){e.parseOptions(this.options,t,!0,this.globalOptions),void 0!==t.id&&(this.id=t.id),void 0!==t.from&&(this.fromId=t.from),void 0!==t.to&&(this.toId=t.to),void 0!==t.title&&(this.title=t.title),void 0!==t.value&&(t.value=parseFloat(t.value));var i=[t,this.options,this.defaultOptions];this.chooser=g.choosify("edge",i),this.updateLabelModule(t);var o=this.updateEdgeType();return this._setInteractionWidths(),this.connect(),void 0===t.hidden&&void 0===t.physics||(o=!0),o}}},{key:"getFormattingValues",value:function(){var e=!0===this.options.arrows.to||!0===this.options.arrows.to.enabled,t=!0===this.options.arrows.from||!0===this.options.arrows.from.enabled,i=!0===this.options.arrows.middle||!0===this.options.arrows.middle.enabled,o=this.options.color.inherit,n={toArrow:e,toArrowScale:this.options.arrows.to.scaleFactor,toArrowType:this.options.arrows.to.type,middleArrow:i,middleArrowScale:this.options.arrows.middle.scaleFactor,middleArrowType:this.options.arrows.middle.type,fromArrow:t,fromArrowScale:this.options.arrows.from.scaleFactor,fromArrowType:this.options.arrows.from.type,arrowStrikethrough:this.options.arrowStrikethrough,color:o?void 0:this.options.color.color,inheritsColor:o,opacity:this.options.color.opacity,hidden:this.options.hidden,length:this.options.length,shadow:this.options.shadow.enabled,shadowColor:this.options.shadow.color,shadowSize:this.options.shadow.size,shadowX:this.options.shadow.x,shadowY:this.options.shadow.y,dashes:this.options.dashes,width:this.options.width,background:this.options.background.enabled,backgroundColor:this.options.background.color,backgroundSize:this.options.background.size,backgroundDashes:this.options.background.dashes};if(this.selected||this.hover)if(!0===this.chooser){if(this.selected){var s=this.options.selectionWidth;"function"==typeof s?n.width=s(n.width):"number"==typeof s&&(n.width+=s),n.width=Math.max(n.width,.3/this.body.view.scale),n.color=this.options.color.highlight,n.shadow=this.options.shadow.enabled}else if(this.hover){var r=this.options.hoverWidth;"function"==typeof r?n.width=r(n.width):"number"==typeof r&&(n.width+=r),n.width=Math.max(n.width,.3/this.body.view.scale),n.color=this.options.color.hover,n.shadow=this.options.shadow.enabled}}else"function"==typeof this.chooser&&(this.chooser(n,this.options.id,this.selected,this.hover),void 0!==n.color&&(n.inheritsColor=!1),!1===n.shadow&&(n.shadowColor===this.options.shadow.color&&n.shadowSize===this.options.shadow.size&&n.shadowX===this.options.shadow.x&&n.shadowY===this.options.shadow.y||(n.shadow=!0)));else n.shadow=this.options.shadow.enabled,n.width=Math.max(n.width,.3/this.body.view.scale);return n}},{key:"updateLabelModule",value:function(e){var t=[e,this.options,this.globalOptions,this.defaultOptions];this.labelModule.update(this.options,t),void 0!==this.labelModule.baseSize&&(this.baseFontSize=this.labelModule.baseSize)}},{key:"updateEdgeType",value:function(){var e=this.options.smooth,t=!1,i=!0;return void 0!==this.edgeType&&((this.edgeType instanceof m&&!0===e.enabled&&"dynamic"===e.type||this.edgeType instanceof y&&!0===e.enabled&&"cubicBezier"===e.type||this.edgeType instanceof b&&!0===e.enabled&&"dynamic"!==e.type&&"cubicBezier"!==e.type||this.edgeType instanceof _&&!1===e.type.enabled)&&(i=!1),!0===i&&(t=this.cleanup())),!0===i?!0===e.enabled?"dynamic"===e.type?(t=!0,this.edgeType=new m(this.options,this.body,this.labelModule)):"cubicBezier"===e.type?this.edgeType=new y(this.options,this.body,this.labelModule):this.edgeType=new b(this.options,this.body,this.labelModule):this.edgeType=new _(this.options,this.body,this.labelModule):this.edgeType.setOptions(this.options),t}},{key:"connect",value:function(){this.disconnect(),this.from=this.body.nodes[this.fromId]||void 0,this.to=this.body.nodes[this.toId]||void 0,this.connected=void 0!==this.from&&void 0!==this.to,!0===this.connected?(this.from.attachEdge(this),this.to.attachEdge(this)):(this.from&&this.from.detachEdge(this),this.to&&this.to.detachEdge(this)),this.edgeType.connect()}},{key:"disconnect",value:function(){this.from&&(this.from.detachEdge(this),this.from=void 0),this.to&&(this.to.detachEdge(this),this.to=void 0),this.connected=!1}},{key:"getTitle",value:function(){return this.title}},{key:"isSelected",value:function(){return this.selected}},{key:"getValue",value:function(){return this.options.value}},{key:"setValueRange",value:function(e,t,i){if(void 0!==this.options.value){var o=this.options.scaling.customScalingFunction(e,t,i,this.options.value),n=this.options.scaling.max-this.options.scaling.min;if(!0===this.options.scaling.label.enabled){var s=this.options.scaling.label.max-this.options.scaling.label.min;this.options.font.size=this.options.scaling.label.min+o*s}this.options.width=this.options.scaling.min+o*n}else this.options.width=this.baseWidth,this.options.font.size=this.baseFontSize;this._setInteractionWidths(),this.updateLabelModule()}},{key:"_setInteractionWidths",value:function(){"function"==typeof this.options.hoverWidth?this.edgeType.hoverWidth=this.options.hoverWidth(this.options.width):this.edgeType.hoverWidth=this.options.hoverWidth+this.options.width,"function"==typeof this.options.selectionWidth?this.edgeType.selectionWidth=this.options.selectionWidth(this.options.width):this.edgeType.selectionWidth=this.options.selectionWidth+this.options.width}},{key:"draw",value:function(e){var t=this.getFormattingValues();if(!t.hidden){var i=this.edgeType.getViaNode(),o={};this.edgeType.fromPoint=this.edgeType.from,this.edgeType.toPoint=this.edgeType.to,t.fromArrow&&(o.from=this.edgeType.getArrowData(e,"from",i,this.selected,this.hover,t),!1===t.arrowStrikethrough&&(this.edgeType.fromPoint=o.from.core)),t.toArrow&&(o.to=this.edgeType.getArrowData(e,"to",i,this.selected,this.hover,t),!1===t.arrowStrikethrough&&(this.edgeType.toPoint=o.to.core)),t.middleArrow&&(o.middle=this.edgeType.getArrowData(e,"middle",i,this.selected,this.hover,t)),this.edgeType.drawLine(e,t,this.selected,this.hover,i),this.drawArrows(e,o,t),this.drawLabel(e,i)}}},{key:"drawArrows",value:function(e,t,i){i.fromArrow&&this.edgeType.drawArrowHead(e,i,this.selected,this.hover,t.from),i.middleArrow&&this.edgeType.drawArrowHead(e,i,this.selected,this.hover,t.middle),i.toArrow&&this.edgeType.drawArrowHead(e,i,this.selected,this.hover,t.to)}},{key:"drawLabel",value:function(e,t){if(void 0!==this.options.label){var i=this.from,o=this.to;if(this.labelModule.differentState(this.selected,this.hover)&&this.labelModule.getTextSize(e,this.selected,this.hover),i.id!=o.id){this.labelModule.pointToSelf=!1;var n=this.edgeType.getPoint(.5,t);e.save();var s=this._getRotation(e);0!=s.angle&&(e.translate(s.x,s.y),e.rotate(s.angle)),this.labelModule.draw(e,n.x,n.y,this.selected,this.hover),e.restore()}else{this.labelModule.pointToSelf=!0;var r,a,d=this.options.selfReferenceSize;i.shape.width>i.shape.height?(r=i.x+.5*i.shape.width,a=i.y-d):(r=i.x+d,a=i.y-.5*i.shape.height),n=this._pointOnCircle(r,a,d,.125),this.labelModule.draw(e,n.x,n.y,this.selected,this.hover)}}}},{key:"getItemsOnPoint",value:function(e){var t=[];if(this.labelModule.visible()){var i=this._getRotation();g.pointInRect(this.labelModule.getSize(),e,i)&&t.push({edgeId:this.id,labelId:0})}var o={left:e.x,top:e.y};return this.isOverlappingWith(o)&&t.push({edgeId:this.id}),t}},{key:"isOverlappingWith",value:function(e){if(this.connected){var t=this.from.x,i=this.from.y,o=this.to.x,n=this.to.y,s=e.left,r=e.top;return this.edgeType.getDistanceToEdge(t,i,o,n,s,r)<10}return!1}},{key:"_getRotation",value:function(e){var t=this.edgeType.getViaNode(),i=this.edgeType.getPoint(.5,t);void 0!==e&&this.labelModule.calculateLabelSize(e,this.selected,this.hover,i.x,i.y);var o={x:i.x,y:this.labelModule.size.yLine,angle:0};if(!this.labelModule.visible())return o;if("horizontal"===this.options.font.align)return o;var n=this.from.y-this.to.y,s=this.from.x-this.to.x,r=Math.atan2(n,s);return(r<-1&&s<0||r>0&&s<0)&&(r+=Math.PI),o.angle=r,o}},{key:"_pointOnCircle",value:function(e,t,i,o){var n=2*o*Math.PI;return{x:e+i*Math.cos(n),y:t-i*Math.sin(n)}}},{key:"select",value:function(){this.selected=!0}},{key:"unselect",value:function(){this.selected=!1}},{key:"cleanup",value:function(){return this.edgeType.cleanup()}},{key:"remove",value:function(){this.cleanup(),this.disconnect(),delete this.body.edges[this.id]}},{key:"endPointsValid",value:function(){return void 0!==this.body.nodes[this.fromId]&&void 0!==this.body.nodes[this.toId]}}],[{key:"parseOptions",value:function(e,t){var i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},n=arguments.length>4&&void 0!==arguments[4]&&arguments[4],r=["arrowStrikethrough","id","from","hidden","hoverWidth","labelHighlightBold","length","line","opacity","physics","scaling","selectionWidth","selfReferenceSize","to","title","value","width","font","chosen","widthConstraint"];if(p.selectiveDeepExtend(r,e,t,i),g.isValidLabel(t.label)?e.label=t.label:g.isValidLabel(e.label)||(e.label=void 0),p.mergeOptions(e,t,"smooth",o),p.mergeOptions(e,t,"shadow",o),p.mergeOptions(e,t,"background",o),void 0!==t.dashes&&null!==t.dashes?e.dashes=t.dashes:!0===i&&null===t.dashes&&(e.dashes=(0,h.default)(o.dashes)),void 0!==t.scaling&&null!==t.scaling?(void 0!==t.scaling.min&&(e.scaling.min=t.scaling.min),void 0!==t.scaling.max&&(e.scaling.max=t.scaling.max),p.mergeOptions(e.scaling,t.scaling,"label",o.scaling)):!0===i&&null===t.scaling&&(e.scaling=(0,h.default)(o.scaling)),void 0!==t.arrows&&null!==t.arrows)if("string"==typeof t.arrows){var d=t.arrows.toLowerCase();e.arrows.to.enabled=-1!=d.indexOf("to"),e.arrows.middle.enabled=-1!=d.indexOf("middle"),e.arrows.from.enabled=-1!=d.indexOf("from")}else{if("object"!==(0,a.default)(t.arrows))throw new Error("The arrow newOptions can only be an object or a string. Refer to the documentation. You used:"+(0,s.default)(t.arrows));p.mergeOptions(e.arrows,t.arrows,"to",o.arrows),p.mergeOptions(e.arrows,t.arrows,"middle",o.arrows),p.mergeOptions(e.arrows,t.arrows,"from",o.arrows)}else!0===i&&null===t.arrows&&(e.arrows=(0,h.default)(o.arrows));if(void 0!==t.color&&null!==t.color){var l=t.color,u=e.color;if(n)p.deepExtend(u,o.color,!1,i);else for(var c in u)u.hasOwnProperty(c)&&delete u[c];if(p.isString(u))u.color=u,u.highlight=u,u.hover=u,u.inherit=!1,void 0===l.opacity&&(u.opacity=1);else{var f=!1;void 0!==l.color&&(u.color=l.color,f=!0),void 0!==l.highlight&&(u.highlight=l.highlight,f=!0),void 0!==l.hover&&(u.hover=l.hover,f=!0),void 0!==l.inherit&&(u.inherit=l.inherit),void 0!==l.opacity&&(u.opacity=Math.min(1,Math.max(0,l.opacity))),!0===f?u.inherit=!1:void 0===u.inherit&&(u.inherit="from")}}else!0===i&&null===t.color&&(e.color=p.bridgeObject(o.color));!0===i&&null===t.font&&(e.font=p.bridgeObject(o.font))}}]),e}();t.default=w},function(e,t,i){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var n=i(2),s=o(n),r=i(0),a=o(r),d=i(1),h=o(d),l=i(3),u=o(l),c=i(4),f=o(c),p=i(79),v=o(p),g=function(e){function t(e,i,o){return(0,a.default)(this,t),(0,u.default)(this,(t.__proto__||(0,s.default)(t)).call(this,e,i,o))}return(0,f.default)(t,e),(0,h.default)(t,[{key:"_findBorderPositionBezier",value:function(e,t){var i,o,n,s,r,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this._getViaCoordinates(),d=0,h=0,l=1,u=this.to,c=!1;for(e.id===this.from.id&&(u=this.from,c=!0);h<=l&&d<10;){var f=.5*(h+l);if(i=this.getPoint(f,a),o=Math.atan2(u.y-i.y,u.x-i.x),n=u.distanceToBorder(t,o),s=Math.sqrt(Math.pow(i.x-u.x,2)+Math.pow(i.y-u.y,2)),r=n-s,Math.abs(r)<.2)break;r<0?!1===c?h=f:l=f:!1===c?l=f:h=f,d++}return i.t=f,i}},{key:"_getDistanceToBezierEdge",value:function(e,t,i,o,n,s,r){var a=1e9,d=void 0,h=void 0,l=void 0,u=void 0,c=void 0,f=e,p=t;for(h=1;h<10;h++)l=.1*h,u=Math.pow(1-l,2)*e+2*l*(1-l)*r.x+Math.pow(l,2)*i,c=Math.pow(1-l,2)*t+2*l*(1-l)*r.y+Math.pow(l,2)*o,h>0&&(d=this._getDistanceToLine(f,p,u,c,n,s),a=d<a?d:a),f=u,p=c;return a}},{key:"_bezierCurve",value:function(e,t,i,o){var n=void 0!==i&&void 0!==i.x,s=void 0!==o&&void 0!==o.x;e.beginPath(),e.moveTo(this.fromPoint.x,this.fromPoint.y),n&&s?e.bezierCurveTo(i.x,i.y,o.x,o.y,this.toPoint.x,this.toPoint.y):n?e.quadraticCurveTo(i.x,i.y,this.toPoint.x,this.toPoint.y):e.lineTo(this.toPoint.x,this.toPoint.y),this.drawBackground(e,t),this.enableShadow(e,t),e.stroke(),this.disableShadow(e,t)}},{key:"getViaNode",value:function(){return this._getViaCoordinates()}}]),t}(v.default);t.default=g},function(e,t,i){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var n=i(0),s=o(n),r=i(1),a=o(r),d=i(5),h=function(){function e(){(0,s.default)(this,e)}return(0,a.default)(e,null,[{key:"getRange",value:function(e){var t,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],o=1e9,n=-1e9,s=1e9,r=-1e9;if(i.length>0)for(var a=0;a<i.length;a++)t=e[i[a]],s>t.shape.boundingBox.left&&(s=t.shape.boundingBox.left),r<t.shape.boundingBox.right&&(r=t.shape.boundingBox.right),o>t.shape.boundingBox.top&&(o=t.shape.boundingBox.top),n<t.shape.boundingBox.bottom&&(n=t.shape.boundingBox.bottom);return 1e9===s&&-1e9===r&&1e9===o&&-1e9===n&&(o=0,n=0,s=0,r=0),{minX:s,maxX:r,minY:o,maxY:n}}},{key:"getRangeCore",value:function(e){var t,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],o=1e9,n=-1e9,s=1e9,r=-1e9;if(i.length>0)for(var a=0;a<i.length;a++)t=e[i[a]],s>t.x&&(s=t.x),r<t.x&&(r=t.x),o>t.y&&(o=t.y),n<t.y&&(n=t.y);return 1e9===s&&-1e9===r&&1e9===o&&-1e9===n&&(o=0,n=0,s=0,r=0),{minX:s,maxX:r,minY:o,maxY:n}}},{key:"findCenter",value:function(e){return{x:.5*(e.maxX+e.minX),y:.5*(e.maxY+e.minY)}}},{key:"cloneOptions",value:function(e,t){var i={};return void 0===t||"node"===t?(d.deepExtend(i,e.options,!0),i.x=e.x,i.y=e.y,i.amountOfConnections=e.edges.length):d.deepExtend(i,e.options,!0),i}}]),e}();t.default=h},function(e,t,i){e.exports={default:i(86),__esModule:!0}},function(e,t,i){var o=i(38);e.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==o(e)?e.split(""):Object(e)}},function(e,t,i){"use strict";var o=i(27),n=i(11),s=i(64),r=i(19),a=i(25),d=i(91),h=i(46),l=i(66),u=i(8)("iterator"),c=!([].keys&&"next"in[].keys()),f=function(){return this};e.exports=function(e,t,i,p,v,g,y){d(i,t,p);var m,b,_,w=function(e){if(!c&&e in M)return M[e];switch(e){case"keys":case"values":return function(){return new i(this,e)}}return function(){return new i(this,e)}},k=t+" Iterator",x="values"==v,O=!1,M=e.prototype,E=M[u]||M["@@iterator"]||v&&M[v],S=E||w(v),D=v?x?w("entries"):S:void 0,C="Array"==t?M.entries||E:E;if(C&&(_=l(C.call(new e)))!==Object.prototype&&_.next&&(h(_,k,!0),o||"function"==typeof _[u]||r(_,u,f)),x&&E&&"values"!==E.name&&(O=!0,S=function(){return E.call(this)}),o&&!y||!c&&!O&&M[u]||r(M,u,S),a[t]=S,a[k]=f,v)if(m={values:x?S:w("values"),keys:g?S:w("keys"),entries:D},y)for(b in m)b in M||s(M,b,m[b]);else n(n.P+n.F*(c||O),t,m);return m}},function(e,t,i){var o=i(90);e.exports=function(e,t,i){if(o(e),void 0===t)return e;switch(i){case 1:return function(i){return e.call(t,i)};case 2:return function(i,o){return e.call(t,i,o)};case 3:return function(i,o,n){return e.call(t,i,o,n)}}return function(){return e.apply(t,arguments)}}},function(e,t,i){e.exports=!i(13)&&!i(22)(function(){return 7!=Object.defineProperty(i(63)("div"),"a",{get:function(){return 7}}).a})},function(e,t,i){var o=i(21),n=i(10).document,s=o(n)&&o(n.createElement);e.exports=function(e){return s?n.createElement(e):{}}},function(e,t,i){e.exports=i(19)},function(e,t,i){var o=i(14),n=i(18),s=i(93)(!1),r=i(43)("IE_PROTO");e.exports=function(e,t){var i,a=n(e),d=0,h=[];for(i in a)i!=r&&o(a,i)&&h.push(i);for(;t.length>d;)o(a,i=t[d++])&&(~s(h,i)||h.push(i));return h}},function(e,t,i){var o=i(14),n=i(30),s=i(43)("IE_PROTO"),r=Object.prototype;e.exports=Object.getPrototypeOf||function(e){return e=n(e),o(e,s)?e[s]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?r:null}},function(e,t,i){var o=i(38),n=i(8)("toStringTag"),s="Arguments"==o(function(){return arguments}()),r=function(e,t){try{return e[t]}catch(e){}};e.exports=function(e){var t,i,a;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(i=r(t=Object(e),n))?i:s?o(t):"Object"==(a=o(t))&&"function"==typeof t.callee?"Arguments":a}},function(e,t,i){var o=i(11),n=i(6),s=i(22);e.exports=function(e,t){var i=(n.Object||{})[e]||Object[e],r={};r[e]=t(i),o(o.S+o.F*s(function(){i(1)}),"Object",r)}},function(e,t,i){var o=i(65),n=i(45).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return o(e,n)}},function(e,t,i){var o=i(32),n=i(28),s=i(18),r=i(40),a=i(14),d=i(62),h=Object.getOwnPropertyDescriptor;t.f=i(13)?h:function(e,t){if(e=s(e),t=r(t,!0),d)try{return h(e,t)}catch(e){}if(a(e,t))return n(!o.f.call(e,t),e[t])}},function(e,t,i){"use strict";e.exports="undefined"!=typeof window&&window.moment||i(116)},function(e,t,i){"use strict";function o(e){this.delay=null,this.max=1/0,this._queue=[],this._timeout=null,this._extended=null,this.setOptions(e)}o.prototype.setOptions=function(e){e&&void 0!==e.delay&&(this.delay=e.delay),e&&void 0!==e.max&&(this.max=e.max),this._flushIfNeeded()},o.extend=function(e,t){var i=new o(t);if(void 0!==e.flush)throw new Error("Target object already has a property flush");e.flush=function(){i.flush()};var n=[{name:"flush",original:void 0}];if(t&&t.replace)for(var s=0;s<t.replace.length;s++){var r=t.replace[s];n.push({name:r,original:e[r]}),i.replace(e,r)}return i._extended={object:e,methods:n},i},o.prototype.destroy=function(){if(this.flush(),this._extended){for(var e=this._extended.object,t=this._extended.methods,i=0;i<t.length;i++){var o=t[i];o.original?e[o.name]=o.original:delete e[o.name]}this._extended=null}},o.prototype.replace=function(e,t){var i=this,o=e[t];if(!o)throw new Error("Method "+t+" undefined");e[t]=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];i.queue({args:e,fn:o,context:this})}},o.prototype.queue=function(e){"function"==typeof e?this._queue.push({fn:e}):this._queue.push(e),this._flushIfNeeded()},o.prototype._flushIfNeeded=function(){if(this._queue.length>this.max&&this.flush(),clearTimeout(this._timeout),this.queue.length>0&&"number"==typeof this.delay){var e=this;this._timeout=setTimeout(function(){e.flush()},this.delay)}},o.prototype.flush=function(){for(;this._queue.length>0;){var e=this._queue.shift();e.fn.apply(e.context||e.fn,e.args||[])}},e.exports=o},function(e,t){function i(e){if(e)return o(e)}function o(e){for(var t in i.prototype)e[t]=i.prototype[t];return e}e.exports=i,i.prototype.on=i.prototype.addEventListener=function(e,t){return this._callbacks=this._callbacks||{},(this._callbacks[e]=this._callbacks[e]||[]).push(t),this},i.prototype.once=function(e,t){function i(){o.off(e,i),t.apply(this,arguments)}var o=this;return this._callbacks=this._callbacks||{},i.fn=t,this.on(e,i),this},i.prototype.off=i.prototype.removeListener=i.prototype.removeAllListeners=i.prototype.removeEventListener=function(e,t){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var i=this._callbacks[e];if(!i)return this;if(1==arguments.length)return delete this._callbacks[e],this;for(var o,n=0;n<i.length;n++)if((o=i[n])===t||o.fn===t){i.splice(n,1);break}return this},i.prototype.emit=function(e){this._callbacks=this._callbacks||{};var t=[].slice.call(arguments,1),i=this._callbacks[e];if(i){i=i.slice(0);for(var o=0,n=i.length;o<n;++o)i[o].apply(this,t)}return this},i.prototype.listeners=function(e){return this._callbacks=this._callbacks||{},this._callbacks[e]||[]},i.prototype.hasListeners=function(e){return!!this.listeners(e).length}},function(e,t,i){"use strict";function o(e){return B=e,p()}function n(){z=0,R=B.charAt(0)}function s(){z++,R=B.charAt(z)}function r(){return B.charAt(z+1)}function a(e){return L.test(e)}function d(e,t){if(e||(e={}),t)for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i]);return e}function h(e,t,i){for(var o=t.split("."),n=e;o.length;){var s=o.shift();o.length?(n[s]||(n[s]={}),n=n[s]):n[s]=i}}function l(e,t){for(var i,o,n=null,s=[e],r=e;r.parent;)s.push(r.parent),r=r.parent;if(r.nodes)for(i=0,o=r.nodes.length;i<o;i++)if(t.id===r.nodes[i].id){n=r.nodes[i];break}for(n||(n={id:t.id},e.node&&(n.attr=d(n.attr,e.node))),i=s.length-1;i>=0;i--){var a=s[i];a.nodes||(a.nodes=[]),-1===a.nodes.indexOf(n)&&a.nodes.push(n)}t.attr&&(n.attr=d(n.attr,t.attr))}function u(e,t){if(e.edges||(e.edges=[]),e.edges.push(t),e.edge){var i=d({},e.edge);t.attr=d(i,t.attr)}}function c(e,t,i,o,n){var s={from:t,to:i,type:o};return e.edge&&(s.attr=d({},e.edge)),s.attr=d(s.attr||{},n),null!=n&&n.hasOwnProperty("arrows")&&(s.arrows={to:{enabled:!0,type:n.arrows.type}},n.arrows=null),s}function f(){for(j=F.NULL,A="";" "===R||"\t"===R||"\n"===R||"\r"===R;)s();do{var e=!1;if("#"===R){for(var t=z-1;" "===B.charAt(t)||"\t"===B.charAt(t);)t--;if("\n"===B.charAt(t)||""===B.charAt(t)){for(;""!=R&&"\n"!=R;)s();e=!0}}if("/"===R&&"/"===r()){for(;""!=R&&"\n"!=R;)s();e=!0}if("/"===R&&"*"===r()){for(;""!=R;){if("*"===R&&"/"===r()){s(),s();break}s()}e=!0}for(;" "===R||"\t"===R||"\n"===R||"\r"===R;)s()}while(e);if(""===R)return void(j=F.DELIMITER);var i=R+r();if(N[i])return j=F.DELIMITER,A=i,s(),void s();if(N[R])return j=F.DELIMITER,A=R,void s();if(a(R)||"-"===R){for(A+=R,s();a(R);)A+=R,s();return"false"===A?A=!1:"true"===A?A=!0:isNaN(Number(A))||(A=Number(A)),void(j=F.IDENTIFIER)}if('"'===R){for(s();""!=R&&('"'!=R||'"'===R&&'"'===r());)'"'===R?(A+=R,s()):"\\"===R&&"n"===r()?(A+="\n",s()):A+=R,s();if('"'!=R)throw x('End of string " expected');return s(),void(j=F.IDENTIFIER)}for(j=F.UNKNOWN;""!=R;)A+=R,s();throw new SyntaxError('Syntax error in part "'+O(A,30)+'"')}function p(){var e={};if(n(),f(),"strict"===A&&(e.strict=!0,f()),"graph"!==A&&"digraph"!==A||(e.type=A,f()),j===F.IDENTIFIER&&(e.id=A,f()),"{"!=A)throw x("Angle bracket { expected");if(f(),v(e),"}"!=A)throw x("Angle bracket } expected");if(f(),""!==A)throw x("End of file expected");return f(),delete e.node,delete e.edge,delete e.graph,e}function v(e){for(;""!==A&&"}"!=A;)g(e),";"===A&&f()}function g(e){var t=y(e);if(t)return void _(e,t);if(!m(e)){if(j!=F.IDENTIFIER)throw x("Identifier expected");var i=A;if(f(),"="===A){if(f(),j!=F.IDENTIFIER)throw x("Identifier expected");e[i]=A,f()}else b(e,i)}}function y(e){var t=null;if("subgraph"===A&&(t={},t.type="subgraph",f(),j===F.IDENTIFIER&&(t.id=A,f())),"{"===A){if(f(),t||(t={}),t.parent=e,t.node=e.node,t.edge=e.edge,t.graph=e.graph,v(t),"}"!=A)throw x("Angle bracket } expected");f(),delete t.node,delete t.edge,delete t.graph,delete t.parent,e.subgraphs||(e.subgraphs=[]),e.subgraphs.push(t)}return t}function m(e){return"node"===A?(f(),e.node=k(),"node"):"edge"===A?(f(),e.edge=k(),"edge"):"graph"===A?(f(),e.graph=k(),"graph"):null}function b(e,t){var i={id:t},o=k();o&&(i.attr=o),l(e,i),_(e,t)}function _(e,t){for(;"->"===A||"--"===A;){var i,o=A;f();var n=y(e);if(n)i=n;else{if(j!=F.IDENTIFIER)throw x("Identifier or subgraph expected");i=A,l(e,{id:i}),f()}u(e,c(e,t,i,o,k())),t=i}}function w(e,t){var i;if(e.includes("dir")){var o={};for(o.arrows={},i=0;i<t.length;i++)if("arrows"===t[i].name)if(null!=t[i].value.to)o.arrows.to=i;else{if(null==t[i].value.from)throw x("Invalid value of arrows");o.arrows.from=i}else"dir"===t[i].name&&(o.dir=i);var n=t[o.dir].value;if(!e.includes("arrows"))if("both"===n)t.push({attr:t[o.dir].attr,name:"arrows",value:{to:{enabled:!0}}}),o.arrows.to=t.length-1,t.push({attr:t[o.dir].attr,name:"arrows",value:{from:{enabled:!0}}}),o.arrows.from=t.length-1;else if("forward"===n)t.push({attr:t[o.dir].attr,name:"arrows",value:{to:{enabled:!0}}}),o.arrows.to=t.length-1;else if("back"===n)t.push({attr:t[o.dir].attr,name:"arrows",value:{from:{enabled:!0}}}),o.arrows.from=t.length-1;else{if("none"!==n)throw x('Invalid dir type "'+n+'"');t.push({attr:t[o.dir].attr,name:"arrows",value:""}),o.arrows.to=t.length-1}var s,r;if("both"===n)o.arrows.to&&o.arrows.from?(r=t[o.arrows.to].value.to.type,s=t[o.arrows.from].value.from.type,t[o.arrows.to]={attr:t[o.arrows.to].attr,name:t[o.arrows.to].name,value:{to:{enabled:!0,type:r},from:{enabled:!0,type:s}}},t.splice(o.arrows.from,1)):o.arrows.to?(r=t[o.arrows.to].value.to.type,s="arrow",t[o.arrows.to]={attr:t[o.arrows.to].attr,name:t[o.arrows.to].name,value:{to:{enabled:!0,type:r},from:{enabled:!0,type:s}}}):o.arrows.from&&(r="arrow",s=t[o.arrows.from].value.from.type,t[o.arrows.from]={attr:t[o.arrows.from].attr,name:t[o.arrows.from].name,value:{to:{enabled:!0,type:r},from:{enabled:!0,type:s}}});else if("back"===n)o.arrows.to&&o.arrows.from?(r="",s=t[o.arrows.from].value.from.type,t[o.arrows.from]={attr:t[o.arrows.from].attr,name:t[o.arrows.from].name,value:{to:{enabled:!0,type:r},from:{enabled:!0,type:s}}}):o.arrows.to?(r="",s="arrow",o.arrows.from=o.arrows.to,t[o.arrows.from]={attr:t[o.arrows.from].attr,name:t[o.arrows.from].name,value:{to:{enabled:!0,type:r},from:{enabled:!0,type:s}}}):o.arrows.from&&(r="",s=t[o.arrows.from].value.from.type,t[o.arrows.to]={attr:t[o.arrows.from].attr,name:t[o.arrows.from].name,value:{to:{enabled:!0,type:r},from:{enabled:!0,type:s}}}),t[o.arrows.from]={attr:t[o.arrows.from].attr,name:t[o.arrows.from].name,value:{from:{enabled:!0,type:t[o.arrows.from].value.from.type}}};else if("none"===n){var a;a=o.arrows.to?o.arrows.to:o.arrows.from,t[a]={attr:t[a].attr,name:t[a].name,value:""}}else{if("forward"!==n)throw x('Invalid dir type "'+n+'"');o.arrows.to&&o.arrows.from?(r=t[o.arrows.to].value.to.type,s="",t[o.arrows.to]={attr:t[o.arrows.to].attr,name:t[o.arrows.to].name,value:{to:{enabled:!0,type:r},from:{enabled:!0,type:s}}}):o.arrows.to?(r=t[o.arrows.to].value.to.type,s="",t[o.arrows.to]={attr:t[o.arrows.to].attr,name:t[o.arrows.to].name,value:{to:{enabled:!0,type:r},from:{enabled:!0,type:s}}}):o.arrows.from&&(r="arrow",s="",o.arrows.to=o.arrows.from,t[o.arrows.to]={attr:t[o.arrows.to].attr,name:t[o.arrows.to].name,value:{to:{enabled:!0,type:r},from:{enabled:!0,type:s}}}),t[o.arrows.to]={attr:t[o.arrows.to].attr,name:t[o.arrows.to].name,value:{to:{enabled:!0,type:t[o.arrows.to].value.to.type}}}}t.splice(o.dir,1)}return t}function k(){for(var e,t=null,i={dashed:!0,solid:!1,dotted:[1,5]},o={dot:"circle",box:"box",crow:"crow",curve:"curve",icurve:"inv_curve",normal:"triangle",inv:"inv_triangle",diamond:"diamond",tee:"bar",vee:"vee"},n=new Array,s=new Array;"["===A;){for(f(),t={};""!==A&&"]"!=A;){if(j!=F.IDENTIFIER)throw x("Attribute name expected");var r=A;if(f(),"="!=A)throw x("Equal sign = expected");if(f(),j!=F.IDENTIFIER)throw x("Attribute value expected");var a=A;"style"===r&&(a=i[a]);var d;"arrowhead"===r&&(d=o[a],r="arrows",a={to:{enabled:!0,type:d}}),"arrowtail"===r&&(d=o[a],r="arrows",a={from:{enabled:!0,type:d}}),n.push({attr:t,name:r,value:a}),s.push(r),f(),","==A&&f()}if("]"!=A)throw x("Bracket ] expected");f()}n=w(s,n);var l;if(s.includes("penwidth")){var u=[];for(l=n.length,e=0;e<l;e++)"width"!==n[e].name&&("penwidth"===n[e].name&&(n[e].name="width"),u.push(n[e]));n=u}for(l=n.length,e=0;e<l;e++)h(n[e].attr,n[e].name,n[e].value);return t}function x(e){return new SyntaxError(e+', got "'+O(A,30)+'" (char '+z+")")}function O(e,t){return e.length<=t?e:e.substr(0,27)+"..."}function M(e,t,i){Array.isArray(e)?e.forEach(function(e){Array.isArray(t)?t.forEach(function(t){i(e,t)}):i(e,t)}):Array.isArray(t)?t.forEach(function(t){i(e,t)}):i(e,t)}function E(e,t,i){for(var o=t.split("."),n=o.pop(),s=e,r=0;r<o.length;r++){var a=o[r];a in s||(s[a]={}),s=s[a]}return s[n]=i,e}function S(e,t){var i={};for(var o in e)if(e.hasOwnProperty(o)){var n=t[o];Array.isArray(n)?n.forEach(function(t){E(i,t,e[o])}):"string"==typeof n?E(i,n,e[o]):E(i,o,e[o])}return i}function D(e){var t=o(e),i={nodes:[],edges:[],options:{}};if(t.nodes&&t.nodes.forEach(function(e){var t={id:e.id,label:String(e.label||e.id)};d(t,S(e.attr,P)),t.image&&(t.shape="image"),i.nodes.push(t)}),t.edges){var n=function(e){var t={from:e.from,to:e.to};return d(t,S(e.attr,I)),null==t.arrows&&"->"===e.type&&(t.arrows="to"),t};t.edges.forEach(function(e){var t,o;t=e.from instanceof Object?e.from.nodes:{id:e.from},o=e.to instanceof Object?e.to.nodes:{id:e.to},e.from instanceof Object&&e.from.edges&&e.from.edges.forEach(function(e){var t=n(e);i.edges.push(t)}),M(t,o,function(t,o){var s=c(i,t.id,o.id,e.type,e.attr),r=n(s);i.edges.push(r)}),e.to instanceof Object&&e.to.edges&&e.to.edges.forEach(function(e){var t=n(e);i.edges.push(t)})})}return t.attr&&(i.options=t.attr),i}var C=i(31),T=function(e){return e&&e.__esModule?e:{default:e}}(C),P={fontsize:"font.size",fontcolor:"font.color",labelfontcolor:"font.color",fontname:"font.face",color:["color.border","color.background"],fillcolor:"color.background",tooltip:"title",labeltooltip:"title"},I=(0,T.default)(P);I.color="color.color",I.style="dashes";var F={NULL:0,DELIMITER:1,IDENTIFIER:2,UNKNOWN:3},N={"{":!0,"}":!0,"[":!0,"]":!0,";":!0,"=":!0,",":!0,"->":!0,"--":!0},B="",z=0,R="",A="",j=F.NULL,L=/[a-zA-Z_0-9.:#]/;t.parseDOT=o,t.DOTToGraph=D},function(e,t,i){"use strict";function o(e,t){var i=[],o=[],n={edges:{inheritColor:!1},nodes:{fixed:!1,parseColor:!1}};void 0!==t&&(void 0!==t.fixed&&(n.nodes.fixed=t.fixed),void 0!==t.parseColor&&(n.nodes.parseColor=t.parseColor),void 0!==t.inheritColor&&(n.edges.inheritColor=t.inheritColor));for(var s=e.edges,r=e.nodes,a=0;a<s.length;a++){var d={},h=s[a];d.id=h.id,d.from=h.source,d.to=h.target,d.attributes=h.attributes,d.label=h.label,d.title=void 0!==h.attributes?h.attributes.title:void 0,"Directed"===h.type&&(d.arrows="to"),h.color&&!1===n.inheritColor&&(d.color=h.color),i.push(d)}for(var l=0;l<r.length;l++){var u={},c=r[l];u.id=c.id,u.attributes=c.attributes,u.x=c.x,u.y=c.y,u.label=c.label,u.title=void 0!==c.attributes?c.attributes.title:c.title,!0===n.nodes.parseColor?u.color=c.color:u.color=void 0!==c.color?{background:c.color,border:c.color,highlight:{background:c.color,border:c.color},hover:{background:c.color,border:c.color}}:void 0,u.size=c.size,u.fixed=n.nodes.fixed&&void 0!==c.x&&void 0!==c.y,o.push(u)}return{nodes:o,edges:i}}t.parseGephi=o},function(e,t,i){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var n=i(0),s=o(n),r=i(1),a=o(r),d=i(132),h=o(d),l=function(){function e(t){(0,s.default)(this,e),this.images={},this.imageBroken={},this.callback=t}return(0,a.default)(e,[{key:"_tryloadBrokenUrl",value:function(e,t,i){if(void 0!==e&&void 0!==i){if(void 0===t)return void console.warn("No broken url image defined");i.onerror=function(){console.error("Could not load brokenImage:",t)},i.image.src=t}}},{key:"_redrawWithImage",value:function(e){this.callback&&this.callback(e)}},{key:"load",value:function(e,t){var i=this,o=this.images[e];if(o)return o;var n=new h.default;return this.images[e]=n,n.image.onload=function(){i._fixImageCoordinates(n.image),n.init(),i._redrawWithImage(n)},n.image.onerror=function(){console.error("Could not load image:",e),i._tryloadBrokenUrl(e,t,n)},n.image.src=e,n}},{key:"_fixImageCoordinates",value:function(e){0===e.width&&(document.body.appendChild(e),e.width=e.offsetWidth,e.height=e.offsetHeight,document.body.removeChild(e))}}]),e}();t.default=l},function(e,t,i){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var n=i(15),s=o(n),r=i(7),a=o(r),d=i(0),h=o(d),l=i(1),u=o(l),c=i(5),f=i(35).default,p=i(138).default,v=["bold","ital","boldital","mono"],g=function(){function e(t,i){var o=arguments.length>2&&void 0!==arguments[2]&&arguments[2];(0,h.default)(this,e),this.body=t,this.pointToSelf=!1,this.baseSize=void 0,this.fontOptions={},this.setOptions(i),this.size={top:0,left:0,width:0,height:0,yLine:0},this.isEdgeLabel=o}return(0,u.default)(e,[{key:"setOptions",value:function(e){if(this.elementOptions=e,this.initFontOptions(e.font),f.isValidLabel(e.label)?this.labelDirty=!0:e.label=void 0,void 0!==e.font&&null!==e.font)if("string"==typeof e.font)this.baseSize=this.fontOptions.size;else if("object"===(0,a.default)(e.font)){var t=e.font.size;void 0!==t&&(this.baseSize=t)}}},{key:"initFontOptions",value:function(t){var i=this;if(c.forEach(v,function(e){i.fontOptions[e]={}}),e.parseFontString(this.fontOptions,t))return void(this.fontOptions.vadjust=0);c.forEach(t,function(e,t){void 0!==e&&null!==e&&"object"!==(void 0===e?"undefined":(0,a.default)(e))&&(i.fontOptions[t]=e)})}},{key:"constrain",value:function(e){var t={constrainWidth:!1,maxWdt:-1,minWdt:-1,constrainHeight:!1,minHgt:-1,valign:"middle"},i=c.topMost(e,"widthConstraint");if("number"==typeof i)t.maxWdt=Number(i),t.minWdt=Number(i);else if("object"===(void 0===i?"undefined":(0,a.default)(i))){var o=c.topMost(e,["widthConstraint","maximum"]);"number"==typeof o&&(t.maxWdt=Number(o));var n=c.topMost(e,["widthConstraint","minimum"]);"number"==typeof n&&(t.minWdt=Number(n))}var s=c.topMost(e,"heightConstraint");if("number"==typeof s)t.minHgt=Number(s);else if("object"===(void 0===s?"undefined":(0,a.default)(s))){var r=c.topMost(e,["heightConstraint","minimum"]);"number"==typeof r&&(t.minHgt=Number(r));var d=c.topMost(e,["heightConstraint","valign"]);"string"==typeof d&&("top"!==d&&"bottom"!==d||(t.valign=d))}return t}},{key:"update",value:function(e,t){this.setOptions(e,!0),this.propagateFonts(t),c.deepExtend(this.fontOptions,this.constrain(t)),this.fontOptions.chooser=f.choosify("label",t)}},{key:"adjustSizes",value:function(e){var t=e?e.right+e.left:0;this.fontOptions.constrainWidth&&(this.fontOptions.maxWdt-=t,this.fontOptions.minWdt-=t);var i=e?e.top+e.bottom:0;this.fontOptions.constrainHeight&&(this.fontOptions.minHgt-=i)}},{key:"addFontOptionsToPile",value:function(e,t){for(var i=0;i<t.length;++i)this.addFontToPile(e,t[i])}},{key:"addFontToPile",value:function(e,t){if(void 0!==t&&void 0!==t.font&&null!==t.font){var i=t.font;e.push(i)}}},{key:"getBasicOptions",value:function(t){for(var i={},o=0;o<t.length;++o){var n=t[o],s={};e.parseFontString(s,n)&&(n=s),c.forEach(n,function(e,t){void 0!==e&&(i.hasOwnProperty(t)||(-1!==v.indexOf(t)?i[t]={}:i[t]=e))})}return i}},{key:"getFontOption",value:function(t,i,o){for(var n=void 0,s=0;s<t.length;++s){var r=t[s];if(r.hasOwnProperty(i)){if(void 0===(n=r[i])||null===n)continue;var a={};if(e.parseFontString(a,n)&&(n=a),n.hasOwnProperty(o))return n[o]}}if(this.fontOptions.hasOwnProperty(o))return this.fontOptions[o];throw new Error("Did not find value for multi-font for property: '"+o+"'")}},{key:"getFontOptions",value:function(e,t){for(var i={},o=["color","size","face","mod","vadjust"],n=0;n<o.length;++n){var s=o[n];i[s]=this.getFontOption(e,t,s)}return i}},{key:"propagateFonts",value:function(e){var t=this,i=[];this.addFontOptionsToPile(i,e),this.fontOptions=this.getBasicOptions(i);for(var o=0;o<v.length;++o)!function(e){var o=v[e],n=t.fontOptions[o],s=t.getFontOptions(i,o);c.forEach(s,function(e,t){n[t]=e}),n.size=Number(n.size),n.vadjust=Number(n.vadjust)}(o)}},{key:"draw",value:function(e,t,i,o,n){var s=arguments.length>5&&void 0!==arguments[5]?arguments[5]:"middle";if(void 0!==this.elementOptions.label){var r=this.fontOptions.size*this.body.view.scale;this.elementOptions.label&&r<this.elementOptions.scaling.label.drawThreshold-1||(r>=this.elementOptions.scaling.label.maxVisible&&(r=Number(this.elementOptions.scaling.label.maxVisible)/this.body.view.scale),this.calculateLabelSize(e,o,n,t,i,s),this._drawBackground(e),this._drawText(e,t,this.size.yLine,s,r))}}},{key:"_drawBackground",value:function(e){if(void 0!==this.fontOptions.background&&"none"!==this.fontOptions.background){e.fillStyle=this.fontOptions.background;var t=this.getSize();e.fillRect(t.left,t.top,t.width,t.height)}}},{key:"_drawText",value:function(e,t,i){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"middle",n=arguments[4],r=this._setAlignment(e,t,i,o),a=(0,s.default)(r,2);t=a[0],i=a[1],e.textAlign="left",t-=this.size.width/2,this.fontOptions.valign&&this.size.height>this.size.labelHeight&&("top"===this.fontOptions.valign&&(i-=(this.size.height-this.size.labelHeight)/2),"bottom"===this.fontOptions.valign&&(i+=(this.size.height-this.size.labelHeight)/2));for(var d=0;d<this.lineCount;d++){var h=this.lines[d];if(h&&h.blocks){var l=0;this.isEdgeLabel||"center"===this.fontOptions.align?l+=(this.size.width-h.width)/2:"right"===this.fontOptions.align&&(l+=this.size.width-h.width);for(var u=0;u<h.blocks.length;u++){var c=h.blocks[u];e.font=c.font;var f=this._getColor(c.color,n,c.strokeColor),p=(0,s.default)(f,2),v=p[0],g=p[1];c.strokeWidth>0&&(e.lineWidth=c.strokeWidth,e.strokeStyle=g,e.lineJoin="round"),e.fillStyle=v,c.strokeWidth>0&&e.strokeText(c.text,t+l,i+c.vadjust),e.fillText(c.text,t+l,i+c.vadjust),l+=c.width}i+=h.height}}}},{key:"_setAlignment",value:function(e,t,i,o){if(this.isEdgeLabel&&"horizontal"!==this.fontOptions.align&&!1===this.pointToSelf){t=0,i=0;"top"===this.fontOptions.align?(e.textBaseline="alphabetic",i-=4):"bottom"===this.fontOptions.align?(e.textBaseline="hanging",i+=4):e.textBaseline="middle"}else e.textBaseline=o;return[t,i]}},{key:"_getColor",value:function(e,t,i){var o=e||"#000000",n=i||"#ffffff";if(t<=this.elementOptions.scaling.label.drawThreshold){var s=Math.max(0,Math.min(1,1-(this.elementOptions.scaling.label.drawThreshold-t)));o=c.overrideOpacity(o,s),n=c.overrideOpacity(n,s)}return[o,n]}},{key:"getTextSize",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return this._processLabel(e,t,i),{width:this.size.width,height:this.size.height,lineCount:this.lineCount}}},{key:"getSize",value:function(){var e=this.size.left,t=this.size.top-1;if(this.isEdgeLabel){var i=.5*-this.size.width;switch(this.fontOptions.align){case"middle":e=i,t=.5*-this.size.height;break;case"top":e=i,t=-(this.size.height+2);break;case"bottom":e=i,t=2}}return{left:e,top:t,width:this.size.width,height:this.size.height}}},{key:"calculateLabelSize",value:function(e,t,i){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,n=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,s=arguments.length>5&&void 0!==arguments[5]?arguments[5]:"middle";this._processLabel(e,t,i),this.size.left=o-.5*this.size.width,this.size.top=n-.5*this.size.height,this.size.yLine=n+.5*(1-this.lineCount)*this.fontOptions.size,"hanging"===s&&(this.size.top+=.5*this.fontOptions.size,this.size.top+=4,this.size.yLine+=4)}},{key:"getFormattingValues",value:function(e,t,i,o){var n=function(e,t,i){return"normal"===t?"mod"===i?"":e[i]:void 0!==e[t][i]?e[t][i]:e[i]},s={color:n(this.fontOptions,o,"color"),size:n(this.fontOptions,o,"size"),face:n(this.fontOptions,o,"face"),mod:n(this.fontOptions,o,"mod"),vadjust:n(this.fontOptions,o,"vadjust"),strokeWidth:this.fontOptions.strokeWidth,strokeColor:this.fontOptions.strokeColor};(t||i)&&("normal"===o&&!0===this.fontOptions.chooser&&this.elementOptions.labelHighlightBold?s.mod="bold":"function"==typeof this.fontOptions.chooser&&this.fontOptions.chooser(s,this.elementOptions.id,t,i));var r="";return void 0!==s.mod&&""!==s.mod&&(r+=s.mod+" "),r+=s.size+"px "+s.face,e.font=r.replace(/"/g,""),s.font=e.font,s.height=s.size,s}},{key:"differentState",value:function(e,t){return e!==this.selectedState||t!==this.hoverState}},{key:"_processLabelText",value:function(e,t,i,o){return new p(e,this,t,i).process(o)}},{key:"_processLabel",value:function(e,t,i){if(!1!==this.labelDirty||this.differentState(t,i)){var o=this._processLabelText(e,t,i,this.elementOptions.label);this.fontOptions.minWdt>0&&o.width<this.fontOptions.minWdt&&(o.width=this.fontOptions.minWdt),this.size.labelHeight=o.height,this.fontOptions.minHgt>0&&o.height<this.fontOptions.minHgt&&(o.height=this.fontOptions.minHgt),this.lines=o.lines,this.lineCount=o.lines.length,this.size.width=o.width,this.size.height=o.height,this.selectedState=t,this.hoverState=i,this.labelDirty=!1}}},{key:"visible",value:function(){return 0!==this.size.width&&0!==this.size.height&&void 0!==this.elementOptions.label&&!(this.fontOptions.size*this.body.view.scale<this.elementOptions.scaling.label.drawThreshold-1)}}],[{key:"parseFontString",value:function(e,t){if(!t||"string"!=typeof t)return!1;var i=t.split(" ");return e.size=i[0].replace("px",""),e.face=i[1],e.color=i[2],!0}}]),e}();t.default=g},function(e,t,i){e.exports={default:i(140),__esModule:!0}},function(e,t,i){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var n=i(15),s=o(n),r=i(0),a=o(r),d=i(1),h=o(d),l=i(5),u=i(80).default,c=function(){function e(t,i,o){(0,a.default)(this,e),this.body=i,this.labelModule=o,this.options={},this.setOptions(t),this.colorDirty=!0,this.color={},this.selectionWidth=2,this.hoverWidth=1.5,this.fromPoint=this.from,this.toPoint=this.to}return(0,h.default)(e,[{key:"connect",value:function(){this.from=this.body.nodes[this.options.from],this.to=this.body.nodes[this.options.to]}},{key:"cleanup",value:function(){return!1}},{key:"setOptions",value:function(e){this.options=e,this.from=this.body.nodes[this.options.from],this.to=this.body.nodes[this.options.to],this.id=this.options.id}},{key:"drawLine",value:function(e,t,i,o,n){e.strokeStyle=this.getColor(e,t,i,o),e.lineWidth=t.width,!1!==t.dashes?this._drawDashedLine(e,t,n):this._drawLine(e,t,n)}},{key:"_drawLine",value:function(e,t,i,o,n){if(this.from!=this.to)this._line(e,t,i,o,n);else{var r=this._getCircleData(e),a=(0,s.default)(r,3),d=a[0],h=a[1],l=a[2];this._circle(e,t,d,h,l)}}},{key:"_drawDashedLine",value:function(e,t,i,o,n){e.lineCap="round";var r=[5,5];if(!0===Array.isArray(t.dashes)&&(r=t.dashes),void 0!==e.setLineDash){if(e.save(),e.setLineDash(r),e.lineDashOffset=0,this.from!=this.to)this._line(e,t,i);else{var a=this._getCircleData(e),d=(0,s.default)(a,3),h=d[0],l=d[1],u=d[2];this._circle(e,t,h,l,u)}e.setLineDash([0]),e.lineDashOffset=0,e.restore()}else{if(this.from!=this.to)e.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,r);else{var c=this._getCircleData(e),f=(0,s.default)(c,3),p=f[0],v=f[1],g=f[2];this._circle(e,t,p,v,g)}this.enableShadow(e,t),e.stroke(),this.disableShadow(e,t)}}},{key:"findBorderPosition",value:function(e,t,i){return this.from!=this.to?this._findBorderPosition(e,t,i):this._findBorderPositionCircle(e,t,i)}},{key:"findBorderPositions",value:function(e){var t={},i={};if(this.from!=this.to)t=this._findBorderPosition(this.from,e),i=this._findBorderPosition(this.to,e);else{var o=this._getCircleData(e).slice(0,2),n=(0,s.default)(o,2),r=n[0],a=n[1];t=this._findBorderPositionCircle(this.from,e,{x:r,y:a,low:.25,high:.6,direction:-1}),i=this._findBorderPositionCircle(this.from,e,{x:r,y:a,low:.6,high:.8,direction:1})}return{from:t,to:i}}},{key:"_getCircleData",value:function(e){var t=void 0,i=void 0,o=this.from,n=this.options.selfReferenceSize;return void 0!==e&&void 0===o.shape.width&&o.shape.resize(e),o.shape.width>o.shape.height?(t=o.x+.5*o.shape.width,i=o.y-n):(t=o.x+n,i=o.y-.5*o.shape.height),[t,i,n]}},{key:"_pointOnCircle",value:function(e,t,i,o){var n=2*o*Math.PI;return{x:e+i*Math.cos(n),y:t-i*Math.sin(n)}}},{key:"_findBorderPositionCircle",value:function(e,t,i){for(var o=i.x,n=i.y,s=i.low,r=i.high,a=i.direction,d=0,h=this.options.selfReferenceSize,l=void 0,u=void 0,c=void 0,f=void 0,p=void 0,v=.5*(s+r);s<=r&&d<10&&(v=.5*(s+r),l=this._pointOnCircle(o,n,h,v),u=Math.atan2(e.y-l.y,e.x-l.x),c=e.distanceToBorder(t,u),f=Math.sqrt(Math.pow(l.x-e.x,2)+Math.pow(l.y-e.y,2)),p=c-f,!(Math.abs(p)<.05));)p>0?a>0?s=v:r=v:a>0?r=v:s=v,d++;return l.t=v,l}},{key:"getLineWidth",value:function(e,t){return!0===e?Math.max(this.selectionWidth,.3/this.body.view.scale):!0===t?Math.max(this.hoverWidth,.3/this.body.view.scale):Math.max(this.options.width,.3/this.body.view.scale)}},{key:"getColor",value:function(e,t,i,o){if(!1!==t.inheritsColor){if("both"===t.inheritsColor&&this.from.id!==this.to.id){var n=e.createLinearGradient(this.from.x,this.from.y,this.to.x,this.to.y),s=void 0,r=void 0;return s=this.from.options.color.highlight.border,r=this.to.options.color.highlight.border,!1===this.from.selected&&!1===this.to.selected?(s=l.overrideOpacity(this.from.options.color.border,t.opacity),r=l.overrideOpacity(this.to.options.color.border,t.opacity)):!0===this.from.selected&&!1===this.to.selected?r=this.to.options.color.border:!1===this.from.selected&&!0===this.to.selected&&(s=this.from.options.color.border),n.addColorStop(0,s),n.addColorStop(1,r),n}return"to"===t.inheritsColor?l.overrideOpacity(this.to.options.color.border,t.opacity):l.overrideOpacity(this.from.options.color.border,t.opacity)}return l.overrideOpacity(t.color,t.opacity)}},{key:"_circle",value:function(e,t,i,o,n){this.enableShadow(e,t),e.beginPath(),e.arc(i,o,n,0,2*Math.PI,!1),e.stroke(),this.disableShadow(e,t)}},{key:"getDistanceToEdge",value:function(e,t,i,o,n,r,a,d){var h=0;if(this.from!=this.to)h=this._getDistanceToEdge(e,t,i,o,n,r,a);else{var l=this._getCircleData(void 0),u=(0,s.default)(l,3),c=u[0],f=u[1],p=u[2],v=c-n,g=f-r;h=Math.abs(Math.sqrt(v*v+g*g)-p)}return h}},{key:"_getDistanceToLine",value:function(e,t,i,o,n,s){var r=i-e,a=o-t,d=r*r+a*a,h=((n-e)*r+(s-t)*a)/d;h>1?h=1:h<0&&(h=0);var l=e+h*r,u=t+h*a,c=l-n,f=u-s;return Math.sqrt(c*c+f*f)}},{key:"getArrowData",value:function(e,t,i,o,n,r){var a=void 0,d=void 0,h=void 0,l=void 0,u=void 0,c=void 0,f=void 0,p=r.width;if("from"===t?(h=this.from,l=this.to,u=.1,c=r.fromArrowScale,f=r.fromArrowType):"to"===t?(h=this.to,l=this.from,u=-.1,c=r.toArrowScale,f=r.toArrowType):(h=this.to,l=this.from,c=r.middleArrowScale,f=r.middleArrowType),h!=l)if("middle"!==t)if(!0===this.options.smooth.enabled){d=this.findBorderPosition(h,e,{via:i});var v=this.getPoint(Math.max(0,Math.min(1,d.t+u)),i);a=Math.atan2(d.y-v.y,d.x-v.x)}else a=Math.atan2(h.y-l.y,h.x-l.x),d=this.findBorderPosition(h,e);else a=Math.atan2(h.y-l.y,h.x-l.x),d=this.getPoint(.5,i);else{var g=this._getCircleData(e),y=(0,s.default)(g,3),m=y[0],b=y[1],_=y[2];"from"===t?(d=this.findBorderPosition(this.from,e,{x:m,y:b,low:.25,high:.6,direction:-1}),a=-2*d.t*Math.PI+1.5*Math.PI+.1*Math.PI):"to"===t?(d=this.findBorderPosition(this.from,e,{x:m,y:b,low:.6,high:1,direction:1}),a=-2*d.t*Math.PI+1.5*Math.PI-1.1*Math.PI):(d=this._pointOnCircle(m,b,_,.175),a=3.9269908169872414)}"middle"===t&&c<0&&(p*=-1);var w=15*c+3*p;return{point:d,core:{x:d.x-.9*w*Math.cos(a),y:d.y-.9*w*Math.sin(a)},angle:a,length:w,type:f}}},{key:"drawArrowHead",value:function(e,t,i,o,n){e.strokeStyle=this.getColor(e,t,i,o),e.fillStyle=e.strokeStyle,e.lineWidth=t.width,u.draw(e,n),this.enableShadow(e,t),e.fill(),this.disableShadow(e,t)}},{key:"enableShadow",value:function(e,t){!0===t.shadow&&(e.shadowColor=t.shadowColor,e.shadowBlur=t.shadowSize,e.shadowOffsetX=t.shadowX,e.shadowOffsetY=t.shadowY)}},{key:"disableShadow",value:function(e,t){!0===t.shadow&&(e.shadowColor="rgba(0,0,0,0)",e.shadowBlur=0,e.shadowOffsetX=0,e.shadowOffsetY=0)}},{key:"drawBackground",value:function(e,t){if(!1!==t.background){var i=["strokeStyle","lineWidth","dashes"],o={};i.forEach(function(t){o[t]=e[t]}),e.strokeStyle=t.backgroundColor,e.lineWidth=t.backgroundSize,this.setStrokeDashed(e,t.backgroundDashes),e.stroke(),i.forEach(function(t){e[t]=o[t]}),this.setStrokeDashed(e,t.dashes)}}},{key:"setStrokeDashed",value:function(e,t){if(!1!==t)if(void 0!==e.setLineDash){var i=[5,5];!0===Array.isArray(t)&&(i=t),e.setLineDash(i)}else console.warn("setLineDash is not supported in this browser. The dashed stroke cannot be used.");else void 0!==e.setLineDash?e.setLineDash([]):console.warn("setLineDash is not supported in this browser. The dashed stroke cannot be used.")}}]),e}();t.default=c},function(e,t,i){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var n=i(2),s=o(n),r=i(3),a=o(r),d=i(4),h=o(d),l=i(0),u=o(l),c=i(1),f=o(c),p=function(){function e(){(0,u.default)(this,e)}return(0,f.default)(e,null,[{key:"transform",value:function(e,t){e instanceof Array||(e=[e]);for(var i=t.point.x,o=t.point.y,n=t.angle,s=t.length,r=0;r<e.length;++r){var a=e[r],d=a.x*Math.cos(n)-a.y*Math.sin(n),h=a.x*Math.sin(n)+a.y*Math.cos(n);a.x=i+s*d,a.y=o+s*h}}},{key:"drawPath",value:function(e,t){e.beginPath(),e.moveTo(t[0].x,t[0].y);for(var i=1;i<t.length;++i)e.lineTo(t[i].x,t[i].y);e.closePath()}}]),e}(),v=function(e){function t(){return(0,u.default)(this,t),(0,a.default)(this,(t.__proto__||(0,s.default)(t)).apply(this,arguments))}return(0,h.default)(t,e),(0,f.default)(t,null,[{key:"draw",value:function(e,t){var i=[{x:0,y:0},{x:-1,y:.3},{x:-.9,y:0},{x:-1,y:-.3}];p.transform(i,t),p.drawPath(e,i)}}]),t}(p),g=function(){function e(){(0,u.default)(this,e)}return(0,f.default)(e,null,[{key:"draw",value:function(e,t){var i=[{x:-1,y:0},{x:0,y:.3},{x:-.4,y:0},{x:0,y:-.3}];p.transform(i,t),p.drawPath(e,i)}}]),e}(),y=function(){function e(){(0,u.default)(this,e)}return(0,f.default)(e,null,[{key:"draw",value:function(e,t){var i={x:-.4,y:0};p.transform(i,t),e.strokeStyle=e.fillStyle,e.fillStyle="rgba(0, 0, 0, 0)";var o=Math.PI,n=t.angle-o/2,s=t.angle+o/2;e.beginPath(),e.arc(i.x,i.y,.4*t.length,n,s,!1),e.stroke()}}]),e}(),m=function(){function e(){(0,u.default)(this,e)}return(0,f.default)(e,null,[{key:"draw",value:function(e,t){var i={x:-.3,y:0};p.transform(i,t),e.strokeStyle=e.fillStyle,e.fillStyle="rgba(0, 0, 0, 0)";var o=Math.PI,n=t.angle+o/2,s=t.angle+3*o/2;e.beginPath(),e.arc(i.x,i.y,.4*t.length,n,s,!1),e.stroke()}}]),e}(),b=function(){function e(){(0,u.default)(this,e)}return(0,f.default)(e,null,[{key:"draw",value:function(e,t){var i=[{x:.02,y:0},{x:-1,y:.3},{x:-1,y:-.3}];p.transform(i,t),p.drawPath(e,i)}}]),e}(),_=function(){function e(){(0,u.default)(this,e)}return(0,f.default)(e,null,[{key:"draw",value:function(e,t){var i=[{x:0,y:.3},{x:0,y:-.3},{x:-1,y:0}];p.transform(i,t),p.drawPath(e,i)}}]),e}(),w=function(){function e(){(0,u.default)(this,e)}return(0,f.default)(e,null,[{key:"draw",value:function(e,t){var i={x:-.4,y:0};p.transform(i,t),e.circle(i.x,i.y,.4*t.length)}}]),e}(),k=function(){function e(){(0,u.default)(this,e)}return(0,f.default)(e,null,[{key:"draw",value:function(e,t){var i=[{x:0,y:.5},{x:0,y:-.5},{x:-.15,y:-.5},{x:-.15,y:.5}];p.transform(i,t),p.drawPath(e,i)}}]),e}(),x=function(){function e(){(0,u.default)(this,e)}return(0,f.default)(e,null,[{key:"draw",value:function(e,t){var i=[{x:0,y:.3},{x:0,y:-.3},{x:-.6,y:-.3},{x:-.6,y:.3}];p.transform(i,t),p.drawPath(e,i)}}]),e}(),O=function(){function e(){(0,u.default)(this,e)}return(0,f.default)(e,null,[{key:"draw",value:function(e,t){var i=[{x:0,y:0},{x:-.5,y:-.3},{x:-1,y:0},{x:-.5,y:.3}];p.transform(i,t),p.drawPath(e,i)}}]),e}(),M=function(){function e(){(0,u.default)(this,e)}return(0,f.default)(e,null,[{key:"draw",value:function(e,t){var i=[{x:-1,y:.3},{x:-.5,y:0},{x:-1,y:-.3},{x:0,y:0}];p.transform(i,t),p.drawPath(e,i)}}]),e}(),E=function(){function e(){(0,u.default)(this,e)}return(0,f.default)(e,null,[{key:"draw",value:function(e,t){var i;switch(t.type&&(i=t.type.toLowerCase()),i){case"circle":w.draw(e,t);break;case"box":x.draw(e,t);break;case"crow":g.draw(e,t);break;case"curve":y.draw(e,t);break;case"diamond":O.draw(e,t);break;case"inv_curve":m.draw(e,t);break;case"triangle":b.draw(e,t);break;case"inv_triangle":_.draw(e,t);break;case"bar":k.draw(e,t);break;case"vee":M.draw(e,t);break;case"arrow":default:v.draw(e,t)}}}]),e}();t.default=E},function(e,t,i){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var n=i(0),s=o(n),r=i(1),a=o(r),d=function(){function e(t,i,o){(0,s.default)(this,e),this.body=t,this.physicsBody=i,this.barnesHutTree,this.setOptions(o),this.randomSeed=5}return(0,a.default)(e,[{key:"setOptions",value:function(e){this.options=e,this.thetaInversed=1/this.options.theta,this.overlapAvoidanceFactor=1-Math.max(0,Math.min(1,this.options.avoidOverlap))}},{key:"seededRandom",value:function(){var e=1e4*Math.sin(this.randomSeed++);return e-Math.floor(e)}},{key:"solve",value:function(){if(0!==this.options.gravitationalConstant&&this.physicsBody.physicsNodeIndices.length>0){var e=void 0,t=this.body.nodes,i=this.physicsBody.physicsNodeIndices,o=i.length,n=this._formBarnesHutTree(t,i);this.barnesHutTree=n;for(var s=0;s<o;s++)e=t[i[s]],e.options.mass>0&&this._getForceContributions(n.root,e)}}},{key:"_getForceContributions",value:function(e,t){this._getForceContribution(e.children.NW,t),this._getForceContribution(e.children.NE,t),this._getForceContribution(e.children.SW,t),this._getForceContribution(e.children.SE,t)}},{key:"_getForceContribution",value:function(e,t){if(e.childrenCount>0){var i=void 0,o=void 0,n=void 0;i=e.centerOfMass.x-t.x,o=e.centerOfMass.y-t.y,n=Math.sqrt(i*i+o*o),n*e.calcSize>this.thetaInversed?this._calculateForces(n,i,o,t,e):4===e.childrenCount?this._getForceContributions(e,t):e.children.data.id!=t.id&&this._calculateForces(n,i,o,t,e)}}},{key:"_calculateForces",value:function(e,t,i,o,n){0===e&&(e=.1,t=e),this.overlapAvoidanceFactor<1&&o.shape.radius&&(e=Math.max(.1+this.overlapAvoidanceFactor*o.shape.radius,e-o.shape.radius));var s=this.options.gravitationalConstant*n.mass*o.options.mass/Math.pow(e,3),r=t*s,a=i*s;this.physicsBody.forces[o.id].x+=r,this.physicsBody.forces[o.id].y+=a}},{key:"_formBarnesHutTree",value:function(e,t){for(var i=void 0,o=t.length,n=e[t[0]].x,s=e[t[0]].y,r=e[t[0]].x,a=e[t[0]].y,d=1;d<o;d++){var h=e[t[d]],l=h.x,u=h.y;h.options.mass>0&&(l<n&&(n=l),l>r&&(r=l),u<s&&(s=u),u>a&&(a=u))}var c=Math.abs(r-n)-Math.abs(a-s);c>0?(s-=.5*c,a+=.5*c):(n+=.5*c,r-=.5*c);var f=Math.max(1e-5,Math.abs(r-n)),p=.5*f,v=.5*(n+r),g=.5*(s+a),y={root:{centerOfMass:{x:0,y:0},mass:0,range:{minX:v-p,maxX:v+p,minY:g-p,maxY:g+p},size:f,calcSize:1/f,children:{data:null},maxWidth:0,level:0,childrenCount:4}};this._splitBranch(y.root);for(var m=0;m<o;m++)i=e[t[m]],i.options.mass>0&&this._placeInTree(y.root,i);return y}},{key:"_updateBranchMass",value:function(e,t){var i=e.centerOfMass,o=e.mass+t.options.mass,n=1/o;i.x=i.x*e.mass+t.x*t.options.mass,i.x*=n,i.y=i.y*e.mass+t.y*t.options.mass,i.y*=n,e.mass=o;var s=Math.max(Math.max(t.height,t.radius),t.width);e.maxWidth=e.maxWidth<s?s:e.maxWidth}},{key:"_placeInTree",value:function(e,t,i){1==i&&void 0!==i||this._updateBranchMass(e,t);var o=e.children.NW.range,n=void 0;n=o.maxX>t.x?o.maxY>t.y?"NW":"SW":o.maxY>t.y?"NE":"SE",this._placeInRegion(e,t,n)}},{key:"_placeInRegion",value:function(e,t,i){var o=e.children[i];switch(o.childrenCount){case 0:o.children.data=t,o.childrenCount=1,this._updateBranchMass(o,t);break;case 1:o.children.data.x===t.x&&o.children.data.y===t.y?(t.x+=this.seededRandom(),t.y+=this.seededRandom()):(this._splitBranch(o),this._placeInTree(o,t));break;case 4:this._placeInTree(o,t)}}},{key:"_splitBranch",value:function(e){var t=null;1===e.childrenCount&&(t=e.children.data,e.mass=0,e.centerOfMass.x=0,e.centerOfMass.y=0),e.childrenCount=4,e.children.data=null,this._insertRegion(e,"NW"),this._insertRegion(e,"NE"),this._insertRegion(e,"SW"),this._insertRegion(e,"SE"),null!=t&&this._placeInTree(e,t)}},{key:"_insertRegion",value:function(e,t){var i=void 0,o=void 0,n=void 0,s=void 0,r=.5*e.size;switch(t){case"NW":i=e.range.minX,o=e.range.minX+r,n=e.range.minY,s=e.range.minY+r;break;case"NE":i=e.range.minX+r,o=e.range.maxX,n=e.range.minY,s=e.range.minY+r;break;case"SW":i=e.range.minX,o=e.range.minX+r,n=e.range.minY+r,s=e.range.maxY;break;case"SE":i=e.range.minX+r,o=e.range.maxX,n=e.range.minY+r,s=e.range.maxY}e.children[t]={centerOfMass:{x:0,y:0},mass:0,range:{minX:i,maxX:o,minY:n,maxY:s},size:.5*e.size,calcSize:2*e.calcSize,children:{data:null},maxWidth:0,level:e.level+1,childrenCount:0}}},{key:"_debug",value:function(e,t){void 0!==this.barnesHutTree&&(e.lineWidth=1,this._drawBranch(this.barnesHutTree.root,e,t))}},{key:"_drawBranch",value:function(e,t,i){void 0===i&&(i="#FF0000"),4===e.childrenCount&&(this._drawBranch(e.children.NW,t),this._drawBranch(e.children.NE,t),this._drawBranch(e.children.SE,t),this._drawBranch(e.children.SW,t)),t.strokeStyle=i,t.beginPath(),t.moveTo(e.range.minX,e.range.minY),t.lineTo(e.range.maxX,e.range.minY),t.stroke(),t.beginPath(),t.moveTo(e.range.maxX,e.range.minY),t.lineTo(e.range.maxX,e.range.maxY),t.stroke(),t.beginPath(),t.moveTo(e.range.maxX,e.range.maxY),t.lineTo(e.range.minX,e.range.maxY),t.stroke(),t.beginPath(),t.moveTo(e.range.minX,e.range.maxY),t.lineTo(e.range.minX,e.range.minY),t.stroke()}}]),e}();t.default=d},function(e,t,i){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var n=i(0),s=o(n),r=i(1),a=o(r),d=function(){function e(t,i,o){(0,s.default)(this,e),this.body=t,this.physicsBody=i,this.setOptions(o)}return(0,a.default)(e,[{key:"setOptions",value:function(e){this.options=e}},{key:"solve",value:function(){for(var e=void 0,t=void 0,i=void 0,o=void 0,n=this.body.nodes,s=this.physicsBody.physicsNodeIndices,r=this.physicsBody.forces,a=0;a<s.length;a++){o=n[s[a]],e=-o.x,t=-o.y,i=Math.sqrt(e*e+t*t),this._calculateForces(i,e,t,r,o)}}},{key:"_calculateForces",value:function(e,t,i,o,n){var s=0===e?0:this.options.centralGravity/e;o[n.id].x=t*s,o[n.id].y=i*s}}]),e}();t.default=d},function(e,t,i){e.exports=i(187)},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o="string",n="boolean",s="number",r="object",a=["arrow","circle","bar"],d={configure:{enabled:{boolean:n},filter:{boolean:n,string:o,array:"array",function:"function"},container:{dom:"dom"},showButton:{boolean:n},__type__:{object:r,boolean:n,string:o,array:"array",function:"function"}},edges:{arrows:{to:{enabled:{boolean:n},scaleFactor:{number:s},type:{string:a},__type__:{object:r,boolean:n}},middle:{enabled:{boolean:n},scaleFactor:{number:s},type:{string:a},__type__:{object:r,boolean:n}},from:{enabled:{boolean:n},scaleFactor:{number:s},type:{string:a},__type__:{object:r,boolean:n}},__type__:{string:["from","to","middle"],object:r}},arrowStrikethrough:{boolean:n},background:{enabled:{boolean:n},color:{string:o},size:{number:s},dashes:{boolean:n,array:"array"},__type__:{object:r,boolean:n}},chosen:{label:{boolean:n,function:"function"},edge:{boolean:n,function:"function"},__type__:{object:r,boolean:n}},color:{color:{string:o},highlight:{string:o},hover:{string:o},inherit:{string:["from","to","both"],boolean:n},opacity:{number:s},__type__:{object:r,string:o}},dashes:{boolean:n,array:"array"},font:{color:{string:o},size:{number:s},face:{string:o},background:{string:o},strokeWidth:{number:s},strokeColor:{string:o},align:{string:["horizontal","top","middle","bottom"]},vadjust:{number:s},multi:{boolean:n,string:o},bold:{color:{string:o},size:{number:s},face:{string:o},mod:{string:o},vadjust:{number:s},__type__:{object:r,string:o}},boldital:{color:{string:o},size:{number:s},face:{string:o},mod:{string:o},vadjust:{number:s},__type__:{object:r,string:o}},ital:{color:{string:o},size:{number:s},face:{string:o},mod:{string:o},vadjust:{number:s},__type__:{object:r,string:o}},mono:{color:{string:o},size:{number:s},face:{string:o},mod:{string:o},vadjust:{number:s},__type__:{object:r,string:o}},__type__:{object:r,string:o}},hidden:{boolean:n},hoverWidth:{function:"function",number:s},label:{string:o,undefined:"undefined"},labelHighlightBold:{boolean:n},length:{number:s,undefined:"undefined"},physics:{boolean:n},scaling:{min:{number:s},max:{number:s},label:{enabled:{boolean:n},min:{number:s},max:{number:s},maxVisible:{number:s},drawThreshold:{number:s},__type__:{object:r,boolean:n}},customScalingFunction:{function:"function"},__type__:{object:r}},selectionWidth:{function:"function",number:s},selfReferenceSize:{number:s},shadow:{enabled:{boolean:n},color:{string:o},size:{number:s},x:{number:s},y:{number:s},__type__:{object:r,boolean:n}},smooth:{enabled:{boolean:n},type:{string:["dynamic","continuous","discrete","diagonalCross","straightCross","horizontal","vertical","curvedCW","curvedCCW","cubicBezier"]},roundness:{number:s},forceDirection:{string:["horizontal","vertical","none"],boolean:n},__type__:{object:r,boolean:n}},title:{string:o,undefined:"undefined"},width:{number:s},widthConstraint:{maximum:{number:s},__type__:{object:r,boolean:n,number:s}},value:{number:s,undefined:"undefined"},__type__:{object:r}},groups:{useDefaultGroups:{boolean:n},__any__:"get from nodes, will be overwritten below",__type__:{object:r}},interaction:{dragNodes:{boolean:n},dragView:{boolean:n},hideEdgesOnDrag:{boolean:n},hideEdgesOnZoom:{boolean:n},hideNodesOnDrag:{boolean:n},hover:{boolean:n},keyboard:{enabled:{boolean:n},speed:{x:{number:s},y:{number:s},zoom:{number:s},__type__:{object:r}},bindToWindow:{boolean:n},__type__:{object:r,boolean:n}},multiselect:{boolean:n},navigationButtons:{boolean:n},selectable:{boolean:n},selectConnectedEdges:{boolean:n},hoverConnectedEdges:{boolean:n},tooltipDelay:{number:s},zoomView:{boolean:n},zoomSpeed:{number:s},__type__:{object:r}},layout:{randomSeed:{undefined:"undefined",number:s},improvedLayout:{boolean:n},hierarchical:{enabled:{boolean:n},levelSeparation:{number:s},nodeSpacing:{number:s},treeSpacing:{number:s},blockShifting:{boolean:n},edgeMinimization:{boolean:n},parentCentralization:{boolean:n},direction:{string:["UD","DU","LR","RL"]},sortMethod:{string:["hubsize","directed"]},__type__:{object:r,boolean:n}},__type__:{object:r}},manipulation:{enabled:{boolean:n},initiallyActive:{boolean:n},addNode:{boolean:n,function:"function"},addEdge:{boolean:n,function:"function"},editNode:{function:"function"},editEdge:{editWithoutDrag:{function:"function"},__type__:{object:r,boolean:n,function:"function"}},deleteNode:{boolean:n,function:"function"},deleteEdge:{boolean:n,function:"function"},controlNodeStyle:"get from nodes, will be overwritten below",__type__:{object:r,boolean:n}},nodes:{borderWidth:{number:s},borderWidthSelected:{number:s,undefined:"undefined"},brokenImage:{string:o,undefined:"undefined"},chosen:{label:{boolean:n,function:"function"},node:{boolean:n,function:"function"},__type__:{object:r,boolean:n}},color:{border:{string:o},background:{string:o},highlight:{border:{string:o},background:{string:o},__type__:{object:r,string:o}},hover:{border:{string:o},background:{string:o},__type__:{object:r,string:o}},__type__:{object:r,string:o}},fixed:{x:{boolean:n},y:{boolean:n},__type__:{object:r,boolean:n}},font:{align:{string:o},color:{string:o},size:{number:s},face:{string:o},background:{string:o},strokeWidth:{number:s},strokeColor:{string:o},vadjust:{number:s},multi:{boolean:n,string:o},bold:{color:{string:o},size:{number:s},face:{string:o},mod:{string:o},vadjust:{number:s},__type__:{object:r,string:o}},boldital:{color:{string:o},size:{number:s},face:{string:o},mod:{string:o},vadjust:{number:s},__type__:{object:r,string:o}},ital:{color:{string:o},size:{number:s},face:{string:o},mod:{string:o},vadjust:{number:s},__type__:{object:r,string:o}},mono:{color:{string:o},size:{number:s},face:{string:o},mod:{string:o},vadjust:{number:s},__type__:{object:r,string:o}},__type__:{object:r,string:o}},group:{string:o,number:s,undefined:"undefined"},heightConstraint:{minimum:{number:s},valign:{string:o},__type__:{object:r,boolean:n,number:s}},hidden:{boolean:n},icon:{face:{string:o},code:{string:o},size:{number:s},color:{string:o},__type__:{object:r}},id:{string:o,number:s},image:{selected:{string:o,undefined:"undefined"},unselected:{string:o,undefined:"undefined"},__type__:{object:r,string:o}},label:{string:o,undefined:"undefined"},labelHighlightBold:{boolean:n},level:{number:s,undefined:"undefined"},margin:{top:{number:s},right:{number:s},bottom:{number:s},left:{number:s},__type__:{object:r,number:s}},mass:{number:s},physics:{boolean:n},scaling:{min:{number:s},max:{number:s},label:{enabled:{boolean:n},min:{number:s},max:{number:s},maxVisible:{number:s},drawThreshold:{number:s},__type__:{object:r,boolean:n}},customScalingFunction:{function:"function"},__type__:{object:r}},shadow:{enabled:{boolean:n},color:{string:o},size:{number:s},x:{number:s},y:{number:s},__type__:{object:r,boolean:n}},shape:{string:["ellipse","circle","database","box","text","image","circularImage","diamond","dot","star","triangle","triangleDown","square","icon","hexagon"]},shapeProperties:{borderDashes:{boolean:n,array:"array"},borderRadius:{number:s},interpolation:{boolean:n},useImageSize:{boolean:n},useBorderWithImage:{boolean:n},__type__:{object:r}},size:{number:s},title:{string:o,dom:"dom",undefined:"undefined"},value:{number:s,undefined:"undefined"},widthConstraint:{minimum:{number:s},maximum:{number:s},__type__:{object:r,boolean:n,number:s}},x:{number:s},y:{number:s},__type__:{object:r}},physics:{enabled:{boolean:n},barnesHut:{gravitationalConstant:{number:s},centralGravity:{number:s},springLength:{number:s},springConstant:{number:s},damping:{number:s},avoidOverlap:{number:s},__type__:{object:r}},forceAtlas2Based:{gravitationalConstant:{number:s},centralGravity:{number:s},springLength:{number:s},springConstant:{number:s},damping:{number:s},avoidOverlap:{number:s},__type__:{object:r}},repulsion:{centralGravity:{number:s},springLength:{number:s},springConstant:{number:s},nodeDistance:{number:s},damping:{number:s},__type__:{object:r}},hierarchicalRepulsion:{centralGravity:{number:s},springLength:{number:s},springConstant:{number:s},nodeDistance:{number:s},damping:{number:s},__type__:{object:r}},maxVelocity:{number:s},minVelocity:{number:s},solver:{string:["barnesHut","repulsion","hierarchicalRepulsion","forceAtlas2Based"]},stabilization:{enabled:{boolean:n},iterations:{number:s},updateInterval:{number:s},onlyDynamicEdges:{boolean:n},fit:{boolean:n},__type__:{object:r,boolean:n}},timestep:{number:s},adaptiveTimestep:{boolean:n},__type__:{object:r,boolean:n}},autoResize:{boolean:n},clickToUse:{boolean:n},locale:{string:o},locales:{__any__:{any:"any"},__type__:{object:r}},height:{string:o},width:{string:o},__type__:{object:r}};d.groups.__any__=d.nodes,d.manipulation.controlNodeStyle=d.nodes;var h={nodes:{borderWidth:[1,0,10,1],borderWidthSelected:[2,0,10,1],color:{border:["color","#2B7CE9"],background:["color","#97C2FC"],highlight:{border:["color","#2B7CE9"],background:["color","#D2E5FF"]},hover:{border:["color","#2B7CE9"],background:["color","#D2E5FF"]}},fixed:{x:!1,y:!1},font:{color:["color","#343434"],size:[14,0,100,1],face:["arial","verdana","tahoma"],background:["color","none"],strokeWidth:[0,0,50,1],strokeColor:["color","#ffffff"]},hidden:!1,labelHighlightBold:!0,physics:!0,scaling:{min:[10,0,200,1],max:[30,0,200,1],label:{enabled:!1,min:[14,0,200,1],max:[30,0,200,1],maxVisible:[30,0,200,1],drawThreshold:[5,0,20,1]}},shadow:{enabled:!1,color:"rgba(0,0,0,0.5)",size:[10,0,20,1],x:[5,-30,30,1],y:[5,-30,30,1]},shape:["ellipse","box","circle","database","diamond","dot","square","star","text","triangle","triangleDown","hexagon"],shapeProperties:{borderDashes:!1,borderRadius:[6,0,20,1],interpolation:!0,useImageSize:!1},size:[25,0,200,1]},edges:{arrows:{to:{enabled:!1,scaleFactor:[1,0,3,.05],type:"arrow"},middle:{enabled:!1,scaleFactor:[1,0,3,.05],type:"arrow"},from:{enabled:!1,scaleFactor:[1,0,3,.05],type:"arrow"}},arrowStrikethrough:!0,color:{color:["color","#848484"],highlight:["color","#848484"],hover:["color","#848484"],inherit:["from","to","both",!0,!1],opacity:[1,0,1,.05]},dashes:!1,font:{color:["color","#343434"],size:[14,0,100,1],face:["arial","verdana","tahoma"],background:["color","none"],strokeWidth:[2,0,50,1],strokeColor:["color","#ffffff"],align:["horizontal","top","middle","bottom"]},hidden:!1,hoverWidth:[1.5,0,5,.1],labelHighlightBold:!0,physics:!0,scaling:{min:[1,0,100,1],max:[15,0,100,1],label:{enabled:!0,min:[14,0,200,1],max:[30,0,200,1],maxVisible:[30,0,200,1],drawThreshold:[5,0,20,1]}},selectionWidth:[1.5,0,5,.1],selfReferenceSize:[20,0,200,1],shadow:{enabled:!1,color:"rgba(0,0,0,0.5)",size:[10,0,20,1],x:[5,-30,30,1],y:[5,-30,30,1]},smooth:{enabled:!0,type:["dynamic","continuous","discrete","diagonalCross","straightCross","horizontal","vertical","curvedCW","curvedCCW","cubicBezier"],forceDirection:["horizontal","vertical","none"],roundness:[.5,0,1,.05]},width:[1,0,30,1]},layout:{hierarchical:{enabled:!1,levelSeparation:[150,20,500,5],nodeSpacing:[100,20,500,5],treeSpacing:[200,20,500,5],blockShifting:!0,edgeMinimization:!0,parentCentralization:!0,direction:["UD","DU","LR","RL"],sortMethod:["hubsize","directed"]}},interaction:{dragNodes:!0,dragView:!0,hideEdgesOnDrag:!1,hideEdgesOnZoom:!1,hideNodesOnDrag:!1,hover:!1,keyboard:{enabled:!1,speed:{x:[10,0,40,1],y:[10,0,40,1],zoom:[.02,0,.1,.005]},bindToWindow:!0},multiselect:!1,navigationButtons:!1,selectable:!0,selectConnectedEdges:!0,hoverConnectedEdges:!0,tooltipDelay:[300,0,1e3,25],zoomView:!0,zoomSpeed:[1,1,1,1]},manipulation:{enabled:!1,initiallyActive:!1},physics:{enabled:!0,barnesHut:{gravitationalConstant:[-2e3,-3e4,0,50],centralGravity:[.3,0,10,.05],springLength:[95,0,500,5],springConstant:[.04,0,1.2,.005],damping:[.09,0,1,.01],avoidOverlap:[0,0,1,.01]},forceAtlas2Based:{gravitationalConstant:[-50,-500,0,1],centralGravity:[.01,0,1,.005],springLength:[95,0,500,5],springConstant:[.08,0,1.2,.005],damping:[.4,0,1,.01],avoidOverlap:[0,0,1,.01]},repulsion:{centralGravity:[.2,0,10,.05],springLength:[200,0,500,5],springConstant:[.05,0,1.2,.005],nodeDistance:[100,0,500,5],damping:[.09,0,1,.01]},hierarchicalRepulsion:{centralGravity:[.2,0,10,.05],springLength:[100,0,500,5],springConstant:[.01,0,1.2,.005],nodeDistance:[120,0,500,5],damping:[.09,0,1,.01]},maxVelocity:[50,0,150,1],minVelocity:[.1,.01,.5,.01],solver:["barnesHut","forceAtlas2Based","repulsion","hierarchicalRepulsion"],timestep:[.5,.01,1,.01]}};t.allOptions=d,t.configureOptions=h},function(e,t,i){"use strict";t.util=i(5),t.DOMutil=i(121),t.DataSet=i(33),t.DataView=i(51),t.Queue=i(72),t.Network=i(123),t.network={Images:i(76),dotparser:i(74),gephiParser:i(75),allOptions:i(84)},t.network.convertDot=function(e){return t.network.dotparser.DOTToGraph(e)},t.network.convertGephi=function(e,i){return t.network.gephiParser.parseGephi(e,i)},t.moment=i(71),t.Hammer=i(24),t.keycharm=i(52)},function(e,t,i){i(37),i(47),e.exports=i(98)},function(e,t,i){"use strict";var o=i(88),n=i(89),s=i(25),r=i(18);e.exports=i(60)(Array,"Array",function(e,t){this._t=r(e),this._i=0,this._k=t},function(){var e=this._t,t=this._k,i=this._i++;return!e||i>=e.length?(this._t=void 0,n(1)):"keys"==t?n(0,i):"values"==t?n(0,e[i]):n(0,[i,e[i]])},"values"),s.Arguments=s.Array,o("keys"),o("values"),o("entries")},function(e,t){e.exports=function(){}},function(e,t){e.exports=function(e,t){return{value:t,done:!!e}}},function(e,t){e.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},function(e,t,i){"use strict";var o=i(41),n=i(28),s=i(46),r={};i(19)(r,i(8)("iterator"),function(){return this}),e.exports=function(e,t,i){e.prototype=o(r,{next:n(1,i)}),s(e,t+" Iterator")}},function(e,t,i){var o=i(12),n=i(20),s=i(26);e.exports=i(13)?Object.defineProperties:function(e,t){n(e);for(var i,r=s(t),a=r.length,d=0;a>d;)o.f(e,i=r[d++],t[i]);return e}},function(e,t,i){var o=i(18),n=i(94),s=i(95);e.exports=function(e){return function(t,i,r){var a,d=o(t),h=n(d.length),l=s(r,h);if(e&&i!=i){for(;h>l;)if((a=d[l++])!=a)return!0}else for(;h>l;l++)if((e||l in d)&&d[l]===i)return e||l||0;return!e&&-1}}},function(e,t,i){var o=i(42),n=Math.min;e.exports=function(e){return e>0?n(o(e),9007199254740991):0}},function(e,t,i){var o=i(42),n=Math.max,s=Math.min;e.exports=function(e,t){return e=o(e),e<0?n(e+t,0):s(e,t)}},function(e,t,i){var o=i(10).document;e.exports=o&&o.documentElement},function(e,t,i){var o=i(42),n=i(39);e.exports=function(e){return function(t,i){var s,r,a=String(n(t)),d=o(i),h=a.length;return d<0||d>=h?e?"":void 0:(s=a.charCodeAt(d),s<55296||s>56319||d+1===h||(r=a.charCodeAt(d+1))<56320||r>57343?e?a.charAt(d):s:e?a.slice(d,d+2):r-56320+(s-55296<<10)+65536)}}},function(e,t,i){var o=i(20),n=i(99);e.exports=i(6).getIterator=function(e){var t=n(e);if("function"!=typeof t)throw TypeError(e+" is not iterable!");return o(t.call(e))}},function(e,t,i){var o=i(67),n=i(8)("iterator"),s=i(25);e.exports=i(6).getIteratorMethod=function(e){if(void 0!=e)return e[n]||e["@@iterator"]||s[o(e)]}},function(e,t,i){i(101);var o=i(6).Object;e.exports=function(e,t){return o.create(e,t)}},function(e,t,i){var o=i(11);o(o.S,"Object",{create:i(41)})},function(e,t,i){i(103),e.exports=i(6).Object.keys},function(e,t,i){var o=i(30),n=i(26);i(68)("keys",function(){return function(e){return n(o(e))}})},function(e,t,i){e.exports={default:i(105),__esModule:!0}},function(e,t,i){i(47),i(37),e.exports=i(48).f("iterator")},function(e,t,i){e.exports={default:i(107),__esModule:!0}},function(e,t,i){i(108),i(113),i(114),i(115),e.exports=i(6).Symbol},function(e,t,i){"use strict";var o=i(10),n=i(14),s=i(13),r=i(11),a=i(64),d=i(109).KEY,h=i(22),l=i(44),u=i(46),c=i(29),f=i(8),p=i(48),v=i(49),g=i(110),y=i(111),m=i(20),b=i(21),_=i(18),w=i(40),k=i(28),x=i(41),O=i(112),M=i(70),E=i(12),S=i(26),D=M.f,C=E.f,T=O.f,P=o.Symbol,I=o.JSON,F=I&&I.stringify,N=f("_hidden"),B=f("toPrimitive"),z={}.propertyIsEnumerable,R=l("symbol-registry"),A=l("symbols"),j=l("op-symbols"),L=Object.prototype,H="function"==typeof P,W=o.QObject,Y=!W||!W.prototype||!W.prototype.findChild,V=s&&h(function(){return 7!=x(C({},"a",{get:function(){return C(this,"a",{value:7}).a}})).a})?function(e,t,i){var o=D(L,t);o&&delete L[t],C(e,t,i),o&&e!==L&&C(L,t,o)}:C,U=function(e){var t=A[e]=x(P.prototype);return t._k=e,t},q=H&&"symbol"==typeof P.iterator?function(e){return"symbol"==typeof e}:function(e){return e instanceof P},G=function(e,t,i){return e===L&&G(j,t,i),m(e),t=w(t,!0),m(i),n(A,t)?(i.enumerable?(n(e,N)&&e[N][t]&&(e[N][t]=!1),i=x(i,{enumerable:k(0,!1)})):(n(e,N)||C(e,N,k(1,{})),e[N][t]=!0),V(e,t,i)):C(e,t,i)},X=function(e,t){m(e);for(var i,o=g(t=_(t)),n=0,s=o.length;s>n;)G(e,i=o[n++],t[i]);return e},K=function(e,t){return void 0===t?x(e):X(x(e),t)},Z=function(e){var t=z.call(this,e=w(e,!0));return!(this===L&&n(A,e)&&!n(j,e))&&(!(t||!n(this,e)||!n(A,e)||n(this,N)&&this[N][e])||t)},$=function(e,t){if(e=_(e),t=w(t,!0),e!==L||!n(A,t)||n(j,t)){var i=D(e,t);return!i||!n(A,t)||n(e,N)&&e[N][t]||(i.enumerable=!0),i}},Q=function(e){for(var t,i=T(_(e)),o=[],s=0;i.length>s;)n(A,t=i[s++])||t==N||t==d||o.push(t);return o},J=function(e){for(var t,i=e===L,o=T(i?j:_(e)),s=[],r=0;o.length>r;)!n(A,t=o[r++])||i&&!n(L,t)||s.push(A[t]);return s};H||(P=function(){if(this instanceof P)throw TypeError("Symbol is not a constructor!");var e=c(arguments.length>0?arguments[0]:void 0),t=function(i){this===L&&t.call(j,i),n(this,N)&&n(this[N],e)&&(this[N][e]=!1),V(this,e,k(1,i))};return s&&Y&&V(L,e,{configurable:!0,set:t}),U(e)},a(P.prototype,"toString",function(){return this._k}),M.f=$,E.f=G,i(69).f=O.f=Q,i(32).f=Z,i(50).f=J,s&&!i(27)&&a(L,"propertyIsEnumerable",Z,!0),p.f=function(e){return U(f(e))}),r(r.G+r.W+r.F*!H,{Symbol:P});for(var ee="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),te=0;ee.length>te;)f(ee[te++]);for(var ie=S(f.store),oe=0;ie.length>oe;)v(ie[oe++]);r(r.S+r.F*!H,"Symbol",{for:function(e){return n(R,e+="")?R[e]:R[e]=P(e)},keyFor:function(e){if(!q(e))throw TypeError(e+" is not a symbol!");for(var t in R)if(R[t]===e)return t},useSetter:function(){Y=!0},useSimple:function(){Y=!1}}),r(r.S+r.F*!H,"Object",{create:K,defineProperty:G,defineProperties:X,getOwnPropertyDescriptor:$,getOwnPropertyNames:Q,getOwnPropertySymbols:J}),I&&r(r.S+r.F*(!H||h(function(){var e=P();return"[null]"!=F([e])||"{}"!=F({a:e})||"{}"!=F(Object(e))})),"JSON",{stringify:function(e){for(var t,i,o=[e],n=1;arguments.length>n;)o.push(arguments[n++]);if(i=t=o[1],(b(t)||void 0!==e)&&!q(e))return y(t)||(t=function(e,t){if("function"==typeof i&&(t=i.call(this,e,t)),!q(t))return t}),o[1]=t,F.apply(I,o)}}),P.prototype[B]||i(19)(P.prototype,B,P.prototype.valueOf),u(P,"Symbol"),u(Math,"Math",!0),u(o.JSON,"JSON",!0)},function(e,t,i){var o=i(29)("meta"),n=i(21),s=i(14),r=i(12).f,a=0,d=Object.isExtensible||function(){return!0},h=!i(22)(function(){return d(Object.preventExtensions({}))}),l=function(e){r(e,o,{value:{i:"O"+ ++a,w:{}}})},u=function(e,t){if(!n(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!s(e,o)){if(!d(e))return"F";if(!t)return"E";l(e)}return e[o].i},c=function(e,t){if(!s(e,o)){if(!d(e))return!0;if(!t)return!1;l(e)}return e[o].w},f=function(e){return h&&p.NEED&&d(e)&&!s(e,o)&&l(e),e},p=e.exports={KEY:o,NEED:!1,fastKey:u,getWeak:c,onFreeze:f}},function(e,t,i){var o=i(26),n=i(50),s=i(32);e.exports=function(e){var t=o(e),i=n.f;if(i)for(var r,a=i(e),d=s.f,h=0;a.length>h;)d.call(e,r=a[h++])&&t.push(r);return t}},function(e,t,i){var o=i(38);e.exports=Array.isArray||function(e){return"Array"==o(e)}},function(e,t,i){var o=i(18),n=i(69).f,s={}.toString,r="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],a=function(e){try{return n(e)}catch(e){return r.slice()}};e.exports.f=function(e){return r&&"[object Window]"==s.call(e)?a(e):n(o(e))}},function(e,t){},function(e,t,i){i(49)("asyncIterator")},function(e,t,i){i(49)("observable")},function(e,t,i){(function(e){!function(t,i){e.exports=i()}(0,function(){"use strict";function t(){return So.apply(null,arguments)}function i(e){return e instanceof Array||"[object Array]"===Object.prototype.toString.call(e)}function o(e){return null!=e&&"[object Object]"===Object.prototype.toString.call(e)}function n(e){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(e).length;var t;for(t in e)if(e.hasOwnProperty(t))return!1;return!0}function s(e){return void 0===e}function r(e){return"number"==typeof e||"[object Number]"===Object.prototype.toString.call(e)}function a(e){return e instanceof Date||"[object Date]"===Object.prototype.toString.call(e)}function d(e,t){var i,o=[];for(i=0;i<e.length;++i)o.push(t(e[i],i));return o}function h(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function l(e,t){for(var i in t)h(t,i)&&(e[i]=t[i]);return h(t,"toString")&&(e.toString=t.toString),h(t,"valueOf")&&(e.valueOf=t.valueOf),e}function u(e,t,i,o){return Ot(e,t,i,o,!0).utc()}function c(){return{empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],meridiem:null,rfc2822:!1,weekdayMismatch:!1}}function f(e){return null==e._pf&&(e._pf=c()),e._pf}function p(e){if(null==e._isValid){var t=f(e),i=Do.call(t.parsedDateParts,function(e){return null!=e}),o=!isNaN(e._d.getTime())&&t.overflow<0&&!t.empty&&!t.invalidMonth&&!t.invalidWeekday&&!t.weekdayMismatch&&!t.nullInput&&!t.invalidFormat&&!t.userInvalidated&&(!t.meridiem||t.meridiem&&i);if(e._strict&&(o=o&&0===t.charsLeftOver&&0===t.unusedTokens.length&&void 0===t.bigHour),null!=Object.isFrozen&&Object.isFrozen(e))return o;e._isValid=o}return e._isValid}function v(e){var t=u(NaN);return null!=e?l(f(t),e):f(t).userInvalidated=!0,t}function g(e,t){var i,o,n;if(s(t._isAMomentObject)||(e._isAMomentObject=t._isAMomentObject),s(t._i)||(e._i=t._i),s(t._f)||(e._f=t._f),s(t._l)||(e._l=t._l),s(t._strict)||(e._strict=t._strict),s(t._tzm)||(e._tzm=t._tzm),s(t._isUTC)||(e._isUTC=t._isUTC),s(t._offset)||(e._offset=t._offset),s(t._pf)||(e._pf=f(t)),s(t._locale)||(e._locale=t._locale),Co.length>0)for(i=0;i<Co.length;i++)o=Co[i],n=t[o],s(n)||(e[o]=n);return e}function y(e){g(this,e),this._d=new Date(null!=e._d?e._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),!1===To&&(To=!0,t.updateOffset(this),To=!1)}function m(e){return e instanceof y||null!=e&&null!=e._isAMomentObject}function b(e){return e<0?Math.ceil(e)||0:Math.floor(e)}function _(e){var t=+e,i=0;return 0!==t&&isFinite(t)&&(i=b(t)),i}function w(e,t,i){var o,n=Math.min(e.length,t.length),s=Math.abs(e.length-t.length),r=0;for(o=0;o<n;o++)(i&&e[o]!==t[o]||!i&&_(e[o])!==_(t[o]))&&r++;return r+s}function k(e){!1===t.suppressDeprecationWarnings&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+e)}function x(e,i){var o=!0;return l(function(){if(null!=t.deprecationHandler&&t.deprecationHandler(null,e),o){for(var n,s=[],r=0;r<arguments.length;r++){if(n="","object"==typeof arguments[r]){n+="\n["+r+"] ";for(var a in arguments[0])n+=a+": "+arguments[0][a]+", ";n=n.slice(0,-2)}else n=arguments[r];s.push(n)}k(e+"\nArguments: "+Array.prototype.slice.call(s).join("")+"\n"+(new Error).stack),o=!1}return i.apply(this,arguments)},i)}function O(e,i){null!=t.deprecationHandler&&t.deprecationHandler(e,i),Po[e]||(k(i),Po[e]=!0)}function M(e){return e instanceof Function||"[object Function]"===Object.prototype.toString.call(e)}function E(e){var t,i;for(i in e)t=e[i],M(t)?this[i]=t:this["_"+i]=t;this._config=e,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)}function S(e,t){var i,n=l({},e);for(i in t)h(t,i)&&(o(e[i])&&o(t[i])?(n[i]={},l(n[i],e[i]),l(n[i],t[i])):null!=t[i]?n[i]=t[i]:delete n[i]);for(i in e)h(e,i)&&!h(t,i)&&o(e[i])&&(n[i]=l({},n[i]));return n}function D(e){null!=e&&this.set(e)}function C(e,t,i){var o=this._calendar[e]||this._calendar.sameElse;return M(o)?o.call(t,i):o}function T(e){var t=this._longDateFormat[e],i=this._longDateFormat[e.toUpperCase()];return t||!i?t:(this._longDateFormat[e]=i.replace(/MMMM|MM|DD|dddd/g,function(e){return e.slice(1)}),this._longDateFormat[e])}function P(){return this._invalidDate}function I(e){return this._ordinal.replace("%d",e)}function F(e,t,i,o){var n=this._relativeTime[i];return M(n)?n(e,t,i,o):n.replace(/%d/i,e)}function N(e,t){var i=this._relativeTime[e>0?"future":"past"];return M(i)?i(t):i.replace(/%s/i,t)}function B(e,t){var i=e.toLowerCase();Ro[i]=Ro[i+"s"]=Ro[t]=e}function z(e){return"string"==typeof e?Ro[e]||Ro[e.toLowerCase()]:void 0}function R(e){var t,i,o={};for(i in e)h(e,i)&&(t=z(i))&&(o[t]=e[i]);return o}function A(e,t){Ao[e]=t}function j(e){var t=[];for(var i in e)t.push({unit:i,priority:Ao[i]});return t.sort(function(e,t){return e.priority-t.priority}),t}function L(e,t,i){var o=""+Math.abs(e),n=t-o.length;return(e>=0?i?"+":"":"-")+Math.pow(10,Math.max(0,n)).toString().substr(1)+o}function H(e,t,i,o){var n=o;"string"==typeof o&&(n=function(){return this[o]()}),e&&(Wo[e]=n),t&&(Wo[t[0]]=function(){return L(n.apply(this,arguments),t[1],t[2])}),i&&(Wo[i]=function(){return this.localeData().ordinal(n.apply(this,arguments),e)})}function W(e){return e.match(/\[[\s\S]/)?e.replace(/^\[|\]$/g,""):e.replace(/\\/g,"")}function Y(e){var t,i,o=e.match(jo);for(t=0,i=o.length;t<i;t++)Wo[o[t]]?o[t]=Wo[o[t]]:o[t]=W(o[t]);return function(t){var n,s="";for(n=0;n<i;n++)s+=M(o[n])?o[n].call(t,e):o[n];return s}}function V(e,t){return e.isValid()?(t=U(t,e.localeData()),Ho[t]=Ho[t]||Y(t),Ho[t](e)):e.localeData().invalidDate()}function U(e,t){function i(e){return t.longDateFormat(e)||e}var o=5;for(Lo.lastIndex=0;o>=0&&Lo.test(e);)e=e.replace(Lo,i),Lo.lastIndex=0,o-=1;return e}function q(e,t,i){an[e]=M(t)?t:function(e,o){return e&&i?i:t}}function G(e,t){return h(an,e)?an[e](t._strict,t._locale):new RegExp(X(e))}function X(e){return K(e.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(e,t,i,o,n){return t||i||o||n}))}function K(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function Z(e,t){var i,o=t;for("string"==typeof e&&(e=[e]),r(t)&&(o=function(e,i){i[t]=_(e)}),i=0;i<e.length;i++)dn[e[i]]=o}function $(e,t){Z(e,function(e,i,o,n){o._w=o._w||{},t(e,o._w,o,n)})}function Q(e,t,i){null!=t&&h(dn,e)&&dn[e](t,i._a,i,e)}function J(e){return ee(e)?366:365}function ee(e){return e%4==0&&e%100!=0||e%400==0}function te(){return ee(this.year())}function ie(e,i){return function(o){return null!=o?(ne(this,e,o),t.updateOffset(this,i),this):oe(this,e)}}function oe(e,t){return e.isValid()?e._d["get"+(e._isUTC?"UTC":"")+t]():NaN}function ne(e,t,i){e.isValid()&&!isNaN(i)&&("FullYear"===t&&ee(e.year())&&1===e.month()&&29===e.date()?e._d["set"+(e._isUTC?"UTC":"")+t](i,e.month(),de(i,e.month())):e._d["set"+(e._isUTC?"UTC":"")+t](i))}function se(e){return e=z(e),M(this[e])?this[e]():this}function re(e,t){if("object"==typeof e){e=R(e);for(var i=j(e),o=0;o<i.length;o++)this[i[o].unit](e[i[o].unit])}else if(e=z(e),M(this[e]))return this[e](t);return this}function ae(e,t){return(e%t+t)%t}function de(e,t){if(isNaN(e)||isNaN(t))return NaN;var i=ae(t,12);return e+=(t-i)/12,1===i?ee(e)?29:28:31-i%7%2}function he(e,t){return e?i(this._months)?this._months[e.month()]:this._months[(this._months.isFormat||_n).test(t)?"format":"standalone"][e.month()]:i(this._months)?this._months:this._months.standalone}function le(e,t){return e?i(this._monthsShort)?this._monthsShort[e.month()]:this._monthsShort[_n.test(t)?"format":"standalone"][e.month()]:i(this._monthsShort)?this._monthsShort:this._monthsShort.standalone}function ue(e,t,i){var o,n,s,r=e.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],o=0;o<12;++o)s=u([2e3,o]),this._shortMonthsParse[o]=this.monthsShort(s,"").toLocaleLowerCase(),this._longMonthsParse[o]=this.months(s,"").toLocaleLowerCase();return i?"MMM"===t?(n=mn.call(this._shortMonthsParse,r),-1!==n?n:null):(n=mn.call(this._longMonthsParse,r),-1!==n?n:null):"MMM"===t?-1!==(n=mn.call(this._shortMonthsParse,r))?n:(n=mn.call(this._longMonthsParse,r),-1!==n?n:null):-1!==(n=mn.call(this._longMonthsParse,r))?n:(n=mn.call(this._shortMonthsParse,r),-1!==n?n:null)}function ce(e,t,i){var o,n,s;if(this._monthsParseExact)return ue.call(this,e,t,i);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),o=0;o<12;o++){if(n=u([2e3,o]),i&&!this._longMonthsParse[o]&&(this._longMonthsParse[o]=new RegExp("^"+this.months(n,"").replace(".","")+"$","i"),this._shortMonthsParse[o]=new RegExp("^"+this.monthsShort(n,"").replace(".","")+"$","i")),i||this._monthsParse[o]||(s="^"+this.months(n,"")+"|^"+this.monthsShort(n,""),this._monthsParse[o]=new RegExp(s.replace(".",""),"i")),i&&"MMMM"===t&&this._longMonthsParse[o].test(e))return o;if(i&&"MMM"===t&&this._shortMonthsParse[o].test(e))return o;if(!i&&this._monthsParse[o].test(e))return o}}function fe(e,t){var i;if(!e.isValid())return e;if("string"==typeof t)if(/^\d+$/.test(t))t=_(t);else if(t=e.localeData().monthsParse(t),!r(t))return e;return i=Math.min(e.date(),de(e.year(),t)),e._d["set"+(e._isUTC?"UTC":"")+"Month"](t,i),e}function pe(e){return null!=e?(fe(this,e),t.updateOffset(this,!0),this):oe(this,"Month")}function ve(){return de(this.year(),this.month())}function ge(e){return this._monthsParseExact?(h(this,"_monthsRegex")||me.call(this),e?this._monthsShortStrictRegex:this._monthsShortRegex):(h(this,"_monthsShortRegex")||(this._monthsShortRegex=xn),this._monthsShortStrictRegex&&e?this._monthsShortStrictRegex:this._monthsShortRegex)}function ye(e){return this._monthsParseExact?(h(this,"_monthsRegex")||me.call(this),e?this._monthsStrictRegex:this._monthsRegex):(h(this,"_monthsRegex")||(this._monthsRegex=On),this._monthsStrictRegex&&e?this._monthsStrictRegex:this._monthsRegex)}function me(){function e(e,t){return t.length-e.length}var t,i,o=[],n=[],s=[];for(t=0;t<12;t++)i=u([2e3,t]),o.push(this.monthsShort(i,"")),n.push(this.months(i,"")),s.push(this.months(i,"")),s.push(this.monthsShort(i,""));for(o.sort(e),n.sort(e),s.sort(e),t=0;t<12;t++)o[t]=K(o[t]),n[t]=K(n[t]);for(t=0;t<24;t++)s[t]=K(s[t]);this._monthsRegex=new RegExp("^("+s.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+n.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+o.join("|")+")","i")}function be(e,t,i,o,n,s,r){var a=new Date(e,t,i,o,n,s,r);return e<100&&e>=0&&isFinite(a.getFullYear())&&a.setFullYear(e),a}function _e(e){var t=new Date(Date.UTC.apply(null,arguments));return e<100&&e>=0&&isFinite(t.getUTCFullYear())&&t.setUTCFullYear(e),t}function we(e,t,i){var o=7+t-i;return-(7+_e(e,0,o).getUTCDay()-t)%7+o-1}function ke(e,t,i,o,n){var s,r,a=(7+i-o)%7,d=we(e,o,n),h=1+7*(t-1)+a+d;return h<=0?(s=e-1,r=J(s)+h):h>J(e)?(s=e+1,r=h-J(e)):(s=e,r=h),{year:s,dayOfYear:r}}function xe(e,t,i){var o,n,s=we(e.year(),t,i),r=Math.floor((e.dayOfYear()-s-1)/7)+1;return r<1?(n=e.year()-1,o=r+Oe(n,t,i)):r>Oe(e.year(),t,i)?(o=r-Oe(e.year(),t,i),n=e.year()+1):(n=e.year(),o=r),{week:o,year:n}}function Oe(e,t,i){var o=we(e,t,i),n=we(e+1,t,i);return(J(e)-o+n)/7}function Me(e){return xe(e,this._week.dow,this._week.doy).week}function Ee(){return this._week.dow}function Se(){return this._week.doy}function De(e){var t=this.localeData().week(this);return null==e?t:this.add(7*(e-t),"d")}function Ce(e){var t=xe(this,1,4).week;return null==e?t:this.add(7*(e-t),"d")}function Te(e,t){return"string"!=typeof e?e:isNaN(e)?(e=t.weekdaysParse(e),"number"==typeof e?e:null):parseInt(e,10)}function Pe(e,t){return"string"==typeof e?t.weekdaysParse(e)%7||7:isNaN(e)?null:e}function Ie(e,t){return e?i(this._weekdays)?this._weekdays[e.day()]:this._weekdays[this._weekdays.isFormat.test(t)?"format":"standalone"][e.day()]:i(this._weekdays)?this._weekdays:this._weekdays.standalone}function Fe(e){return e?this._weekdaysShort[e.day()]:this._weekdaysShort}function Ne(e){return e?this._weekdaysMin[e.day()]:this._weekdaysMin}function Be(e,t,i){var o,n,s,r=e.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],o=0;o<7;++o)s=u([2e3,1]).day(o),this._minWeekdaysParse[o]=this.weekdaysMin(s,"").toLocaleLowerCase(),this._shortWeekdaysParse[o]=this.weekdaysShort(s,"").toLocaleLowerCase(),this._weekdaysParse[o]=this.weekdays(s,"").toLocaleLowerCase();return i?"dddd"===t?(n=mn.call(this._weekdaysParse,r),-1!==n?n:null):"ddd"===t?(n=mn.call(this._shortWeekdaysParse,r),-1!==n?n:null):(n=mn.call(this._minWeekdaysParse,r),-1!==n?n:null):"dddd"===t?-1!==(n=mn.call(this._weekdaysParse,r))?n:-1!==(n=mn.call(this._shortWeekdaysParse,r))?n:(n=mn.call(this._minWeekdaysParse,r),-1!==n?n:null):"ddd"===t?-1!==(n=mn.call(this._shortWeekdaysParse,r))?n:-1!==(n=mn.call(this._weekdaysParse,r))?n:(n=mn.call(this._minWeekdaysParse,r),-1!==n?n:null):-1!==(n=mn.call(this._minWeekdaysParse,r))?n:-1!==(n=mn.call(this._weekdaysParse,r))?n:(n=mn.call(this._shortWeekdaysParse,r),-1!==n?n:null)}function ze(e,t,i){var o,n,s;if(this._weekdaysParseExact)return Be.call(this,e,t,i);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),o=0;o<7;o++){if(n=u([2e3,1]).day(o),i&&!this._fullWeekdaysParse[o]&&(this._fullWeekdaysParse[o]=new RegExp("^"+this.weekdays(n,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[o]=new RegExp("^"+this.weekdaysShort(n,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[o]=new RegExp("^"+this.weekdaysMin(n,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[o]||(s="^"+this.weekdays(n,"")+"|^"+this.weekdaysShort(n,"")+"|^"+this.weekdaysMin(n,""),this._weekdaysParse[o]=new RegExp(s.replace(".",""),"i")),i&&"dddd"===t&&this._fullWeekdaysParse[o].test(e))return o;if(i&&"ddd"===t&&this._shortWeekdaysParse[o].test(e))return o;if(i&&"dd"===t&&this._minWeekdaysParse[o].test(e))return o;if(!i&&this._weekdaysParse[o].test(e))return o}}function Re(e){if(!this.isValid())return null!=e?this:NaN;var t=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=e?(e=Te(e,this.localeData()),this.add(e-t,"d")):t}function Ae(e){if(!this.isValid())return null!=e?this:NaN;var t=(this.day()+7-this.localeData()._week.dow)%7;return null==e?t:this.add(e-t,"d")}function je(e){if(!this.isValid())return null!=e?this:NaN;if(null!=e){var t=Pe(e,this.localeData());return this.day(this.day()%7?t:t-7)}return this.day()||7}function Le(e){return this._weekdaysParseExact?(h(this,"_weekdaysRegex")||Ye.call(this),e?this._weekdaysStrictRegex:this._weekdaysRegex):(h(this,"_weekdaysRegex")||(this._weekdaysRegex=Cn),this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex)}function He(e){return this._weekdaysParseExact?(h(this,"_weekdaysRegex")||Ye.call(this),e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(h(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=Tn),this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)}function We(e){return this._weekdaysParseExact?(h(this,"_weekdaysRegex")||Ye.call(this),e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(h(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=Pn),this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)}function Ye(){function e(e,t){return t.length-e.length}var t,i,o,n,s,r=[],a=[],d=[],h=[];for(t=0;t<7;t++)i=u([2e3,1]).day(t),o=this.weekdaysMin(i,""),n=this.weekdaysShort(i,""),s=this.weekdays(i,""),r.push(o),a.push(n),d.push(s),h.push(o),h.push(n),h.push(s);for(r.sort(e),a.sort(e),d.sort(e),h.sort(e),t=0;t<7;t++)a[t]=K(a[t]),d[t]=K(d[t]),h[t]=K(h[t]);this._weekdaysRegex=new RegExp("^("+h.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+d.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+a.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+r.join("|")+")","i")}function Ve(){return this.hours()%12||12}function Ue(){return this.hours()||24}function qe(e,t){H(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)})}function Ge(e,t){return t._meridiemParse}function Xe(e){return"p"===(e+"").toLowerCase().charAt(0)}function Ke(e,t,i){return e>11?i?"pm":"PM":i?"am":"AM"}function Ze(e){return e?e.toLowerCase().replace("_","-"):e}function $e(e){for(var t,i,o,n,s=0;s<e.length;){for(n=Ze(e[s]).split("-"),t=n.length,i=Ze(e[s+1]),i=i?i.split("-"):null;t>0;){if(o=Qe(n.slice(0,t).join("-")))return o;if(i&&i.length>=t&&w(n,i,!0)>=t-1)break;t--}s++}return In}function Qe(t){var i=null;if(!zn[t]&&void 0!==e&&e&&e.exports)try{i=In._abbr;!function(){var e=new Error('Cannot find module "./locale"');throw e.code="MODULE_NOT_FOUND",e}(),Je(i)}catch(e){}return zn[t]}function Je(e,t){var i;return e&&(i=s(t)?it(e):et(e,t),i?In=i:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+e+" not found. Did you forget to load it?")),In._abbr}function et(e,t){if(null!==t){var i,o=Bn;if(t.abbr=e,null!=zn[e])O("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),o=zn[e]._config;else if(null!=t.parentLocale)if(null!=zn[t.parentLocale])o=zn[t.parentLocale]._config;else{if(null==(i=Qe(t.parentLocale)))return Rn[t.parentLocale]||(Rn[t.parentLocale]=[]),Rn[t.parentLocale].push({name:e,config:t}),null;o=i._config}return zn[e]=new D(S(o,t)),Rn[e]&&Rn[e].forEach(function(e){et(e.name,e.config)}),Je(e),zn[e]}return delete zn[e],null}function tt(e,t){if(null!=t){var i,o,n=Bn;o=Qe(e),null!=o&&(n=o._config),t=S(n,t),i=new D(t),i.parentLocale=zn[e],zn[e]=i,Je(e)}else null!=zn[e]&&(null!=zn[e].parentLocale?zn[e]=zn[e].parentLocale:null!=zn[e]&&delete zn[e]);return zn[e]}function it(e){var t;if(e&&e._locale&&e._locale._abbr&&(e=e._locale._abbr),!e)return In;if(!i(e)){if(t=Qe(e))return t;e=[e]}return $e(e)}function ot(){return Io(zn)}function nt(e){var t,i=e._a;return i&&-2===f(e).overflow&&(t=i[ln]<0||i[ln]>11?ln:i[un]<1||i[un]>de(i[hn],i[ln])?un:i[cn]<0||i[cn]>24||24===i[cn]&&(0!==i[fn]||0!==i[pn]||0!==i[vn])?cn:i[fn]<0||i[fn]>59?fn:i[pn]<0||i[pn]>59?pn:i[vn]<0||i[vn]>999?vn:-1,f(e)._overflowDayOfYear&&(t<hn||t>un)&&(t=un),f(e)._overflowWeeks&&-1===t&&(t=gn),f(e)._overflowWeekday&&-1===t&&(t=yn),f(e).overflow=t),e}function st(e,t,i){return null!=e?e:null!=t?t:i}function rt(e){var i=new Date(t.now());return e._useUTC?[i.getUTCFullYear(),i.getUTCMonth(),i.getUTCDate()]:[i.getFullYear(),i.getMonth(),i.getDate()]}function at(e){var t,i,o,n,s,r=[];if(!e._d){for(o=rt(e),e._w&&null==e._a[un]&&null==e._a[ln]&&dt(e),null!=e._dayOfYear&&(s=st(e._a[hn],o[hn]),(e._dayOfYear>J(s)||0===e._dayOfYear)&&(f(e)._overflowDayOfYear=!0),i=_e(s,0,e._dayOfYear),e._a[ln]=i.getUTCMonth(),e._a[un]=i.getUTCDate()),t=0;t<3&&null==e._a[t];++t)e._a[t]=r[t]=o[t];for(;t<7;t++)e._a[t]=r[t]=null==e._a[t]?2===t?1:0:e._a[t];24===e._a[cn]&&0===e._a[fn]&&0===e._a[pn]&&0===e._a[vn]&&(e._nextDay=!0,e._a[cn]=0),e._d=(e._useUTC?_e:be).apply(null,r),n=e._useUTC?e._d.getUTCDay():e._d.getDay(),null!=e._tzm&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[cn]=24),e._w&&void 0!==e._w.d&&e._w.d!==n&&(f(e).weekdayMismatch=!0)}}function dt(e){var t,i,o,n,s,r,a,d;if(t=e._w,null!=t.GG||null!=t.W||null!=t.E)s=1,r=4,i=st(t.GG,e._a[hn],xe(Mt(),1,4).year),o=st(t.W,1),((n=st(t.E,1))<1||n>7)&&(d=!0);else{s=e._locale._week.dow,r=e._locale._week.doy;var h=xe(Mt(),s,r);i=st(t.gg,e._a[hn],h.year),o=st(t.w,h.week),null!=t.d?((n=t.d)<0||n>6)&&(d=!0):null!=t.e?(n=t.e+s,(t.e<0||t.e>6)&&(d=!0)):n=s}o<1||o>Oe(i,s,r)?f(e)._overflowWeeks=!0:null!=d?f(e)._overflowWeekday=!0:(a=ke(i,o,n,s,r),e._a[hn]=a.year,e._dayOfYear=a.dayOfYear)}function ht(e){var t,i,o,n,s,r,a=e._i,d=An.exec(a)||jn.exec(a);if(d){for(f(e).iso=!0,t=0,i=Hn.length;t<i;t++)if(Hn[t][1].exec(d[1])){n=Hn[t][0],o=!1!==Hn[t][2];break}if(null==n)return void(e._isValid=!1);if(d[3]){for(t=0,i=Wn.length;t<i;t++)if(Wn[t][1].exec(d[3])){s=(d[2]||" ")+Wn[t][0];break}if(null==s)return void(e._isValid=!1)}if(!o&&null!=s)return void(e._isValid=!1);if(d[4]){if(!Ln.exec(d[4]))return void(e._isValid=!1);r="Z"}e._f=n+(s||"")+(r||""),yt(e)}else e._isValid=!1}function lt(e,t,i,o,n,s){var r=[ut(e),kn.indexOf(t),parseInt(i,10),parseInt(o,10),parseInt(n,10)];return s&&r.push(parseInt(s,10)),r}function ut(e){var t=parseInt(e,10);return t<=49?2e3+t:t<=999?1900+t:t}function ct(e){return e.replace(/\([^)]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").replace(/^\s\s*/,"").replace(/\s\s*$/,"")}function ft(e,t,i){if(e){if(Sn.indexOf(e)!==new Date(t[0],t[1],t[2]).getDay())return f(i).weekdayMismatch=!0,i._isValid=!1,!1}return!0}function pt(e,t,i){if(e)return Un[e];if(t)return 0;var o=parseInt(i,10),n=o%100;return(o-n)/100*60+n}function vt(e){var t=Vn.exec(ct(e._i));if(t){var i=lt(t[4],t[3],t[2],t[5],t[6],t[7]);if(!ft(t[1],i,e))return;e._a=i,e._tzm=pt(t[8],t[9],t[10]),e._d=_e.apply(null,e._a),e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),f(e).rfc2822=!0}else e._isValid=!1}function gt(e){var i=Yn.exec(e._i);if(null!==i)return void(e._d=new Date(+i[1]));ht(e),!1===e._isValid&&(delete e._isValid,vt(e),!1===e._isValid&&(delete e._isValid,t.createFromInputFallback(e)))}function yt(e){if(e._f===t.ISO_8601)return void ht(e);if(e._f===t.RFC_2822)return void vt(e);e._a=[],f(e).empty=!0;var i,o,n,s,r,a=""+e._i,d=a.length,h=0;for(n=U(e._f,e._locale).match(jo)||[],i=0;i<n.length;i++)s=n[i],o=(a.match(G(s,e))||[])[0],o&&(r=a.substr(0,a.indexOf(o)),r.length>0&&f(e).unusedInput.push(r),a=a.slice(a.indexOf(o)+o.length),h+=o.length),Wo[s]?(o?f(e).empty=!1:f(e).unusedTokens.push(s),Q(s,o,e)):e._strict&&!o&&f(e).unusedTokens.push(s);f(e).charsLeftOver=d-h,a.length>0&&f(e).unusedInput.push(a),e._a[cn]<=12&&!0===f(e).bigHour&&e._a[cn]>0&&(f(e).bigHour=void 0),f(e).parsedDateParts=e._a.slice(0),f(e).meridiem=e._meridiem,e._a[cn]=mt(e._locale,e._a[cn],e._meridiem),at(e),nt(e)}function mt(e,t,i){var o;return null==i?t:null!=e.meridiemHour?e.meridiemHour(t,i):null!=e.isPM?(o=e.isPM(i),o&&t<12&&(t+=12),o||12!==t||(t=0),t):t}function bt(e){var t,i,o,n,s;if(0===e._f.length)return f(e).invalidFormat=!0,void(e._d=new Date(NaN));for(n=0;n<e._f.length;n++)s=0,t=g({},e),null!=e._useUTC&&(t._useUTC=e._useUTC),t._f=e._f[n],yt(t),p(t)&&(s+=f(t).charsLeftOver,s+=10*f(t).unusedTokens.length,f(t).score=s,(null==o||s<o)&&(o=s,i=t));l(e,i||t)}function _t(e){if(!e._d){var t=R(e._i);e._a=d([t.year,t.month,t.day||t.date,t.hour,t.minute,t.second,t.millisecond],function(e){return e&&parseInt(e,10)}),at(e)}}function wt(e){var t=new y(nt(kt(e)));return t._nextDay&&(t.add(1,"d"),t._nextDay=void 0),t}function kt(e){var t=e._i,o=e._f;return e._locale=e._locale||it(e._l),null===t||void 0===o&&""===t?v({nullInput:!0}):("string"==typeof t&&(e._i=t=e._locale.preparse(t)),m(t)?new y(nt(t)):(a(t)?e._d=t:i(o)?bt(e):o?yt(e):xt(e),p(e)||(e._d=null),e))}function xt(e){var n=e._i;s(n)?e._d=new Date(t.now()):a(n)?e._d=new Date(n.valueOf()):"string"==typeof n?gt(e):i(n)?(e._a=d(n.slice(0),function(e){return parseInt(e,10)}),at(e)):o(n)?_t(e):r(n)?e._d=new Date(n):t.createFromInputFallback(e)}function Ot(e,t,s,r,a){var d={};return!0!==s&&!1!==s||(r=s,s=void 0),(o(e)&&n(e)||i(e)&&0===e.length)&&(e=void 0),d._isAMomentObject=!0,d._useUTC=d._isUTC=a,d._l=s,d._i=e,d._f=t,d._strict=r,wt(d)}function Mt(e,t,i,o){return Ot(e,t,i,o,!1)}function Et(e,t){var o,n;if(1===t.length&&i(t[0])&&(t=t[0]),!t.length)return Mt();for(o=t[0],n=1;n<t.length;++n)t[n].isValid()&&!t[n][e](o)||(o=t[n]);return o}function St(){return Et("isBefore",[].slice.call(arguments,0))}function Dt(){return Et("isAfter",[].slice.call(arguments,0))}function Ct(e){for(var t in e)if(-1===mn.call(Kn,t)||null!=e[t]&&isNaN(e[t]))return!1;for(var i=!1,o=0;o<Kn.length;++o)if(e[Kn[o]]){if(i)return!1;parseFloat(e[Kn[o]])!==_(e[Kn[o]])&&(i=!0)}return!0}function Tt(){return this._isValid}function Pt(){return Zt(NaN)}function It(e){var t=R(e),i=t.year||0,o=t.quarter||0,n=t.month||0,s=t.week||t.isoWeek||0,r=t.day||0,a=t.hour||0,d=t.minute||0,h=t.second||0,l=t.millisecond||0;this._isValid=Ct(t),this._milliseconds=+l+1e3*h+6e4*d+1e3*a*60*60,this._days=+r+7*s,this._months=+n+3*o+12*i,this._data={},this._locale=it(),this._bubble()}function Ft(e){return e instanceof It}function Nt(e){return e<0?-1*Math.round(-1*e):Math.round(e)}function Bt(e,t){H(e,0,0,function(){var e=this.utcOffset(),i="+";return e<0&&(e=-e,i="-"),i+L(~~(e/60),2)+t+L(~~e%60,2)})}function zt(e,t){var i=(t||"").match(e);if(null===i)return null;var o=i[i.length-1]||[],n=(o+"").match(Zn)||["-",0,0],s=60*n[1]+_(n[2]);return 0===s?0:"+"===n[0]?s:-s}function Rt(e,i){var o,n;return i._isUTC?(o=i.clone(),n=(m(e)||a(e)?e.valueOf():Mt(e).valueOf())-o.valueOf(),o._d.setTime(o._d.valueOf()+n),t.updateOffset(o,!1),o):Mt(e).local()}function At(e){return 15*-Math.round(e._d.getTimezoneOffset()/15)}function jt(e,i,o){var n,s=this._offset||0;if(!this.isValid())return null!=e?this:NaN;if(null!=e){if("string"==typeof e){if(null===(e=zt(nn,e)))return this}else Math.abs(e)<16&&!o&&(e*=60);return!this._isUTC&&i&&(n=At(this)),this._offset=e,this._isUTC=!0,null!=n&&this.add(n,"m"),s!==e&&(!i||this._changeInProgress?ti(this,Zt(e-s,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,t.updateOffset(this,!0),this._changeInProgress=null)),this}return this._isUTC?s:At(this)}function Lt(e,t){return null!=e?("string"!=typeof e&&(e=-e),this.utcOffset(e,t),this):-this.utcOffset()}function Ht(e){return this.utcOffset(0,e)}function Wt(e){return this._isUTC&&(this.utcOffset(0,e),this._isUTC=!1,e&&this.subtract(At(this),"m")),this}function Yt(){if(null!=this._tzm)this.utcOffset(this._tzm,!1,!0);else if("string"==typeof this._i){var e=zt(on,this._i);null!=e?this.utcOffset(e):this.utcOffset(0,!0)}return this}function Vt(e){return!!this.isValid()&&(e=e?Mt(e).utcOffset():0,(this.utcOffset()-e)%60==0)}function Ut(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function qt(){if(!s(this._isDSTShifted))return this._isDSTShifted;var e={};if(g(e,this),e=kt(e),e._a){var t=e._isUTC?u(e._a):Mt(e._a);this._isDSTShifted=this.isValid()&&w(e._a,t.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted}function Gt(){return!!this.isValid()&&!this._isUTC}function Xt(){return!!this.isValid()&&this._isUTC}function Kt(){return!!this.isValid()&&(this._isUTC&&0===this._offset)}function Zt(e,t){var i,o,n,s=e,a=null;return Ft(e)?s={ms:e._milliseconds,d:e._days,M:e._months}:r(e)?(s={},t?s[t]=e:s.milliseconds=e):(a=$n.exec(e))?(i="-"===a[1]?-1:1,s={y:0,d:_(a[un])*i,h:_(a[cn])*i,m:_(a[fn])*i,s:_(a[pn])*i,ms:_(Nt(1e3*a[vn]))*i}):(a=Qn.exec(e))?(i="-"===a[1]?-1:1,s={y:$t(a[2],i),M:$t(a[3],i),w:$t(a[4],i),d:$t(a[5],i),h:$t(a[6],i),m:$t(a[7],i),s:$t(a[8],i)}):null==s?s={}:"object"==typeof s&&("from"in s||"to"in s)&&(n=Jt(Mt(s.from),Mt(s.to)),s={},s.ms=n.milliseconds,s.M=n.months),o=new It(s),Ft(e)&&h(e,"_locale")&&(o._locale=e._locale),o}function $t(e,t){var i=e&&parseFloat(e.replace(",","."));return(isNaN(i)?0:i)*t}function Qt(e,t){var i={milliseconds:0,months:0};return i.months=t.month()-e.month()+12*(t.year()-e.year()),e.clone().add(i.months,"M").isAfter(t)&&--i.months,i.milliseconds=+t-+e.clone().add(i.months,"M"),i}function Jt(e,t){var i;return e.isValid()&&t.isValid()?(t=Rt(t,e),e.isBefore(t)?i=Qt(e,t):(i=Qt(t,e),i.milliseconds=-i.milliseconds,i.months=-i.months),i):{milliseconds:0,months:0}}function ei(e,t){return function(i,o){var n,s;return null===o||isNaN(+o)||(O(t,"moment()."+t+"(period, number) is deprecated. Please use moment()."+t+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),s=i,i=o,o=s),i="string"==typeof i?+i:i,n=Zt(i,o),ti(this,n,e),this}}function ti(e,i,o,n){var s=i._milliseconds,r=Nt(i._days),a=Nt(i._months);e.isValid()&&(n=null==n||n,a&&fe(e,oe(e,"Month")+a*o),r&&ne(e,"Date",oe(e,"Date")+r*o),s&&e._d.setTime(e._d.valueOf()+s*o),n&&t.updateOffset(e,r||a))}function ii(e,t){var i=e.diff(t,"days",!0);return i<-6?"sameElse":i<-1?"lastWeek":i<0?"lastDay":i<1?"sameDay":i<2?"nextDay":i<7?"nextWeek":"sameElse"}function oi(e,i){var o=e||Mt(),n=Rt(o,this).startOf("day"),s=t.calendarFormat(this,n)||"sameElse",r=i&&(M(i[s])?i[s].call(this,o):i[s]);return this.format(r||this.localeData().calendar(s,this,Mt(o)))}function ni(){return new y(this)}function si(e,t){var i=m(e)?e:Mt(e);return!(!this.isValid()||!i.isValid())&&(t=z(t)||"millisecond","millisecond"===t?this.valueOf()>i.valueOf():i.valueOf()<this.clone().startOf(t).valueOf())}function ri(e,t){var i=m(e)?e:Mt(e);return!(!this.isValid()||!i.isValid())&&(t=z(t)||"millisecond","millisecond"===t?this.valueOf()<i.valueOf():this.clone().endOf(t).valueOf()<i.valueOf())}function ai(e,t,i,o){var n=m(e)?e:Mt(e),s=m(t)?t:Mt(t);return!!(this.isValid()&&n.isValid()&&s.isValid())&&(o=o||"()",("("===o[0]?this.isAfter(n,i):!this.isBefore(n,i))&&(")"===o[1]?this.isBefore(s,i):!this.isAfter(s,i)))}function di(e,t){var i,o=m(e)?e:Mt(e);return!(!this.isValid()||!o.isValid())&&(t=z(t)||"millisecond","millisecond"===t?this.valueOf()===o.valueOf():(i=o.valueOf(),this.clone().startOf(t).valueOf()<=i&&i<=this.clone().endOf(t).valueOf()))}function hi(e,t){return this.isSame(e,t)||this.isAfter(e,t)}function li(e,t){return this.isSame(e,t)||this.isBefore(e,t)}function ui(e,t,i){var o,n,s;if(!this.isValid())return NaN;if(o=Rt(e,this),!o.isValid())return NaN;switch(n=6e4*(o.utcOffset()-this.utcOffset()),t=z(t)){case"year":s=ci(this,o)/12;break;case"month":s=ci(this,o);break;case"quarter":s=ci(this,o)/3;break;case"second":s=(this-o)/1e3;break;case"minute":s=(this-o)/6e4;break;case"hour":s=(this-o)/36e5;break;case"day":s=(this-o-n)/864e5;break;case"week":s=(this-o-n)/6048e5;break;default:s=this-o}return i?s:b(s)}function ci(e,t){var i,o,n=12*(t.year()-e.year())+(t.month()-e.month()),s=e.clone().add(n,"months");return t-s<0?(i=e.clone().add(n-1,"months"),o=(t-s)/(s-i)):(i=e.clone().add(n+1,"months"),o=(t-s)/(i-s)),-(n+o)||0}function fi(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")}function pi(e){if(!this.isValid())return null;var t=!0!==e,i=t?this.clone().utc():this;return i.year()<0||i.year()>9999?V(i,t?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):M(Date.prototype.toISOString)?t?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",V(i,"Z")):V(i,t?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")}function vi(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var e="moment",t="";this.isLocal()||(e=0===this.utcOffset()?"moment.utc":"moment.parseZone",t="Z");var i="["+e+'("]',o=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",n=t+'[")]';return this.format(i+o+"-MM-DD[T]HH:mm:ss.SSS"+n)}function gi(e){e||(e=this.isUtc()?t.defaultFormatUtc:t.defaultFormat);var i=V(this,e);return this.localeData().postformat(i)}function yi(e,t){return this.isValid()&&(m(e)&&e.isValid()||Mt(e).isValid())?Zt({to:this,from:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()}function mi(e){return this.from(Mt(),e)}function bi(e,t){return this.isValid()&&(m(e)&&e.isValid()||Mt(e).isValid())?Zt({from:this,to:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()}function _i(e){return this.to(Mt(),e)}function wi(e){var t;return void 0===e?this._locale._abbr:(t=it(e),null!=t&&(this._locale=t),this)}function ki(){return this._locale}function xi(e){switch(e=z(e)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":case"date":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===e&&this.weekday(0),"isoWeek"===e&&this.isoWeekday(1),"quarter"===e&&this.month(3*Math.floor(this.month()/3)),this}function Oi(e){return void 0===(e=z(e))||"millisecond"===e?this:("date"===e&&(e="day"),this.startOf(e).add(1,"isoWeek"===e?"week":e).subtract(1,"ms"))}function Mi(){return this._d.valueOf()-6e4*(this._offset||0)}function Ei(){return Math.floor(this.valueOf()/1e3)}function Si(){return new Date(this.valueOf())}function Di(){var e=this;return[e.year(),e.month(),e.date(),e.hour(),e.minute(),e.second(),e.millisecond()]}function Ci(){var e=this;return{years:e.year(),months:e.month(),date:e.date(),hours:e.hours(),minutes:e.minutes(),seconds:e.seconds(),milliseconds:e.milliseconds()}}function Ti(){return this.isValid()?this.toISOString():null}function Pi(){return p(this)}function Ii(){return l({},f(this))}function Fi(){return f(this).overflow}function Ni(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}}function Bi(e,t){H(0,[e,e.length],0,t)}function zi(e){return Li.call(this,e,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)}function Ri(e){return Li.call(this,e,this.isoWeek(),this.isoWeekday(),1,4)}function Ai(){return Oe(this.year(),1,4)}function ji(){var e=this.localeData()._week;return Oe(this.year(),e.dow,e.doy)}function Li(e,t,i,o,n){var s;return null==e?xe(this,o,n).year:(s=Oe(e,o,n),t>s&&(t=s),Hi.call(this,e,t,i,o,n))}function Hi(e,t,i,o,n){var s=ke(e,t,i,o,n),r=_e(s.year,0,s.dayOfYear);return this.year(r.getUTCFullYear()),this.month(r.getUTCMonth()),this.date(r.getUTCDate()),this}function Wi(e){return null==e?Math.ceil((this.month()+1)/3):this.month(3*(e-1)+this.month()%3)}function Yi(e){var t=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==e?t:this.add(e-t,"d")}function Vi(e,t){t[vn]=_(1e3*("0."+e))}function Ui(){return this._isUTC?"UTC":""}function qi(){return this._isUTC?"Coordinated Universal Time":""}function Gi(e){return Mt(1e3*e)}function Xi(){return Mt.apply(null,arguments).parseZone()}function Ki(e){return e}function Zi(e,t,i,o){var n=it(),s=u().set(o,t);return n[i](s,e)}function $i(e,t,i){if(r(e)&&(t=e,e=void 0),e=e||"",null!=t)return Zi(e,t,i,"month");var o,n=[];for(o=0;o<12;o++)n[o]=Zi(e,o,i,"month");return n}function Qi(e,t,i,o){"boolean"==typeof e?(r(t)&&(i=t,t=void 0),t=t||""):(t=e,i=t,e=!1,r(t)&&(i=t,t=void 0),t=t||"");var n=it(),s=e?n._week.dow:0;if(null!=i)return Zi(t,(i+s)%7,o,"day");var a,d=[];for(a=0;a<7;a++)d[a]=Zi(t,(a+s)%7,o,"day");return d}function Ji(e,t){return $i(e,t,"months")}function eo(e,t){return $i(e,t,"monthsShort")}function to(e,t,i){return Qi(e,t,i,"weekdays")}function io(e,t,i){return Qi(e,t,i,"weekdaysShort")}function oo(e,t,i){return Qi(e,t,i,"weekdaysMin")}function no(){var e=this._data;return this._milliseconds=hs(this._milliseconds),this._days=hs(this._days),this._months=hs(this._months),e.milliseconds=hs(e.milliseconds),e.seconds=hs(e.seconds),e.minutes=hs(e.minutes),e.hours=hs(e.hours),e.months=hs(e.months),e.years=hs(e.years),this}function so(e,t,i,o){var n=Zt(t,i);return e._milliseconds+=o*n._milliseconds,e._days+=o*n._days,e._months+=o*n._months,e._bubble()}function ro(e,t){return so(this,e,t,1)}function ao(e,t){return so(this,e,t,-1)}function ho(e){return e<0?Math.floor(e):Math.ceil(e)}function lo(){var e,t,i,o,n,s=this._milliseconds,r=this._days,a=this._months,d=this._data;return s>=0&&r>=0&&a>=0||s<=0&&r<=0&&a<=0||(s+=864e5*ho(co(a)+r),r=0,a=0),d.milliseconds=s%1e3,e=b(s/1e3),d.seconds=e%60,t=b(e/60),d.minutes=t%60,i=b(t/60),d.hours=i%24,r+=b(i/24),n=b(uo(r)),a+=n,r-=ho(co(n)),o=b(a/12),a%=12,d.days=r,d.months=a,d.years=o,this}function uo(e){return 4800*e/146097}function co(e){return 146097*e/4800}function fo(e){if(!this.isValid())return NaN;var t,i,o=this._milliseconds;if("month"===(e=z(e))||"year"===e)return t=this._days+o/864e5,i=this._months+uo(t),"month"===e?i:i/12;switch(t=this._days+Math.round(co(this._months)),e){case"week":return t/7+o/6048e5;case"day":return t+o/864e5;case"hour":return 24*t+o/36e5;case"minute":return 1440*t+o/6e4;case"second":return 86400*t+o/1e3;case"millisecond":return Math.floor(864e5*t)+o;default:throw new Error("Unknown unit "+e)}}function po(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*_(this._months/12):NaN}function vo(e){return function(){return this.as(e)}}function go(){return Zt(this)}function yo(e){return e=z(e),this.isValid()?this[e+"s"]():NaN}function mo(e){return function(){return this.isValid()?this._data[e]:NaN}}function bo(){return b(this.days()/7)}function _o(e,t,i,o,n){return n.relativeTime(t||1,!!i,e,o)}function wo(e,t,i){var o=Zt(e).abs(),n=Ms(o.as("s")),s=Ms(o.as("m")),r=Ms(o.as("h")),a=Ms(o.as("d")),d=Ms(o.as("M")),h=Ms(o.as("y")),l=n<=Es.ss&&["s",n]||n<Es.s&&["ss",n]||s<=1&&["m"]||s<Es.m&&["mm",s]||r<=1&&["h"]||r<Es.h&&["hh",r]||a<=1&&["d"]||a<Es.d&&["dd",a]||d<=1&&["M"]||d<Es.M&&["MM",d]||h<=1&&["y"]||["yy",h];return l[2]=t,l[3]=+e>0,l[4]=i,_o.apply(null,l)}function ko(e){return void 0===e?Ms:"function"==typeof e&&(Ms=e,!0)}function xo(e,t){return void 0!==Es[e]&&(void 0===t?Es[e]:(Es[e]=t,"s"===e&&(Es.ss=t-1),!0))}function Oo(e){if(!this.isValid())return this.localeData().invalidDate();var t=this.localeData(),i=wo(this,!e,t);return e&&(i=t.pastFuture(+this,i)),t.postformat(i)}function Mo(e){return(e>0)-(e<0)||+e}function Eo(){if(!this.isValid())return this.localeData().invalidDate();var e,t,i,o=Ss(this._milliseconds)/1e3,n=Ss(this._days),s=Ss(this._months);e=b(o/60),t=b(e/60),o%=60,e%=60,i=b(s/12),s%=12;var r=i,a=s,d=n,h=t,l=e,u=o?o.toFixed(3).replace(/\.?0+$/,""):"",c=this.asSeconds();if(!c)return"P0D";var f=c<0?"-":"",p=Mo(this._months)!==Mo(c)?"-":"",v=Mo(this._days)!==Mo(c)?"-":"",g=Mo(this._milliseconds)!==Mo(c)?"-":"";return f+"P"+(r?p+r+"Y":"")+(a?p+a+"M":"")+(d?v+d+"D":"")+(h||l||u?"T":"")+(h?g+h+"H":"")+(l?g+l+"M":"")+(u?g+u+"S":"")}var So,Do;Do=Array.prototype.some?Array.prototype.some:function(e){for(var t=Object(this),i=t.length>>>0,o=0;o<i;o++)if(o in t&&e.call(this,t[o],o,t))return!0;return!1};var Co=t.momentProperties=[],To=!1,Po={};t.suppressDeprecationWarnings=!1,t.deprecationHandler=null;var Io;Io=Object.keys?Object.keys:function(e){var t,i=[];for(t in e)h(e,t)&&i.push(t);return i};var Fo={sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},No={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},Bo=/\d{1,2}/,zo={future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d 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"},Ro={},Ao={},jo=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,Lo=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,Ho={},Wo={},Yo=/\d/,Vo=/\d\d/,Uo=/\d{3}/,qo=/\d{4}/,Go=/[+-]?\d{6}/,Xo=/\d\d?/,Ko=/\d\d\d\d?/,Zo=/\d\d\d\d\d\d?/,$o=/\d{1,3}/,Qo=/\d{1,4}/,Jo=/[+-]?\d{1,6}/,en=/\d+/,tn=/[+-]?\d+/,on=/Z|[+-]\d\d:?\d\d/gi,nn=/Z|[+-]\d\d(?::?\d\d)?/gi,sn=/[+-]?\d+(\.\d{1,3})?/,rn=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,an={},dn={},hn=0,ln=1,un=2,cn=3,fn=4,pn=5,vn=6,gn=7,yn=8;H("Y",0,0,function(){var e=this.year();return e<=9999?""+e:"+"+e}),H(0,["YY",2],0,function(){return this.year()%100}),H(0,["YYYY",4],0,"year"),H(0,["YYYYY",5],0,"year"),H(0,["YYYYYY",6,!0],0,"year"),B("year","y"),A("year",1),q("Y",tn),q("YY",Xo,Vo),q("YYYY",Qo,qo),q("YYYYY",Jo,Go),q("YYYYYY",Jo,Go),Z(["YYYYY","YYYYYY"],hn),Z("YYYY",function(e,i){i[hn]=2===e.length?t.parseTwoDigitYear(e):_(e)}),Z("YY",function(e,i){i[hn]=t.parseTwoDigitYear(e)}),Z("Y",function(e,t){t[hn]=parseInt(e,10)}),t.parseTwoDigitYear=function(e){return _(e)+(_(e)>68?1900:2e3)};var mn,bn=ie("FullYear",!0);mn=Array.prototype.indexOf?Array.prototype.indexOf:function(e){var t;for(t=0;t<this.length;++t)if(this[t]===e)return t;return-1},H("M",["MM",2],"Mo",function(){return this.month()+1}),H("MMM",0,0,function(e){return this.localeData().monthsShort(this,e)}),H("MMMM",0,0,function(e){return this.localeData().months(this,e)}),B("month","M"),A("month",8),q("M",Xo),q("MM",Xo,Vo),q("MMM",function(e,t){return t.monthsShortRegex(e)}),q("MMMM",function(e,t){return t.monthsRegex(e)}),Z(["M","MM"],function(e,t){t[ln]=_(e)-1}),Z(["MMM","MMMM"],function(e,t,i,o){var n=i._locale.monthsParse(e,o,i._strict);null!=n?t[ln]=n:f(i).invalidMonth=e});var _n=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,wn="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),kn="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),xn=rn,On=rn;H("w",["ww",2],"wo","week"),H("W",["WW",2],"Wo","isoWeek"),B("week","w"),B("isoWeek","W"),A("week",5),A("isoWeek",5),q("w",Xo),q("ww",Xo,Vo),q("W",Xo),q("WW",Xo,Vo),$(["w","ww","W","WW"],function(e,t,i,o){t[o.substr(0,1)]=_(e)});var Mn={dow:0,doy:6};H("d",0,"do","day"),H("dd",0,0,function(e){return this.localeData().weekdaysMin(this,e)}),H("ddd",0,0,function(e){return this.localeData().weekdaysShort(this,e)}),H("dddd",0,0,function(e){return this.localeData().weekdays(this,e)}),H("e",0,0,"weekday"),H("E",0,0,"isoWeekday"),B("day","d"),B("weekday","e"),B("isoWeekday","E"),A("day",11),A("weekday",11),A("isoWeekday",11),q("d",Xo),q("e",Xo),q("E",Xo),q("dd",function(e,t){return t.weekdaysMinRegex(e)}),q("ddd",function(e,t){return t.weekdaysShortRegex(e)}),q("dddd",function(e,t){return t.weekdaysRegex(e)}),$(["dd","ddd","dddd"],function(e,t,i,o){var n=i._locale.weekdaysParse(e,o,i._strict);null!=n?t.d=n:f(i).invalidWeekday=e}),$(["d","e","E"],function(e,t,i,o){t[o]=_(e)});var En="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Sn="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Dn="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),Cn=rn,Tn=rn,Pn=rn;H("H",["HH",2],0,"hour"),H("h",["hh",2],0,Ve),H("k",["kk",2],0,Ue),H("hmm",0,0,function(){return""+Ve.apply(this)+L(this.minutes(),2)}),H("hmmss",0,0,function(){return""+Ve.apply(this)+L(this.minutes(),2)+L(this.seconds(),2)}),H("Hmm",0,0,function(){return""+this.hours()+L(this.minutes(),2)}),H("Hmmss",0,0,function(){return""+this.hours()+L(this.minutes(),2)+L(this.seconds(),2)}),qe("a",!0),qe("A",!1),B("hour","h"),A("hour",13),q("a",Ge),q("A",Ge),q("H",Xo),q("h",Xo),q("k",Xo),q("HH",Xo,Vo),q("hh",Xo,Vo),q("kk",Xo,Vo),q("hmm",Ko),q("hmmss",Zo),q("Hmm",Ko),q("Hmmss",Zo),Z(["H","HH"],cn),Z(["k","kk"],function(e,t,i){var o=_(e);t[cn]=24===o?0:o}),Z(["a","A"],function(e,t,i){i._isPm=i._locale.isPM(e),i._meridiem=e}),Z(["h","hh"],function(e,t,i){t[cn]=_(e),f(i).bigHour=!0}),Z("hmm",function(e,t,i){var o=e.length-2;t[cn]=_(e.substr(0,o)),t[fn]=_(e.substr(o)),f(i).bigHour=!0}),Z("hmmss",function(e,t,i){var o=e.length-4,n=e.length-2;t[cn]=_(e.substr(0,o)),t[fn]=_(e.substr(o,2)),t[pn]=_(e.substr(n)),f(i).bigHour=!0}),Z("Hmm",function(e,t,i){var o=e.length-2;t[cn]=_(e.substr(0,o)),t[fn]=_(e.substr(o))}),Z("Hmmss",function(e,t,i){var o=e.length-4,n=e.length-2;t[cn]=_(e.substr(0,o)),t[fn]=_(e.substr(o,2)),t[pn]=_(e.substr(n))});var In,Fn=/[ap]\.?m?\.?/i,Nn=ie("Hours",!0),Bn={calendar:Fo,longDateFormat:No,invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:Bo,relativeTime:zo,months:wn,monthsShort:kn,week:Mn,weekdays:En,weekdaysMin:Dn,weekdaysShort:Sn,meridiemParse:Fn},zn={},Rn={},An=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,jn=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,Ln=/Z|[+-]\d\d(?::?\d\d)?/,Hn=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],Wn=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],Yn=/^\/?Date\((\-?\d+)/i,Vn=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,Un={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};t.createFromInputFallback=x("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",function(e){e._d=new Date(e._i+(e._useUTC?" UTC":""))}),t.ISO_8601=function(){},t.RFC_2822=function(){};var qn=x("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var e=Mt.apply(null,arguments);return this.isValid()&&e.isValid()?e<this?this:e:v()}),Gn=x("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var e=Mt.apply(null,arguments);return this.isValid()&&e.isValid()?e>this?this:e:v()}),Xn=function(){return Date.now?Date.now():+new Date},Kn=["year","quarter","month","week","day","hour","minute","second","millisecond"];Bt("Z",":"),Bt("ZZ",""),q("Z",nn),q("ZZ",nn),Z(["Z","ZZ"],function(e,t,i){i._useUTC=!0,i._tzm=zt(nn,e)});var Zn=/([\+\-]|\d\d)/gi;t.updateOffset=function(){};var $n=/^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,Qn=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;Zt.fn=It.prototype,Zt.invalid=Pt;var Jn=ei(1,"add"),es=ei(-1,"subtract");t.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",t.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var ts=x("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(e){return void 0===e?this.localeData():this.locale(e)});H(0,["gg",2],0,function(){return this.weekYear()%100}),H(0,["GG",2],0,function(){return this.isoWeekYear()%100}),Bi("gggg","weekYear"),Bi("ggggg","weekYear"),Bi("GGGG","isoWeekYear"),Bi("GGGGG","isoWeekYear"),B("weekYear","gg"),B("isoWeekYear","GG"),A("weekYear",1),A("isoWeekYear",1),q("G",tn),q("g",tn),q("GG",Xo,Vo),q("gg",Xo,Vo),q("GGGG",Qo,qo),q("gggg",Qo,qo),q("GGGGG",Jo,Go),q("ggggg",Jo,Go),$(["gggg","ggggg","GGGG","GGGGG"],function(e,t,i,o){t[o.substr(0,2)]=_(e)}),$(["gg","GG"],function(e,i,o,n){i[n]=t.parseTwoDigitYear(e)}),H("Q",0,"Qo","quarter"),B("quarter","Q"),A("quarter",7),q("Q",Yo),Z("Q",function(e,t){t[ln]=3*(_(e)-1)}),H("D",["DD",2],"Do","date"),B("date","D"),A("date",9),q("D",Xo),q("DD",Xo,Vo),q("Do",function(e,t){return e?t._dayOfMonthOrdinalParse||t._ordinalParse:t._dayOfMonthOrdinalParseLenient}),Z(["D","DD"],un),Z("Do",function(e,t){t[un]=_(e.match(Xo)[0])});var is=ie("Date",!0);H("DDD",["DDDD",3],"DDDo","dayOfYear"),B("dayOfYear","DDD"),A("dayOfYear",4),q("DDD",$o),q("DDDD",Uo),Z(["DDD","DDDD"],function(e,t,i){i._dayOfYear=_(e)}),H("m",["mm",2],0,"minute"),B("minute","m"),A("minute",14),q("m",Xo),q("mm",Xo,Vo),Z(["m","mm"],fn);var os=ie("Minutes",!1);H("s",["ss",2],0,"second"),B("second","s"),A("second",15),q("s",Xo),q("ss",Xo,Vo),Z(["s","ss"],pn);var ns=ie("Seconds",!1);H("S",0,0,function(){return~~(this.millisecond()/100)}),H(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),H(0,["SSS",3],0,"millisecond"),H(0,["SSSS",4],0,function(){return 10*this.millisecond()}),H(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),H(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),H(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),H(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),H(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),B("millisecond","ms"),A("millisecond",16),q("S",$o,Yo),q("SS",$o,Vo),q("SSS",$o,Uo);var ss;for(ss="SSSS";ss.length<=9;ss+="S")q(ss,en);for(ss="S";ss.length<=9;ss+="S")Z(ss,Vi);var rs=ie("Milliseconds",!1);H("z",0,0,"zoneAbbr"),H("zz",0,0,"zoneName");var as=y.prototype;as.add=Jn,as.calendar=oi,as.clone=ni,as.diff=ui,as.endOf=Oi,as.format=gi,as.from=yi,as.fromNow=mi,as.to=bi,as.toNow=_i,as.get=se,as.invalidAt=Fi,as.isAfter=si,as.isBefore=ri,as.isBetween=ai,as.isSame=di,as.isSameOrAfter=hi,as.isSameOrBefore=li,as.isValid=Pi,as.lang=ts,as.locale=wi,as.localeData=ki,as.max=Gn,as.min=qn,as.parsingFlags=Ii,as.set=re,as.startOf=xi,as.subtract=es,as.toArray=Di,as.toObject=Ci,as.toDate=Si,as.toISOString=pi,as.inspect=vi,as.toJSON=Ti,as.toString=fi,as.unix=Ei,as.valueOf=Mi,as.creationData=Ni,as.year=bn,as.isLeapYear=te,as.weekYear=zi,as.isoWeekYear=Ri,as.quarter=as.quarters=Wi,as.month=pe,as.daysInMonth=ve,as.week=as.weeks=De,as.isoWeek=as.isoWeeks=Ce,as.weeksInYear=ji,as.isoWeeksInYear=Ai,as.date=is,as.day=as.days=Re,as.weekday=Ae,as.isoWeekday=je,as.dayOfYear=Yi,as.hour=as.hours=Nn,as.minute=as.minutes=os,as.second=as.seconds=ns,as.millisecond=as.milliseconds=rs,as.utcOffset=jt,as.utc=Ht,as.local=Wt,as.parseZone=Yt,as.hasAlignedHourOffset=Vt,as.isDST=Ut,as.isLocal=Gt,as.isUtcOffset=Xt,as.isUtc=Kt,as.isUTC=Kt,as.zoneAbbr=Ui,as.zoneName=qi,as.dates=x("dates accessor is deprecated. Use date instead.",is),as.months=x("months accessor is deprecated. Use month instead",pe),as.years=x("years accessor is deprecated. Use year instead",bn),as.zone=x("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",Lt),as.isDSTShifted=x("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",qt);var ds=D.prototype;ds.calendar=C,ds.longDateFormat=T,ds.invalidDate=P,ds.ordinal=I,ds.preparse=Ki,ds.postformat=Ki,ds.relativeTime=F,ds.pastFuture=N,ds.set=E,ds.months=he,ds.monthsShort=le,ds.monthsParse=ce,ds.monthsRegex=ye,ds.monthsShortRegex=ge,ds.week=Me,ds.firstDayOfYear=Se,ds.firstDayOfWeek=Ee,ds.weekdays=Ie,ds.weekdaysMin=Ne,ds.weekdaysShort=Fe,ds.weekdaysParse=ze,ds.weekdaysRegex=Le,ds.weekdaysShortRegex=He,ds.weekdaysMinRegex=We,ds.isPM=Xe,ds.meridiem=Ke,Je("en",{dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10;return e+(1===_(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")}}),t.lang=x("moment.lang is deprecated. Use moment.locale instead.",Je),t.langData=x("moment.langData is deprecated. Use moment.localeData instead.",it);var hs=Math.abs,ls=vo("ms"),us=vo("s"),cs=vo("m"),fs=vo("h"),ps=vo("d"),vs=vo("w"),gs=vo("M"),ys=vo("y"),ms=mo("milliseconds"),bs=mo("seconds"),_s=mo("minutes"),ws=mo("hours"),ks=mo("days"),xs=mo("months"),Os=mo("years"),Ms=Math.round,Es={ss:44,s:45,m:45,h:22,d:26,M:11},Ss=Math.abs,Ds=It.prototype;return Ds.isValid=Tt,Ds.abs=no,Ds.add=ro,Ds.subtract=ao,Ds.as=fo,Ds.asMilliseconds=ls,Ds.asSeconds=us,Ds.asMinutes=cs,Ds.asHours=fs,Ds.asDays=ps,Ds.asWeeks=vs,Ds.asMonths=gs,Ds.asYears=ys,Ds.valueOf=po,Ds._bubble=lo,Ds.clone=go,Ds.get=yo,Ds.milliseconds=ms,Ds.seconds=bs,Ds.minutes=_s,Ds.hours=ws,Ds.days=ks,Ds.weeks=bo,Ds.months=xs,Ds.years=Os,Ds.humanize=Oo,Ds.toISOString=Eo,Ds.toString=Eo,Ds.toJSON=Eo,Ds.locale=wi,Ds.localeData=ki,Ds.toIsoString=x("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",Eo),Ds.lang=ts,H("X",0,0,"unix"),H("x",0,0,"valueOf"),q("x",tn),q("X",sn),Z("X",function(e,t,i){i._d=new Date(1e3*parseFloat(e,10))}),Z("x",function(e,t,i){i._d=new Date(_(e))}),t.version="2.23.0",function(e){So=e}(Mt),t.fn=as,t.min=St,t.max=Dt,t.now=Xn,t.utc=u,t.unix=Gi,t.months=Ji,t.isDate=a,t.locale=Je,t.invalid=v,t.duration=Zt,t.isMoment=m,t.weekdays=to,t.parseZone=Xi,t.localeData=it,t.isDuration=Ft,t.monthsShort=eo,t.weekdaysMin=oo,t.defineLocale=et,t.updateLocale=tt,t.locales=ot,t.weekdaysShort=io,t.normalizeUnits=z,t.relativeTimeRounding=ko,t.relativeTimeThreshold=xo,t.calendarFormat=ii,t.prototype=as,t.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},t})}).call(t,i(117)(e))},function(e,t){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children||(e.children=[]),Object.defineProperty(e,"loaded",{enumerable:!0,get:function(){return e.l}}),Object.defineProperty(e,"id",{enumerable:!0,get:function(){return e.i}}),e.webpackPolyfill=1),e}},function(e,t){function i(e){throw new Error("Cannot find module '"+e+"'.")}i.keys=function(){return[]},i.resolve=i,e.exports=i,i.id=118},function(e,t,i){"use strict";(function(t){function i(e,t,i){var o=t&&i||0,n=0;for(t=t||[],e.toLowerCase().replace(/[0-9a-f]{2}/g,function(e){n<16&&(t[o+n++]=u[e])});n<16;)t[o+n++]=0;return t}function o(e,t){var i=t||0,o=l;return o[e[i++]]+o[e[i++]]+o[e[i++]]+o[e[i++]]+"-"+o[e[i++]]+o[e[i++]]+"-"+o[e[i++]]+o[e[i++]]+"-"+o[e[i++]]+o[e[i++]]+"-"+o[e[i++]]+o[e[i++]]+o[e[i++]]+o[e[i++]]+o[e[i++]]+o[e[i++]]}function n(e,t,i){var n=t&&i||0,s=t||[];e=e||{};var r=void 0!==e.clockseq?e.clockseq:v,a=void 0!==e.msecs?e.msecs:(new Date).getTime(),d=void 0!==e.nsecs?e.nsecs:y+1,h=a-g+(d-y)/1e4;if(h<0&&void 0===e.clockseq&&(r=r+1&16383),(h<0||a>g)&&void 0===e.nsecs&&(d=0),d>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");g=a,y=d,v=r,a+=122192928e5;var l=(1e4*(268435455&a)+d)%4294967296;s[n++]=l>>>24&255,s[n++]=l>>>16&255,s[n++]=l>>>8&255,s[n++]=255&l;var u=a/4294967296*1e4&268435455;s[n++]=u>>>8&255,s[n++]=255&u,s[n++]=u>>>24&15|16,s[n++]=u>>>16&255,s[n++]=r>>>8|128,s[n++]=255&r;for(var c=e.node||p,f=0;f<6;f++)s[n+f]=c[f];return t||o(s)}function s(e,t,i){var n=t&&i||0;"string"==typeof e&&(t="binary"==e?new Array(16):null,e=null),e=e||{};var s=e.random||(e.rng||r)();if(s[6]=15&s[6]|64,s[8]=63&s[8]|128,t)for(var a=0;a<16;a++)t[n+a]=s[a];return t||o(s)}var r,a="undefined"!=typeof window?window:void 0!==t?t:null;if(a&&a.crypto&&crypto.getRandomValues){var d=new Uint8Array(16);r=function(){return crypto.getRandomValues(d),d}}if(!r){var h=new Array(16);r=function(){for(var e,t=0;t<16;t++)0==(3&t)&&(e=4294967296*Math.random()),h[t]=e>>>((3&t)<<3)&255;return h}}for(var l=[],u={},c=0;c<256;c++)l[c]=(c+256).toString(16).substr(1),u[l[c]]=c;var f=r(),p=[1|f[0],f[1],f[2],f[3],f[4],f[5]],v=16383&(f[6]<<8|f[7]),g=0,y=0,m=s;m.v1=n,m.v4=s,m.parse=i,m.unparse=o,e.exports=m}).call(t,i(120))},function(e,t){var i;i=function(){return this}();try{i=i||Function("return this")()||(0,eval)("this")}catch(e){"object"==typeof window&&(i=window)}e.exports=i},function(e,t,i){"use strict";t.prepareElements=function(e){for(var t in e)e.hasOwnProperty(t)&&(e[t].redundant=e[t].used,e[t].used=[])},t.cleanupElements=function(e){for(var t in e)if(e.hasOwnProperty(t)&&e[t].redundant){for(var i=0;i<e[t].redundant.length;i++)e[t].redundant[i].parentNode.removeChild(e[t].redundant[i]);e[t].redundant=[]}},t.resetElements=function(e){t.prepareElements(e),t.cleanupElements(e),t.prepareElements(e)},t.getSVGElement=function(e,t,i){var o;return t.hasOwnProperty(e)?t[e].redundant.length>0?(o=t[e].redundant[0],t[e].redundant.shift()):(o=document.createElementNS("http://www.w3.org/2000/svg",e),i.appendChild(o)):(o=document.createElementNS("http://www.w3.org/2000/svg",e),t[e]={used:[],redundant:[]},i.appendChild(o)),t[e].used.push(o),o},t.getDOMElement=function(e,t,i,o){var n;return t.hasOwnProperty(e)?t[e].redundant.length>0?(n=t[e].redundant[0],t[e].redundant.shift()):(n=document.createElement(e),void 0!==o?i.insertBefore(n,o):i.appendChild(n)):(n=document.createElement(e),t[e]={used:[],redundant:[]},void 0!==o?i.insertBefore(n,o):i.appendChild(n)),t[e].used.push(n),n},t.drawPoint=function(e,i,o,n,s,r){var a;if("circle"==o.style?(a=t.getSVGElement("circle",n,s),a.setAttributeNS(null,"cx",e),a.setAttributeNS(null,"cy",i),a.setAttributeNS(null,"r",.5*o.size)):(a=t.getSVGElement("rect",n,s),a.setAttributeNS(null,"x",e-.5*o.size),a.setAttributeNS(null,"y",i-.5*o.size),a.setAttributeNS(null,"width",o.size),a.setAttributeNS(null,"height",o.size)),void 0!==o.styles&&a.setAttributeNS(null,"style",o.styles),a.setAttributeNS(null,"class",o.className+" vis-point"),r){var d=t.getSVGElement("text",n,s);r.xOffset&&(e+=r.xOffset),r.yOffset&&(i+=r.yOffset),r.content&&(d.textContent=r.content),r.className&&d.setAttributeNS(null,"class",r.className+" vis-label"),d.setAttributeNS(null,"x",e),d.setAttributeNS(null,"y",i)}return a},t.drawBar=function(e,i,o,n,s,r,a,d){if(0!=n){n<0&&(n*=-1,i-=n);var h=t.getSVGElement("rect",r,a);h.setAttributeNS(null,"x",e-.5*o),h.setAttributeNS(null,"y",i),h.setAttributeNS(null,"width",o),h.setAttributeNS(null,"height",n),h.setAttributeNS(null,"class",s),d&&h.setAttributeNS(null,"style",d)}}},function(e,t,i){var o=i(6),n=o.JSON||(o.JSON={stringify:JSON.stringify});e.exports=function(e){return n.stringify.apply(n,arguments)}},function(e,t,i){"use strict";function o(e,t,i){var n=this;if(!(this instanceof o))throw new SyntaxError("Constructor must be called with the new operator");this.options={},this.defaultOptions={locale:"en",locales:h,clickToUse:!1},s.extend(this.options,this.defaultOptions),this.body={container:e,nodes:{},nodeIndices:[],edges:{},edgeIndices:[],emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this),once:this.once.bind(this)},eventListeners:{onTap:function(){},onTouch:function(){},onDoubleTap:function(){},onHold:function(){},onDragStart:function(){},onDrag:function(){},onDragEnd:function(){},onMouseWheel:function(){},onPinch:function(){},onMouseMove:function(){},onRelease:function(){},onContext:function(){}},data:{nodes:null,edges:null},functions:{createNode:function(){},createEdge:function(){},getPointer:function(){}},modules:{},view:{scale:1,translation:{x:0,y:0}}},this.bindEventListeners(),this.images=new l(function(){return n.body.emitter.emit("_requestRedraw")}),this.groups=new u,this.canvas=new y(this.body),this.selectionHandler=new _(this.body,this.canvas),this.interactionHandler=new b(this.body,this.canvas,this.selectionHandler),this.view=new m(this.body,this.canvas),this.renderer=new g(this.body,this.canvas),this.physics=new p(this.body),this.layoutEngine=new w(this.body),this.clustering=new v(this.body),this.manipulation=new k(this.body,this.canvas,this.selectionHandler),this.nodesHandler=new c(this.body,this.images,this.groups,this.layoutEngine),this.edgesHandler=new f(this.body,this.images,this.groups),this.body.modules.kamadaKawai=new T(this.body,150,.05),this.body.modules.clustering=this.clustering,this.canvas._create(),this.setOptions(i),this.setData(t)}i(124);var n=i(73),s=i(5),r=i(74),a=i(75),d=i(125),h=i(128),l=i(76).default,u=i(133).default,c=i(134).default,f=i(164).default,p=i(170).default,v=i(177).default,g=i(179).default,y=i(180).default,m=i(181).default,b=i(182).default,_=i(185).default,w=i(186).default,k=i(189).default,x=i(190).default,O=i(54).default,M=i(54),E=M.printStyle,S=i(84),D=S.allOptions,C=S.configureOptions,T=i(192).default;n(o.prototype),o.prototype.setOptions=function(e){var t=this;if(null===e&&(e=void 0),void 0!==e){!0===O.validate(e,D)&&console.log("%cErrors have been found in the supplied options object.",E);var i=["locale","locales","clickToUse"];if(s.selectiveDeepExtend(i,this.options,e),e=this.layoutEngine.setOptions(e.layout,e),this.canvas.setOptions(e),this.groups.setOptions(e.groups),this.nodesHandler.setOptions(e.nodes),this.edgesHandler.setOptions(e.edges),this.physics.setOptions(e.physics),this.manipulation.setOptions(e.manipulation,e,this.options),this.interactionHandler.setOptions(e.interaction),this.renderer.setOptions(e.interaction),this.selectionHandler.setOptions(e.interaction),void 0!==e.groups&&this.body.emitter.emit("refreshNodes"),"configure"in e&&(this.configurator||(this.configurator=new x(this,this.body.container,C,this.canvas.pixelRatio)),this.configurator.setOptions(e.configure)),this.configurator&&!0===this.configurator.options.enabled){var o={nodes:{},edges:{},layout:{},interaction:{},manipulation:{},physics:{},global:{}};s.deepExtend(o.nodes,this.nodesHandler.options),s.deepExtend(o.edges,this.edgesHandler.options),s.deepExtend(o.layout,this.layoutEngine.options),s.deepExtend(o.interaction,this.selectionHandler.options),s.deepExtend(o.interaction,this.renderer.options),s.deepExtend(o.interaction,this.interactionHandler.options),s.deepExtend(o.manipulation,this.manipulation.options),s.deepExtend(o.physics,this.physics.options),s.deepExtend(o.global,this.canvas.options),s.deepExtend(o.global,this.options),this.configurator.setModuleOptions(o)}void 0!==e.clickToUse?!0===e.clickToUse?void 0===this.activator&&(this.activator=new d(this.canvas.frame),this.activator.on("change",function(){t.body.emitter.emit("activate")})):(void 0!==this.activator&&(this.activator.destroy(),delete this.activator),this.body.emitter.emit("activate")):this.body.emitter.emit("activate"),this.canvas.setSize(),this.body.emitter.emit("startSimulation")}},o.prototype._updateVisibleIndices=function(){var e=this.body.nodes,t=this.body.edges;this.body.nodeIndices=[],this.body.edgeIndices=[];for(var i in e)e.hasOwnProperty(i)&&(this.clustering._isClusteredNode(i)||!1!==e[i].options.hidden||this.body.nodeIndices.push(e[i].id));for(var o in t)if(t.hasOwnProperty(o)){var n=t[o],s=e[n.fromId],r=e[n.toId],a=void 0!==s&&void 0!==r,d=!this.clustering._isClusteredEdge(o)&&!1===n.options.hidden&&a&&!1===s.options.hidden&&!1===r.options.hidden;d&&this.body.edgeIndices.push(n.id)}},o.prototype.bindEventListeners=function(){var e=this;this.body.emitter.on("_dataChanged",function(){e.edgesHandler._updateState(),e.body.emitter.emit("_dataUpdated")}),this.body.emitter.on("_dataUpdated",function(){e.clustering._updateState(),e._updateVisibleIndices(),e._updateValueRange(e.body.nodes),e._updateValueRange(e.body.edges),e.body.emitter.emit("startSimulation"),e.body.emitter.emit("_requestRedraw")})},o.prototype.setData=function(e){if(this.body.emitter.emit("resetPhysics"),this.body.emitter.emit("_resetData"),this.selectionHandler.unselectAll(),e&&e.dot&&(e.nodes||e.edges))throw new SyntaxError('Data must contain either parameter "dot" or parameter pair "nodes" and "edges", but not both.');if(this.setOptions(e&&e.options),e&&e.dot){console.log("The dot property has been deprecated. Please use the static convertDot method to convert DOT into vis.network format and use the normal data format with nodes and edges. This converter is used like this: var data = vis.network.convertDot(dotString);");var t=r.DOTToGraph(e.dot);return void this.setData(t)}if(e&&e.gephi){console.log("The gephi property has been deprecated. Please use the static convertGephi method to convert gephi into vis.network format and use the normal data format with nodes and edges. This converter is used like this: var data = vis.network.convertGephi(gephiJson);");var i=a.parseGephi(e.gephi);return void this.setData(i)}this.nodesHandler.setData(e&&e.nodes,!0),this.edgesHandler.setData(e&&e.edges,!0),this.body.emitter.emit("_dataChanged"),this.body.emitter.emit("_dataLoaded"),this.body.emitter.emit("initPhysics")},o.prototype.destroy=function(){this.body.emitter.emit("destroy"),this.body.emitter.off(),this.off(),delete this.groups,delete this.canvas,delete this.selectionHandler,delete this.interactionHandler,delete this.view,delete this.renderer,delete this.physics,delete this.layoutEngine,delete this.clustering,delete this.manipulation,delete this.nodesHandler,delete this.edgesHandler,delete this.configurator,delete this.images;for(var e in this.body.nodes)this.body.nodes.hasOwnProperty(e)&&delete this.body.nodes[e];for(var t in this.body.edges)this.body.edges.hasOwnProperty(t)&&delete this.body.edges[t];s.recursiveDOMDelete(this.body.container)},o.prototype._updateValueRange=function(e){var t,i=void 0,o=void 0,n=0;for(t in e)if(e.hasOwnProperty(t)){var s=e[t].getValue();void 0!==s&&(i=void 0===i?s:Math.min(s,i),o=void 0===o?s:Math.max(s,o),n+=s)}if(void 0!==i&&void 0!==o)for(t in e)e.hasOwnProperty(t)&&e[t].setValueRange(i,o,n)},o.prototype.isActive=function(){return!this.activator||this.activator.active},o.prototype.setSize=function(){return this.canvas.setSize.apply(this.canvas,arguments)},o.prototype.canvasToDOM=function(){return this.canvas.canvasToDOM.apply(this.canvas,arguments)},o.prototype.DOMtoCanvas=function(){return this.canvas.DOMtoCanvas.apply(this.canvas,arguments)},o.prototype.findNode=function(){return this.clustering.findNode.apply(this.clustering,arguments)},o.prototype.isCluster=function(){return this.clustering.isCluster.apply(this.clustering,arguments)},o.prototype.openCluster=function(){return this.clustering.openCluster.apply(this.clustering,arguments)},o.prototype.cluster=function(){return this.clustering.cluster.apply(this.clustering,arguments)},o.prototype.getNodesInCluster=function(){return this.clustering.getNodesInCluster.apply(this.clustering,arguments)},o.prototype.clusterByConnection=function(){return this.clustering.clusterByConnection.apply(this.clustering,arguments)},o.prototype.clusterByHubsize=function(){return this.clustering.clusterByHubsize.apply(this.clustering,arguments)},o.prototype.clusterOutliers=function(){return this.clustering.clusterOutliers.apply(this.clustering,arguments)},o.prototype.getSeed=function(){return this.layoutEngine.getSeed.apply(this.layoutEngine,arguments)},o.prototype.enableEditMode=function(){return this.manipulation.enableEditMode.apply(this.manipulation,arguments)},o.prototype.disableEditMode=function(){return this.manipulation.disableEditMode.apply(this.manipulation,arguments)},o.prototype.addNodeMode=function(){return this.manipulation.addNodeMode.apply(this.manipulation,arguments)},o.prototype.editNode=function(){return this.manipulation.editNode.apply(this.manipulation,arguments)},o.prototype.editNodeMode=function(){return console.log("Deprecated: Please use editNode instead of editNodeMode."),this.manipulation.editNode.apply(this.manipulation,arguments)},o.prototype.addEdgeMode=function(){return this.manipulation.addEdgeMode.apply(this.manipulation,arguments)},o.prototype.editEdgeMode=function(){return this.manipulation.editEdgeMode.apply(this.manipulation,arguments)},o.prototype.deleteSelected=function(){return this.manipulation.deleteSelected.apply(this.manipulation,arguments)},o.prototype.getPositions=function(){return this.nodesHandler.getPositions.apply(this.nodesHandler,arguments)},o.prototype.storePositions=function(){return this.nodesHandler.storePositions.apply(this.nodesHandler,arguments)},o.prototype.moveNode=function(){return this.nodesHandler.moveNode.apply(this.nodesHandler,arguments)},o.prototype.getBoundingBox=function(){return this.nodesHandler.getBoundingBox.apply(this.nodesHandler,arguments)},o.prototype.getConnectedNodes=function(e){return void 0!==this.body.nodes[e]?this.nodesHandler.getConnectedNodes.apply(this.nodesHandler,arguments):this.edgesHandler.getConnectedNodes.apply(this.edgesHandler,arguments)},o.prototype.getConnectedEdges=function(){return this.nodesHandler.getConnectedEdges.apply(this.nodesHandler,arguments)},o.prototype.startSimulation=function(){return this.physics.startSimulation.apply(this.physics,arguments)},o.prototype.stopSimulation=function(){return this.physics.stopSimulation.apply(this.physics,arguments)},o.prototype.stabilize=function(){return this.physics.stabilize.apply(this.physics,arguments)},o.prototype.getSelection=function(){return this.selectionHandler.getSelection.apply(this.selectionHandler,arguments)},o.prototype.setSelection=function(){return this.selectionHandler.setSelection.apply(this.selectionHandler,arguments)},o.prototype.getSelectedNodes=function(){return this.selectionHandler.getSelectedNodes.apply(this.selectionHandler,arguments)},o.prototype.getSelectedEdges=function(){return this.selectionHandler.getSelectedEdges.apply(this.selectionHandler,arguments)},o.prototype.getNodeAt=function(){var e=this.selectionHandler.getNodeAt.apply(this.selectionHandler,arguments);return void 0!==e&&void 0!==e.id?e.id:e},o.prototype.getEdgeAt=function(){var e=this.selectionHandler.getEdgeAt.apply(this.selectionHandler,arguments);return void 0!==e&&void 0!==e.id?e.id:e},o.prototype.selectNodes=function(){return this.selectionHandler.selectNodes.apply(this.selectionHandler,arguments)},o.prototype.selectEdges=function(){return this.selectionHandler.selectEdges.apply(this.selectionHandler,arguments)},o.prototype.unselectAll=function(){this.selectionHandler.unselectAll.apply(this.selectionHandler,arguments),this.redraw()},o.prototype.redraw=function(){return this.renderer.redraw.apply(this.renderer,arguments)},o.prototype.getScale=function(){return this.view.getScale.apply(this.view,arguments)},o.prototype.getViewPosition=function(){return this.view.getViewPosition.apply(this.view,arguments)},o.prototype.fit=function(){return this.view.fit.apply(this.view,arguments)},o.prototype.moveTo=function(){return this.view.moveTo.apply(this.view,arguments)},o.prototype.focus=function(){return this.view.focus.apply(this.view,arguments)},o.prototype.releaseNode=function(){return this.view.releaseNode.apply(this.view,arguments)},o.prototype.getOptionsFromConfigurator=function(){var e={};return this.configurator&&(e=this.configurator.getOptions.apply(this.configurator)),e},e.exports=o},function(e,t,i){"use strict";"undefined"!=typeof CanvasRenderingContext2D&&(CanvasRenderingContext2D.prototype.circle=function(e,t,i){this.beginPath(),this.arc(e,t,i,0,2*Math.PI,!1),this.closePath()},CanvasRenderingContext2D.prototype.square=function(e,t,i){this.beginPath(),this.rect(e-i,t-i,2*i,2*i),this.closePath()},CanvasRenderingContext2D.prototype.triangle=function(e,t,i){this.beginPath(),i*=1.15,t+=.275*i;var o=2*i,n=o/2,s=Math.sqrt(3)/6*o,r=Math.sqrt(o*o-n*n);this.moveTo(e,t-(r-s)),this.lineTo(e+n,t+s),this.lineTo(e-n,t+s),this.lineTo(e,t-(r-s)),this.closePath()},CanvasRenderingContext2D.prototype.triangleDown=function(e,t,i){this.beginPath(),i*=1.15,t-=.275*i;var o=2*i,n=o/2,s=Math.sqrt(3)/6*o,r=Math.sqrt(o*o-n*n);this.moveTo(e,t+(r-s)),this.lineTo(e+n,t-s),this.lineTo(e-n,t-s),this.lineTo(e,t+(r-s)),this.closePath()},CanvasRenderingContext2D.prototype.star=function(e,t,i){this.beginPath(),i*=.82,t+=.1*i;for(var o=0;o<10;o++){var n=o%2==0?1.3*i:.5*i;this.lineTo(e+n*Math.sin(2*o*Math.PI/10),t-n*Math.cos(2*o*Math.PI/10))}this.closePath()},CanvasRenderingContext2D.prototype.diamond=function(e,t,i){this.beginPath(),this.lineTo(e,t+i),this.lineTo(e+i,t),this.lineTo(e,t-i),this.lineTo(e-i,t),this.closePath()},CanvasRenderingContext2D.prototype.roundRect=function(e,t,i,o,n){var s=Math.PI/180;i-2*n<0&&(n=i/2),o-2*n<0&&(n=o/2),this.beginPath(),this.moveTo(e+n,t),this.lineTo(e+i-n,t),this.arc(e+i-n,t+n,n,270*s,360*s,!1),this.lineTo(e+i,t+o-n),this.arc(e+i-n,t+o-n,n,0,90*s,!1),this.lineTo(e+n,t+o),this.arc(e+n,t+o-n,n,90*s,180*s,!1),this.lineTo(e,t+n),this.arc(e+n,t+n,n,180*s,270*s,!1),this.closePath()},CanvasRenderingContext2D.prototype.ellipse_vis=function(e,t,i,o){var n=i/2*.5522848,s=o/2*.5522848,r=e+i,a=t+o,d=e+i/2,h=t+o/2;this.beginPath(),this.moveTo(e,h),this.bezierCurveTo(e,h-s,d-n,t,d,t),this.bezierCurveTo(d+n,t,r,h-s,r,h),this.bezierCurveTo(r,h+s,d+n,a,d,a),this.bezierCurveTo(d-n,a,e,h+s,e,h),this.closePath()},CanvasRenderingContext2D.prototype.database=function(e,t,i,o){var n=i,s=o*(1/3),r=n/2*.5522848,a=s/2*.5522848,d=e+n,h=t+s,l=e+n/2,u=t+s/2,c=t+(o-s/2),f=t+o;this.beginPath(),this.moveTo(d,u),this.bezierCurveTo(d,u+a,l+r,h,l,h),this.bezierCurveTo(l-r,h,e,u+a,e,u),this.bezierCurveTo(e,u-a,l-r,t,l,t),this.bezierCurveTo(l+r,t,d,u-a,d,u),this.lineTo(d,c),this.bezierCurveTo(d,c+a,l+r,f,l,f),this.bezierCurveTo(l-r,f,e,c+a,e,c),this.lineTo(e,u)},CanvasRenderingContext2D.prototype.dashedLine=function(e,t,i,o,n){this.beginPath(),this.moveTo(e,t);for(var s=n.length,r=i-e,a=o-t,d=a/r,h=Math.sqrt(r*r+a*a),l=0,u=!0,c=0,f=n[0];h>=.1;)f=n[l++%s],f>h&&(f=h),c=Math.sqrt(f*f/(1+d*d)),c=r<0?-c:c,e+=c,t+=d*c,!0===u?this.lineTo(e,t):this.moveTo(e,t),h-=f,u=!u},CanvasRenderingContext2D.prototype.hexagon=function(e,t,i){this.beginPath();var o=2*Math.PI/6;this.moveTo(e+i,t);for(var n=1;n<6;n++)this.lineTo(e+i*Math.cos(o*n),t+i*Math.sin(o*n));this.closePath()})},function(e,t,i){"use strict";function o(e){this.active=!1,this.dom={container:e},this.dom.overlay=document.createElement("div"),this.dom.overlay.className="vis-overlay",this.dom.container.appendChild(this.dom.overlay),this.hammer=a(this.dom.overlay),this.hammer.on("tap",this._onTapOverlay.bind(this));var t=this;["tap","doubletap","press","pinch","pan","panstart","panmove","panend"].forEach(function(e){t.hammer.on(e,function(e){e.stopPropagation()})}),document&&document.body&&(this.onClick=function(i){n(i.target,e)||t.deactivate()},document.body.addEventListener("click",this.onClick)),void 0!==this.keycharm&&this.keycharm.destroy(),this.keycharm=s(),this.escListener=this.deactivate.bind(this)}function n(e,t){for(;e;){if(e===t)return!0;e=e.parentNode}return!1}var s=i(52),r=i(73),a=i(24),d=i(5);r(o.prototype),o.current=null,o.prototype.destroy=function(){this.deactivate(),this.dom.overlay.parentNode.removeChild(this.dom.overlay),this.onClick&&document.body.removeEventListener("click",this.onClick),void 0!==this.keycharm&&this.keycharm.destroy(),this.keycharm=null,this.hammer.destroy(),this.hammer=null},o.prototype.activate=function(){o.current&&o.current.deactivate(),o.current=this,this.active=!0,this.dom.overlay.style.display="none",d.addClassName(this.dom.container,"vis-active"),this.emit("change"),this.emit("activate"),this.keycharm.bind("esc",this.escListener)},o.prototype.deactivate=function(){this.active=!1,this.dom.overlay.style.display="",d.removeClassName(this.dom.container,"vis-active"),this.keycharm.unbind("esc",this.escListener),this.emit("change"),this.emit("deactivate")},o.prototype._onTapOverlay=function(e){this.activate(),e.stopPropagation()},e.exports=o},function(e,t,i){"use strict";var o,n,s;!function(i){n=[],o=i,void 0!==(s="function"==typeof o?o.apply(t,n):o)&&(e.exports=s)}(function(){var e=null;return function t(i,o){function n(e){return e.match(/[^ ]+/g)}function s(t){if("hammer.input"!==t.type){if(t.srcEvent._handled||(t.srcEvent._handled={}),t.srcEvent._handled[t.type])return;t.srcEvent._handled[t.type]=!0}var i=!1;t.stopPropagation=function(){i=!0};var o=t.srcEvent.stopPropagation.bind(t.srcEvent);"function"==typeof o&&(t.srcEvent.stopPropagation=function(){o(),t.stopPropagation()}),t.firstTarget=e;for(var n=e;n&&!i;){var s=n.hammer;if(s)for(var r,a=0;a<s.length;a++)if(r=s[a]._handlers[t.type])for(var d=0;d<r.length&&!i;d++)r[d](t);n=n.parentNode}}var r=o||{preventDefault:!1};if(i.Manager){var a=i,d=function(e,i){var o=Object.create(r);return i&&a.assign(o,i),t(new a(e,o),o)};return a.assign(d,a),d.Manager=function(e,i){var o=Object.create(r);return i&&a.assign(o,i),t(new a.Manager(e,o),o)},d}var h=Object.create(i),l=i.element;return l.hammer||(l.hammer=[]),l.hammer.push(h),i.on("hammer.input",function(t){!0!==r.preventDefault&&r.preventDefault!==t.pointerType||t.preventDefault(),t.isFirst&&(e=t.target)}),h._handlers={},h.on=function(e,t){return n(e).forEach(function(e){var o=h._handlers[e];o||(h._handlers[e]=o=[],i.on(e,s)),o.push(t)}),h},h.off=function(e,t){return n(e).forEach(function(e){var o=h._handlers[e];o&&(o=t?o.filter(function(e){return e!==t}):[],o.length>0?h._handlers[e]=o:(i.off(e,s),delete h._handlers[e]))}),h},h.emit=function(t,o){e=o.target,i.emit(t,o)},h.destroy=function(){var e=i.element.hammer,t=e.indexOf(h);-1!==t&&e.splice(t,1),e.length||delete i.element.hammer,h._handlers={},i.destroy()},h}})},function(e,t,i){var o;/*! Hammer.JS - v2.0.7 - 2016-04-22 * http://hammerjs.github.io/ * * Copyright (c) 2016 Jorik Tangelder; * Licensed under the MIT license */ !function(n,s,r,a){"use strict";function d(e,t,i){return setTimeout(f(e,i),t)}function h(e,t,i){return!!Array.isArray(e)&&(l(e,i[t],i),!0)}function l(e,t,i){var o;if(e)if(e.forEach)e.forEach(t,i);else if(e.length!==a)for(o=0;o<e.length;)t.call(i,e[o],o,e),o++;else for(o in e)e.hasOwnProperty(o)&&t.call(i,e[o],o,e)}function u(e,t,i){var o="DEPRECATED METHOD: "+t+"\n"+i+" AT \n";return function(){var t=new Error("get-stack-trace"),i=t&&t.stack?t.stack.replace(/^[^\(]+?[\n$]/gm,"").replace(/^\s+at\s+/gm,"").replace(/^Object.<anonymous>\s*\(/gm,"{anonymous}()@"):"Unknown Stack Trace",s=n.console&&(n.console.warn||n.console.log);return s&&s.call(n.console,o,i),e.apply(this,arguments)}}function c(e,t,i){var o,n=t.prototype;o=e.prototype=Object.create(n),o.constructor=e,o._super=n,i&&pe(o,i)}function f(e,t){return function(){return e.apply(t,arguments)}}function p(e,t){return typeof e==ye?e.apply(t?t[0]||a:a,t):e}function v(e,t){return e===a?t:e}function g(e,t,i){l(_(t),function(t){e.addEventListener(t,i,!1)})}function y(e,t,i){l(_(t),function(t){e.removeEventListener(t,i,!1)})}function m(e,t){for(;e;){if(e==t)return!0;e=e.parentNode}return!1}function b(e,t){return e.indexOf(t)>-1}function _(e){return e.trim().split(/\s+/g)}function w(e,t,i){if(e.indexOf&&!i)return e.indexOf(t);for(var o=0;o<e.length;){if(i&&e[o][i]==t||!i&&e[o]===t)return o;o++}return-1}function k(e){return Array.prototype.slice.call(e,0)}function x(e,t,i){for(var o=[],n=[],s=0;s<e.length;){var r=t?e[s][t]:e[s];w(n,r)<0&&o.push(e[s]),n[s]=r,s++}return i&&(o=t?o.sort(function(e,i){return e[t]>i[t]}):o.sort()),o}function O(e,t){for(var i,o,n=t[0].toUpperCase()+t.slice(1),s=0;s<ve.length;){if(i=ve[s],(o=i?i+n:t)in e)return o;s++}return a}function M(){return xe++}function E(e){var t=e.ownerDocument||e;return t.defaultView||t.parentWindow||n}function S(e,t){var i=this;this.manager=e,this.callback=t,this.element=e.element,this.target=e.options.inputTarget,this.domHandler=function(t){p(e.options.enable,[e])&&i.handler(t)},this.init()}function D(e){var t=e.options.inputClass;return new(t||(Ee?W:Se?U:Me?G:H))(e,C)}function C(e,t,i){var o=i.pointers.length,n=i.changedPointers.length,s=t&Ce&&o-n==0,r=t&(Pe|Ie)&&o-n==0;i.isFirst=!!s,i.isFinal=!!r,s&&(e.session={}),i.eventType=t,T(e,i),e.emit("hammer.input",i),e.recognize(i),e.session.prevInput=i}function T(e,t){var i=e.session,o=t.pointers,n=o.length;i.firstInput||(i.firstInput=F(t)),n>1&&!i.firstMultiple?i.firstMultiple=F(t):1===n&&(i.firstMultiple=!1);var s=i.firstInput,r=i.firstMultiple,a=r?r.center:s.center,d=t.center=N(o);t.timeStamp=_e(),t.deltaTime=t.timeStamp-s.timeStamp,t.angle=A(a,d),t.distance=R(a,d),P(i,t),t.offsetDirection=z(t.deltaX,t.deltaY);var h=B(t.deltaTime,t.deltaX,t.deltaY);t.overallVelocityX=h.x,t.overallVelocityY=h.y,t.overallVelocity=be(h.x)>be(h.y)?h.x:h.y,t.scale=r?L(r.pointers,o):1,t.rotation=r?j(r.pointers,o):0,t.maxPointers=i.prevInput?t.pointers.length>i.prevInput.maxPointers?t.pointers.length:i.prevInput.maxPointers:t.pointers.length,I(i,t);var l=e.element;m(t.srcEvent.target,l)&&(l=t.srcEvent.target),t.target=l}function P(e,t){var i=t.center,o=e.offsetDelta||{},n=e.prevDelta||{},s=e.prevInput||{};t.eventType!==Ce&&s.eventType!==Pe||(n=e.prevDelta={x:s.deltaX||0,y:s.deltaY||0},o=e.offsetDelta={x:i.x,y:i.y}),t.deltaX=n.x+(i.x-o.x),t.deltaY=n.y+(i.y-o.y)}function I(e,t){var i,o,n,s,r=e.lastInterval||t,d=t.timeStamp-r.timeStamp;if(t.eventType!=Ie&&(d>De||r.velocity===a)){var h=t.deltaX-r.deltaX,l=t.deltaY-r.deltaY,u=B(d,h,l);o=u.x,n=u.y,i=be(u.x)>be(u.y)?u.x:u.y,s=z(h,l),e.lastInterval=t}else i=r.velocity,o=r.velocityX,n=r.velocityY,s=r.direction;t.velocity=i,t.velocityX=o,t.velocityY=n,t.direction=s}function F(e){for(var t=[],i=0;i<e.pointers.length;)t[i]={clientX:me(e.pointers[i].clientX),clientY:me(e.pointers[i].clientY)},i++;return{timeStamp:_e(),pointers:t,center:N(t),deltaX:e.deltaX,deltaY:e.deltaY}}function N(e){var t=e.length;if(1===t)return{x:me(e[0].clientX),y:me(e[0].clientY)};for(var i=0,o=0,n=0;n<t;)i+=e[n].clientX,o+=e[n].clientY,n++;return{x:me(i/t),y:me(o/t)}}function B(e,t,i){return{x:t/e||0,y:i/e||0}}function z(e,t){return e===t?Fe:be(e)>=be(t)?e<0?Ne:Be:t<0?ze:Re}function R(e,t,i){i||(i=He);var o=t[i[0]]-e[i[0]],n=t[i[1]]-e[i[1]];return Math.sqrt(o*o+n*n)}function A(e,t,i){i||(i=He);var o=t[i[0]]-e[i[0]],n=t[i[1]]-e[i[1]];return 180*Math.atan2(n,o)/Math.PI}function j(e,t){return A(t[1],t[0],We)+A(e[1],e[0],We)}function L(e,t){return R(t[0],t[1],We)/R(e[0],e[1],We)}function H(){this.evEl=Ve,this.evWin=Ue,this.pressed=!1,S.apply(this,arguments)}function W(){this.evEl=Xe,this.evWin=Ke,S.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}function Y(){this.evTarget=$e,this.evWin=Qe,this.started=!1,S.apply(this,arguments)}function V(e,t){var i=k(e.touches),o=k(e.changedTouches);return t&(Pe|Ie)&&(i=x(i.concat(o),"identifier",!0)),[i,o]}function U(){this.evTarget=et,this.targetIds={},S.apply(this,arguments)}function q(e,t){var i=k(e.touches),o=this.targetIds;if(t&(Ce|Te)&&1===i.length)return o[i[0].identifier]=!0,[i,i];var n,s,r=k(e.changedTouches),a=[],d=this.target;if(s=i.filter(function(e){return m(e.target,d)}),t===Ce)for(n=0;n<s.length;)o[s[n].identifier]=!0,n++;for(n=0;n<r.length;)o[r[n].identifier]&&a.push(r[n]),t&(Pe|Ie)&&delete o[r[n].identifier],n++;return a.length?[x(s.concat(a),"identifier",!0),a]:void 0}function G(){S.apply(this,arguments);var e=f(this.handler,this);this.touch=new U(this.manager,e),this.mouse=new H(this.manager,e),this.primaryTouch=null,this.lastTouches=[]}function X(e,t){e&Ce?(this.primaryTouch=t.changedPointers[0].identifier,K.call(this,t)):e&(Pe|Ie)&&K.call(this,t)}function K(e){var t=e.changedPointers[0];if(t.identifier===this.primaryTouch){var i={x:t.clientX,y:t.clientY};this.lastTouches.push(i);var o=this.lastTouches,n=function(){var e=o.indexOf(i);e>-1&&o.splice(e,1)};setTimeout(n,tt)}}function Z(e){for(var t=e.srcEvent.clientX,i=e.srcEvent.clientY,o=0;o<this.lastTouches.length;o++){var n=this.lastTouches[o],s=Math.abs(t-n.x),r=Math.abs(i-n.y);if(s<=it&&r<=it)return!0}return!1}function $(e,t){this.manager=e,this.set(t)}function Q(e){if(b(e,at))return at;var t=b(e,dt),i=b(e,ht);return t&&i?at:t||i?t?dt:ht:b(e,rt)?rt:st}function J(e){this.options=pe({},this.defaults,e||{}),this.id=M(),this.manager=null,this.options.enable=v(this.options.enable,!0),this.state=ut,this.simultaneous={},this.requireFail=[]}function ee(e){return e>?"cancel":e&pt?"end":e&ft?"move":e&ct?"start":""}function te(e){return e==Re?"down":e==ze?"up":e==Ne?"left":e==Be?"right":""}function ie(e,t){var i=t.manager;return i?i.get(e):e}function oe(){J.apply(this,arguments)}function ne(){oe.apply(this,arguments),this.pX=null,this.pY=null}function se(){oe.apply(this,arguments)}function re(){J.apply(this,arguments),this._timer=null,this._input=null}function ae(){oe.apply(this,arguments)}function de(){oe.apply(this,arguments)}function he(){J.apply(this,arguments),this.pTime=!1,this.pCenter=!1,this._timer=null,this._input=null,this.count=0}function le(e,t){return t=t||{},t.recognizers=v(t.recognizers,le.defaults.preset),new ue(e,t)}function ue(e,t){this.options=pe({},le.defaults,t||{}),this.options.inputTarget=this.options.inputTarget||e,this.handlers={},this.session={},this.recognizers=[],this.oldCssProps={},this.element=e,this.input=D(this),this.touchAction=new $(this,this.options.touchAction),ce(this,!0),l(this.options.recognizers,function(e){var t=this.add(new e[0](e[1]));e[2]&&t.recognizeWith(e[2]),e[3]&&t.requireFailure(e[3])},this)}function ce(e,t){var i=e.element;if(i.style){var o;l(e.options.cssProps,function(n,s){o=O(i.style,s),t?(e.oldCssProps[o]=i.style[o],i.style[o]=n):i.style[o]=e.oldCssProps[o]||""}),t||(e.oldCssProps={})}}function fe(e,t){var i=s.createEvent("Event");i.initEvent(e,!0,!0),i.gesture=t,t.target.dispatchEvent(i)}var pe,ve=["","webkit","Moz","MS","ms","o"],ge=s.createElement("div"),ye="function",me=Math.round,be=Math.abs,_e=Date.now;pe="function"!=typeof Object.assign?function(e){if(e===a||null===e)throw new TypeError("Cannot convert undefined or null to object");for(var t=Object(e),i=1;i<arguments.length;i++){var o=arguments[i];if(o!==a&&null!==o)for(var n in o)o.hasOwnProperty(n)&&(t[n]=o[n])}return t}:Object.assign;var we=u(function(e,t,i){for(var o=Object.keys(t),n=0;n<o.length;)(!i||i&&e[o[n]]===a)&&(e[o[n]]=t[o[n]]),n++;return e},"extend","Use `assign`."),ke=u(function(e,t){return we(e,t,!0)},"merge","Use `assign`."),xe=1,Oe=/mobile|tablet|ip(ad|hone|od)|android/i,Me="ontouchstart"in n,Ee=O(n,"PointerEvent")!==a,Se=Me&&Oe.test(navigator.userAgent),De=25,Ce=1,Te=2,Pe=4,Ie=8,Fe=1,Ne=2,Be=4,ze=8,Re=16,Ae=Ne|Be,je=ze|Re,Le=Ae|je,He=["x","y"],We=["clientX","clientY"];S.prototype={handler:function(){},init:function(){this.evEl&&g(this.element,this.evEl,this.domHandler),this.evTarget&&g(this.target,this.evTarget,this.domHandler),this.evWin&&g(E(this.element),this.evWin,this.domHandler)},destroy:function(){this.evEl&&y(this.element,this.evEl,this.domHandler),this.evTarget&&y(this.target,this.evTarget,this.domHandler),this.evWin&&y(E(this.element),this.evWin,this.domHandler)}};var Ye={mousedown:Ce,mousemove:Te,mouseup:Pe},Ve="mousedown",Ue="mousemove mouseup";c(H,S,{handler:function(e){var t=Ye[e.type];t&Ce&&0===e.button&&(this.pressed=!0),t&Te&&1!==e.which&&(t=Pe),this.pressed&&(t&Pe&&(this.pressed=!1),this.callback(this.manager,t,{pointers:[e],changedPointers:[e],pointerType:"mouse",srcEvent:e}))}});var qe={pointerdown:Ce,pointermove:Te,pointerup:Pe,pointercancel:Ie,pointerout:Ie},Ge={2:"touch",3:"pen",4:"mouse",5:"kinect"},Xe="pointerdown",Ke="pointermove pointerup pointercancel";n.MSPointerEvent&&!n.PointerEvent&&(Xe="MSPointerDown",Ke="MSPointerMove MSPointerUp MSPointerCancel"),c(W,S,{handler:function(e){var t=this.store,i=!1,o=e.type.toLowerCase().replace("ms",""),n=qe[o],s=Ge[e.pointerType]||e.pointerType,r="touch"==s,a=w(t,e.pointerId,"pointerId");n&Ce&&(0===e.button||r)?a<0&&(t.push(e),a=t.length-1):n&(Pe|Ie)&&(i=!0),a<0||(t[a]=e,this.callback(this.manager,n,{pointers:t,changedPointers:[e],pointerType:s,srcEvent:e}),i&&t.splice(a,1))}});var Ze={touchstart:Ce,touchmove:Te,touchend:Pe,touchcancel:Ie},$e="touchstart",Qe="touchstart touchmove touchend touchcancel";c(Y,S,{handler:function(e){var t=Ze[e.type];if(t===Ce&&(this.started=!0),this.started){var i=V.call(this,e,t);t&(Pe|Ie)&&i[0].length-i[1].length==0&&(this.started=!1),this.callback(this.manager,t,{pointers:i[0],changedPointers:i[1],pointerType:"touch",srcEvent:e})}}});var Je={touchstart:Ce,touchmove:Te,touchend:Pe,touchcancel:Ie},et="touchstart touchmove touchend touchcancel";c(U,S,{handler:function(e){var t=Je[e.type],i=q.call(this,e,t);i&&this.callback(this.manager,t,{pointers:i[0],changedPointers:i[1],pointerType:"touch",srcEvent:e})}});var tt=2500,it=25;c(G,S,{handler:function(e,t,i){var o="touch"==i.pointerType,n="mouse"==i.pointerType;if(!(n&&i.sourceCapabilities&&i.sourceCapabilities.firesTouchEvents)){if(o)X.call(this,t,i);else if(n&&Z.call(this,i))return;this.callback(e,t,i)}},destroy:function(){this.touch.destroy(),this.mouse.destroy()}});var ot=O(ge.style,"touchAction"),nt=ot!==a,st="auto",rt="manipulation",at="none",dt="pan-x",ht="pan-y",lt=function(){if(!nt)return!1;var e={},t=n.CSS&&n.CSS.supports;return["auto","manipulation","pan-y","pan-x","pan-x pan-y","none"].forEach(function(i){e[i]=!t||n.CSS.supports("touch-action",i)}),e}();$.prototype={set:function(e){"compute"==e&&(e=this.compute()),nt&&this.manager.element.style&<[e]&&(this.manager.element.style[ot]=e),this.actions=e.toLowerCase().trim()},update:function(){this.set(this.manager.options.touchAction)},compute:function(){var e=[];return l(this.manager.recognizers,function(t){p(t.options.enable,[t])&&(e=e.concat(t.getTouchAction()))}),Q(e.join(" "))},preventDefaults:function(e){var t=e.srcEvent,i=e.offsetDirection;if(this.manager.session.prevented)return void t.preventDefault();var o=this.actions,n=b(o,at)&&!lt[at],s=b(o,ht)&&!lt[ht],r=b(o,dt)&&!lt[dt];if(n){var a=1===e.pointers.length,d=e.distance<2,h=e.deltaTime<250;if(a&&d&&h)return}return r&&s?void 0:n||s&&i&Ae||r&&i&je?this.preventSrc(t):void 0},preventSrc:function(e){this.manager.session.prevented=!0,e.preventDefault()}};var ut=1,ct=2,ft=4,pt=8,vt=pt,gt=16;J.prototype={defaults:{},set:function(e){return pe(this.options,e),this.manager&&this.manager.touchAction.update(),this},recognizeWith:function(e){if(h(e,"recognizeWith",this))return this;var t=this.simultaneous;return e=ie(e,this),t[e.id]||(t[e.id]=e,e.recognizeWith(this)),this},dropRecognizeWith:function(e){return h(e,"dropRecognizeWith",this)?this:(e=ie(e,this),delete this.simultaneous[e.id],this)},requireFailure:function(e){if(h(e,"requireFailure",this))return this;var t=this.requireFail;return e=ie(e,this),-1===w(t,e)&&(t.push(e),e.requireFailure(this)),this},dropRequireFailure:function(e){if(h(e,"dropRequireFailure",this))return this;e=ie(e,this);var t=w(this.requireFail,e);return t>-1&&this.requireFail.splice(t,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(e){return!!this.simultaneous[e.id]},emit:function(e){function t(t){i.manager.emit(t,e)}var i=this,o=this.state;o<pt&&t(i.options.event+ee(o)),t(i.options.event),e.additionalEvent&&t(e.additionalEvent),o>=pt&&t(i.options.event+ee(o))},tryEmit:function(e){if(this.canEmit())return this.emit(e);this.state=32},canEmit:function(){for(var e=0;e<this.requireFail.length;){if(!(this.requireFail[e].state&(32|ut)))return!1;e++}return!0},recognize:function(e){var t=pe({},e);if(!p(this.options.enable,[this,t]))return this.reset(),void(this.state=32);this.state&(vt|gt|32)&&(this.state=ut),this.state=this.process(t),this.state&(ct|ft|pt|gt)&&this.tryEmit(t)},process:function(e){},getTouchAction:function(){},reset:function(){}},c(oe,J,{defaults:{pointers:1},attrTest:function(e){var t=this.options.pointers;return 0===t||e.pointers.length===t},process:function(e){var t=this.state,i=e.eventType,o=t&(ct|ft),n=this.attrTest(e);return o&&(i&Ie||!n)?t|gt:o||n?i&Pe?t|pt:t&ct?t|ft:ct:32}}),c(ne,oe,{defaults:{event:"pan",threshold:10,pointers:1,direction:Le},getTouchAction:function(){var e=this.options.direction,t=[];return e&Ae&&t.push(ht),e&je&&t.push(dt),t},directionTest:function(e){var t=this.options,i=!0,o=e.distance,n=e.direction,s=e.deltaX,r=e.deltaY;return n&t.direction||(t.direction&Ae?(n=0===s?Fe:s<0?Ne:Be,i=s!=this.pX,o=Math.abs(e.deltaX)):(n=0===r?Fe:r<0?ze:Re,i=r!=this.pY,o=Math.abs(e.deltaY))),e.direction=n,i&&o>t.threshold&&n&t.direction},attrTest:function(e){return oe.prototype.attrTest.call(this,e)&&(this.state&ct||!(this.state&ct)&&this.directionTest(e))},emit:function(e){this.pX=e.deltaX,this.pY=e.deltaY;var t=te(e.direction);t&&(e.additionalEvent=this.options.event+t),this._super.emit.call(this,e)}}),c(se,oe,{defaults:{event:"pinch",threshold:0,pointers:2},getTouchAction:function(){return[at]},attrTest:function(e){return this._super.attrTest.call(this,e)&&(Math.abs(e.scale-1)>this.options.threshold||this.state&ct)},emit:function(e){if(1!==e.scale){var t=e.scale<1?"in":"out";e.additionalEvent=this.options.event+t}this._super.emit.call(this,e)}}),c(re,J,{defaults:{event:"press",pointers:1,time:251,threshold:9},getTouchAction:function(){return[st]},process:function(e){var t=this.options,i=e.pointers.length===t.pointers,o=e.distance<t.threshold,n=e.deltaTime>t.time;if(this._input=e,!o||!i||e.eventType&(Pe|Ie)&&!n)this.reset();else if(e.eventType&Ce)this.reset(),this._timer=d(function(){this.state=vt,this.tryEmit()},t.time,this);else if(e.eventType&Pe)return vt;return 32},reset:function(){clearTimeout(this._timer)},emit:function(e){this.state===vt&&(e&&e.eventType&Pe?this.manager.emit(this.options.event+"up",e):(this._input.timeStamp=_e(),this.manager.emit(this.options.event,this._input)))}}),c(ae,oe,{defaults:{event:"rotate",threshold:0,pointers:2},getTouchAction:function(){return[at]},attrTest:function(e){return this._super.attrTest.call(this,e)&&(Math.abs(e.rotation)>this.options.threshold||this.state&ct)}}),c(de,oe,{defaults:{event:"swipe",threshold:10,velocity:.3,direction:Ae|je,pointers:1},getTouchAction:function(){return ne.prototype.getTouchAction.call(this)},attrTest:function(e){var t,i=this.options.direction;return i&(Ae|je)?t=e.overallVelocity:i&Ae?t=e.overallVelocityX:i&je&&(t=e.overallVelocityY),this._super.attrTest.call(this,e)&&i&e.offsetDirection&&e.distance>this.options.threshold&&e.maxPointers==this.options.pointers&&be(t)>this.options.velocity&&e.eventType&Pe},emit:function(e){var t=te(e.offsetDirection);t&&this.manager.emit(this.options.event+t,e),this.manager.emit(this.options.event,e)}}),c(he,J,{defaults:{event:"tap",pointers:1,taps:1,interval:300,time:250,threshold:9,posThreshold:10},getTouchAction:function(){return[rt]},process:function(e){var t=this.options,i=e.pointers.length===t.pointers,o=e.distance<t.threshold,n=e.deltaTime<t.time;if(this.reset(),e.eventType&Ce&&0===this.count)return this.failTimeout();if(o&&n&&i){if(e.eventType!=Pe)return this.failTimeout();var s=!this.pTime||e.timeStamp-this.pTime<t.interval,r=!this.pCenter||R(this.pCenter,e.center)<t.posThreshold;this.pTime=e.timeStamp,this.pCenter=e.center,r&&s?this.count+=1:this.count=1,this._input=e;if(0===this.count%t.taps)return this.hasRequireFailures()?(this._timer=d(function(){this.state=vt,this.tryEmit()},t.interval,this),ct):vt}return 32},failTimeout:function(){return this._timer=d(function(){this.state=32},this.options.interval,this),32},reset:function(){clearTimeout(this._timer)},emit:function(){this.state==vt&&(this._input.tapCount=this.count,this.manager.emit(this.options.event,this._input))}}),le.VERSION="2.0.7",le.defaults={domEvents:!1,touchAction:"compute",enable:!0,inputTarget:null,inputClass:null,preset:[[ae,{enable:!1}],[se,{enable:!1},["rotate"]],[de,{direction:Ae}],[ne,{direction:Ae},["swipe"]],[he],[he,{event:"doubletap",taps:2},["tap"]],[re]],cssProps:{userSelect:"none",touchSelect:"none",touchCallout:"none",contentZooming:"none",userDrag:"none",tapHighlightColor:"rgba(0,0,0,0)"}};ue.prototype={set:function(e){return pe(this.options,e),e.touchAction&&this.touchAction.update(),e.inputTarget&&(this.input.destroy(),this.input.target=e.inputTarget,this.input.init()),this},stop:function(e){this.session.stopped=e?2:1},recognize:function(e){var t=this.session;if(!t.stopped){this.touchAction.preventDefaults(e);var i,o=this.recognizers,n=t.curRecognizer;(!n||n&&n.state&vt)&&(n=t.curRecognizer=null);for(var s=0;s<o.length;)i=o[s],2===t.stopped||n&&i!=n&&!i.canRecognizeWith(n)?i.reset():i.recognize(e),!n&&i.state&(ct|ft|pt)&&(n=t.curRecognizer=i),s++}},get:function(e){if(e instanceof J)return e;for(var t=this.recognizers,i=0;i<t.length;i++)if(t[i].options.event==e)return t[i];return null},add:function(e){if(h(e,"add",this))return this;var t=this.get(e.options.event);return t&&this.remove(t),this.recognizers.push(e),e.manager=this,this.touchAction.update(),e},remove:function(e){if(h(e,"remove",this))return this;if(e=this.get(e)){var t=this.recognizers,i=w(t,e);-1!==i&&(t.splice(i,1),this.touchAction.update())}return this},on:function(e,t){if(e!==a&&t!==a){var i=this.handlers;return l(_(e),function(e){i[e]=i[e]||[],i[e].push(t)}),this}},off:function(e,t){if(e!==a){var i=this.handlers;return l(_(e),function(e){t?i[e]&&i[e].splice(w(i[e],t),1):delete i[e]}),this}},emit:function(e,t){this.options.domEvents&&fe(e,t);var i=this.handlers[e]&&this.handlers[e].slice();if(i&&i.length){t.type=e,t.preventDefault=function(){t.srcEvent.preventDefault()};for(var o=0;o<i.length;)i[o](t),o++}},destroy:function(){this.element&&ce(this,!1),this.handlers={},this.session={},this.input.destroy(),this.element=null}},pe(le,{INPUT_START:Ce,INPUT_MOVE:Te,INPUT_END:Pe,INPUT_CANCEL:Ie,STATE_POSSIBLE:ut,STATE_BEGAN:ct,STATE_CHANGED:ft,STATE_ENDED:pt,STATE_RECOGNIZED:vt,STATE_CANCELLED:gt,STATE_FAILED:32,DIRECTION_NONE:Fe,DIRECTION_LEFT:Ne,DIRECTION_RIGHT:Be,DIRECTION_UP:ze,DIRECTION_DOWN:Re,DIRECTION_HORIZONTAL:Ae,DIRECTION_VERTICAL:je,DIRECTION_ALL:Le,Manager:ue,Input:S,TouchAction:$,TouchInput:U,MouseInput:H,PointerEventInput:W,TouchMouseInput:G,SingleTouchInput:Y,Recognizer:J,AttrRecognizer:oe,Tap:he,Pan:ne,Swipe:de,Pinch:se,Rotate:ae,Press:re,on:g,off:y,each:l,merge:ke,extend:we,assign:pe,inherit:c,bindFn:f,prefixed:O}),(void 0!==n?n:"undefined"!=typeof self?self:{}).Hammer=le,(o=function(){return le}.call(t,i,t,e))!==a&&(e.exports=o)}(window,document)},function(e,t,i){"use strict";t.en={edit:"Edit",del:"Delete selected",back:"Back",addNode:"Add Node",addEdge:"Add Edge",editNode:"Edit Node",editEdge:"Edit Edge",addDescription:"Click in an empty space to place a new node.",edgeDescription:"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.",createEdgeError:"Cannot link edges to a cluster.",deleteClusterError:"Clusters cannot be deleted.",editClusterError:"Clusters cannot be edited."},t.en_EN=t.en,t.en_US=t.en,t.de={edit:"Editieren",del:"Lösche Auswahl",back:"Zurück",addNode:"Knoten hinzufügen",addEdge:"Kante hinzufügen",editNode:"Knoten editieren",editEdge:"Kante editieren",addDescription:"Klicke auf eine freie Stelle, um einen neuen Knoten zu plazieren.",edgeDescription:"Klicke auf einen Knoten und ziehe die Kante zu einem anderen Knoten, um diese zu verbinden.",editEdgeDescription:"Klicke auf die Verbindungspunkte und ziehe diese auf einen Knoten, um sie zu verbinden.",createEdgeError:"Es ist nicht möglich, Kanten mit Clustern zu verbinden.",deleteClusterError:"Cluster können nicht gelöscht werden.",editClusterError:"Cluster können nicht editiert werden."},t.de_DE=t.de,t.es={edit:"Editar",del:"Eliminar selección",back:"Átras",addNode:"Añadir nodo",addEdge:"Añadir arista",editNode:"Editar nodo",editEdge:"Editar arista",addDescription:"Haga clic en un lugar vacío para colocar un nuevo nodo.",edgeDescription:"Haga clic en un nodo y arrastre la arista hacia otro nodo para conectarlos.",editEdgeDescription:"Haga clic en un punto de control y arrastrelo a un nodo para conectarlo.",createEdgeError:"No se puede conectar una arista a un grupo.",deleteClusterError:"No es posible eliminar grupos.",editClusterError:"No es posible editar grupos."},t.es_ES=t.es,t.it={edit:"Modifica",del:"Cancella la selezione",back:"Indietro",addNode:"Aggiungi un nodo",addEdge:"Aggiungi un vertice",editNode:"Modifica il nodo",editEdge:"Modifica il vertice",addDescription:"Clicca per aggiungere un nuovo nodo",edgeDescription:"Clicca su un nodo e trascinalo ad un altro nodo per connetterli.",editEdgeDescription:"Clicca sui Punti di controllo e trascinali ad un nodo per connetterli.",createEdgeError:"Non si possono collegare vertici ad un cluster",deleteClusterError:"I cluster non possono essere cancellati",editClusterError:"I clusters non possono essere modificati."},t.it_IT=t.it,t.nl={edit:"Wijzigen",del:"Selectie verwijderen",back:"Terug",addNode:"Node toevoegen",addEdge:"Link toevoegen",editNode:"Node wijzigen",editEdge:"Link wijzigen",addDescription:"Klik op een leeg gebied om een nieuwe node te maken.",edgeDescription:"Klik op een node en sleep de link naar een andere node om ze te verbinden.",editEdgeDescription:"Klik op de verbindingspunten en sleep ze naar een node om daarmee te verbinden.",createEdgeError:"Kan geen link maken naar een cluster.",deleteClusterError:"Clusters kunnen niet worden verwijderd.",editClusterError:"Clusters kunnen niet worden aangepast."},t.nl_NL=t.nl,t.nl_BE=t.nl,t["pt-br"]={edit:"Editar",del:"Remover selecionado",back:"Voltar",addNode:"Adicionar nó",addEdge:"Adicionar aresta",editNode:"Editar nó",editEdge:"Editar aresta",addDescription:"Clique em um espaço em branco para adicionar um novo nó",edgeDescription:"Clique em um nó e arraste a aresta até outro nó para conectá-los",editEdgeDescription:"Clique nos pontos de controle e os arraste para um nó para conectá-los",createEdgeError:"Não foi possível linkar arestas a um cluster.",deleteClusterError:"Clusters não puderam ser removidos.",editClusterError:"Clusters não puderam ser editados."},t["pt-BR"]=t["pt-br"],t.pt_BR=t["pt-br"],t.pt_br=t["pt-br"],t.ru={edit:"Редактировать",del:"Удалить выбранное",back:"Назад",addNode:"Добавить узел",addEdge:"Добавить ребро",editNode:"Редактировать узел",editEdge:"Редактировать ребро",addDescription:"Кликните в свободное место, чтобы добавить новый узел.",edgeDescription:"Кликните на узел и протяните ребро к другому узлу, чтобы соединить их.",editEdgeDescription:"Кликните на контрольные точки и перетащите их в узел, чтобы подключиться к нему.",createEdgeError:"Невозможно соединить ребра в кластер.",deleteClusterError:"Кластеры не могут быть удалены",editClusterError:"Кластеры недоступны для редактирования."},t.ru_RU=t.ru,t.cn={edit:"编辑",del:"删除选定",back:"返回",addNode:"添加节点",addEdge:"添加连接线",editNode:"编辑节点",editEdge:"编辑连接线",addDescription:"单击空白处放置新节点。",edgeDescription:"单击某个节点并将该连接线拖动到另一个节点以连接它们。",editEdgeDescription:"单击控制节点并将它们拖到节点上连接。",createEdgeError:"无法将连接线连接到群集。",deleteClusterError:"无法删除群集。",editClusterError:"无法编辑群集。"},t.zh_CN=t.cn,t.uk={edit:"Редагувати",del:"Видалити обране",back:"Назад",addNode:"Додати вузол",addEdge:"Додати край",editNode:"Редагувати вузол",editEdge:"Редагувати край",addDescription:"Kлікніть на вільне місце, щоб додати новий вузол.",edgeDescription:"Клікніть на вузол і перетягніть край до іншого вузла, щоб їх з'єднати.",editEdgeDescription:"Клікніть на контрольні точки і перетягніть їх у вузол, щоб підключитися до нього.",createEdgeError:"Не можливо об'єднати краї в групу.",deleteClusterError:"Групи не можуть бути видалені.",editClusterError:"Групи недоступні для редагування."},t.uk_UA=t.uk,t.fr={edit:"Editer",del:"Effacer la selection",back:"Retour",addNode:"Ajouter un noeud",addEdge:"Ajouter un lien",editNode:"Editer le noeud",editEdge:"Editer le lien",addDescription:"Cliquez dans un endroit vide pour placer un noeud.",edgeDescription:"Cliquez sur un noeud et glissez le lien vers un autre noeud pour les connecter.",editEdgeDescription:"Cliquez sur les points de contrôle et glissez-les pour connecter un noeud.",createEdgeError:"Impossible de créer un lien vers un cluster.",deleteClusterError:"Les clusters ne peuvent pas être éffacés.",editClusterError:"Les clusters ne peuvent pas être édites."},t.fr_FR=t.fr},function(e,t,i){e.exports={default:i(130),__esModule:!0}},function(e,t,i){i(131);var o=i(6).Object;e.exports=function(e,t,i){return o.defineProperty(e,t,i)}},function(e,t,i){var o=i(11);o(o.S+o.F*!i(13),"Object",{defineProperty:i(12).f})},function(e,t,i){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var n=i(0),s=o(n),r=i(1),a=o(r),d=function(){function e(){(0,s.default)(this,e),this.NUM_ITERATIONS=4,this.image=new Image,this.canvas=document.createElement("canvas")}return(0,a.default)(e,[{key:"init",value:function(){if(!this.initialized()){this.src=this.image.src;var e=this.image.width,t=this.image.height;this.width=e,this.height=t;var i=Math.floor(t/2),o=Math.floor(t/4),n=Math.floor(t/8),s=Math.floor(t/16),r=Math.floor(e/2),a=Math.floor(e/4),d=Math.floor(e/8),h=Math.floor(e/16);this.canvas.width=3*a,this.canvas.height=i,this.coordinates=[[0,0,r,i],[r,0,a,o],[r,o,d,n],[5*d,o,h,s]],this._fillMipMap()}}},{key:"initialized",value:function(){return void 0!==this.coordinates}},{key:"_fillMipMap",value:function(){var e=this.canvas.getContext("2d"),t=this.coordinates[0];e.drawImage(this.image,t[0],t[1],t[2],t[3]);for(var i=1;i<this.NUM_ITERATIONS;i++){var o=this.coordinates[i-1],n=this.coordinates[i];e.drawImage(this.canvas,o[0],o[1],o[2],o[3],n[0],n[1],n[2],n[3])}}},{key:"drawImageAtPosition",value:function(e,t,i,o,n,s){if(this.initialized())if(t>2){t*=.5;for(var r=0;t>2&&r<this.NUM_ITERATIONS;)t*=.5,r+=1;r>=this.NUM_ITERATIONS&&(r=this.NUM_ITERATIONS-1);var a=this.coordinates[r];e.drawImage(this.canvas,a[0],a[1],a[2],a[3],i,o,n,s)}else e.drawImage(this.image,i,o,n,s)}}]),e}();t.default=d},function(e,t,i){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var n=i(0),s=o(n),r=i(1),a=o(r),d=i(5),h=function(){function e(){(0,s.default)(this,e),this.clear(),this.defaultIndex=0,this.groupsArray=[],this.groupIndex=0,this.defaultGroups=[{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"}},{border:"#990000",background:"#EE0000",highlight:{border:"#BB0000",background:"#FF3333"},hover:{border:"#BB0000",background:"#FF3333"}},{border:"#FF6000",background:"#FF6000",highlight:{border:"#FF6000",background:"#FF6000"},hover:{border:"#FF6000",background:"#FF6000"}},{border:"#97C2FC",background:"#2B7CE9",highlight:{border:"#D2E5FF",background:"#2B7CE9"},hover:{border:"#D2E5FF",background:"#2B7CE9"}},{border:"#399605",background:"#255C03",highlight:{border:"#399605",background:"#255C03"},hover:{border:"#399605",background:"#255C03"}},{border:"#B70054",background:"#FF007E",highlight:{border:"#B70054",background:"#FF007E"},hover:{border:"#B70054",background:"#FF007E"}},{border:"#AD85E4",background:"#7C29F0",highlight:{border:"#D3BDF0",background:"#7C29F0"},hover:{border:"#D3BDF0",background:"#7C29F0"}},{border:"#4557FA",background:"#000EA1",highlight:{border:"#6E6EFD",background:"#000EA1"},hover:{border:"#6E6EFD",background:"#000EA1"}},{border:"#FFC0CB",background:"#FD5A77",highlight:{border:"#FFD1D9",background:"#FD5A77"},hover:{border:"#FFD1D9",background:"#FD5A77"}},{border:"#C2FABC",background:"#74D66A",highlight:{border:"#E6FFE3",background:"#74D66A"},hover:{border:"#E6FFE3",background:"#74D66A"}},{border:"#EE0000",background:"#990000",highlight:{border:"#FF3333",background:"#BB0000"},hover:{border:"#FF3333",background:"#BB0000"}}],this.options={},this.defaultOptions={useDefaultGroups:!0},d.extend(this.options,this.defaultOptions)}return(0,a.default)(e,[{key:"setOptions",value:function(e){var t=["useDefaultGroups"];if(void 0!==e)for(var i in e)if(e.hasOwnProperty(i)&&-1===t.indexOf(i)){var o=e[i];this.add(i,o)}}},{key:"clear",value:function(){this.groups={},this.groupsArray=[]}},{key:"get",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=this.groups[e];if(void 0===i&&t)if(!1===this.options.useDefaultGroups&&this.groupsArray.length>0){var o=this.groupIndex%this.groupsArray.length;this.groupIndex++,i={},i.color=this.groups[this.groupsArray[o]],this.groups[e]=i}else{var n=this.defaultIndex%this.defaultGroups.length;this.defaultIndex++,i={},i.color=this.defaultGroups[n],this.groups[e]=i}return i}},{key:"add",value:function(e,t){return this.groups[e]=t,this.groupsArray.push(e),t}}]),e}();t.default=h},function(e,t,i){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var n=i(0),s=o(n),r=i(1),a=o(r),d=i(5),h=i(33),l=i(51),u=i(34).default,c=function(){function e(t,i,o,n){var r=this;if((0,s.default)(this,e),this.body=t,this.images=i,this.groups=o,this.layoutEngine=n,this.body.functions.createNode=this.create.bind(this),this.nodesListeners={add:function(e,t){r.add(t.items)},update:function(e,t){r.update(t.items,t.data,t.oldData)},remove:function(e,t){r.remove(t.items)}},this.defaultOptions={borderWidth:1,borderWidthSelected:2,brokenImage:void 0,color:{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},fixed:{x:!1,y:!1},font:{color:"#343434",size:14,face:"arial",background:"none",strokeWidth:0,strokeColor:"#ffffff",align:"center",vadjust:0,multi:!1,bold:{mod:"bold"},boldital:{mod:"bold italic"},ital:{mod:"italic"},mono:{mod:"",size:15,face:"monospace",vadjust:2}},group:void 0,hidden:!1,icon:{face:"FontAwesome",code:void 0,size:50,color:"#2B7CE9"},image:void 0,label:void 0,labelHighlightBold:!0,level:void 0,margin:{top:5,right:5,bottom:5,left:5},mass:1,physics:!0,scaling:{min:10,max:30,label:{enabled:!1,min:14,max:30,maxVisible:30,drawThreshold:5},customScalingFunction:function(e,t,i,o){if(t===e)return.5;var n=1/(t-e);return Math.max(0,(o-e)*n)}},shadow:{enabled:!1,color:"rgba(0,0,0,0.5)",size:10,x:5,y:5},shape:"ellipse",shapeProperties:{borderDashes:!1,borderRadius:6,interpolation:!0,useImageSize:!1,useBorderWithImage:!1},size:25,title:void 0,value:void 0,x:void 0,y:void 0},this.defaultOptions.mass<=0)throw"Internal error: mass in defaultOptions of NodesHandler may not be zero or negative";this.options=d.bridgeObject(this.defaultOptions),this.bindEventListeners()}return(0,a.default)(e,[{key:"bindEventListeners",value:function(){var e=this;this.body.emitter.on("refreshNodes",this.refresh.bind(this)),this.body.emitter.on("refresh",this.refresh.bind(this)),this.body.emitter.on("destroy",function(){d.forEach(e.nodesListeners,function(t,i){e.body.data.nodes&&e.body.data.nodes.off(i,t)}),delete e.body.functions.createNode,delete e.nodesListeners.add,delete e.nodesListeners.update,delete e.nodesListeners.remove,delete e.nodesListeners})}},{key:"setOptions",value:function(e){if(void 0!==e){if(u.parseOptions(this.options,e),void 0!==e.shape)for(var t in this.body.nodes)this.body.nodes.hasOwnProperty(t)&&this.body.nodes[t].updateShape();if(void 0!==e.font)for(var i in this.body.nodes)this.body.nodes.hasOwnProperty(i)&&(this.body.nodes[i].updateLabelModule(),this.body.nodes[i].needsRefresh());if(void 0!==e.size)for(var o in this.body.nodes)this.body.nodes.hasOwnProperty(o)&&this.body.nodes[o].needsRefresh();void 0===e.hidden&&void 0===e.physics||this.body.emitter.emit("_dataChanged")}}},{key:"setData",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=this.body.data.nodes;if(e instanceof h||e instanceof l)this.body.data.nodes=e;else if(Array.isArray(e))this.body.data.nodes=new h,this.body.data.nodes.add(e);else{if(e)throw new TypeError("Array or DataSet expected");this.body.data.nodes=new h}if(i&&d.forEach(this.nodesListeners,function(e,t){i.off(t,e)}),this.body.nodes={},this.body.data.nodes){var o=this;d.forEach(this.nodesListeners,function(e,t){o.body.data.nodes.on(t,e)});var n=this.body.data.nodes.getIds();this.add(n,!0)}!1===t&&this.body.emitter.emit("_dataChanged")}},{key:"add",value:function(e){for(var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=void 0,o=[],n=0;n<e.length;n++){i=e[n];var s=this.body.data.nodes.get(i),r=this.create(s);o.push(r),this.body.nodes[i]=r}this.layoutEngine.positionInitially(o),!1===t&&this.body.emitter.emit("_dataChanged")}},{key:"update",value:function(e,t,i){for(var o=this.body.nodes,n=!1,s=0;s<e.length;s++){var r=e[s],a=o[r],d=t[s];void 0!==a?a.setOptions(d)&&(n=!0):(n=!0,a=this.create(d),o[r]=a)}n||void 0===i||(n=t.some(function(e,t){var o=i[t];return o&&o.level!==e.level})),!0===n?this.body.emitter.emit("_dataChanged"):this.body.emitter.emit("_dataUpdated")}},{key:"remove",value:function(e){for(var t=this.body.nodes,i=0;i<e.length;i++){delete t[e[i]]}this.body.emitter.emit("_dataChanged")}},{key:"create",value:function(e){return new(arguments.length>1&&void 0!==arguments[1]?arguments[1]:u)(e,this.body,this.images,this.groups,this.options,this.defaultOptions)}},{key:"refresh",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];d.forEach(this.body.nodes,function(i,o){var n=e.body.data.nodes.get(o);void 0!==n&&(!0===t&&i.setOptions({x:null,y:null}),i.setOptions({fixed:!1}),i.setOptions(n))})}},{key:"getPositions",value:function(e){var t={};if(void 0!==e){if(!0===Array.isArray(e)){for(var i=0;i<e.length;i++)if(void 0!==this.body.nodes[e[i]]){var o=this.body.nodes[e[i]];t[e[i]]={x:Math.round(o.x),y:Math.round(o.y)}}}else if(void 0!==this.body.nodes[e]){var n=this.body.nodes[e];t[e]={x:Math.round(n.x),y:Math.round(n.y)}}}else for(var s=0;s<this.body.nodeIndices.length;s++){var r=this.body.nodes[this.body.nodeIndices[s]];t[this.body.nodeIndices[s]]={x:Math.round(r.x),y:Math.round(r.y)}}return t}},{key:"storePositions",value:function(){var e=[],t=this.body.data.nodes.getDataSet();for(var i in t._data)if(t._data.hasOwnProperty(i)){var o=this.body.nodes[i];t._data[i].x==Math.round(o.x)&&t._data[i].y==Math.round(o.y)||e.push({id:o.id,x:Math.round(o.x),y:Math.round(o.y)})}t.update(e)}},{key:"getBoundingBox",value:function(e){if(void 0!==this.body.nodes[e])return this.body.nodes[e].shape.boundingBox}},{key:"getConnectedNodes",value:function(e,t){var i=[];if(void 0!==this.body.nodes[e])for(var o=this.body.nodes[e],n={},s=0;s<o.edges.length;s++){var r=o.edges[s];"to"!==t&&r.toId==o.id?void 0===n[r.fromId]&&(i.push(r.fromId),n[r.fromId]=!0):"from"!==t&&r.fromId==o.id&&void 0===n[r.toId]&&(i.push(r.toId),n[r.toId]=!0)}return i}},{key:"getConnectedEdges",value:function(e){var t=[];if(void 0!==this.body.nodes[e])for(var i=this.body.nodes[e],o=0;o<i.edges.length;o++)t.push(i.edges[o].id);else console.log("NodeId provided for getConnectedEdges does not exist. Provided: ",e);return t}},{key:"moveNode",value:function(e,t,i){var o=this;void 0!==this.body.nodes[e]?(this.body.nodes[e].x=Number(t),this.body.nodes[e].y=Number(i),setTimeout(function(){o.body.emitter.emit("startSimulation")},0)):console.log("Node id supplied to moveNode does not exist. Provided: ",e)}}]),e}();t.default=c},function(e,t,i){e.exports={default:i(136),__esModule:!0}},function(e,t,i){i(37),i(47),e.exports=i(137)},function(e,t,i){var o=i(67),n=i(8)("iterator"),s=i(25);e.exports=i(6).isIterable=function(e){var t=Object(e);return void 0!==t[n]||"@@iterator"in t||s.hasOwnProperty(o(t))}},function(e,t,i){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var n=i(15),s=o(n),r=i(0),a=o(r),d=i(1),h=o(d),l=i(139).default,u=i(35).default,c={"<b>":/<b>/,"<i>":/<i>/,"<code>":/<code>/,"</b>":/<\/b>/,"</i>":/<\/i>/,"</code>":/<\/code>/,"*":/\*/,_:/\_/,"`":/`/,afterBold:/[^\*]/,afterItal:/[^_]/,afterMono:/[^`]/},f=function(){function e(t){(0,a.default)(this,e),this.text=t,this.bold=!1,this.ital=!1,this.mono=!1,this.spacing=!1,this.position=0,this.buffer="",this.modStack=[],this.blocks=[]}return(0,h.default)(e,[{key:"mod",value:function(){return 0===this.modStack.length?"normal":this.modStack[0]}},{key:"modName",value:function(){return 0===this.modStack.length?"normal":"mono"===this.modStack[0]?"mono":this.bold&&this.ital?"boldital":this.bold?"bold":this.ital?"ital":void 0}},{key:"emitBlock",value:function(){this.spacing&&(this.add(" "),this.spacing=!1),this.buffer.length>0&&(this.blocks.push({text:this.buffer,mod:this.modName()}),this.buffer="")}},{key:"add",value:function(e){" "===e&&(this.spacing=!0),this.spacing&&(this.buffer+=" ",this.spacing=!1)," "!=e&&(this.buffer+=e)}},{key:"parseWS",value:function(e){return!!/[ \t]/.test(e)&&(this.mono?this.add(e):this.spacing=!0,!0)}},{key:"setTag",value:function(e){this.emitBlock(),this[e]=!0,this.modStack.unshift(e)}},{key:"unsetTag",value:function(e){this.emitBlock(),this[e]=!1,this.modStack.shift()}},{key:"parseStartTag",value:function(e,t){return!(this.mono||this[e]||!this.match(t))&&(this.setTag(e),!0)}},{key:"match",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=this.prepareRegExp(e),o=(0,s.default)(i,2),n=o[0],r=o[1],a=n.test(this.text.substr(this.position,r));return a&&t&&(this.position+=r-1),a}},{key:"parseEndTag",value:function(e,t,i){var o=this.mod()===e;return!(!(o="mono"===e?o&&this.mono:o&&!this.mono)||!this.match(t))&&(void 0!==i?(this.position===this.text.length-1||this.match(i,!1))&&this.unsetTag(e):this.unsetTag(e),!0)}},{key:"replace",value:function(e,t){return!!this.match(e)&&(this.add(t),this.position+=length-1,!0)}},{key:"prepareRegExp",value:function(e){var t=void 0,i=void 0;if(e instanceof RegExp)i=e,t=1;else{var o=c[e];i=void 0!==o?o:new RegExp(e),t=e.length}return[i,t]}}]),e}(),p=function(){function e(t,i,o,n){var s=this;(0,a.default)(this,e),this.ctx=t,this.parent=i,this.selected=o,this.hover=n;var r=function(e,i){if(void 0===e)return 0;var r=s.parent.getFormattingValues(t,o,n,i),a=0;if(""!==e){a=s.ctx.measureText(e).width}return{width:a,values:r}};this.lines=new l(r)}return(0,h.default)(e,[{key:"process",value:function(e){if(!u.isValidLabel(e))return this.lines.finalize();var t=this.parent.fontOptions;e=e.replace(/\r\n/g,"\n"),e=e.replace(/\r/g,"\n");var i=String(e).split("\n"),o=i.length;if(t.multi)for(var n=0;n<o;n++){var s=this.splitBlocks(i[n],t.multi);if(void 0!==s)if(0!==s.length){if(t.maxWdt>0)for(var r=0;r<s.length;r++){var a=s[r].mod,d=s[r].text;this.splitStringIntoLines(d,a,!0)}else for(var h=0;h<s.length;h++){var l=s[h].mod,c=s[h].text;this.lines.append(c,l)}this.lines.newLine()}else this.lines.newLine("")}else if(t.maxWdt>0)for(var f=0;f<o;f++)this.splitStringIntoLines(i[f]);else for(var p=0;p<o;p++)this.lines.newLine(i[p]);return this.lines.finalize()}},{key:"decodeMarkupSystem",value:function(e){var t="none";return"markdown"===e||"md"===e?t="markdown":!0!==e&&"html"!==e||(t="html"),t}},{key:"splitHtmlBlocks",value:function(e){for(var t=new f(e);t.position<t.text.length;){var i=t.text.charAt(t.position);t.parseWS(i)||/</.test(i)&&(t.parseStartTag("bold","<b>")||t.parseStartTag("ital","<i>")||t.parseStartTag("mono","<code>")||t.parseEndTag("bold","</b>")||t.parseEndTag("ital","</i>")||t.parseEndTag("mono","</code>"))||function(e){if(/&/.test(e)){return t.replace(t.text,"<","<")||t.replace(t.text,"&","&")||t.add("&"),!0}return!1}(i)||t.add(i),t.position++}return t.emitBlock(),t.blocks}},{key:"splitMarkdownBlocks",value:function(e){for(var t=this,i=new f(e),o=!0;i.position<i.text.length;){var n=i.text.charAt(i.position);i.parseWS(n)||function(e){return!!/\\/.test(e)&&(i.position<t.text.length+1&&(i.position++,e=t.text.charAt(i.position),/ \t/.test(e)?i.spacing=!0:(i.add(e),o=!1)),!0)}(n)||(o||i.spacing)&&(i.parseStartTag("bold","*")||i.parseStartTag("ital","_")||i.parseStartTag("mono","`"))||i.parseEndTag("bold","*","afterBold")||i.parseEndTag("ital","_","afterItal")||i.parseEndTag("mono","`","afterMono")||(i.add(n),o=!1),i.position++}return i.emitBlock(),i.blocks}},{key:"splitBlocks",value:function(e,t){var i=this.decodeMarkupSystem(t);return"none"===i?[{text:e,mod:"normal"}]:"markdown"===i?this.splitMarkdownBlocks(e):"html"===i?this.splitHtmlBlocks(e):void 0}},{key:"overMaxWidth",value:function(e){var t=this.ctx.measureText(e).width;return this.lines.curWidth()+t>this.parent.fontOptions.maxWdt}},{key:"getLongestFit",value:function(e){for(var t="",i=0;i<e.length;){var o=""===t?"":" ",n=t+o+e[i];if(this.overMaxWidth(n))break;t=n,i++}return i}},{key:"getLongestFitWord",value:function(e){for(var t=0;t<e.length&&!this.overMaxWidth(e.slice(0,t));)t++;return t}},{key:"splitStringIntoLines",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"normal",i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];this.parent.getFormattingValues(this.ctx,this.selected,this.hover,t),e=e.replace(/^( +)/g,"$1\r"),e=e.replace(/([^\r][^ ]*)( +)/g,"$1\r$2\r");for(var o=e.split("\r");o.length>0;){var n=this.getLongestFit(o);if(0===n){var s=o[0],r=this.getLongestFitWord(s);this.lines.newLine(s.slice(0,r),t),o[0]=s.slice(r)}else{var a=n;" "===o[n-1]?n--:" "===o[a]&&a++;var d=o.slice(0,n).join("");n==o.length&&i?this.lines.append(d,t):this.lines.newLine(d,t),o=o.slice(a)}}}}]),e}();t.default=p},function(e,t,i){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var n=i(78),s=o(n),r=i(0),a=o(r),d=i(1),h=o(d),l=function(){function e(t){(0,a.default)(this,e),this.measureText=t,this.current=0,this.width=0,this.height=0,this.lines=[]}return(0,h.default)(e,[{key:"_add",value:function(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"normal";void 0===this.lines[e]&&(this.lines[e]={width:0,height:0,blocks:[]});var o=t;void 0!==t&&""!==t||(o=" ");var n=this.measureText(o,i),r=(0,s.default)({},n.values);r.text=t,r.width=n.width,r.mod=i,void 0!==t&&""!==t||(r.width=0),this.lines[e].blocks.push(r),this.lines[e].width+=r.width}},{key:"curWidth",value:function(){var e=this.lines[this.current];return void 0===e?0:e.width}},{key:"append",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"normal";this._add(this.current,e,t)}},{key:"newLine",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"normal";this._add(this.current,e,t),this.current++}},{key:"determineLineHeights",value:function(){for(var e=0;e<this.lines.length;e++){var t=this.lines[e],i=0;if(void 0!==t.blocks)for(var o=0;o<t.blocks.length;o++){var n=t.blocks[o];i<n.height&&(i=n.height)}t.height=i}}},{key:"determineLabelSize",value:function(){for(var e=0,t=0,i=0;i<this.lines.length;i++){var o=this.lines[i];o.width>e&&(e=o.width),t+=o.height}this.width=e,this.height=t}},{key:"removeEmptyBlocks",value:function(){for(var e=[],t=0;t<this.lines.length;t++){var i=this.lines[t];if(0!==i.blocks.length&&(t!==this.lines.length-1||0!==i.width)){var o={};(0,s.default)(o,i),o.blocks=[];for(var n=void 0,r=[],a=0;a<i.blocks.length;a++){var d=i.blocks[a];0!==d.width?r.push(d):void 0===n&&(n=d)}0===r.length&&void 0!==n&&r.push(n),o.blocks=r,e.push(o)}}return e}},{key:"finalize",value:function(){this.determineLineHeights(),this.determineLabelSize();var e=this.removeEmptyBlocks();return{width:this.width,height:this.height,lines:e}}}]),e}();t.default=l},function(e,t,i){i(141),e.exports=i(6).Object.assign},function(e,t,i){var o=i(11);o(o.S+o.F,"Object",{assign:i(142)})},function(e,t,i){"use strict";var o=i(26),n=i(50),s=i(32),r=i(30),a=i(59),d=Object.assign;e.exports=!d||i(22)(function(){var e={},t={},i=Symbol(),o="abcdefghijklmnopqrst";return e[i]=7,o.split("").forEach(function(e){t[e]=e}),7!=d({},e)[i]||Object.keys(d({},t)).join("")!=o})?function(e,t){for(var i=r(e),d=arguments.length,h=1,l=n.f,u=s.f;d>h;)for(var c,f=a(arguments[h++]),p=l?o(f).concat(l(f)):o(f),v=p.length,g=0;v>g;)u.call(f,c=p[g++])&&(i[c]=f[c]);return i}:d},function(e,t,i){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var n=i(2),s=o(n),r=i(0),a=o(r),d=i(1),h=o(d),l=i(3),u=o(l),c=i(4),f=o(c),p=i(16),v=o(p),g=function(e){function t(e,i,o){(0,a.default)(this,t);var n=(0,u.default)(this,(t.__proto__||(0,s.default)(t)).call(this,e,i,o));return n._setMargins(o),n}return(0,f.default)(t,e),(0,h.default)(t,[{key:"resize",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.selected,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.hover;if(this.needsRefresh(t,i)){var o=this.getDimensionsFromLabel(e,t,i);this.width=o.width+this.margin.right+this.margin.left,this.height=o.height+this.margin.top+this.margin.bottom,this.radius=this.width/2}}},{key:"draw",value:function(e,t,i,o,n,s){this.resize(e,o,n),this.left=t-this.width/2,this.top=i-this.height/2,this.initContextForDraw(e,s),e.roundRect(this.left,this.top,this.width,this.height,s.borderRadius),this.performFill(e,s),this.updateBoundingBox(t,i,e,o,n),this.labelModule.draw(e,this.left+this.textSize.width/2+this.margin.left,this.top+this.textSize.height/2+this.margin.top,o,n)}},{key:"updateBoundingBox",value:function(e,t,i,o,n){this._updateBoundingBox(e,t,i,o,n);var s=this.options.shapeProperties.borderRadius;this._addBoundingBoxMargin(s)}},{key:"distanceToBorder",value:function(e,t){this.resize(e);var i=this.options.borderWidth;return Math.min(Math.abs(this.width/2/Math.cos(t)),Math.abs(this.height/2/Math.sin(t)))+i}}]),t}(v.default);t.default=g},function(e,t,i){i(145),e.exports=i(6).Object.getPrototypeOf},function(e,t,i){var o=i(30),n=i(66);i(68)("getPrototypeOf",function(){return function(e){return n(o(e))}})},function(e,t,i){e.exports={default:i(147),__esModule:!0}},function(e,t,i){i(148),e.exports=i(6).Object.setPrototypeOf},function(e,t,i){var o=i(11);o(o.S,"Object",{setPrototypeOf:i(149).set})},function(e,t,i){var o=i(21),n=i(20),s=function(e,t){if(n(e),!o(t)&&null!==t)throw TypeError(t+": can't set as prototype!")};e.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(e,t,o){try{o=i(61)(Function.call,i(70).f(Object.prototype,"__proto__").set,2),o(e,[]),t=!(e instanceof Array)}catch(e){t=!0}return function(e,i){return s(e,i),t?e.__proto__=i:o(e,i),e}}({},!1):void 0),check:s}},function(e,t,i){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var n=i(2),s=o(n),r=i(0),a=o(r),d=i(1),h=o(d),l=i(3),u=o(l),c=i(4),f=o(c),p=i(53),v=o(p),g=function(e){function t(e,i,o){(0,a.default)(this,t);var n=(0,u.default)(this,(t.__proto__||(0,s.default)(t)).call(this,e,i,o));return n._setMargins(o),n}return(0,f.default)(t,e),(0,h.default)(t,[{key:"resize",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.selected,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.hover;if(this.needsRefresh(t,i)){var o=this.getDimensionsFromLabel(e,t,i),n=Math.max(o.width+this.margin.right+this.margin.left,o.height+this.margin.top+this.margin.bottom);this.options.size=n/2,this.width=n,this.height=n,this.radius=this.width/2}}},{key:"draw",value:function(e,t,i,o,n,s){this.resize(e,o,n),this.left=t-this.width/2,this.top=i-this.height/2,this._drawRawCircle(e,t,i,s),this.updateBoundingBox(t,i),this.labelModule.draw(e,this.left+this.textSize.width/2+this.margin.left,i,o,n)}},{key:"updateBoundingBox",value:function(e,t){this.boundingBox.top=t-this.options.size,this.boundingBox.left=e-this.options.size,this.boundingBox.right=e+this.options.size,this.boundingBox.bottom=t+this.options.size}},{key:"distanceToBorder",value:function(e,t){return this.resize(e),.5*this.width}}]),t}(v.default);t.default=g},function(e,t,i){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var n=i(2),s=o(n),r=i(0),a=o(r),d=i(1),h=o(d),l=i(3),u=o(l),c=i(4),f=o(c),p=i(53),v=o(p),g=function(e){function t(e,i,o,n,r){(0,a.default)(this,t);var d=(0,u.default)(this,(t.__proto__||(0,s.default)(t)).call(this,e,i,o));return d.setImages(n,r),d}return(0,f.default)(t,e),(0,h.default)(t,[{key:"resize",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.selected,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.hover;if(void 0===this.imageObj.src||void 0===this.imageObj.width||void 0===this.imageObj.height){var o=2*this.options.size;return this.width=o,this.height=o,void(this.radius=.5*this.width)}this.needsRefresh(t,i)&&this._resizeImage()}},{key:"draw",value:function(e,t,i,o,n,s){this.switchImages(o),this.resize(),this.left=t-this.width/2,this.top=i-this.height/2,this._drawRawCircle(e,t,i,s),e.save(),e.clip(),this._drawImageAtPosition(e,s),e.restore(),this._drawImageLabel(e,t,i,o,n),this.updateBoundingBox(t,i)}},{key:"updateBoundingBox",value:function(e,t){this.boundingBox.top=t-this.options.size,this.boundingBox.left=e-this.options.size,this.boundingBox.right=e+this.options.size,this.boundingBox.bottom=t+this.options.size,this.boundingBox.left=Math.min(this.boundingBox.left,this.labelModule.size.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelModule.size.left+this.labelModule.size.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelOffset)}},{key:"distanceToBorder",value:function(e,t){return this.resize(e),.5*this.width}}]),t}(v.default);t.default=g},function(e,t,i){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var n=i(2),s=o(n),r=i(0),a=o(r),d=i(1),h=o(d),l=i(3),u=o(l),c=i(4),f=o(c),p=i(16),v=o(p),g=function(e){function t(e,i,o){(0,a.default)(this,t);var n=(0,u.default)(this,(t.__proto__||(0,s.default)(t)).call(this,e,i,o));return n._setMargins(o),n}return(0,f.default)(t,e),(0,h.default)(t,[{key:"resize",value:function(e,t,i){if(this.needsRefresh(t,i)){var o=this.getDimensionsFromLabel(e,t,i),n=o.width+this.margin.right+this.margin.left;this.width=n,this.height=n,this.radius=this.width/2}}},{key:"draw",value:function(e,t,i,o,n,s){this.resize(e,o,n),this.left=t-this.width/2,this.top=i-this.height/2,this.initContextForDraw(e,s),e.database(t-this.width/2,i-this.height/2,this.width,this.height),this.performFill(e,s),this.updateBoundingBox(t,i,e,o,n),this.labelModule.draw(e,this.left+this.textSize.width/2+this.margin.left,this.top+this.textSize.height/2+this.margin.top,o,n)}},{key:"distanceToBorder",value:function(e,t){return this._distanceToBorder(e,t)}}]),t}(v.default);t.default=g},function(e,t,i){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var n=i(2),s=o(n),r=i(0),a=o(r),d=i(1),h=o(d),l=i(3),u=o(l),c=i(4),f=o(c),p=i(17),v=o(p),g=function(e){function t(e,i,o){return(0,a.default)(this,t),(0,u.default)(this,(t.__proto__||(0,s.default)(t)).call(this,e,i,o))}return(0,f.default)(t,e),(0,h.default)(t,[{key:"draw",value:function(e,t,i,o,n,s){this._drawShape(e,"diamond",4,t,i,o,n,s)}},{key:"distanceToBorder",value:function(e,t){return this._distanceToBorder(e,t)}}]),t}(v.default);t.default=g},function(e,t,i){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var n=i(2),s=o(n),r=i(0),a=o(r),d=i(1),h=o(d),l=i(3),u=o(l),c=i(4),f=o(c),p=i(17),v=o(p),g=function(e){function t(e,i,o){return(0,a.default)(this,t),(0,u.default)(this,(t.__proto__||(0,s.default)(t)).call(this,e,i,o))}return(0,f.default)(t,e),(0,h.default)(t,[{key:"draw",value:function(e,t,i,o,n,s){this._drawShape(e,"circle",2,t,i,o,n,s)}},{key:"distanceToBorder",value:function(e,t){return this.resize(e),this.options.size}}]),t}(v.default);t.default=g},function(e,t,i){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var n=i(2),s=o(n),r=i(0),a=o(r),d=i(1),h=o(d),l=i(3),u=o(l),c=i(4),f=o(c),p=i(16),v=o(p),g=function(e){function t(e,i,o){return(0,a.default)(this,t),(0,u.default)(this,(t.__proto__||(0,s.default)(t)).call(this,e,i,o))}return(0,f.default)(t,e),(0,h.default)(t,[{key:"resize",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.selected,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.hover;if(this.needsRefresh(t,i)){var o=this.getDimensionsFromLabel(e,t,i);this.height=2*o.height,this.width=o.width+o.height,this.radius=.5*this.width}}},{key:"draw",value:function(e,t,i,o,n,s){this.resize(e,o,n),this.left=t-.5*this.width,this.top=i-.5*this.height,this.initContextForDraw(e,s),e.ellipse_vis(this.left,this.top,this.width,this.height),this.performFill(e,s),this.updateBoundingBox(t,i,e,o,n),this.labelModule.draw(e,t,i,o,n)}},{key:"distanceToBorder",value:function(e,t){this.resize(e);var i=.5*this.width,o=.5*this.height,n=Math.sin(t)*i,s=Math.cos(t)*o;return i*o/Math.sqrt(n*n+s*s)}}]),t}(v.default);t.default=g},function(e,t,i){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var n=i(2),s=o(n),r=i(0),a=o(r),d=i(1),h=o(d),l=i(3),u=o(l),c=i(4),f=o(c),p=i(16),v=o(p),g=function(e){function t(e,i,o){(0,a.default)(this,t);var n=(0,u.default)(this,(t.__proto__||(0,s.default)(t)).call(this,e,i,o));return n._setMargins(o),n}return(0,f.default)(t,e),(0,h.default)(t,[{key:"resize",value:function(e,t,i){this.needsRefresh(t,i)&&(this.iconSize={width:Number(this.options.icon.size),height:Number(this.options.icon.size)},this.width=this.iconSize.width+this.margin.right+this.margin.left,this.height=this.iconSize.height+this.margin.top+this.margin.bottom,this.radius=.5*this.width)}},{key:"draw",value:function(e,t,i,o,n,s){if(this.resize(e,o,n),this.options.icon.size=this.options.icon.size||50,this.left=t-this.width/2,this.top=i-this.height/2,this._icon(e,t,i,o,n,s),void 0!==this.options.label){this.labelModule.draw(e,this.left+this.iconSize.width/2+this.margin.left,i+this.height/2+5,o)}this.updateBoundingBox(t,i)}},{key:"updateBoundingBox",value:function(e,t){if(this.boundingBox.top=t-.5*this.options.icon.size,this.boundingBox.left=e-.5*this.options.icon.size,this.boundingBox.right=e+.5*this.options.icon.size,this.boundingBox.bottom=t+.5*this.options.icon.size,void 0!==this.options.label&&this.labelModule.size.width>0){this.boundingBox.left=Math.min(this.boundingBox.left,this.labelModule.size.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelModule.size.left+this.labelModule.size.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelModule.size.height+5)}}},{key:"_icon",value:function(e,t,i,o,n,s){var r=Number(this.options.icon.size);void 0!==this.options.icon.code?(e.font=(o?"bold ":"")+r+"px "+this.options.icon.face,e.fillStyle=this.options.icon.color||"black",e.textAlign="center",e.textBaseline="middle",this.enableShadow(e,s),e.fillText(this.options.icon.code,t,i),this.disableShadow(e,s)):console.error("When using the icon shape, you need to define the code in the icon options object. This can be done per node or globally.")}},{key:"distanceToBorder",value:function(e,t){return this._distanceToBorder(e,t)}}]),t}(v.default);t.default=g},function(e,t,i){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var n=i(2),s=o(n),r=i(0),a=o(r),d=i(1),h=o(d),l=i(3),u=o(l),c=i(4),f=o(c),p=i(53),v=o(p),g=function(e){function t(e,i,o,n,r){(0,a.default)(this,t);var d=(0,u.default)(this,(t.__proto__||(0,s.default)(t)).call(this,e,i,o));return d.setImages(n,r),d}return(0,f.default)(t,e),(0,h.default)(t,[{key:"resize",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.selected,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.hover;if(void 0===this.imageObj.src||void 0===this.imageObj.width||void 0===this.imageObj.height){var o=2*this.options.size;return this.width=o,void(this.height=o)}this.needsRefresh(t,i)&&this._resizeImage()}},{key:"draw",value:function(e,t,i,o,n,s){if(this.switchImages(o),this.resize(),this.left=t-this.width/2,this.top=i-this.height/2,!0===this.options.shapeProperties.useBorderWithImage){var r=this.options.borderWidth,a=this.options.borderWidthSelected||2*this.options.borderWidth,d=(o?a:r)/this.body.view.scale;e.lineWidth=Math.min(this.width,d),e.beginPath(),e.strokeStyle=o?this.options.color.highlight.border:n?this.options.color.hover.border:this.options.color.border,e.fillStyle=o?this.options.color.highlight.background:n?this.options.color.hover.background:this.options.color.background,e.rect(this.left-.5*e.lineWidth,this.top-.5*e.lineWidth,this.width+e.lineWidth,this.height+e.lineWidth),e.fill(),this.performStroke(e,s),e.closePath()}this._drawImageAtPosition(e,s),this._drawImageLabel(e,t,i,o,n),this.updateBoundingBox(t,i)}},{key:"updateBoundingBox",value:function(e,t){this.resize(),this._updateBoundingBox(e,t),void 0!==this.options.label&&this.labelModule.size.width>0&&(this.boundingBox.left=Math.min(this.boundingBox.left,this.labelModule.size.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelModule.size.left+this.labelModule.size.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelOffset))}},{key:"distanceToBorder",value:function(e,t){return this._distanceToBorder(e,t)}}]),t}(v.default);t.default=g},function(e,t,i){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var n=i(2),s=o(n),r=i(0),a=o(r),d=i(1),h=o(d),l=i(3),u=o(l),c=i(4),f=o(c),p=i(17),v=o(p),g=function(e){function t(e,i,o){return(0,a.default)(this,t),(0,u.default)(this,(t.__proto__||(0,s.default)(t)).call(this,e,i,o))}return(0,f.default)(t,e),(0,h.default)(t,[{key:"draw",value:function(e,t,i,o,n,s){this._drawShape(e,"square",2,t,i,o,n,s)}},{key:"distanceToBorder",value:function(e,t){return this._distanceToBorder(e,t)}}]),t}(v.default);t.default=g},function(e,t,i){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var n=i(2),s=o(n),r=i(0),a=o(r),d=i(1),h=o(d),l=i(3),u=o(l),c=i(4),f=o(c),p=i(17),v=o(p),g=function(e){function t(e,i,o){return(0,a.default)(this,t),(0,u.default)(this,(t.__proto__||(0,s.default)(t)).call(this,e,i,o))}return(0,f.default)(t,e),(0,h.default)(t,[{key:"draw",value:function(e,t,i,o,n,s){this._drawShape(e,"hexagon",4,t,i,o,n,s)}},{key:"distanceToBorder",value:function(e,t){return this._distanceToBorder(e,t)}}]),t}(v.default);t.default=g},function(e,t,i){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var n=i(2),s=o(n),r=i(0),a=o(r),d=i(1),h=o(d),l=i(3),u=o(l),c=i(4),f=o(c),p=i(17),v=o(p),g=function(e){function t(e,i,o){return(0,a.default)(this,t),(0,u.default)(this,(t.__proto__||(0,s.default)(t)).call(this,e,i,o))}return(0,f.default)(t,e),(0,h.default)(t,[{key:"draw",value:function(e,t,i,o,n,s){this._drawShape(e,"star",4,t,i,o,n,s)}},{key:"distanceToBorder",value:function(e,t){return this._distanceToBorder(e,t)}}]),t}(v.default);t.default=g},function(e,t,i){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var n=i(2),s=o(n),r=i(0),a=o(r),d=i(1),h=o(d),l=i(3),u=o(l),c=i(4),f=o(c),p=i(16),v=o(p),g=function(e){function t(e,i,o){(0,a.default)(this,t);var n=(0,u.default)(this,(t.__proto__||(0,s.default)(t)).call(this,e,i,o));return n._setMargins(o),n}return(0,f.default)(t,e),(0,h.default)(t,[{key:"resize",value:function(e,t,i){this.needsRefresh(t,i)&&(this.textSize=this.labelModule.getTextSize(e,t,i),this.width=this.textSize.width+this.margin.right+this.margin.left,this.height=this.textSize.height+this.margin.top+this.margin.bottom,this.radius=.5*this.width)}},{key:"draw",value:function(e,t,i,o,n,s){this.resize(e,o,n),this.left=t-this.width/2,this.top=i-this.height/2,this.enableShadow(e,s),this.labelModule.draw(e,this.left+this.textSize.width/2+this.margin.left,this.top+this.textSize.height/2+this.margin.top,o,n),this.disableShadow(e,s),this.updateBoundingBox(t,i,e,o,n)}},{key:"distanceToBorder",value:function(e,t){return this._distanceToBorder(e,t)}}]),t}(v.default);t.default=g},function(e,t,i){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var n=i(2),s=o(n),r=i(0),a=o(r),d=i(1),h=o(d),l=i(3),u=o(l),c=i(4),f=o(c),p=i(17),v=o(p),g=function(e){function t(e,i,o){return(0,a.default)(this,t),(0,u.default)(this,(t.__proto__||(0,s.default)(t)).call(this,e,i,o))}return(0,f.default)(t,e),(0,h.default)(t,[{key:"draw",value:function(e,t,i,o,n,s){this._drawShape(e,"triangle",3,t,i,o,n,s)}},{key:"distanceToBorder",value:function(e,t){return this._distanceToBorder(e,t)}}]),t}(v.default);t.default=g},function(e,t,i){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var n=i(2),s=o(n),r=i(0),a=o(r),d=i(1),h=o(d),l=i(3),u=o(l),c=i(4),f=o(c),p=i(17),v=o(p),g=function(e){function t(e,i,o){return(0,a.default)(this,t),(0,u.default)(this,(t.__proto__||(0,s.default)(t)).call(this,e,i,o))}return(0,f.default)(t,e),(0,h.default)(t,[{key:"draw",value:function(e,t,i,o,n,s){this._drawShape(e,"triangleDown",3,t,i,o,n,s)}},{key:"distanceToBorder",value:function(e,t){return this._distanceToBorder(e,t)}}]),t}(v.default);t.default=g},function(e,t,i){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var n=i(0),s=o(n),r=i(1),a=o(r),d=i(5),h=i(33),l=i(51),u=i(55).default,c=function(){function e(t,i,o){var n=this;(0,s.default)(this,e),this.body=t,this.images=i,this.groups=o,this.body.functions.createEdge=this.create.bind(this),this.edgesListeners={add:function(e,t){n.add(t.items)},update:function(e,t){n.update(t.items)},remove:function(e,t){n.remove(t.items)}},this.options={},this.defaultOptions={arrows:{to:{enabled:!1,scaleFactor:1,type:"arrow"},middle:{enabled:!1,scaleFactor:1,type:"arrow"},from:{enabled:!1,scaleFactor:1,type:"arrow"}},arrowStrikethrough:!0,color:{color:"#848484",highlight:"#848484",hover:"#848484",inherit:"from",opacity:1},dashes:!1,font:{color:"#343434",size:14,face:"arial",background:"none",strokeWidth:2,strokeColor:"#ffffff",align:"horizontal",multi:!1,vadjust:0,bold:{mod:"bold"},boldital:{mod:"bold italic"},ital:{mod:"italic"},mono:{mod:"",size:15,face:"courier new",vadjust:2}},hidden:!1,hoverWidth:1.5,label:void 0,labelHighlightBold:!0,length:void 0,physics:!0,scaling:{min:1,max:15,label:{enabled:!0,min:14,max:30,maxVisible:30,drawThreshold:5},customScalingFunction:function(e,t,i,o){if(t===e)return.5;var n=1/(t-e);return Math.max(0,(o-e)*n)}},selectionWidth:1.5,selfReferenceSize:20,shadow:{enabled:!1,color:"rgba(0,0,0,0.5)",size:10,x:5,y:5},background:{enabled:!1,color:"rgba(111,111,111,1)",size:10,dashes:!1},smooth:{enabled:!0,type:"dynamic",forceDirection:"none",roundness:.5},title:void 0,width:1,value:void 0},d.deepExtend(this.options,this.defaultOptions),this.bindEventListeners()}return(0,a.default)(e,[{key:"bindEventListeners",value:function(){var e=this;this.body.emitter.on("_forceDisableDynamicCurves",function(t){var i=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];"dynamic"===t&&(t="continuous");var o=!1;for(var n in e.body.edges)if(e.body.edges.hasOwnProperty(n)){var s=e.body.edges[n],r=e.body.data.edges._data[n];if(void 0!==r){var a=r.smooth;void 0!==a&&!0===a.enabled&&"dynamic"===a.type&&(void 0===t?s.setOptions({smooth:!1}):s.setOptions({smooth:{type:t}}),o=!0)}}!0===i&&!0===o&&e.body.emitter.emit("_dataChanged")}),this.body.emitter.on("_dataUpdated",function(){e.reconnectEdges()}),this.body.emitter.on("refreshEdges",this.refresh.bind(this)),this.body.emitter.on("refresh",this.refresh.bind(this)),this.body.emitter.on("destroy",function(){d.forEach(e.edgesListeners,function(t,i){e.body.data.edges&&e.body.data.edges.off(i,t)}),delete e.body.functions.createEdge,delete e.edgesListeners.add,delete e.edgesListeners.update,delete e.edgesListeners.remove,delete e.edgesListeners})}},{key:"setOptions",value:function(e){if(void 0!==e){u.parseOptions(this.options,e,!0,this.defaultOptions,!0);var t=!1;if(void 0!==e.smooth)for(var i in this.body.edges)this.body.edges.hasOwnProperty(i)&&(t=this.body.edges[i].updateEdgeType()||t);if(void 0!==e.font)for(var o in this.body.edges)this.body.edges.hasOwnProperty(o)&&this.body.edges[o].updateLabelModule();void 0===e.hidden&&void 0===e.physics&&!0!==t||this.body.emitter.emit("_dataChanged")}}},{key:"setData",value:function(e){var t=this,i=arguments.length>1&&void 0!==arguments[1]&&arguments[1],o=this.body.data.edges;if(e instanceof h||e instanceof l)this.body.data.edges=e;else if(Array.isArray(e))this.body.data.edges=new h,this.body.data.edges.add(e);else{if(e)throw new TypeError("Array or DataSet expected");this.body.data.edges=new h}if(o&&d.forEach(this.edgesListeners,function(e,t){o.off(t,e)}),this.body.edges={},this.body.data.edges){d.forEach(this.edgesListeners,function(e,i){t.body.data.edges.on(i,e)});var n=this.body.data.edges.getIds();this.add(n,!0)}this.body.emitter.emit("_adjustEdgesForHierarchicalLayout"),!1===i&&this.body.emitter.emit("_dataChanged")}},{key:"add",value:function(e){for(var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=this.body.edges,o=this.body.data.edges,n=0;n<e.length;n++){var s=e[n],r=i[s];r&&r.disconnect();var a=o.get(s,{showInternalIds:!0});i[s]=this.create(a)}this.body.emitter.emit("_adjustEdgesForHierarchicalLayout"),!1===t&&this.body.emitter.emit("_dataChanged")}},{key:"update",value:function(e){for(var t=this.body.edges,i=this.body.data.edges,o=!1,n=0;n<e.length;n++){var s=e[n],r=i.get(s),a=t[s];void 0!==a?(a.disconnect(),o=a.setOptions(r)||o,a.connect()):(this.body.edges[s]=this.create(r),o=!0)}!0===o?(this.body.emitter.emit("_adjustEdgesForHierarchicalLayout"),this.body.emitter.emit("_dataChanged")):this.body.emitter.emit("_dataUpdated")}},{key:"remove",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(0!==e.length){var i=this.body.edges;d.forEach(e,function(e){var t=i[e];void 0!==t&&t.remove()}),t&&this.body.emitter.emit("_dataChanged")}}},{key:"refresh",value:function(){var e=this;d.forEach(this.body.edges,function(t,i){var o=e.body.data.edges._data[i];void 0!==o&&t.setOptions(o)})}},{key:"create",value:function(e){return new u(e,this.body,this.options,this.defaultOptions)}},{key:"reconnectEdges",value:function(){var e,t=this.body.nodes,i=this.body.edges;for(e in t)t.hasOwnProperty(e)&&(t[e].edges=[]);for(e in i)if(i.hasOwnProperty(e)){var o=i[e];o.from=null,o.to=null,o.connect()}}},{key:"getConnectedNodes",value:function(e){var t=[];if(void 0!==this.body.edges[e]){var i=this.body.edges[e];void 0!==i.fromId&&t.push(i.fromId),void 0!==i.toId&&t.push(i.toId)}return t}},{key:"_updateState",value:function(){this._addMissingEdges(),this._removeInvalidEdges()}},{key:"_removeInvalidEdges",value:function(){var e=this,t=[];d.forEach(this.body.edges,function(i,o){var n=e.body.nodes[i.toId],s=e.body.nodes[i.fromId];void 0!==n&&!0===n.isCluster||void 0!==s&&!0===s.isCluster||void 0!==n&&void 0!==s||t.push(o)}),this.remove(t,!1)}},{key:"_addMissingEdges",value:function(){var e=this.body.data.edges;if(void 0!==e&&null!==e){var t=this.body.edges,i=[];e.forEach(function(e,o){void 0===t[o]&&i.push(o)}),this.add(i,!0)}}}]),e}();t.default=c},function(e,t,i){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var n=i(15),s=o(n),r=i(2),a=o(r),d=i(0),h=o(d),l=i(1),u=o(l),c=i(3),f=o(c),p=i(4),v=o(p),g=i(166),y=o(g),m=function(e){function t(e,i,o){return(0,h.default)(this,t),(0,f.default)(this,(t.__proto__||(0,a.default)(t)).call(this,e,i,o))}return(0,v.default)(t,e),(0,u.default)(t,[{key:"_line",value:function(e,t,i){var o=i[0],n=i[1];this._bezierCurve(e,t,o,n)}},{key:"_getViaCoordinates",value:function(){var e=this.from.x-this.to.x,t=this.from.y-this.to.y,i=void 0,o=void 0,n=void 0,s=void 0,r=this.options.smooth.roundness;return(Math.abs(e)>Math.abs(t)||!0===this.options.smooth.forceDirection||"horizontal"===this.options.smooth.forceDirection)&&"vertical"!==this.options.smooth.forceDirection?(o=this.from.y,s=this.to.y,i=this.from.x-r*e,n=this.to.x+r*e):(o=this.from.y-r*t,s=this.to.y+r*t,i=this.from.x,n=this.to.x),[{x:i,y:o},{x:n,y:s}]}},{key:"getViaNode",value:function(){return this._getViaCoordinates()}},{key:"_findBorderPosition",value:function(e,t){return this._findBorderPositionBezier(e,t)}},{key:"_getDistanceToEdge",value:function(e,t,i,o,n,r){var a=arguments.length>6&&void 0!==arguments[6]?arguments[6]:this._getViaCoordinates(),d=(0,s.default)(a,2),h=d[0],l=d[1];return this._getDistanceToBezierEdge(e,t,i,o,n,r,h,l)}},{key:"getPoint",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this._getViaCoordinates(),i=(0,s.default)(t,2),o=i[0],n=i[1],r=e,a=[];return a[0]=Math.pow(1-r,3),a[1]=3*r*Math.pow(1-r,2),a[2]=3*Math.pow(r,2)*(1-r),a[3]=Math.pow(r,3),{x:a[0]*this.fromPoint.x+a[1]*o.x+a[2]*n.x+a[3]*this.toPoint.x,y:a[0]*this.fromPoint.y+a[1]*o.y+a[2]*n.y+a[3]*this.toPoint.y}}}]),t}(y.default);t.default=m},function(e,t,i){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var n=i(2),s=o(n),r=i(0),a=o(r),d=i(1),h=o(d),l=i(3),u=o(l),c=i(4),f=o(c),p=i(56),v=o(p),g=function(e){function t(e,i,o){return(0,a.default)(this,t),(0,u.default)(this,(t.__proto__||(0,s.default)(t)).call(this,e,i,o))}return(0,f.default)(t,e),(0,h.default)(t,[{key:"_getDistanceToBezierEdge",value:function(e,t,i,o,n,s,r,a){var d=1e9,h=void 0,l=void 0,u=void 0,c=void 0,f=void 0,p=e,v=t,g=[0,0,0,0];for(l=1;l<10;l++)u=.1*l,g[0]=Math.pow(1-u,3),g[1]=3*u*Math.pow(1-u,2),g[2]=3*Math.pow(u,2)*(1-u),g[3]=Math.pow(u,3),c=g[0]*e+g[1]*r.x+g[2]*a.x+g[3]*i,f=g[0]*t+g[1]*r.y+g[2]*a.y+g[3]*o,l>0&&(h=this._getDistanceToLine(p,v,c,f,n,s),d=h<d?h:d),p=c,v=f;return d}}]),t}(v.default);t.default=g},function(e,t,i){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var n=i(15),s=o(n),r=i(2),a=o(r),d=i(0),h=o(d),l=i(1),u=o(l),c=i(3),f=o(c),p=i(4),v=o(p),g=i(56),y=o(g),m=function(e){function t(e,i,o){(0,h.default)(this,t);var n=(0,f.default)(this,(t.__proto__||(0,a.default)(t)).call(this,e,i,o));return n._boundFunction=function(){n.positionBezierNode()},n.body.emitter.on("_repositionBezierNodes",n._boundFunction),n}return(0,v.default)(t,e),(0,u.default)(t,[{key:"setOptions",value:function(e){var t=!1;this.options.physics!==e.physics&&(t=!0),this.options=e,this.id=this.options.id,this.from=this.body.nodes[this.options.from],this.to=this.body.nodes[this.options.to],this.setupSupportNode(),this.connect(),!0===t&&(this.via.setOptions({physics:this.options.physics}),this.positionBezierNode())}},{key:"connect",value:function(){this.from=this.body.nodes[this.options.from],this.to=this.body.nodes[this.options.to],void 0===this.from||void 0===this.to||!1===this.options.physics?this.via.setOptions({physics:!1}):this.from.id===this.to.id?this.via.setOptions({physics:!1}):this.via.setOptions({physics:!0})}},{key:"cleanup",value:function(){return this.body.emitter.off("_repositionBezierNodes",this._boundFunction),void 0!==this.via&&(delete this.body.nodes[this.via.id],this.via=void 0,!0)}},{key:"setupSupportNode",value:function(){if(void 0===this.via){var e="edgeId:"+this.id,t=this.body.functions.createNode({id:e,shape:"circle",physics:!0,hidden:!0});this.body.nodes[e]=t,this.via=t,this.via.parentEdgeId=this.id,this.positionBezierNode()}}},{key:"positionBezierNode",value:function(){void 0!==this.via&&void 0!==this.from&&void 0!==this.to?(this.via.x=.5*(this.from.x+this.to.x),this.via.y=.5*(this.from.y+this.to.y)):void 0!==this.via&&(this.via.x=0,this.via.y=0)}},{key:"_line",value:function(e,t,i){this._bezierCurve(e,t,i)}},{key:"getViaNode",value:function(){return this.via}},{key:"getPoint",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.via,i=e,o=void 0,n=void 0;if(this.from===this.to){var r=this._getCircleData(this.from),a=(0,s.default)(r,3),d=a[0],h=a[1],l=a[2],u=2*Math.PI*(1-i);o=d+l*Math.sin(u),n=h+l-l*(1-Math.cos(u))}else o=Math.pow(1-i,2)*this.fromPoint.x+2*i*(1-i)*t.x+Math.pow(i,2)*this.toPoint.x,n=Math.pow(1-i,2)*this.fromPoint.y+2*i*(1-i)*t.y+Math.pow(i,2)*this.toPoint.y;return{x:o,y:n}}},{key:"_findBorderPosition",value:function(e,t){return this._findBorderPositionBezier(e,t,this.via)}},{key:"_getDistanceToEdge",value:function(e,t,i,o,n,s){return this._getDistanceToBezierEdge(e,t,i,o,n,s,this.via)}}]),t}(y.default);t.default=m},function(e,t,i){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var n=i(2),s=o(n),r=i(0),a=o(r),d=i(1),h=o(d),l=i(3),u=o(l),c=i(4),f=o(c),p=i(56),v=o(p),g=function(e){function t(e,i,o){return(0,a.default)(this,t),(0,u.default)(this,(t.__proto__||(0,s.default)(t)).call(this,e,i,o))}return(0,f.default)(t,e),(0,h.default)(t,[{key:"_line",value:function(e,t,i){this._bezierCurve(e,t,i)}},{key:"getViaNode",value:function(){return this._getViaCoordinates()}},{key:"_getViaCoordinates",value:function(){var e=void 0,t=void 0,i=this.options.smooth.roundness,o=this.options.smooth.type,n=Math.abs(this.from.x-this.to.x),s=Math.abs(this.from.y-this.to.y);if("discrete"===o||"diagonalCross"===o){var r=void 0,a=void 0;r=a=n<=s?i*s:i*n,this.from.x>this.to.x&&(r=-r),this.from.y>=this.to.y&&(a=-a),e=this.from.x+r,t=this.from.y+a,"discrete"===o&&(n<=s?e=n<i*s?this.from.x:e:t=s<i*n?this.from.y:t)}else if("straightCross"===o){var d=(1-i)*n,h=(1-i)*s;n<=s?(d=0,this.from.y<this.to.y&&(h=-h)):(this.from.x<this.to.x&&(d=-d),h=0),e=this.to.x+d,t=this.to.y+h}else if("horizontal"===o){var l=(1-i)*n;this.from.x<this.to.x&&(l=-l),e=this.to.x+l,t=this.from.y}else if("vertical"===o){var u=(1-i)*s;this.from.y<this.to.y&&(u=-u),e=this.from.x,t=this.to.y+u}else if("curvedCW"===o){n=this.to.x-this.from.x,s=this.from.y-this.to.y;var c=Math.sqrt(n*n+s*s),f=Math.PI,p=Math.atan2(s,n),v=(p+(.5*i+.5)*f)%(2*f);e=this.from.x+(.5*i+.5)*c*Math.sin(v),t=this.from.y+(.5*i+.5)*c*Math.cos(v)}else if("curvedCCW"===o){n=this.to.x-this.from.x,s=this.from.y-this.to.y;var g=Math.sqrt(n*n+s*s),y=Math.PI,m=Math.atan2(s,n),b=(m+(.5*-i+.5)*y)%(2*y);e=this.from.x+(.5*i+.5)*g*Math.sin(b),t=this.from.y+(.5*i+.5)*g*Math.cos(b)}else{var _=void 0,w=void 0;_=w=n<=s?i*s:i*n,this.from.x>this.to.x&&(_=-_),this.from.y>=this.to.y&&(w=-w),e=this.from.x+_,t=this.from.y+w,n<=s?e=this.from.x<=this.to.x?this.to.x<e?this.to.x:e:this.to.x>e?this.to.x:e:t=this.from.y>=this.to.y?this.to.y>t?this.to.y:t:this.to.y<t?this.to.y:t}return{x:e,y:t}}},{key:"_findBorderPosition",value:function(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return this._findBorderPositionBezier(e,t,i.via)}},{key:"_getDistanceToEdge",value:function(e,t,i,o,n,s){var r=arguments.length>6&&void 0!==arguments[6]?arguments[6]:this._getViaCoordinates();return this._getDistanceToBezierEdge(e,t,i,o,n,s,r)}},{key:"getPoint",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this._getViaCoordinates(),i=e;return{x:Math.pow(1-i,2)*this.fromPoint.x+2*i*(1-i)*t.x+Math.pow(i,2)*this.toPoint.x,y:Math.pow(1-i,2)*this.fromPoint.y+2*i*(1-i)*t.y+Math.pow(i,2)*this.toPoint.y}}}]),t}(v.default);t.default=g},function(e,t,i){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var n=i(2),s=o(n),r=i(0),a=o(r),d=i(1),h=o(d),l=i(3),u=o(l),c=i(4),f=o(c),p=i(79),v=o(p),g=function(e){function t(e,i,o){return(0,a.default)(this,t),(0,u.default)(this,(t.__proto__||(0,s.default)(t)).call(this,e,i,o))}return(0,f.default)(t,e),(0,h.default)(t,[{key:"_line",value:function(e,t){e.beginPath(),e.moveTo(this.fromPoint.x,this.fromPoint.y),e.lineTo(this.toPoint.x,this.toPoint.y),this.enableShadow(e,t),e.stroke(),this.disableShadow(e,t)}},{key:"getViaNode",value:function(){}},{key:"getPoint",value:function(e){return{x:(1-e)*this.fromPoint.x+e*this.toPoint.x,y:(1-e)*this.fromPoint.y+e*this.toPoint.y}}},{key:"_findBorderPosition",value:function(e,t){var i=this.to,o=this.from;e.id===this.from.id&&(i=this.from,o=this.to);var n=Math.atan2(i.y-o.y,i.x-o.x),s=i.x-o.x,r=i.y-o.y,a=Math.sqrt(s*s+r*r),d=e.distanceToBorder(t,n),h=(a-d)/a,l={};return l.x=(1-h)*o.x+h*i.x,l.y=(1-h)*o.y+h*i.y,l}},{key:"_getDistanceToEdge",value:function(e,t,i,o,n,s){return this._getDistanceToLine(e,t,i,o,n,s)}}]),t}(v.default);t.default=g},function(e,t,i){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var n=i(9),s=o(n),r=i(0),a=o(r),d=i(1),h=o(d),l=i(81).default,u=i(171).default,c=i(172).default,f=i(173).default,p=i(174).default,v=i(82).default,g=i(175).default,y=i(176).default,m=i(5),b=i(80).default,_=function(){function e(t){(0,a.default)(this,e),this.body=t,this.physicsBody={physicsNodeIndices:[],physicsEdgeIndices:[],forces:{},velocities:{}},this.physicsEnabled=!0,this.simulationInterval=1e3/60,this.requiresTimeout=!0,this.previousStates={},this.referenceState={},this.freezeCache={},this.renderTimer=void 0,this.adaptiveTimestep=!1,this.adaptiveTimestepEnabled=!1,this.adaptiveCounter=0,this.adaptiveInterval=3,this.stabilized=!1,this.startedStabilization=!1,this.stabilizationIterations=0,this.ready=!1,this.options={},this.defaultOptions={enabled:!0,barnesHut:{theta:.5,gravitationalConstant:-2e3,centralGravity:.3,springLength:95,springConstant:.04,damping:.09,avoidOverlap:0},forceAtlas2Based:{theta:.5,gravitationalConstant:-50,centralGravity:.01,springConstant:.08,springLength:100,damping:.4,avoidOverlap:0},repulsion:{centralGravity:.2,springLength:200,springConstant:.05,nodeDistance:100,damping:.09,avoidOverlap:0},hierarchicalRepulsion:{centralGravity:0,springLength:100,springConstant:.01,nodeDistance:120,damping:.09},maxVelocity:50,minVelocity:.75,solver:"barnesHut",stabilization:{enabled:!0,iterations:1e3,updateInterval:50,onlyDynamicEdges:!1,fit:!0},timestep:.5,adaptiveTimestep:!0},m.extend(this.options,this.defaultOptions),this.timestep=.5,this.layoutFailed=!1,this.bindEventListeners()}return(0,h.default)(e,[{key:"bindEventListeners",value:function(){var e=this;this.body.emitter.on("initPhysics",function(){e.initPhysics()}),this.body.emitter.on("_layoutFailed",function(){e.layoutFailed=!0}),this.body.emitter.on("resetPhysics",function(){e.stopSimulation(),e.ready=!1}),this.body.emitter.on("disablePhysics",function(){e.physicsEnabled=!1,e.stopSimulation()}),this.body.emitter.on("restorePhysics",function(){e.setOptions(e.options),!0===e.ready&&e.startSimulation()}),this.body.emitter.on("startSimulation",function(){!0===e.ready&&e.startSimulation()}),this.body.emitter.on("stopSimulation",function(){e.stopSimulation()}),this.body.emitter.on("destroy",function(){e.stopSimulation(!1),e.body.emitter.off()}),this.body.emitter.on("_dataChanged",function(){e.updatePhysicsData()})}},{key:"setOptions",value:function(e){void 0!==e&&(!1===e?(this.options.enabled=!1,this.physicsEnabled=!1,this.stopSimulation()):!0===e?(this.options.enabled=!0,this.physicsEnabled=!0,this.startSimulation()):(this.physicsEnabled=!0,m.selectiveNotDeepExtend(["stabilization"],this.options,e),m.mergeOptions(this.options,e,"stabilization"),void 0===e.enabled&&(this.options.enabled=!0),!1===this.options.enabled&&(this.physicsEnabled=!1,this.stopSimulation()),this.timestep=this.options.timestep)),this.init()}},{key:"init",value:function(){var e;"forceAtlas2Based"===this.options.solver?(e=this.options.forceAtlas2Based,this.nodesSolver=new g(this.body,this.physicsBody,e),this.edgesSolver=new f(this.body,this.physicsBody,e),this.gravitySolver=new y(this.body,this.physicsBody,e)):"repulsion"===this.options.solver?(e=this.options.repulsion,this.nodesSolver=new u(this.body,this.physicsBody,e),this.edgesSolver=new f(this.body,this.physicsBody,e),this.gravitySolver=new v(this.body,this.physicsBody,e)):"hierarchicalRepulsion"===this.options.solver?(e=this.options.hierarchicalRepulsion,this.nodesSolver=new c(this.body,this.physicsBody,e),this.edgesSolver=new p(this.body,this.physicsBody,e),this.gravitySolver=new v(this.body,this.physicsBody,e)):(e=this.options.barnesHut,this.nodesSolver=new l(this.body,this.physicsBody,e),this.edgesSolver=new f(this.body,this.physicsBody,e),this.gravitySolver=new v(this.body,this.physicsBody,e)),this.modelOptions=e}},{key:"initPhysics",value:function(){!0===this.physicsEnabled&&!0===this.options.enabled?!0===this.options.stabilization.enabled?this.stabilize():(this.stabilized=!1,this.ready=!0,this.body.emitter.emit("fit",{},this.layoutFailed),this.startSimulation()):(this.ready=!0,this.body.emitter.emit("fit"))}},{key:"startSimulation",value:function(){!0===this.physicsEnabled&&!0===this.options.enabled?(this.stabilized=!1,this.adaptiveTimestep=!1,this.body.emitter.emit("_resizeNodes"),void 0===this.viewFunction&&(this.viewFunction=this.simulationStep.bind(this),this.body.emitter.on("initRedraw",this.viewFunction),this.body.emitter.emit("_startRendering"))):this.body.emitter.emit("_redraw")}},{key:"stopSimulation",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];this.stabilized=!0,!0===e&&this._emitStabilized(),void 0!==this.viewFunction&&(this.body.emitter.off("initRedraw",this.viewFunction),this.viewFunction=void 0,!0===e&&this.body.emitter.emit("_stopRendering"))}},{key:"simulationStep",value:function(){var e=Date.now();this.physicsTick(),(Date.now()-e<.4*this.simulationInterval||!0===this.runDoubleSpeed)&&!1===this.stabilized&&(this.physicsTick(),this.runDoubleSpeed=!0),!0===this.stabilized&&this.stopSimulation()}},{key:"_emitStabilized",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.stabilizationIterations;(this.stabilizationIterations>1||!0===this.startedStabilization)&&setTimeout(function(){e.body.emitter.emit("stabilized",{iterations:t}),e.startedStabilization=!1,e.stabilizationIterations=0},0)}},{key:"physicsStep",value:function(){this.gravitySolver.solve(),this.nodesSolver.solve(),this.edgesSolver.solve(),this.moveNodes()}},{key:"adjustTimeStep",value:function(){!0===this._evaluateStepQuality()?this.timestep=1.2*this.timestep:this.timestep/1.2<this.options.timestep?this.timestep=this.options.timestep:(this.adaptiveCounter=-1,this.timestep=Math.max(this.options.timestep,this.timestep/1.2))}},{key:"physicsTick",value:function(){if(this._startStabilizing(),!0!==this.stabilized){if(!0===this.adaptiveTimestep&&!0===this.adaptiveTimestepEnabled){this.adaptiveCounter%this.adaptiveInterval==0?(this.timestep=2*this.timestep,this.physicsStep(),this.revert(),this.timestep=.5*this.timestep,this.physicsStep(),this.physicsStep(),this.adjustTimeStep()):this.physicsStep(),this.adaptiveCounter+=1}else this.timestep=this.options.timestep,this.physicsStep();!0===this.stabilized&&this.revert(),this.stabilizationIterations++}}},{key:"updatePhysicsData",value:function(){this.physicsBody.forces={},this.physicsBody.physicsNodeIndices=[],this.physicsBody.physicsEdgeIndices=[];var e=this.body.nodes,t=this.body.edges;for(var i in e)e.hasOwnProperty(i)&&!0===e[i].options.physics&&this.physicsBody.physicsNodeIndices.push(e[i].id);for(var o in t)t.hasOwnProperty(o)&&!0===t[o].options.physics&&this.physicsBody.physicsEdgeIndices.push(t[o].id);for(var n=0;n<this.physicsBody.physicsNodeIndices.length;n++){var s=this.physicsBody.physicsNodeIndices[n];this.physicsBody.forces[s]={x:0,y:0},void 0===this.physicsBody.velocities[s]&&(this.physicsBody.velocities[s]={x:0,y:0})}for(var r in this.physicsBody.velocities)void 0===e[r]&&delete this.physicsBody.velocities[r]}},{key:"revert",value:function(){var e=(0,s.default)(this.previousStates),t=this.body.nodes,i=this.physicsBody.velocities;this.referenceState={};for(var o=0;o<e.length;o++){var n=e[o];void 0!==t[n]?!0===t[n].options.physics&&(this.referenceState[n]={positions:{x:t[n].x,y:t[n].y}},i[n].x=this.previousStates[n].vx,i[n].y=this.previousStates[n].vy,t[n].x=this.previousStates[n].x,t[n].y=this.previousStates[n].y):delete this.previousStates[n]}}},{key:"_evaluateStepQuality",value:function(){var e=void 0,t=void 0,i=this.body.nodes,o=this.referenceState;for(var n in this.referenceState)if(this.referenceState.hasOwnProperty(n)&&void 0!==i[n]&&(e=i[n].x-o[n].positions.x,t=i[n].y-o[n].positions.y,Math.sqrt(Math.pow(e,2)+Math.pow(t,2))>.3))return!1;return!0}},{key:"moveNodes",value:function(){for(var e=this.physicsBody.physicsNodeIndices,t=0,i=0,o=0;o<e.length;o++){var n=e[o],s=this._performStep(n);t=Math.max(t,s),i+=s}this.adaptiveTimestepEnabled=i/e.length<5,this.stabilized=t<this.options.minVelocity}},{key:"calculateComponentVelocity",value:function(e,t,i){e+=(t-this.modelOptions.damping*e)/i*this.timestep;var o=this.options.maxVelocity||1e9;return Math.abs(e)>o&&(e=e>0?o:-o),e}},{key:"_performStep",value:function(e){var t=this.body.nodes[e],i=this.physicsBody.forces[e],o=this.physicsBody.velocities[e];return this.previousStates[e]={x:t.x,y:t.y,vx:o.x,vy:o.y},!1===t.options.fixed.x?(o.x=this.calculateComponentVelocity(o.x,i.x,t.options.mass),t.x+=o.x*this.timestep):(i.x=0,o.x=0),!1===t.options.fixed.y?(o.y=this.calculateComponentVelocity(o.y,i.y,t.options.mass),t.y+=o.y*this.timestep):(i.y=0,o.y=0),Math.sqrt(Math.pow(o.x,2)+Math.pow(o.y,2))}},{key:"_freezeNodes",value:function(){var e=this.body.nodes;for(var t in e)if(e.hasOwnProperty(t)&&e[t].x&&e[t].y){var i=e[t].options.fixed;this.freezeCache[t]={x:i.x,y:i.y},i.x=!0,i.y=!0}}},{key:"_restoreFrozenNodes",value:function(){var e=this.body.nodes;for(var t in e)e.hasOwnProperty(t)&&void 0!==this.freezeCache[t]&&(e[t].options.fixed.x=this.freezeCache[t].x,e[t].options.fixed.y=this.freezeCache[t].y);this.freezeCache={}}},{key:"stabilize",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.options.stabilization.iterations;if("number"!=typeof t&&(t=this.options.stabilization.iterations,console.log("The stabilize method needs a numeric amount of iterations. Switching to default: ",t)),0===this.physicsBody.physicsNodeIndices.length)return void(this.ready=!0);this.adaptiveTimestep=this.options.adaptiveTimestep,this.body.emitter.emit("_resizeNodes"),this.stopSimulation(),this.stabilized=!1,this.body.emitter.emit("_blockRedraw"),this.targetIterations=t,!0===this.options.stabilization.onlyDynamicEdges&&this._freezeNodes(),this.stabilizationIterations=0,setTimeout(function(){return e._stabilizationBatch()},0)}},{key:"_startStabilizing",value:function(){return!0!==this.startedStabilization&&(this.body.emitter.emit("startStabilizing"),this.startedStabilization=!0,!0)}},{key:"_stabilizationBatch",value:function(){var e=this,t=function(){return!1===e.stabilized&&e.stabilizationIterations<e.targetIterations},i=function(){e.body.emitter.emit("stabilizationProgress",{iterations:e.stabilizationIterations,total:e.targetIterations})};this._startStabilizing()&&i();for(var o=0;t()&&o<this.options.stabilization.updateInterval;)this.physicsTick(),o++;i(),t()?setTimeout(this._stabilizationBatch.bind(this),0):this._finalizeStabilization()}},{key:"_finalizeStabilization",value:function(){this.body.emitter.emit("_allowRedraw"),!0===this.options.stabilization.fit&&this.body.emitter.emit("fit"),!0===this.options.stabilization.onlyDynamicEdges&&this._restoreFrozenNodes(),this.body.emitter.emit("stabilizationIterationsDone"),this.body.emitter.emit("_requestRedraw"),!0===this.stabilized?this._emitStabilized():this.startSimulation(),this.ready=!0}},{key:"_drawForces",value:function(e){for(var t=0;t<this.physicsBody.physicsNodeIndices.length;t++){var i=this.physicsBody.physicsNodeIndices[t],o=this.body.nodes[i],n=this.physicsBody.forces[i],s=Math.sqrt(Math.pow(n.x,2)+Math.pow(n.x,2)),r=Math.min(Math.max(5,s),15),a=3*r,d=m.HSVToHex((180-180*Math.min(1,Math.max(0,.03*s)))/360,1,1),h={x:o.x+20*n.x,y:o.y+20*n.y};e.lineWidth=r,e.strokeStyle=d,e.beginPath(),e.moveTo(o.x,o.y),e.lineTo(h.x,h.y),e.stroke();var l=Math.atan2(n.y,n.x);e.fillStyle=d,b.draw(e,{type:"arrow",point:h,angle:l,length:a}),e.fill()}}}]),e}();t.default=_},function(e,t,i){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var n=i(0),s=o(n),r=i(1),a=o(r),d=function(){function e(t,i,o){(0,s.default)(this,e),this.body=t,this.physicsBody=i,this.setOptions(o)}return(0,a.default)(e,[{key:"setOptions",value:function(e){this.options=e}},{key:"solve",value:function(){for(var e,t,i,o,n,s,r,a,d=this.body.nodes,h=this.physicsBody.physicsNodeIndices,l=this.physicsBody.forces,u=this.options.nodeDistance,c=-2/3/u,f=0;f<h.length-1;f++){r=d[h[f]];for(var p=f+1;p<h.length;p++)a=d[h[p]],e=a.x-r.x,t=a.y-r.y,i=Math.sqrt(e*e+t*t),0===i&&(i=.1*Math.random(),e=i),i<2*u&&(s=i<.5*u?1:c*i+4/3,s/=i,o=e*s,n=t*s,l[r.id].x-=o,l[r.id].y-=n,l[a.id].x+=o,l[a.id].y+=n)}}}]),e}();t.default=d},function(e,t,i){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var n=i(0),s=o(n),r=i(1),a=o(r),d=function(){function e(t,i,o){(0,s.default)(this,e),this.body=t,this.physicsBody=i,this.setOptions(o)}return(0,a.default)(e,[{key:"setOptions",value:function(e){this.options=e}},{key:"solve",value:function(){var e,t,i,o,n,s,r,a,d,h,l=this.body.nodes,u=this.physicsBody.physicsNodeIndices,c=this.physicsBody.forces,f=this.options.nodeDistance;for(d=0;d<u.length-1;d++)for(r=l[u[d]],h=d+1;h<u.length;h++)if(a=l[u[h]],r.level===a.level){e=a.x-r.x,t=a.y-r.y,i=Math.sqrt(e*e+t*t);s=i<f?-Math.pow(.05*i,2)+Math.pow(.05*f,2):0,0===i?i=.01:s/=i,o=e*s,n=t*s,c[r.id].x-=o,c[r.id].y-=n,c[a.id].x+=o,c[a.id].y+=n}}}]),e}();t.default=d},function(e,t,i){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var n=i(0),s=o(n),r=i(1),a=o(r),d=function(){function e(t,i,o){(0,s.default)(this,e),this.body=t,this.physicsBody=i,this.setOptions(o)}return(0,a.default)(e,[{key:"setOptions",value:function(e){this.options=e}},{key:"solve",value:function(){for(var e=void 0,t=void 0,i=this.physicsBody.physicsEdgeIndices,o=this.body.edges,n=void 0,s=void 0,r=void 0,a=0;a<i.length;a++)t=o[i[a]],!0===t.connected&&t.toId!==t.fromId&&void 0!==this.body.nodes[t.toId]&&void 0!==this.body.nodes[t.fromId]&&(void 0!==t.edgeType.via?(e=void 0===t.options.length?this.options.springLength:t.options.length,n=t.to,s=t.edgeType.via,r=t.from,this._calculateSpringForce(n,s,.5*e),this._calculateSpringForce(s,r,.5*e)):(e=void 0===t.options.length?1.5*this.options.springLength:t.options.length,this._calculateSpringForce(t.from,t.to,e)))}},{key:"_calculateSpringForce",value:function(e,t,i){var o=e.x-t.x,n=e.y-t.y,s=Math.max(Math.sqrt(o*o+n*n),.01),r=this.options.springConstant*(i-s)/s,a=o*r,d=n*r;void 0!==this.physicsBody.forces[e.id]&&(this.physicsBody.forces[e.id].x+=a,this.physicsBody.forces[e.id].y+=d),void 0!==this.physicsBody.forces[t.id]&&(this.physicsBody.forces[t.id].x-=a,this.physicsBody.forces[t.id].y-=d)}}]),e}();t.default=d},function(e,t,i){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var n=i(0),s=o(n),r=i(1),a=o(r),d=function(){function e(t,i,o){(0,s.default)(this,e),this.body=t,this.physicsBody=i,this.setOptions(o)}return(0,a.default)(e,[{key:"setOptions",value:function(e){this.options=e}},{key:"solve",value:function(){for(var e,t,i,o,n,s,r,a,d=this.body.edges,h=this.physicsBody.physicsEdgeIndices,l=this.physicsBody.physicsNodeIndices,u=this.physicsBody.forces,c=0;c<l.length;c++){var f=l[c];u[f].springFx=0,u[f].springFy=0}for(var p=0;p<h.length;p++)t=d[h[p]],!0===t.connected&&(e=void 0===t.options.length?this.options.springLength:t.options.length,i=t.from.x-t.to.x,o=t.from.y-t.to.y,a=Math.sqrt(i*i+o*o),a=0===a?.01:a,r=this.options.springConstant*(e-a)/a,n=i*r,s=o*r,t.to.level!=t.from.level?(void 0!==u[t.toId]&&(u[t.toId].springFx-=n,u[t.toId].springFy-=s),void 0!==u[t.fromId]&&(u[t.fromId].springFx+=n,u[t.fromId].springFy+=s)):(void 0!==u[t.toId]&&(u[t.toId].x-=.5*n,u[t.toId].y-=.5*s),void 0!==u[t.fromId]&&(u[t.fromId].x+=.5*n,u[t.fromId].y+=.5*s)));r=1;for(var v,g,y=0;y<l.length;y++){var m=l[y];v=Math.min(r,Math.max(-r,u[m].springFx)),g=Math.min(r,Math.max(-r,u[m].springFy)),u[m].x+=v,u[m].y+=g}for(var b=0,_=0,w=0;w<l.length;w++){var k=l[w];b+=u[k].x,_+=u[k].y}for(var x=b/l.length,O=_/l.length,M=0;M<l.length;M++){var E=l[M];u[E].x-=x,u[E].y-=O}}}]),e}();t.default=d},function(e,t,i){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var n=i(2),s=o(n),r=i(0),a=o(r),d=i(1),h=o(d),l=i(3),u=o(l),c=i(4),f=o(c),p=i(81),v=o(p),g=function(e){function t(e,i,o){return(0,a.default)(this,t),(0,u.default)(this,(t.__proto__||(0,s.default)(t)).call(this,e,i,o))}return(0,f.default)(t,e),(0,h.default)(t,[{key:"_calculateForces",value:function(e,t,i,o,n){0===e&&(e=.1*Math.random(),t=e),this.overlapAvoidanceFactor<1&&o.shape.radius&&(e=Math.max(.1+this.overlapAvoidanceFactor*o.shape.radius,e-o.shape.radius));var s=o.edges.length+1,r=this.options.gravitationalConstant*n.mass*o.options.mass*s/Math.pow(e,2),a=t*r,d=i*r;this.physicsBody.forces[o.id].x+=a,this.physicsBody.forces[o.id].y+=d}}]),t}(v.default);t.default=g},function(e,t,i){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var n=i(2),s=o(n),r=i(0),a=o(r),d=i(1),h=o(d),l=i(3),u=o(l),c=i(4),f=o(c),p=i(82),v=o(p),g=function(e){function t(e,i,o){return(0,a.default)(this,t),(0,u.default)(this,(t.__proto__||(0,s.default)(t)).call(this,e,i,o))}return(0,f.default)(t,e),(0,h.default)(t,[{key:"_calculateForces",value:function(e,t,i,o,n){if(e>0){var s=n.edges.length+1,r=this.options.centralGravity*s*n.options.mass;o[n.id].x=t*r,o[n.id].y=i*r}}}]),t}(v.default);t.default=g},function(e,t,i){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var n=i(9),s=o(n),r=i(7),a=o(r),d=i(0),h=o(d),l=i(1),u=o(l),c=i(5),f=i(57).default,p=i(178).default,v=i(55).default,g=i(34).default,y=function(){function e(t){var i=this;(0,h.default)(this,e),this.body=t,this.clusteredNodes={},this.clusteredEdges={},this.options={},this.defaultOptions={},c.extend(this.options,this.defaultOptions),this.body.emitter.on("_resetData",function(){i.clusteredNodes={},i.clusteredEdges={}})}return(0,u.default)(e,[{key:"clusterByHubsize",value:function(e,t){void 0===e?e=this._getHubSize():"object"===(void 0===e?"undefined":(0,a.default)(e))&&(t=this._checkOptions(e),e=this._getHubSize());for(var i=[],o=0;o<this.body.nodeIndices.length;o++){var n=this.body.nodes[this.body.nodeIndices[o]];n.edges.length>=e&&i.push(n.id)}for(var s=0;s<i.length;s++)this.clusterByConnection(i[s],t,!0);this.body.emitter.emit("_dataChanged")}},{key:"cluster",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},i=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(void 0===t.joinCondition)throw new Error("Cannot call clusterByNodeData without a joinCondition function in the options.");t=this._checkOptions(t);var o={},n={};c.forEach(this.body.nodes,function(i,s){i.options&&!0===t.joinCondition(i.options)&&(o[s]=i,c.forEach(i.edges,function(t){void 0===e.clusteredEdges[t.id]&&(n[t.id]=t)}))}),this._cluster(o,n,t,i)}},{key:"clusterByEdgeCount",value:function(e,t){var i=this,o=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];t=this._checkOptions(t);for(var n=[],r={},a=void 0,d=void 0,h=void 0,l=0;l<this.body.nodeIndices.length;l++){var u,c,p;!function(o){var l={},v={},g=i.body.nodeIndices[o],y=i.body.nodes[g];if(void 0===r[g]){h=0,d=[];for(var m=0;m<y.edges.length;m++)a=y.edges[m],void 0===i.clusteredEdges[a.id]&&(a.toId!==a.fromId&&h++,d.push(a));if(h===e){u=function(e){if(void 0===t.joinCondition||null===t.joinCondition)return!0;var i=f.cloneOptions(e);return t.joinCondition(i)};for(var b=!0,_=0;_<d.length;_++){a=d[_];var w=i._getConnectedId(a,g);if(!u(y)){b=!1;break}v[a.id]=a,l[g]=y,l[w]=i.body.nodes[w],r[g]=!0}if((0,s.default)(l).length>0&&(0,s.default)(v).length>0&&!0===b)if(c=function(){for(var e=0;e<n.length;++e)for(var t in l)if(void 0!==n[e].nodes[t])return n[e]},void 0!==(p=c())){for(var k in l)void 0===p.nodes[k]&&(p.nodes[k]=l[k]);for(var x in v)void 0===p.edges[x]&&(p.edges[x]=v[x])}else n.push({nodes:l,edges:v})}}}(l)}for(var l=0;l<n.length;l++)this._cluster(n[l].nodes,n[l].edges,t,!1);!0===o&&this.body.emitter.emit("_dataChanged")}},{key:"clusterOutliers",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];this.clusterByEdgeCount(1,e,t)}},{key:"clusterBridges",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];this.clusterByEdgeCount(2,e,t)}},{key:"clusterByConnection",value:function(e,t){var i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(void 0===e)throw new Error("No nodeId supplied to clusterByConnection!");if(void 0===this.body.nodes[e])throw new Error("The nodeId given to clusterByConnection does not exist!");var o=this.body.nodes[e];t=this._checkOptions(t,o),void 0===t.clusterNodeProperties.x&&(t.clusterNodeProperties.x=o.x),void 0===t.clusterNodeProperties.y&&(t.clusterNodeProperties.y=o.y),void 0===t.clusterNodeProperties.fixed&&(t.clusterNodeProperties.fixed={},t.clusterNodeProperties.fixed.x=o.options.fixed.x,t.clusterNodeProperties.fixed.y=o.options.fixed.y);var n={},r={},a=o.id,d=f.cloneOptions(o);n[a]=o;for(var h=0;h<o.edges.length;h++){var l=o.edges[h];if(void 0===this.clusteredEdges[l.id]){var u=this._getConnectedId(l,a);if(void 0===this.clusteredNodes[u])if(u!==a)if(void 0===t.joinCondition)r[l.id]=l,n[u]=this.body.nodes[u];else{var c=f.cloneOptions(this.body.nodes[u]);!0===t.joinCondition(d,c)&&(r[l.id]=l,n[u]=this.body.nodes[u])}else r[l.id]=l}}var p=(0,s.default)(n).map(function(e){return n[e].id});for(v in n)if(n.hasOwnProperty(v))for(var v=n[v],g=0;g<v.edges.length;g++){var y=v.edges[g];p.indexOf(this._getConnectedId(y,v.id))>-1&&(r[y.id]=y)}this._cluster(n,r,t,i)}},{key:"_createClusterEdges",value:function(e,t,i,o){for(var n=void 0,r=void 0,a=void 0,d=void 0,h=void 0,l=void 0,u=(0,s.default)(e),c=[],f=0;f<u.length;f++){r=u[f],a=e[r];for(var p=0;p<a.edges.length;p++)n=a.edges[p],void 0===this.clusteredEdges[n.id]&&(n.toId==n.fromId?t[n.id]=n:n.toId==r?(d=i.id,h=n.fromId,l=h):(d=n.toId,h=i.id,l=d),void 0===e[l]&&c.push({edge:n,fromId:h,toId:d}))}for(var v=[],g=0;g<c.length;g++){var y=c[g],m=y.edge,b=function(e){for(var t=0;t<v.length;t++){var i=v[t],o=e.fromId===i.fromId&&e.toId===i.toId,n=e.fromId===i.toId&&e.toId===i.fromId;if(o||n)return i}return null}(y);null===b?(b=this._createClusteredEdge(y.fromId,y.toId,m,o),v.push(b)):b.clusteringEdgeReplacingIds.push(m.id),this.body.edges[m.id].edgeReplacedById=b.id,this._backupEdgeOptions(m),m.setOptions({physics:!1})}}},{key:"_checkOptions",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return void 0===e.clusterEdgeProperties&&(e.clusterEdgeProperties={}),void 0===e.clusterNodeProperties&&(e.clusterNodeProperties={}),e}},{key:"_cluster",value:function(e,t,i){var o=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],n=[];for(var r in e)e.hasOwnProperty(r)&&void 0!==this.clusteredNodes[r]&&n.push(r);for(var a=0;a<n.length;++a)delete e[n[a]];if(0!=(0,s.default)(e).length&&(1!=(0,s.default)(e).length||1==i.clusterNodeProperties.allowSingleNodeCluster)){var d=c.deepExtend({},i.clusterNodeProperties);if(void 0!==i.processProperties){var h=[];for(var l in e)if(e.hasOwnProperty(l)){var u=f.cloneOptions(e[l]);h.push(u)}var v=[];for(var g in t)if(t.hasOwnProperty(g)&&"clusterEdge:"!==g.substr(0,12)){var y=f.cloneOptions(t[g],"edge");v.push(y)}if(!(d=i.processProperties(d,h,v)))throw new Error("The processProperties function does not return properties!")}void 0===d.id&&(d.id="cluster:"+c.randomUUID());var m=d.id;void 0===d.label&&(d.label="cluster");var b=void 0;void 0===d.x&&(b=this._getClusterPosition(e),d.x=b.x),void 0===d.y&&(void 0===b&&(b=this._getClusterPosition(e)),d.y=b.y),d.id=m;var _=this.body.functions.createNode(d,p);_.containedNodes=e,_.containedEdges=t,_.clusterEdgeProperties=i.clusterEdgeProperties,this.body.nodes[d.id]=_,this._clusterEdges(e,t,d,i.clusterEdgeProperties),d.id=void 0,!0===o&&this.body.emitter.emit("_dataChanged")}}},{key:"_backupEdgeOptions",value:function(e){void 0===this.clusteredEdges[e.id]&&(this.clusteredEdges[e.id]={physics:e.options.physics})}},{key:"_restoreEdge",value:function(e){var t=this.clusteredEdges[e.id];void 0!==t&&(e.setOptions({physics:t.physics}),delete this.clusteredEdges[e.id])}},{key:"isCluster",value:function(e){return void 0!==this.body.nodes[e]?!0===this.body.nodes[e].isCluster:(console.log("Node does not exist."),!1)}},{key:"_getClusterPosition",value:function(e){for(var t=(0,s.default)(e),i=e[t[0]].x,o=e[t[0]].x,n=e[t[0]].y,r=e[t[0]].y,a=void 0,d=1;d<t.length;d++)a=e[t[d]],i=a.x<i?a.x:i,o=a.x>o?a.x:o,n=a.y<n?a.y:n,r=a.y>r?a.y:r;return{x:.5*(i+o),y:.5*(n+r)}}},{key:"openCluster",value:function(e,t){var i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(void 0===e)throw new Error("No clusterNodeId supplied to openCluster.");var o=this.body.nodes[e];if(void 0===o)throw new Error("The clusterNodeId supplied to openCluster does not exist.");if(!0!==o.isCluster||void 0===o.containedNodes||void 0===o.containedEdges)throw new Error("The node:"+e+" is not a valid cluster.");var n=this.findNode(e),s=n.indexOf(e)-1;if(s>=0){var r=n[s];return this.body.nodes[r]._openChildCluster(e),delete this.body.nodes[e],void(!0===i&&this.body.emitter.emit("_dataChanged"))}var a=o.containedNodes,d=o.containedEdges;if(void 0!==t&&void 0!==t.releaseFunction&&"function"==typeof t.releaseFunction){var h={},l={x:o.x,y:o.y};for(var u in a)if(a.hasOwnProperty(u)){var f=this.body.nodes[u];h[u]={x:f.x,y:f.y}}var p=t.releaseFunction(l,h);for(var v in a)if(a.hasOwnProperty(v)){var g=this.body.nodes[v];void 0!==p[v]&&(g.x=void 0===p[v].x?o.x:p[v].x,g.y=void 0===p[v].y?o.y:p[v].y)}}else c.forEach(a,function(e){!1===e.options.fixed.x&&(e.x=o.x),!1===e.options.fixed.y&&(e.y=o.y)});for(var y in a)if(a.hasOwnProperty(y)){var m=this.body.nodes[y];m.vx=o.vx,m.vy=o.vy,m.setOptions({physics:!0}),delete this.clusteredNodes[y]}for(var b=[],_=0;_<o.edges.length;_++)b.push(o.edges[_]);for(var w=0;w<b.length;w++){for(var k=b[w],x=this._getConnectedId(k,e),O=this.clusteredNodes[x],M=0;M<k.clusteringEdgeReplacingIds.length;M++){var E=k.clusteringEdgeReplacingIds[M],S=this.body.edges[E];if(void 0!==S)if(void 0!==O){var D=this.body.nodes[O.clusterId];D.containedEdges[S.id]=S,delete d[S.id];var C=S.fromId,T=S.toId;S.toId==x?T=O.clusterId:C=O.clusterId,this._createClusteredEdge(C,T,S,D.clusterEdgeProperties,{hidden:!1,physics:!0})}else this._restoreEdge(S)}k.remove()}for(var P in d)d.hasOwnProperty(P)&&this._restoreEdge(d[P]);delete this.body.nodes[e],!0===i&&this.body.emitter.emit("_dataChanged")}},{key:"getNodesInCluster",value:function(e){var t=[];if(!0===this.isCluster(e)){var i=this.body.nodes[e].containedNodes;for(var o in i)i.hasOwnProperty(o)&&t.push(this.body.nodes[o].id)}return t}},{key:"findNode",value:function(e){for(var t=[],i=0,o=void 0;void 0!==this.clusteredNodes[e]&&i<100;){if(void 0===(o=this.body.nodes[e]))return[];t.push(o.id),e=this.clusteredNodes[e].clusterId,i++}return void 0===(o=this.body.nodes[e])?[]:(t.push(o.id),t.reverse(),t)}},{key:"updateClusteredNode",value:function(e,t){if(void 0===e)throw new Error("No clusteredNodeId supplied to updateClusteredNode.");if(void 0===t)throw new Error("No newOptions supplied to updateClusteredNode.");if(void 0===this.body.nodes[e])throw new Error("The clusteredNodeId supplied to updateClusteredNode does not exist.");this.body.nodes[e].setOptions(t),this.body.emitter.emit("_dataChanged")}},{key:"updateEdge",value:function(e,t){if(void 0===e)throw new Error("No startEdgeId supplied to updateEdge.");if(void 0===t)throw new Error("No newOptions supplied to updateEdge.");if(void 0===this.body.edges[e])throw new Error("The startEdgeId supplied to updateEdge does not exist.");for(var i=this.getClusteredEdges(e),o=0;o<i.length;o++){this.body.edges[i[o]].setOptions(t)}this.body.emitter.emit("_dataChanged")}},{key:"getClusteredEdges",value:function(e){for(var t=[],i=0;void 0!==e&&void 0!==this.body.edges[e]&&i<100;)t.push(this.body.edges[e].id),e=this.body.edges[e].edgeReplacedById,i++;return t.reverse(),t}},{key:"getBaseEdge",value:function(e){return this.getBaseEdges(e)[0]}},{key:"getBaseEdges",value:function(e){for(var t=[e],i=[],o=[],n=0;t.length>0&&n<100;){var s=t.pop();if(void 0!==s){var r=this.body.edges[s];if(void 0!==r){n++;var a=r.clusteringEdgeReplacingIds;if(void 0===a)o.push(s);else for(var d=0;d<a.length;++d){var h=a[d];-1===t.indexOf(a)&&-1===i.indexOf(a)&&t.push(h)}i.push(s)}}}return o}},{key:"_getConnectedId",value:function(e,t){return e.toId!=t?e.toId:(e.fromId,e.fromId)}},{key:"_getHubSize",value:function(){for(var e=0,t=0,i=0,o=0,n=0;n<this.body.nodeIndices.length;n++){var s=this.body.nodes[this.body.nodeIndices[n]];s.edges.length>o&&(o=s.edges.length),e+=s.edges.length,t+=Math.pow(s.edges.length,2),i+=1}e/=i,t/=i;var r=t-Math.pow(e,2),a=Math.sqrt(r),d=Math.floor(e+2*a);return d>o&&(d=o),d}},{key:"_createClusteredEdge",value:function(e,t,i,o,n){var s=f.cloneOptions(i,"edge");c.deepExtend(s,o),s.from=e,s.to=t,s.id="clusterEdge:"+c.randomUUID(),void 0!==n&&c.deepExtend(s,n);var r=this.body.functions.createEdge(s);return r.clusteringEdgeReplacingIds=[i.id],r.connect(),this.body.edges[r.id]=r,r}},{key:"_clusterEdges",value:function(e,t,i,o){if(t instanceof v){var n=t,s={};s[n.id]=n,t=s}if(e instanceof g){var r=e,a={};a[r.id]=r,e=a}if(void 0===i||null===i)throw new Error("_clusterEdges: parameter clusterNode required");void 0===o&&(o=i.clusterEdgeProperties),this._createClusterEdges(e,t,i,o);for(var d in t)if(t.hasOwnProperty(d)&&void 0!==this.body.edges[d]){var h=this.body.edges[d];this._backupEdgeOptions(h),h.setOptions({physics:!1})}for(var l in e)e.hasOwnProperty(l)&&(this.clusteredNodes[l]={clusterId:i.id,node:this.body.nodes[l]},this.body.nodes[l].setOptions({physics:!1}))}},{key:"_getClusterNodeForNode",value:function(e){if(void 0!==e){var t=this.clusteredNodes[e];if(void 0!==t){var i=t.clusterId;if(void 0!==i)return this.body.nodes[i]}}}},{key:"_filter",value:function(e,t){var i=[];return c.forEach(e,function(e){t(e)&&i.push(e)}),i}},{key:"_updateState",value:function(){var e=this,t=void 0,i=[],o={},n=function(t){c.forEach(e.body.nodes,function(e){!0===e.isCluster&&t(e)})};for(t in this.clusteredNodes)if(this.clusteredNodes.hasOwnProperty(t)){var r=this.body.nodes[t];void 0===r&&i.push(t)}n(function(e){for(var t=0;t<i.length;t++)delete e.containedNodes[i[t]]});for(var a=0;a<i.length;a++)delete this.clusteredNodes[i[a]];c.forEach(this.clusteredEdges,function(t){var i=e.body.edges[t];void 0!==i&&i.endPointsValid()||(o[t]=t)}),n(function(e){c.forEach(e.containedEdges,function(e,t){e.endPointsValid()||o[t]||(o[t]=t)})}),c.forEach(this.body.edges,function(t,i){var n=!0,s=t.clusteringEdgeReplacingIds;if(void 0!==s){var r=0;c.forEach(s,function(t){var i=e.body.edges[t];void 0!==i&&i.endPointsValid()&&(r+=1)}),n=r>0}t.endPointsValid()&&n||(o[i]=i)}),n(function(t){c.forEach(o,function(i){delete t.containedEdges[i],c.forEach(t.edges,function(n,s){if(n.id===i)return void(t.edges[s]=null);n.clusteringEdgeReplacingIds=e._filter(n.clusteringEdgeReplacingIds,function(e){return!o[e]})}),t.edges=e._filter(t.edges,function(e){return null!==e})})}),c.forEach(o,function(t){delete e.clusteredEdges[t]}),c.forEach(o,function(t){delete e.body.edges[t]});var d=(0,s.default)(this.body.edges);c.forEach(d,function(t){var i=e.body.edges[t],o=e._isClusteredNode(i.fromId)||e._isClusteredNode(i.toId);if(o!==e._isClusteredEdge(i.id)){if(!o)throw new Error("remove edge from clustering not implemented!");var n=e._getClusterNodeForNode(i.fromId);void 0!==n&&e._clusterEdges(e.body.nodes[i.fromId],i,n);var s=e._getClusterNodeForNode(i.toId);void 0!==s&&e._clusterEdges(e.body.nodes[i.toId],i,s)}});for(var h=!1,l=!0;l;)!function(){var t=[];n(function(e){var i=(0,s.default)(e.containedNodes).length,o=!0===e.options.allowSingleNodeCluster;(o&&i<1||!o&&i<2)&&t.push(e.id)});for(var i=0;i<t.length;++i)e.openCluster(t[i],{},!1);l=t.length>0,h=h||l}();h&&this._updateState()}},{key:"_isClusteredNode",value:function(e){return void 0!==this.clusteredNodes[e]}},{key:"_isClusteredEdge",value:function(e){return void 0!==this.clusteredEdges[e]}}]),e}();t.default=y},function(e,t,i){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var n=i(2),s=o(n),r=i(0),a=o(r),d=i(1),h=o(d),l=i(3),u=o(l),c=i(4),f=o(c),p=i(5),v=i(34).default,g=function(e){function t(e,i,o,n,r,d){(0,a.default)(this,t);var h=(0,u.default)(this,(t.__proto__||(0,s.default)(t)).call(this,e,i,o,n,r,d));return h.isCluster=!0,h.containedNodes={},h.containedEdges={},h}return(0,f.default)(t,e),(0,h.default)(t,[{key:"_openChildCluster",value:function(e){var t=this,i=this.body.nodes[e];if(void 0===this.containedNodes[e])throw new Error("node with id: "+e+" not in current cluster");if(!i.isCluster)throw new Error("node with id: "+e+" is not a cluster");delete this.containedNodes[e],p.forEach(i.edges,function(e){delete t.containedEdges[e.id]}),p.forEach(i.containedNodes,function(e,i){t.containedNodes[i]=e}),i.containedNodes={},p.forEach(i.containedEdges,function(e,i){t.containedEdges[i]=e}),i.containedEdges={},p.forEach(i.edges,function(e){p.forEach(t.edges,function(i){var o=i.clusteringEdgeReplacingIds.indexOf(e.id);-1!==o&&(p.forEach(e.clusteringEdgeReplacingIds,function(e){i.clusteringEdgeReplacingIds.push(e),t.body.edges[e].edgeReplacedById=i.id}),i.clusteringEdgeReplacingIds.splice(o,1))})}),i.edges=[]}}]),t}(v);t.default=g},function(e,t,i){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function n(){var e;void 0!==window&&(e=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame),window.requestAnimationFrame=void 0===e?function(e){e()}:e}Object.defineProperty(t,"__esModule",{value:!0});var s=i(0),r=o(s),a=i(1),d=o(a),h=i(5),l=function(){function e(t,i){(0,r.default)(this,e),n(),this.body=t,this.canvas=i,this.redrawRequested=!1,this.renderTimer=void 0,this.requiresTimeout=!0,this.renderingActive=!1,this.renderRequests=0,this.allowRedraw=!0,this.dragging=!1,this.zooming=!1,this.options={},this.defaultOptions={hideEdgesOnDrag:!1,hideEdgesOnZoom:!1,hideNodesOnDrag:!1},h.extend(this.options,this.defaultOptions),this._determineBrowserMethod(),this.bindEventListeners()}return(0,d.default)(e,[{key:"bindEventListeners",value:function(){var e=this;this.body.emitter.on("dragStart",function(){e.dragging=!0}),this.body.emitter.on("dragEnd",function(){e.dragging=!1}),this.body.emitter.on("zoom",function(){e.zooming=!0,window.clearTimeout(e.zoomTimeoutId),e.zoomTimeoutId=window.setTimeout(function(){e.zooming=!1,e._requestRedraw.bind(e)()},250)}),this.body.emitter.on("_resizeNodes",function(){e._resizeNodes()}),this.body.emitter.on("_redraw",function(){!1===e.renderingActive&&e._redraw()}),this.body.emitter.on("_blockRedraw",function(){e.allowRedraw=!1}),this.body.emitter.on("_allowRedraw",function(){e.allowRedraw=!0,e.redrawRequested=!1}),this.body.emitter.on("_requestRedraw",this._requestRedraw.bind(this)),this.body.emitter.on("_startRendering",function(){e.renderRequests+=1,e.renderingActive=!0,e._startRendering()}),this.body.emitter.on("_stopRendering",function(){e.renderRequests-=1,e.renderingActive=e.renderRequests>0,e.renderTimer=void 0}),this.body.emitter.on("destroy",function(){e.renderRequests=0,e.allowRedraw=!1,e.renderingActive=!1,!0===e.requiresTimeout?clearTimeout(e.renderTimer):window.cancelAnimationFrame(e.renderTimer),e.body.emitter.off()})}},{key:"setOptions",value:function(e){if(void 0!==e){var t=["hideEdgesOnDrag","hideEdgesOnZoom","hideNodesOnDrag"];h.selectiveDeepExtend(t,this.options,e)}}},{key:"_requestNextFrame",value:function(e,t){if("undefined"!=typeof window){var i=void 0,o=window;return!0===this.requiresTimeout?i=o.setTimeout(e,t):o.requestAnimationFrame&&(i=o.requestAnimationFrame(e)),i}}},{key:"_startRendering",value:function(){!0===this.renderingActive&&void 0===this.renderTimer&&(this.renderTimer=this._requestNextFrame(this._renderStep.bind(this),this.simulationInterval))}},{key:"_renderStep",value:function(){!0===this.renderingActive&&(this.renderTimer=void 0,!0===this.requiresTimeout&&this._startRendering(),this._redraw(),!1===this.requiresTimeout&&this._startRendering())}},{key:"redraw",value:function(){this.body.emitter.emit("setSize"),this._redraw()}},{key:"_requestRedraw",value:function(){var e=this;!0!==this.redrawRequested&&!1===this.renderingActive&&!0===this.allowRedraw&&(this.redrawRequested=!0,this._requestNextFrame(function(){e._redraw(!1)},0))}},{key:"_redraw",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(!0===this.allowRedraw){this.body.emitter.emit("initRedraw"),this.redrawRequested=!1,0!==this.canvas.frame.canvas.width&&0!==this.canvas.frame.canvas.height||this.canvas.setSize(),this.canvas.setTransform();var t=this.canvas.getContext(),i=this.canvas.frame.canvas.clientWidth,o=this.canvas.frame.canvas.clientHeight;if(t.clearRect(0,0,i,o),0===this.canvas.frame.clientWidth)return;t.save(),t.translate(this.body.view.translation.x,this.body.view.translation.y),t.scale(this.body.view.scale,this.body.view.scale),t.beginPath(),this.body.emitter.emit("beforeDrawing",t),t.closePath(),!1===e&&(!1===this.dragging||!0===this.dragging&&!1===this.options.hideEdgesOnDrag)&&(!1===this.zooming||!0===this.zooming&&!1===this.options.hideEdgesOnZoom)&&this._drawEdges(t),(!1===this.dragging||!0===this.dragging&&!1===this.options.hideNodesOnDrag)&&this._drawNodes(t,e),t.beginPath(),this.body.emitter.emit("afterDrawing",t),t.closePath(),t.restore(),!0===e&&t.clearRect(0,0,i,o)}}},{key:"_resizeNodes",value:function(){this.canvas.setTransform();var e=this.canvas.getContext();e.save(),e.translate(this.body.view.translation.x,this.body.view.translation.y),e.scale(this.body.view.scale,this.body.view.scale);var t=this.body.nodes,i=void 0;for(var o in t)t.hasOwnProperty(o)&&(i=t[o],i.resize(e),i.updateBoundingBox(e,i.selected));e.restore()}},{key:"_drawNodes",value:function(e){for(var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=this.body.nodes,o=this.body.nodeIndices,n=void 0,s=[],r=this.canvas.DOMtoCanvas({x:-20,y:-20}),a=this.canvas.DOMtoCanvas({x:this.canvas.frame.canvas.clientWidth+20,y:this.canvas.frame.canvas.clientHeight+20}),d={top:r.y,left:r.x,bottom:a.y,right:a.x},h=0;h<o.length;h++)n=i[o[h]],n.isSelected()?s.push(o[h]):!0===t?n.draw(e):!0===n.isBoundingBoxOverlappingWith(d)?n.draw(e):n.updateBoundingBox(e,n.selected);for(var l=0;l<s.length;l++)n=i[s[l]],n.draw(e)}},{key:"_drawEdges",value:function(e){for(var t=this.body.edges,i=this.body.edgeIndices,o=void 0,n=0;n<i.length;n++)o=t[i[n]],!0===o.connected&&o.draw(e)}},{key:"_determineBrowserMethod",value:function(){if("undefined"!=typeof window){var e=navigator.userAgent.toLowerCase();this.requiresTimeout=!1,-1!=e.indexOf("msie 9.0")?this.requiresTimeout=!0:-1!=e.indexOf("safari")&&e.indexOf("chrome")<=-1&&(this.requiresTimeout=!0)}else this.requiresTimeout=!0}}]),e}();t.default=l},function(e,t,i){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var n=i(0),s=o(n),r=i(1),a=o(r),d=i(24),h=i(36),l=i(5),u=function(){function e(t){(0,s.default)(this,e),this.body=t,this.pixelRatio=1,this.resizeTimer=void 0,this.resizeFunction=this._onResize.bind(this),this.cameraState={},this.initialized=!1,this.canvasViewCenter={},this.options={},this.defaultOptions={autoResize:!0,height:"100%",width:"100%"},l.extend(this.options,this.defaultOptions),this.bindEventListeners()}return(0,a.default)(e,[{key:"bindEventListeners",value:function(){var e=this;this.body.emitter.once("resize",function(t){0!==t.width&&(e.body.view.translation.x=.5*t.width),0!==t.height&&(e.body.view.translation.y=.5*t.height)}),this.body.emitter.on("setSize",this.setSize.bind(this)),this.body.emitter.on("destroy",function(){e.hammerFrame.destroy(),e.hammer.destroy(),e._cleanUp()})}},{key:"setOptions",value:function(e){var t=this;if(void 0!==e){var i=["width","height","autoResize"];l.selectiveDeepExtend(i,this.options,e)}!0===this.options.autoResize&&(this._cleanUp(),this.resizeTimer=setInterval(function(){!0===t.setSize()&&t.body.emitter.emit("_requestRedraw")},1e3),this.resizeFunction=this._onResize.bind(this),l.addEventListener(window,"resize",this.resizeFunction))}},{key:"_cleanUp",value:function(){void 0!==this.resizeTimer&&clearInterval(this.resizeTimer),l.removeEventListener(window,"resize",this.resizeFunction),this.resizeFunction=void 0}},{key:"_onResize",value:function(){this.setSize(),this.body.emitter.emit("_redraw")}},{key:"_getCameraState",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.pixelRatio;!0===this.initialized&&(this.cameraState.previousWidth=this.frame.canvas.width/e,this.cameraState.previousHeight=this.frame.canvas.height/e,this.cameraState.scale=this.body.view.scale,this.cameraState.position=this.DOMtoCanvas({x:.5*this.frame.canvas.width/e,y:.5*this.frame.canvas.height/e}))}},{key:"_setCameraState",value:function(){if(void 0!==this.cameraState.scale&&0!==this.frame.canvas.clientWidth&&0!==this.frame.canvas.clientHeight&&0!==this.pixelRatio&&this.cameraState.previousWidth>0){var e=this.frame.canvas.width/this.pixelRatio/this.cameraState.previousWidth,t=this.frame.canvas.height/this.pixelRatio/this.cameraState.previousHeight,i=this.cameraState.scale;1!=e&&1!=t?i=.5*this.cameraState.scale*(e+t):1!=e?i=this.cameraState.scale*e:1!=t&&(i=this.cameraState.scale*t),this.body.view.scale=i;var o=this.DOMtoCanvas({x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight}),n={x:o.x-this.cameraState.position.x,y:o.y-this.cameraState.position.y};this.body.view.translation.x+=n.x*this.body.view.scale,this.body.view.translation.y+=n.y*this.body.view.scale}}},{key:"_prepareValue",value:function(e){if("number"==typeof e)return e+"px";if("string"==typeof e){if(-1!==e.indexOf("%")||-1!==e.indexOf("px"))return e;if(-1===e.indexOf("%"))return e+"px"}throw new Error("Could not use the value supplied for width or height:"+e)}},{key:"_create",value:function(){for(;this.body.container.hasChildNodes();)this.body.container.removeChild(this.body.container.firstChild);if(this.frame=document.createElement("div"),this.frame.className="vis-network",this.frame.id="test",this.frame.style.position="relative",this.frame.style.overflow="hidden",this.frame.tabIndex=900,this.frame.canvas=document.createElement("canvas"),this.frame.canvas.style.position="relative",this.frame.canvas.id="canvasnetwork",this.frame.appendChild(this.frame.canvas),this.frame.canvas.getContext)this._setPixelRatio(),this.setTransform();else{var e=document.createElement("DIV");e.style.color="red",e.style.fontWeight="bold",e.style.padding="10px",e.innerHTML="Error: your browser does not support HTML canvas",this.frame.canvas.appendChild(e)}this.body.container.appendChild(this.frame),this.body.view.scale=1,this.body.view.translation={x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight},this._bindHammer()}},{key:"_bindHammer",value:function(){var e=this;void 0!==this.hammer&&this.hammer.destroy(),this.drag={},this.pinch={},this.hammer=new d(this.frame.canvas),this.hammer.get("pinch").set({enable:!0}),this.hammer.get("pan").set({threshold:5,direction:d.DIRECTION_ALL}),h.onTouch(this.hammer,function(t){e.body.eventListeners.onTouch(t)}),this.hammer.on("tap",function(t){e.body.eventListeners.onTap(t)}),this.hammer.on("doubletap",function(t){e.body.eventListeners.onDoubleTap(t)}),this.hammer.on("press",function(t){e.body.eventListeners.onHold(t)}),this.hammer.on("panstart",function(t){e.body.eventListeners.onDragStart(t)}),this.hammer.on("panmove",function(t){e.body.eventListeners.onDrag(t)}),this.hammer.on("panend",function(t){e.body.eventListeners.onDragEnd(t)}),this.hammer.on("pinch",function(t){e.body.eventListeners.onPinch(t)}),this.frame.canvas.addEventListener("mousewheel",function(t){e.body.eventListeners.onMouseWheel(t)}),this.frame.canvas.addEventListener("DOMMouseScroll",function(t){e.body.eventListeners.onMouseWheel(t)}),this.frame.canvas.addEventListener("mousemove",function(t){e.body.eventListeners.onMouseMove(t)}),this.frame.canvas.addEventListener("contextmenu",function(t){e.body.eventListeners.onContext(t)}),this.hammerFrame=new d(this.frame),h.onRelease(this.hammerFrame,function(t){e.body.eventListeners.onRelease(t)})}},{key:"setSize",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.options.width,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.options.height;e=this._prepareValue(e),t=this._prepareValue(t);var i=!1,o=this.frame.canvas.width,n=this.frame.canvas.height,s=this.pixelRatio;if(this._setPixelRatio(),e!=this.options.width||t!=this.options.height||this.frame.style.width!=e||this.frame.style.height!=t)this._getCameraState(s),this.frame.style.width=e,this.frame.style.height=t,this.frame.canvas.style.width="100%",this.frame.canvas.style.height="100%",this.frame.canvas.width=Math.round(this.frame.canvas.clientWidth*this.pixelRatio),this.frame.canvas.height=Math.round(this.frame.canvas.clientHeight*this.pixelRatio),this.options.width=e,this.options.height=t,this.canvasViewCenter={x:.5*this.frame.clientWidth,y:.5*this.frame.clientHeight},i=!0;else{var r=Math.round(this.frame.canvas.clientWidth*this.pixelRatio),a=Math.round(this.frame.canvas.clientHeight*this.pixelRatio);this.frame.canvas.width===r&&this.frame.canvas.height===a||this._getCameraState(s),this.frame.canvas.width!==r&&(this.frame.canvas.width=r,i=!0),this.frame.canvas.height!==a&&(this.frame.canvas.height=a,i=!0)}return!0===i&&(this.body.emitter.emit("resize",{width:Math.round(this.frame.canvas.width/this.pixelRatio),height:Math.round(this.frame.canvas.height/this.pixelRatio),oldWidth:Math.round(o/this.pixelRatio),oldHeight:Math.round(n/this.pixelRatio)}),this._setCameraState()),this.initialized=!0,i}},{key:"getContext",value:function(){return this.frame.canvas.getContext("2d")}},{key:"_determinePixelRatio",value:function(){var e=this.getContext();if(void 0===e)throw new Error("Could not get canvax context");var t=1;return"undefined"!=typeof window&&(t=window.devicePixelRatio||1),t/(e.webkitBackingStorePixelRatio||e.mozBackingStorePixelRatio||e.msBackingStorePixelRatio||e.oBackingStorePixelRatio||e.backingStorePixelRatio||1)}},{key:"_setPixelRatio",value:function(){this.pixelRatio=this._determinePixelRatio()}},{key:"setTransform",value:function(){var e=this.getContext();if(void 0===e)throw new Error("Could not get canvax context");e.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0)}},{key:"_XconvertDOMtoCanvas",value:function(e){return(e-this.body.view.translation.x)/this.body.view.scale}},{key:"_XconvertCanvasToDOM",value:function(e){return e*this.body.view.scale+this.body.view.translation.x}},{key:"_YconvertDOMtoCanvas",value:function(e){return(e-this.body.view.translation.y)/this.body.view.scale}},{key:"_YconvertCanvasToDOM",value:function(e){return e*this.body.view.scale+this.body.view.translation.y}},{key:"canvasToDOM",value:function(e){return{x:this._XconvertCanvasToDOM(e.x),y:this._YconvertCanvasToDOM(e.y)}}},{key:"DOMtoCanvas",value:function(e){return{x:this._XconvertDOMtoCanvas(e.x),y:this._YconvertDOMtoCanvas(e.y)}}}]),e}();t.default=u},function(e,t,i){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var n=i(78),s=o(n),r=i(0),a=o(r),d=i(1),h=o(d),l=i(5),u=i(57).default,c=function(){function e(t,i){var o=this;(0,a.default)(this,e),this.body=t,this.canvas=i,this.animationSpeed=1/this.renderRefreshRate,this.animationEasingFunction="easeInOutQuint",this.easingTime=0,this.sourceScale=0,this.targetScale=0,this.sourceTranslation=0,this.targetTranslation=0,this.lockedOnNodeId=void 0,this.lockedOnNodeOffset=void 0,this.touchTime=0,this.viewFunction=void 0,this.body.emitter.on("fit",this.fit.bind(this)),this.body.emitter.on("animationFinished",function(){o.body.emitter.emit("_stopRendering")}),this.body.emitter.on("unlockNode",this.releaseNode.bind(this))}return(0,h.default)(e,[{key:"setOptions",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.options=e}},{key:"fit",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{nodes:[]},t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=void 0,o=void 0;if(e=(0,s.default)({},e),void 0!==e.nodes&&0!==e.nodes.length||(e.nodes=this.body.nodeIndices),!0===t){var n=0;for(var r in this.body.nodes)if(this.body.nodes.hasOwnProperty(r)){var a=this.body.nodes[r];!0===a.predefinedPosition&&(n+=1)}if(n>.5*this.body.nodeIndices.length)return void this.fit(e,!1);i=u.getRange(this.body.nodes,e.nodes);o=12.662/(this.body.nodeIndices.length+7.4147)+.0964822;o*=Math.min(this.canvas.frame.canvas.clientWidth/600,this.canvas.frame.canvas.clientHeight/600)}else{this.body.emitter.emit("_resizeNodes"),i=u.getRange(this.body.nodes,e.nodes);var d=1.1*Math.abs(i.maxX-i.minX),h=1.1*Math.abs(i.maxY-i.minY),l=this.canvas.frame.canvas.clientWidth/d,c=this.canvas.frame.canvas.clientHeight/h;o=l<=c?l:c}o>1?o=1:0===o&&(o=1);var f=u.findCenter(i),p={position:f,scale:o,animation:e.animation};this.moveTo(p)}},{key:"focus",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(void 0!==this.body.nodes[e]){var i={x:this.body.nodes[e].x,y:this.body.nodes[e].y};t.position=i,t.lockedOnNode=e,this.moveTo(t)}else console.log("Node: "+e+" cannot be found.")}},{key:"moveTo",value:function(e){if(void 0===e)return void(e={});void 0===e.offset&&(e.offset={x:0,y:0}),void 0===e.offset.x&&(e.offset.x=0),void 0===e.offset.y&&(e.offset.y=0),void 0===e.scale&&(e.scale=this.body.view.scale),void 0===e.position&&(e.position=this.getViewPosition()),void 0===e.animation&&(e.animation={duration:0}),!1===e.animation&&(e.animation={duration:0}),!0===e.animation&&(e.animation={}),void 0===e.animation.duration&&(e.animation.duration=1e3),void 0===e.animation.easingFunction&&(e.animation.easingFunction="easeInOutQuad"),this.animateView(e)}},{key:"animateView",value:function(e){if(void 0!==e){this.animationEasingFunction=e.animation.easingFunction,this.releaseNode(),!0===e.locked&&(this.lockedOnNodeId=e.lockedOnNode,this.lockedOnNodeOffset=e.offset),0!=this.easingTime&&this._transitionRedraw(!0),this.sourceScale=this.body.view.scale,this.sourceTranslation=this.body.view.translation,this.targetScale=e.scale,this.body.view.scale=this.targetScale;var t=this.canvas.DOMtoCanvas({x:.5*this.canvas.frame.canvas.clientWidth,y:.5*this.canvas.frame.canvas.clientHeight}),i={x:t.x-e.position.x,y:t.y-e.position.y};this.targetTranslation={x:this.sourceTranslation.x+i.x*this.targetScale+e.offset.x,y:this.sourceTranslation.y+i.y*this.targetScale+e.offset.y},0===e.animation.duration?void 0!=this.lockedOnNodeId?(this.viewFunction=this._lockedRedraw.bind(this),this.body.emitter.on("initRedraw",this.viewFunction)):(this.body.view.scale=this.targetScale,this.body.view.translation=this.targetTranslation,this.body.emitter.emit("_requestRedraw")):(this.animationSpeed=1/(60*e.animation.duration*.001)||1/60,this.animationEasingFunction=e.animation.easingFunction,this.viewFunction=this._transitionRedraw.bind(this),this.body.emitter.on("initRedraw",this.viewFunction),this.body.emitter.emit("_startRendering"))}}},{key:"_lockedRedraw",value:function(){var e={x:this.body.nodes[this.lockedOnNodeId].x,y:this.body.nodes[this.lockedOnNodeId].y},t=this.canvas.DOMtoCanvas({x:.5*this.canvas.frame.canvas.clientWidth,y:.5*this.canvas.frame.canvas.clientHeight}),i={x:t.x-e.x,y:t.y-e.y},o=this.body.view.translation,n={x:o.x+i.x*this.body.view.scale+this.lockedOnNodeOffset.x,y:o.y+i.y*this.body.view.scale+this.lockedOnNodeOffset.y};this.body.view.translation=n}},{key:"releaseNode",value:function(){void 0!==this.lockedOnNodeId&&void 0!==this.viewFunction&&(this.body.emitter.off("initRedraw",this.viewFunction),this.lockedOnNodeId=void 0,this.lockedOnNodeOffset=void 0)}},{key:"_transitionRedraw",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.easingTime+=this.animationSpeed,this.easingTime=!0===e?1:this.easingTime;var t=l.easingFunctions[this.animationEasingFunction](this.easingTime);this.body.view.scale=this.sourceScale+(this.targetScale-this.sourceScale)*t,this.body.view.translation={x:this.sourceTranslation.x+(this.targetTranslation.x-this.sourceTranslation.x)*t,y:this.sourceTranslation.y+(this.targetTranslation.y-this.sourceTranslation.y)*t},this.easingTime>=1&&(this.body.emitter.off("initRedraw",this.viewFunction),this.easingTime=0,void 0!=this.lockedOnNodeId&&(this.viewFunction=this._lockedRedraw.bind(this),this.body.emitter.on("initRedraw",this.viewFunction)),this.body.emitter.emit("animationFinished"))}},{key:"getScale",value:function(){return this.body.view.scale}},{key:"getViewPosition",value:function(){return this.canvas.DOMtoCanvas({x:.5*this.canvas.frame.canvas.clientWidth,y:.5*this.canvas.frame.canvas.clientHeight})}}]),e}();t.default=c},function(e,t,i){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var n=i(0),s=o(n),r=i(1),a=o(r),d=i(5),h=i(183).default,l=i(184).default,u=function(){function e(t,i,o){(0,s.default)(this,e),this.body=t,this.canvas=i,this.selectionHandler=o,this.navigationHandler=new h(t,i),this.body.eventListeners.onTap=this.onTap.bind(this),this.body.eventListeners.onTouch=this.onTouch.bind(this),this.body.eventListeners.onDoubleTap=this.onDoubleTap.bind(this),this.body.eventListeners.onHold=this.onHold.bind(this),this.body.eventListeners.onDragStart=this.onDragStart.bind(this),this.body.eventListeners.onDrag=this.onDrag.bind(this),this.body.eventListeners.onDragEnd=this.onDragEnd.bind(this),this.body.eventListeners.onMouseWheel=this.onMouseWheel.bind(this),this.body.eventListeners.onPinch=this.onPinch.bind(this),this.body.eventListeners.onMouseMove=this.onMouseMove.bind(this),this.body.eventListeners.onRelease=this.onRelease.bind(this),this.body.eventListeners.onContext=this.onContext.bind(this),this.touchTime=0,this.drag={},this.pinch={},this.popup=void 0,this.popupObj=void 0,this.popupTimer=void 0,this.body.functions.getPointer=this.getPointer.bind(this),this.options={},this.defaultOptions={dragNodes:!0,dragView:!0,hover:!1,keyboard:{enabled:!1,speed:{x:10,y:10,zoom:.02},bindToWindow:!0},navigationButtons:!1,tooltipDelay:300,zoomView:!0,zoomSpeed:1},d.extend(this.options,this.defaultOptions),this.bindEventListeners()}return(0,a.default)(e,[{key:"bindEventListeners",value:function(){var e=this;this.body.emitter.on("destroy",function(){clearTimeout(e.popupTimer),delete e.body.functions.getPointer})}},{key:"setOptions",value:function(e){if(void 0!==e){var t=["hideEdgesOnDrag","hideEdgesOnZoom","hideNodesOnDrag","keyboard","multiselect","selectable","selectConnectedEdges"];d.selectiveNotDeepExtend(t,this.options,e),d.mergeOptions(this.options,e,"keyboard"),e.tooltip&&(d.extend(this.options.tooltip,e.tooltip),e.tooltip.color&&(this.options.tooltip.color=d.parseColor(e.tooltip.color)))}this.navigationHandler.setOptions(this.options)}},{key:"getPointer",value:function(e){return{x:e.x-d.getAbsoluteLeft(this.canvas.frame.canvas),y:e.y-d.getAbsoluteTop(this.canvas.frame.canvas)}}},{key:"onTouch",value:function(e){(new Date).valueOf()-this.touchTime>50&&(this.drag.pointer=this.getPointer(e.center),this.drag.pinched=!1,this.pinch.scale=this.body.view.scale,this.touchTime=(new Date).valueOf())}},{key:"onTap",value:function(e){var t=this.getPointer(e.center),i=this.selectionHandler.options.multiselect&&(e.changedPointers[0].ctrlKey||e.changedPointers[0].metaKey);this.checkSelectionChanges(t,e,i),this.selectionHandler._generateClickEvent("click",e,t)}},{key:"onDoubleTap",value:function(e){var t=this.getPointer(e.center);this.selectionHandler._generateClickEvent("doubleClick",e,t)}},{key:"onHold",value:function(e){var t=this.getPointer(e.center),i=this.selectionHandler.options.multiselect;this.checkSelectionChanges(t,e,i),this.selectionHandler._generateClickEvent("click",e,t),this.selectionHandler._generateClickEvent("hold",e,t)}},{key:"onRelease",value:function(e){if((new Date).valueOf()-this.touchTime>10){var t=this.getPointer(e.center);this.selectionHandler._generateClickEvent("release",e,t),this.touchTime=(new Date).valueOf()}}},{key:"onContext",value:function(e){var t=this.getPointer({x:e.clientX,y:e.clientY});this.selectionHandler._generateClickEvent("oncontext",e,t)}},{key:"checkSelectionChanges",value:function(e,t){var i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o=this.selectionHandler.getSelection(),n=!1;n=!0===i?this.selectionHandler.selectAdditionalOnPoint(e):this.selectionHandler.selectOnPoint(e);var s=this.selectionHandler.getSelection(),r=this._determineDifference(o,s),a=this._determineDifference(s,o);r.edges.length>0&&(this.selectionHandler._generateClickEvent("deselectEdge",t,e,o),n=!0),r.nodes.length>0&&(this.selectionHandler._generateClickEvent("deselectNode",t,e,o),n=!0),a.nodes.length>0&&(this.selectionHandler._generateClickEvent("selectNode",t,e),n=!0),a.edges.length>0&&(this.selectionHandler._generateClickEvent("selectEdge",t,e),n=!0),!0===n&&this.selectionHandler._generateClickEvent("select",t,e)}},{key:"_determineDifference",value:function(e,t){var i=function(e,t){for(var i=[],o=0;o<e.length;o++){var n=e[o];-1===t.indexOf(n)&&i.push(n)}return i};return{nodes:i(e.nodes,t.nodes),edges:i(e.edges,t.edges)}}},{key:"onDragStart",value:function(e){void 0===this.drag.pointer&&this.onTouch(e);var t=this.selectionHandler.getNodeAt(this.drag.pointer);if(this.drag.dragging=!0,this.drag.selection=[],this.drag.translation=d.extend({},this.body.view.translation),this.drag.nodeId=void 0,void 0!==t&&!0===this.options.dragNodes){this.drag.nodeId=t.id,!1===t.isSelected()&&(this.selectionHandler.unselectAll(),this.selectionHandler.selectObject(t)),this.selectionHandler._generateClickEvent("dragStart",e,this.drag.pointer);var i=this.selectionHandler.selectionObj.nodes;for(var o in i)if(i.hasOwnProperty(o)){var n=i[o],s={id:n.id,node:n,x:n.x,y:n.y,xFixed:n.options.fixed.x,yFixed:n.options.fixed.y};n.options.fixed.x=!0,n.options.fixed.y=!0,this.drag.selection.push(s)}}else this.selectionHandler._generateClickEvent("dragStart",e,this.drag.pointer,void 0,!0)}},{key:"onDrag",value:function(e){var t=this;if(!0!==this.drag.pinched){this.body.emitter.emit("unlockNode");var i=this.getPointer(e.center),o=this.drag.selection;if(o&&o.length&&!0===this.options.dragNodes){this.selectionHandler._generateClickEvent("dragging",e,i);var n=i.x-this.drag.pointer.x,s=i.y-this.drag.pointer.y;o.forEach(function(e){var i=e.node;!1===e.xFixed&&(i.x=t.canvas._XconvertDOMtoCanvas(t.canvas._XconvertCanvasToDOM(e.x)+n)),!1===e.yFixed&&(i.y=t.canvas._YconvertDOMtoCanvas(t.canvas._YconvertCanvasToDOM(e.y)+s))}),this.body.emitter.emit("startSimulation")}else if(!0===this.options.dragView){if(this.selectionHandler._generateClickEvent("dragging",e,i,void 0,!0),void 0===this.drag.pointer)return void this.onDragStart(e);var r=i.x-this.drag.pointer.x,a=i.y-this.drag.pointer.y;this.body.view.translation={x:this.drag.translation.x+r,y:this.drag.translation.y+a},this.body.emitter.emit("_requestRedraw")}}}},{key:"onDragEnd",value:function(e){this.drag.dragging=!1;var t=this.drag.selection;t&&t.length?(t.forEach(function(e){e.node.options.fixed.x=e.xFixed,e.node.options.fixed.y=e.yFixed}),this.selectionHandler._generateClickEvent("dragEnd",e,this.getPointer(e.center)),this.body.emitter.emit("startSimulation")):(this.selectionHandler._generateClickEvent("dragEnd",e,this.getPointer(e.center),void 0,!0),this.body.emitter.emit("_requestRedraw"))}},{key:"onPinch",value:function(e){var t=this.getPointer(e.center);this.drag.pinched=!0,void 0===this.pinch.scale&&(this.pinch.scale=1);var i=this.pinch.scale*e.scale;this.zoom(i,t)}},{key:"zoom",value:function(e,t){if(!0===this.options.zoomView){var i=this.body.view.scale;e<1e-5&&(e=1e-5),e>10&&(e=10);var o=void 0;void 0!==this.drag&&!0===this.drag.dragging&&(o=this.canvas.DOMtoCanvas(this.drag.pointer));var n=this.body.view.translation,s=e/i,r=(1-s)*t.x+n.x*s,a=(1-s)*t.y+n.y*s;if(this.body.view.scale=e,this.body.view.translation={x:r,y:a},void 0!=o){var d=this.canvas.canvasToDOM(o);this.drag.pointer.x=d.x,this.drag.pointer.y=d.y}this.body.emitter.emit("_requestRedraw"),i<e?this.body.emitter.emit("zoom",{direction:"+",scale:this.body.view.scale,pointer:t}):this.body.emitter.emit("zoom",{direction:"-",scale:this.body.view.scale,pointer:t})}}},{key:"onMouseWheel",value:function(e){if(!0===this.options.zoomView){var t=0;if(e.wheelDelta?t=e.wheelDelta/120:e.detail&&(t=-e.detail/3),0!==t){var i=this.body.view.scale,o=t*(this.options.zoomSpeed/10);t<0&&(o/=1-o),i*=1+o;var n=this.getPointer({x:e.clientX,y:e.clientY});this.zoom(i,n)}e.preventDefault()}}},{key:"onMouseMove",value:function(e){var t=this,i=this.getPointer({x:e.clientX,y:e.clientY}),o=!1;void 0!==this.popup&&(!1===this.popup.hidden&&this._checkHidePopup(i),!1===this.popup.hidden&&(o=!0,this.popup.setPosition(i.x+3,i.y-5),this.popup.show())),!1===this.options.keyboard.bindToWindow&&!0===this.options.keyboard.enabled&&this.canvas.frame.focus(),!1===o&&(void 0!==this.popupTimer&&(clearInterval(this.popupTimer),this.popupTimer=void 0),this.drag.dragging||(this.popupTimer=setTimeout(function(){return t._checkShowPopup(i)},this.options.tooltipDelay))),!0===this.options.hover&&this.selectionHandler.hoverObject(e,i)}},{key:"_checkShowPopup",value:function(e){var t=this.canvas._XconvertDOMtoCanvas(e.x),i=this.canvas._YconvertDOMtoCanvas(e.y),o={left:t,top:i,right:t,bottom:i},n=void 0===this.popupObj?void 0:this.popupObj.id,s=!1,r="node";if(void 0===this.popupObj){for(var a=this.body.nodeIndices,d=this.body.nodes,h=void 0,u=[],c=0;c<a.length;c++)h=d[a[c]],!0===h.isOverlappingWith(o)&&(s=!0,void 0!==h.getTitle()&&u.push(a[c]));u.length>0&&(this.popupObj=d[u[u.length-1]],s=!0)}if(void 0===this.popupObj&&!1===s){for(var f=this.body.edgeIndices,p=this.body.edges,v=void 0,g=[],y=0;y<f.length;y++)v=p[f[y]],!0===v.isOverlappingWith(o)&&!0===v.connected&&void 0!==v.getTitle()&&g.push(f[y]);g.length>0&&(this.popupObj=p[g[g.length-1]],r="edge")}void 0!==this.popupObj?this.popupObj.id!==n&&(void 0===this.popup&&(this.popup=new l(this.canvas.frame)),this.popup.popupTargetType=r,this.popup.popupTargetId=this.popupObj.id,this.popup.setPosition(e.x+3,e.y-5),this.popup.setText(this.popupObj.getTitle()),this.popup.show(),this.body.emitter.emit("showPopup",this.popupObj.id)):void 0!==this.popup&&(this.popup.hide(),this.body.emitter.emit("hidePopup"))}},{key:"_checkHidePopup",value:function(e){var t=this.selectionHandler._pointerToPositionObject(e),i=!1;if("node"===this.popup.popupTargetType){if(void 0!==this.body.nodes[this.popup.popupTargetId]&&!0===(i=this.body.nodes[this.popup.popupTargetId].isOverlappingWith(t))){var o=this.selectionHandler.getNodeAt(e);i=void 0!==o&&o.id===this.popup.popupTargetId}}else void 0===this.selectionHandler.getNodeAt(e)&&void 0!==this.body.edges[this.popup.popupTargetId]&&(i=this.body.edges[this.popup.popupTargetId].isOverlappingWith(t));!1===i&&(this.popupObj=void 0,this.popup.hide(),this.body.emitter.emit("hidePopup"))}}]),e}();t.default=u},function(e,t,i){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var n=i(0),s=o(n),r=i(1),a=o(r),d=i(24),h=i(36),l=i(52),u=function(){function e(t,i){var o=this;(0,s.default)(this,e),this.body=t,this.canvas=i,this.iconsCreated=!1,this.navigationHammers=[],this.boundFunctions={},this.touchTime=0,this.activated=!1,this.body.emitter.on("activate",function(){o.activated=!0,o.configureKeyboardBindings()}),this.body.emitter.on("deactivate",function(){o.activated=!1,o.configureKeyboardBindings()}),this.body.emitter.on("destroy",function(){void 0!==o.keycharm&&o.keycharm.destroy()}),this.options={}}return(0,a.default)(e,[{key:"setOptions",value:function(e){void 0!==e&&(this.options=e,this.create())}},{key:"create",value:function(){!0===this.options.navigationButtons?!1===this.iconsCreated&&this.loadNavigationElements():!0===this.iconsCreated&&this.cleanNavigation(),this.configureKeyboardBindings()}},{key:"cleanNavigation",value:function(){if(0!=this.navigationHammers.length){for(var e=0;e<this.navigationHammers.length;e++)this.navigationHammers[e].destroy();this.navigationHammers=[]}this.navigationDOM&&this.navigationDOM.wrapper&&this.navigationDOM.wrapper.parentNode&&this.navigationDOM.wrapper.parentNode.removeChild(this.navigationDOM.wrapper),this.iconsCreated=!1}},{key:"loadNavigationElements",value:function(){var e=this;this.cleanNavigation(),this.navigationDOM={};var t=["up","down","left","right","zoomIn","zoomOut","zoomExtends"],i=["_moveUp","_moveDown","_moveLeft","_moveRight","_zoomIn","_zoomOut","_fit"];this.navigationDOM.wrapper=document.createElement("div"),this.navigationDOM.wrapper.className="vis-navigation",this.canvas.frame.appendChild(this.navigationDOM.wrapper);for(var o=0;o<t.length;o++){this.navigationDOM[t[o]]=document.createElement("div"),this.navigationDOM[t[o]].className="vis-button vis-"+t[o],this.navigationDOM.wrapper.appendChild(this.navigationDOM[t[o]]);var n=new d(this.navigationDOM[t[o]]);"_fit"===i[o]?h.onTouch(n,this._fit.bind(this)):h.onTouch(n,this.bindToRedraw.bind(this,i[o])),this.navigationHammers.push(n)}var s=new d(this.canvas.frame);h.onRelease(s,function(){e._stopMovement()}),this.navigationHammers.push(s),this.iconsCreated=!0}},{key:"bindToRedraw",value:function(e){void 0===this.boundFunctions[e]&&(this.boundFunctions[e]=this[e].bind(this),this.body.emitter.on("initRedraw",this.boundFunctions[e]),this.body.emitter.emit("_startRendering"))}},{key:"unbindFromRedraw",value:function(e){void 0!==this.boundFunctions[e]&&(this.body.emitter.off("initRedraw",this.boundFunctions[e]),this.body.emitter.emit("_stopRendering"),delete this.boundFunctions[e])}},{key:"_fit",value:function(){(new Date).valueOf()-this.touchTime>700&&(this.body.emitter.emit("fit",{duration:700}),this.touchTime=(new Date).valueOf())}},{key:"_stopMovement",value:function(){for(var e in this.boundFunctions)this.boundFunctions.hasOwnProperty(e)&&(this.body.emitter.off("initRedraw",this.boundFunctions[e]),this.body.emitter.emit("_stopRendering"));this.boundFunctions={}}},{key:"_moveUp",value:function(){this.body.view.translation.y+=this.options.keyboard.speed.y}},{key:"_moveDown",value:function(){this.body.view.translation.y-=this.options.keyboard.speed.y}},{key:"_moveLeft",value:function(){this.body.view.translation.x+=this.options.keyboard.speed.x}},{key:"_moveRight",value:function(){this.body.view.translation.x-=this.options.keyboard.speed.x}},{key:"_zoomIn",value:function(){var e=this.body.view.scale,t=this.body.view.scale*(1+this.options.keyboard.speed.zoom),i=this.body.view.translation,o=t/e,n=(1-o)*this.canvas.canvasViewCenter.x+i.x*o,s=(1-o)*this.canvas.canvasViewCenter.y+i.y*o;this.body.view.scale=t,this.body.view.translation={x:n,y:s},this.body.emitter.emit("zoom",{direction:"+",scale:this.body.view.scale,pointer:null})}},{key:"_zoomOut",value:function(){var e=this.body.view.scale,t=this.body.view.scale/(1+this.options.keyboard.speed.zoom),i=this.body.view.translation,o=t/e,n=(1-o)*this.canvas.canvasViewCenter.x+i.x*o,s=(1-o)*this.canvas.canvasViewCenter.y+i.y*o;this.body.view.scale=t,this.body.view.translation={x:n,y:s},this.body.emitter.emit("zoom",{direction:"-",scale:this.body.view.scale,pointer:null})}},{key:"configureKeyboardBindings",value:function(){var e=this;void 0!==this.keycharm&&this.keycharm.destroy(),!0===this.options.keyboard.enabled&&(!0===this.options.keyboard.bindToWindow?this.keycharm=l({container:window,preventDefault:!0}):this.keycharm=l({container:this.canvas.frame,preventDefault:!0}),this.keycharm.reset(),!0===this.activated&&(this.keycharm.bind("up",function(){e.bindToRedraw("_moveUp")},"keydown"),this.keycharm.bind("down",function(){e.bindToRedraw("_moveDown")},"keydown"),this.keycharm.bind("left",function(){e.bindToRedraw("_moveLeft")},"keydown"),this.keycharm.bind("right",function(){e.bindToRedraw("_moveRight")},"keydown"),this.keycharm.bind("=",function(){e.bindToRedraw("_zoomIn")},"keydown"),this.keycharm.bind("num+",function(){e.bindToRedraw("_zoomIn")},"keydown"),this.keycharm.bind("num-",function(){e.bindToRedraw("_zoomOut")},"keydown"),this.keycharm.bind("-",function(){e.bindToRedraw("_zoomOut")},"keydown"),this.keycharm.bind("[",function(){e.bindToRedraw("_zoomOut")},"keydown"),this.keycharm.bind("]",function(){e.bindToRedraw("_zoomIn")},"keydown"),this.keycharm.bind("pageup",function(){e.bindToRedraw("_zoomIn")},"keydown"),this.keycharm.bind("pagedown",function(){e.bindToRedraw("_zoomOut")},"keydown"),this.keycharm.bind("up",function(){e.unbindFromRedraw("_moveUp")},"keyup"),this.keycharm.bind("down",function(){e.unbindFromRedraw("_moveDown")},"keyup"),this.keycharm.bind("left",function(){e.unbindFromRedraw("_moveLeft")},"keyup"),this.keycharm.bind("right",function(){e.unbindFromRedraw("_moveRight")},"keyup"),this.keycharm.bind("=",function(){e.unbindFromRedraw("_zoomIn")},"keyup"),this.keycharm.bind("num+",function(){e.unbindFromRedraw("_zoomIn")},"keyup"),this.keycharm.bind("num-",function(){e.unbindFromRedraw("_zoomOut")},"keyup"),this.keycharm.bind("-",function(){e.unbindFromRedraw("_zoomOut")},"keyup"),this.keycharm.bind("[",function(){e.unbindFromRedraw("_zoomOut")},"keyup"),this.keycharm.bind("]",function(){e.unbindFromRedraw("_zoomIn")},"keyup"),this.keycharm.bind("pageup",function(){e.unbindFromRedraw("_zoomIn")},"keyup"),this.keycharm.bind("pagedown",function(){e.unbindFromRedraw("_zoomOut")},"keyup")))}}]),e}();t.default=u},function(e,t,i){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var n=i(0),s=o(n),r=i(1),a=o(r),d=function(){function e(t,i){(0,s.default)(this,e),this.container=t,this.overflowMethod=i||"cap",this.x=0,this.y=0,this.padding=5,this.hidden=!1,this.frame=document.createElement("div"),this.frame.className="vis-tooltip",this.container.appendChild(this.frame)}return(0,a.default)(e,[{key:"setPosition",value:function(e,t){this.x=parseInt(e),this.y=parseInt(t)}},{key:"setText",value:function(e){e instanceof Element?(this.frame.innerHTML="",this.frame.appendChild(e)):this.frame.innerHTML=e}},{key:"show",value:function(e){if(void 0===e&&(e=!0),!0===e){var t=this.frame.clientHeight,i=this.frame.clientWidth,o=this.frame.parentNode.clientHeight,n=this.frame.parentNode.clientWidth,s=0,r=0;if("flip"==this.overflowMethod){var a=!1,d=!0;this.y-t<this.padding&&(d=!1),this.x+i>n-this.padding&&(a=!0),s=a?this.x-i:this.x,r=d?this.y-t:this.y}else r=this.y-t,r+t+this.padding>o&&(r=o-t-this.padding),r<this.padding&&(r=this.padding),s=this.x,s+i+this.padding>n&&(s=n-i-this.padding),s<this.padding&&(s=this.padding);this.frame.style.left=s+"px",this.frame.style.top=r+"px",this.frame.style.visibility="visible",this.hidden=!1}else this.hide()}},{key:"hide",value:function(){this.hidden=!0,this.frame.style.left="0",this.frame.style.top="0",this.frame.style.visibility="hidden"}},{key:"destroy",value:function(){this.frame.parentNode.removeChild(this.frame)}}]),e}();t.default=d},function(e,t,i){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var n=i(9),s=o(n),r=i(0),a=o(r),d=i(1),h=o(d),l=i(34).default,u=i(55).default,c=i(5),f=function(){function e(t,i){var o=this;(0,a.default)(this,e),this.body=t,this.canvas=i,this.selectionObj={nodes:[],edges:[]},this.hoverObj={nodes:{},edges:{}},this.options={},this.defaultOptions={multiselect:!1,selectable:!0,selectConnectedEdges:!0,hoverConnectedEdges:!0},c.extend(this.options,this.defaultOptions),this.body.emitter.on("_dataChanged",function(){o.updateSelection()})}return(0,h.default)(e,[{key:"setOptions",value:function(e){if(void 0!==e){var t=["multiselect","hoverConnectedEdges","selectable","selectConnectedEdges"];c.selectiveDeepExtend(t,this.options,e)}}},{key:"selectOnPoint",value:function(e){var t=!1;if(!0===this.options.selectable){var i=this.getNodeAt(e)||this.getEdgeAt(e);this.unselectAll(),void 0!==i&&(t=this.selectObject(i)),this.body.emitter.emit("_requestRedraw")}return t}},{key:"selectAdditionalOnPoint",value:function(e){var t=!1;if(!0===this.options.selectable){var i=this.getNodeAt(e)||this.getEdgeAt(e);void 0!==i&&(t=!0,!0===i.isSelected()?this.deselectObject(i):this.selectObject(i),this.body.emitter.emit("_requestRedraw"))}return t}},{key:"_initBaseEvent",value:function(e,t){var i={};return i.pointer={DOM:{x:t.x,y:t.y},canvas:this.canvas.DOMtoCanvas(t)},i.event=e,i}},{key:"_generateClickEvent",value:function(e,t,i,o){var n=arguments.length>4&&void 0!==arguments[4]&&arguments[4],s=this._initBaseEvent(t,i);if(!0===n)s.nodes=[],s.edges=[];else{var r=this.getSelection();s.nodes=r.nodes,s.edges=r.edges}void 0!==o&&(s.previousSelection=o),"click"==e&&(s.items=this.getClickedItems(i)),void 0!==t.controlEdge&&(s.controlEdge=t.controlEdge),this.body.emitter.emit(e,s)}},{key:"selectObject",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.options.selectConnectedEdges;return void 0!==e&&(e instanceof l&&!0===t&&this._selectConnectedEdges(e),e.select(),this._addToSelection(e),!0)}},{key:"deselectObject",value:function(e){!0===e.isSelected()&&(e.selected=!1,this._removeFromSelection(e))}},{key:"_getAllNodesOverlappingWith",value:function(e){for(var t=[],i=this.body.nodes,o=0;o<this.body.nodeIndices.length;o++){var n=this.body.nodeIndices[o];i[n].isOverlappingWith(e)&&t.push(n)}return t}},{key:"_pointerToPositionObject",value:function(e){var t=this.canvas.DOMtoCanvas(e);return{left:t.x-1,top:t.y+1,right:t.x+1,bottom:t.y-1}}},{key:"getNodeAt",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=this._pointerToPositionObject(e),o=this._getAllNodesOverlappingWith(i);return o.length>0?!0===t?this.body.nodes[o[o.length-1]]:o[o.length-1]:void 0}},{key:"_getEdgesOverlappingWith",value:function(e,t){for(var i=this.body.edges,o=0;o<this.body.edgeIndices.length;o++){var n=this.body.edgeIndices[o];i[n].isOverlappingWith(e)&&t.push(n)}}},{key:"_getAllEdgesOverlappingWith",value:function(e){var t=[];return this._getEdgesOverlappingWith(e,t),t}},{key:"getEdgeAt",value:function(e){for(var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=this.canvas.DOMtoCanvas(e),o=10,n=null,s=this.body.edges,r=0;r<this.body.edgeIndices.length;r++){var a=this.body.edgeIndices[r],d=s[a];if(d.connected){var h=d.from.x,l=d.from.y,u=d.to.x,c=d.to.y,f=d.edgeType.getDistanceToEdge(h,l,u,c,i.x,i.y);f<o&&(n=a,o=f)}}return null!==n?!0===t?this.body.edges[n]:n:void 0}},{key:"_addToSelection",value:function(e){e instanceof l?this.selectionObj.nodes[e.id]=e:this.selectionObj.edges[e.id]=e}},{key:"_addToHover",value:function(e){e instanceof l?this.hoverObj.nodes[e.id]=e:this.hoverObj.edges[e.id]=e}},{key:"_removeFromSelection",value:function(e){e instanceof l?(delete this.selectionObj.nodes[e.id],this._unselectConnectedEdges(e)):delete this.selectionObj.edges[e.id]}},{key:"unselectAll",value:function(){for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].unselect();for(var t in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(t)&&this.selectionObj.edges[t].unselect();this.selectionObj={nodes:{},edges:{}}}},{key:"_getSelectedNodeCount",value:function(){var e=0;for(var t in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(t)&&(e+=1);return e}},{key:"_getSelectedNode",value:function(){for(var e in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(e))return this.selectionObj.nodes[e]}},{key:"_getSelectedEdge",value:function(){for(var e in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(e))return this.selectionObj.edges[e]}},{key:"_getSelectedEdgeCount",value:function(){var e=0;for(var t in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(t)&&(e+=1);return e}},{key:"_getSelectedObjectCount",value:function(){var e=0;for(var t in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(t)&&(e+=1);for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&(e+=1);return e}},{key:"_selectionIsEmpty",value:function(){for(var e in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(e))return!1;for(var t in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(t))return!1;return!0}},{key:"_clusterInSelection",value:function(){for(var e in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].clusterSize>1)return!0;return!1}},{key:"_selectConnectedEdges",value:function(e){for(var t=0;t<e.edges.length;t++){var i=e.edges[t];i.select(),this._addToSelection(i)}}},{key:"_hoverConnectedEdges",value:function(e){for(var t=0;t<e.edges.length;t++){var i=e.edges[t];i.hover=!0,this._addToHover(i)}}},{key:"_unselectConnectedEdges",value:function(e){for(var t=0;t<e.edges.length;t++){var i=e.edges[t];i.unselect(),this._removeFromSelection(i)}}},{key:"emitBlurEvent",value:function(e,t,i){var o=this._initBaseEvent(e,t);!0===i.hover&&(i.hover=!1,i instanceof l?(o.node=i.id,this.body.emitter.emit("blurNode",o)):(o.edge=i.id,this.body.emitter.emit("blurEdge",o)))}},{key:"emitHoverEvent",value:function(e,t,i){var o=this._initBaseEvent(e,t),n=!1;return!1===i.hover&&(i.hover=!0,this._addToHover(i),n=!0,i instanceof l?(o.node=i.id,this.body.emitter.emit("hoverNode",o)):(o.edge=i.id,this.body.emitter.emit("hoverEdge",o))),n}},{key:"hoverObject",value:function(e,t){var i=this.getNodeAt(t);void 0===i&&(i=this.getEdgeAt(t));var o=!1;for(var n in this.hoverObj.nodes)this.hoverObj.nodes.hasOwnProperty(n)&&(void 0===i||i instanceof l&&i.id!=n||i instanceof u)&&(this.emitBlurEvent(e,t,this.hoverObj.nodes[n]),delete this.hoverObj.nodes[n],o=!0);for(var r in this.hoverObj.edges)this.hoverObj.edges.hasOwnProperty(r)&&(!0===o?(this.hoverObj.edges[r].hover=!1,delete this.hoverObj.edges[r]):(void 0===i||i instanceof u&&i.id!=r||i instanceof l&&!i.hover)&&(this.emitBlurEvent(e,t,this.hoverObj.edges[r]),delete this.hoverObj.edges[r],o=!0));if(void 0!==i){var a=(0,s.default)(this.hoverObj.edges).length,d=(0,s.default)(this.hoverObj.nodes).length,h=i instanceof u&&0===a&&0===d;(o||h)&&(o=this.emitHoverEvent(e,t,i)),i instanceof l&&!0===this.options.hoverConnectedEdges&&this._hoverConnectedEdges(i)}!0===o&&this.body.emitter.emit("_requestRedraw")}},{key:"getSelection",value:function(){return{nodes:this.getSelectedNodes(),edges:this.getSelectedEdges()}}},{key:"getSelectedNodes",value:function(){var e=[];if(!0===this.options.selectable)for(var t in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(t)&&e.push(this.selectionObj.nodes[t].id);return e}},{key:"getSelectedEdges",value:function(){var e=[];if(!0===this.options.selectable)for(var t in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(t)&&e.push(this.selectionObj.edges[t].id);return e}},{key:"setSelection",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=void 0,o=void 0;if(!e||!e.nodes&&!e.edges)throw"Selection must be an object with nodes and/or edges properties";if((t.unselectAll||void 0===t.unselectAll)&&this.unselectAll(),e.nodes)for(i=0;i<e.nodes.length;i++){o=e.nodes[i];var n=this.body.nodes[o];if(!n)throw new RangeError('Node with id "'+o+'" not found');this.selectObject(n,t.highlightEdges)}if(e.edges)for(i=0;i<e.edges.length;i++){o=e.edges[i];var s=this.body.edges[o];if(!s)throw new RangeError('Edge with id "'+o+'" not found');this.selectObject(s)}this.body.emitter.emit("_requestRedraw")}},{key:"selectNodes",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(!e||void 0===e.length)throw"Selection must be an array with ids";this.setSelection({nodes:e},{highlightEdges:t})}},{key:"selectEdges",value:function(e){if(!e||void 0===e.length)throw"Selection must be an array with ids";this.setSelection({edges:e})}},{key:"updateSelection",value:function(){for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(this.body.nodes.hasOwnProperty(e)||delete this.selectionObj.nodes[e]);for(var t in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(t)&&(this.body.edges.hasOwnProperty(t)||delete this.selectionObj.edges[t])}},{key:"getClickedItems",value:function(e){for(var t=this.canvas.DOMtoCanvas(e),i=[],o=this.body.nodeIndices,n=this.body.nodes,s=o.length-1;s>=0;s--){var r=n[o[s]],a=r.getItemsOnPoint(t);i.push.apply(i,a)}for(var d=this.body.edgeIndices,h=this.body.edges,l=d.length-1;l>=0;l--){var u=h[d[l]],c=u.getItemsOnPoint(t);i.push.apply(i,c)}return i}}]),e}();t.default=f},function(e,t,i){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var n=i(15),s=o(n),r=i(7),a=o(r),d=i(9),h=o(d),l=i(0),u=o(l),c=i(1),f=o(c),p=i(83),v=i(5),g=i(57).default,y=i(188),m=y.HorizontalStrategy,b=y.VerticalStrategy,_=function(){function e(){(0,u.default)(this,e),this.childrenReference={},this.parentReference={},this.trees={},this.distributionOrdering={},this.levels={},this.distributionIndex={},this.isTree=!1,this.treeIndex=-1}return(0,f.default)(e,[{key:"addRelation",value:function(e,t){void 0===this.childrenReference[e]&&(this.childrenReference[e]=[]),this.childrenReference[e].push(t),void 0===this.parentReference[t]&&(this.parentReference[t]=[]),this.parentReference[t].push(e)}},{key:"checkIfTree",value:function(){for(var e in this.parentReference)if(this.parentReference[e].length>1)return void(this.isTree=!1);this.isTree=!0}},{key:"numTrees",value:function(){return this.treeIndex+1}},{key:"setTreeIndex",value:function(e,t){void 0!==t&&void 0===this.trees[e.id]&&(this.trees[e.id]=t,this.treeIndex=Math.max(t,this.treeIndex))}},{key:"ensureLevel",value:function(e){void 0===this.levels[e]&&(this.levels[e]=0)}},{key:"getMaxLevel",value:function(e){var t=this,i={};return function e(o){if(void 0!==i[o])return i[o];var n=t.levels[o];if(t.childrenReference[o]){var s=t.childrenReference[o];if(s.length>0)for(var r=0;r<s.length;r++)n=Math.max(n,e(s[r]))}return i[o]=n,n}(e)}},{key:"levelDownstream",value:function(e,t){void 0===this.levels[t.id]&&(void 0===this.levels[e.id]&&(this.levels[e.id]=0),this.levels[t.id]=this.levels[e.id]+1)}},{key:"setMinLevelToZero",value:function(e){var t=1e9;for(var i in e)e.hasOwnProperty(i)&&void 0!==this.levels[i]&&(t=Math.min(this.levels[i],t));for(var o in e)e.hasOwnProperty(o)&&void 0!==this.levels[o]&&(this.levels[o]-=t)}},{key:"getTreeSize",value:function(e,t){var i=1e9,o=-1e9,n=1e9,s=-1e9;for(var r in this.trees)if(this.trees.hasOwnProperty(r)&&this.trees[r]===t){var a=e[r];i=Math.min(a.x,i),o=Math.max(a.x,o),n=Math.min(a.y,n),s=Math.max(a.y,s)}return{min_x:i,max_x:o,min_y:n,max_y:s}}},{key:"hasSameParent",value:function(e,t){var i=this.parentReference[e.id],o=this.parentReference[t.id];if(void 0===i||void 0===o)return!1;for(var n=0;n<i.length;n++)for(var s=0;s<o.length;s++)if(i[n]==o[s])return!0;return!1}},{key:"inSameSubNetwork",value:function(e,t){return this.trees[e.id]===this.trees[t.id]}},{key:"getLevels",value:function(){return(0,h.default)(this.distributionOrdering)}},{key:"addToOrdering",value:function(e,t){void 0===this.distributionOrdering[t]&&(this.distributionOrdering[t]=[]);var i=!1,o=this.distributionOrdering[t];for(var n in o)if(o[n]===e){i=!0;break}i||(this.distributionOrdering[t].push(e),this.distributionIndex[e.id]=this.distributionOrdering[t].length-1)}}]),e}(),w=function(){function e(t){(0,u.default)(this,e),this.body=t,this.initialRandomSeed=Math.round(1e6*Math.random()),this.randomSeed=this.initialRandomSeed,this.setPhysics=!1,this.options={},this.optionsBackup={physics:{}},this.defaultOptions={randomSeed:void 0,improvedLayout:!0,hierarchical:{enabled:!1,levelSeparation:150,nodeSpacing:100,treeSpacing:200,blockShifting:!0,edgeMinimization:!0,parentCentralization:!0,direction:"UD",sortMethod:"hubsize"}},v.extend(this.options,this.defaultOptions),this.bindEventListeners()}return(0,f.default)(e,[{key:"bindEventListeners",value:function(){var e=this;this.body.emitter.on("_dataChanged",function(){e.setupHierarchicalLayout()}),this.body.emitter.on("_dataLoaded",function(){e.layoutNetwork()}),this.body.emitter.on("_resetHierarchicalLayout",function(){e.setupHierarchicalLayout()}),this.body.emitter.on("_adjustEdgesForHierarchicalLayout",function(){if(!0===e.options.hierarchical.enabled){var t=e.direction.curveType();e.body.emitter.emit("_forceDisableDynamicCurves",t,!1)}})}},{key:"setOptions",value:function(e,t){if(void 0!==e){var i=this.options.hierarchical,o=i.enabled;if(v.selectiveDeepExtend(["randomSeed","improvedLayout"],this.options,e),v.mergeOptions(this.options,e,"hierarchical"),void 0!==e.randomSeed&&(this.initialRandomSeed=e.randomSeed),!0===i.enabled)return!0===o&&this.body.emitter.emit("refresh",!0),"RL"===i.direction||"DU"===i.direction?i.levelSeparation>0&&(i.levelSeparation*=-1):i.levelSeparation<0&&(i.levelSeparation*=-1),this.setDirectionStrategy(),this.body.emitter.emit("_resetHierarchicalLayout"),this.adaptAllOptionsForHierarchicalLayout(t);if(!0===o)return this.body.emitter.emit("refresh"),v.deepExtend(t,this.optionsBackup)}return t}},{key:"adaptAllOptionsForHierarchicalLayout",value:function(e){if(!0===this.options.hierarchical.enabled){var t=this.optionsBackup.physics;void 0===e.physics||!0===e.physics?(e.physics={enabled:void 0===t.enabled||t.enabled,solver:"hierarchicalRepulsion"},t.enabled=void 0===t.enabled||t.enabled,t.solver=t.solver||"barnesHut"):"object"===(0,a.default)(e.physics)?(t.enabled=void 0===e.physics.enabled||e.physics.enabled,t.solver=e.physics.solver||"barnesHut",e.physics.solver="hierarchicalRepulsion"):!1!==e.physics&&(t.solver="barnesHut",e.physics={solver:"hierarchicalRepulsion"});var i=this.direction.curveType();if(void 0===e.edges)this.optionsBackup.edges={smooth:{enabled:!0,type:"dynamic"}},e.edges={smooth:!1};else if(void 0===e.edges.smooth)this.optionsBackup.edges={smooth:{enabled:!0,type:"dynamic"}},e.edges.smooth=!1;else if("boolean"==typeof e.edges.smooth)this.optionsBackup.edges={smooth:e.edges.smooth},e.edges.smooth={enabled:e.edges.smooth,type:i};else{var o=e.edges.smooth;void 0!==o.type&&"dynamic"!==o.type&&(i=o.type),this.optionsBackup.edges={smooth:void 0===o.enabled||o.enabled,type:void 0===o.type?"dynamic":o.type,roundness:void 0===o.roundness?.5:o.roundness,forceDirection:void 0!==o.forceDirection&&o.forceDirection},e.edges.smooth={enabled:void 0===o.enabled||o.enabled,type:i,roundness:void 0===o.roundness?.5:o.roundness,forceDirection:void 0!==o.forceDirection&&o.forceDirection}}this.body.emitter.emit("_forceDisableDynamicCurves",i)}return e}},{key:"seededRandom",value:function(){var e=1e4*Math.sin(this.randomSeed++);return e-Math.floor(e)}},{key:"positionInitially",value:function(e){if(!0!==this.options.hierarchical.enabled){this.randomSeed=this.initialRandomSeed;for(var t=e.length+50,i=0;i<e.length;i++){var o=e[i],n=2*Math.PI*this.seededRandom();void 0===o.x&&(o.x=t*Math.cos(n)),void 0===o.y&&(o.y=t*Math.sin(n))}}}},{key:"layoutNetwork",value:function(){if(!0!==this.options.hierarchical.enabled&&!0===this.options.improvedLayout){for(var e=this.body.nodeIndices,t=0,i=0;i<e.length;i++){!0===this.body.nodes[e[i]].predefinedPosition&&(t+=1)}if(t<.5*e.length){var o=0,n={clusterNodeProperties:{shape:"ellipse",label:"",group:"",font:{multi:!1}},clusterEdgeProperties:{label:"",font:{multi:!1},smooth:{enabled:!1}}};if(e.length>150){for(var s=e.length;e.length>150&&o<=10;){o+=1;var r=e.length;o%3==0?this.body.modules.clustering.clusterBridges(n):this.body.modules.clustering.clusterOutliers(n);if(r==e.length&&o%3!=0)return this._declusterAll(),this.body.emitter.emit("_layoutFailed"),void console.info("This network could not be positioned by this version of the improved layout algorithm. Please disable improvedLayout for better performance.")}this.body.modules.kamadaKawai.setOptions({springLength:Math.max(150,2*s)})}o>10&&console.info("The clustering didn't succeed within the amount of interations allowed, progressing with partial result."),this.body.modules.kamadaKawai.solve(e,this.body.edgeIndices,!0),this._shiftToCenter();for(var a=0;a<e.length;a++){var d=this.body.nodes[e[a]];!1===d.predefinedPosition&&(d.x+=70*(.5-this.seededRandom()),d.y+=70*(.5-this.seededRandom()))}this._declusterAll(),this.body.emitter.emit("_repositionBezierNodes")}}}},{key:"_shiftToCenter",value:function(){for(var e=g.getRangeCore(this.body.nodes,this.body.nodeIndices),t=g.findCenter(e),i=0;i<this.body.nodeIndices.length;i++){var o=this.body.nodes[this.body.nodeIndices[i]];o.x-=t.x,o.y-=t.y}}},{key:"_declusterAll",value:function(){for(var e=!0;!0===e;){e=!1;for(var t=0;t<this.body.nodeIndices.length;t++)!0===this.body.nodes[this.body.nodeIndices[t]].isCluster&&(e=!0,this.body.modules.clustering.openCluster(this.body.nodeIndices[t],{},!1));!0===e&&this.body.emitter.emit("_dataChanged")}}},{key:"getSeed",value:function(){return this.initialRandomSeed}},{key:"setupHierarchicalLayout",value:function(){if(!0===this.options.hierarchical.enabled&&this.body.nodeIndices.length>0){var e=void 0,t=void 0,i=!1,o=!1;this.lastNodeOnLevel={},this.hierarchical=new _;for(t in this.body.nodes)this.body.nodes.hasOwnProperty(t)&&(e=this.body.nodes[t],void 0!==e.options.level?(i=!0,this.hierarchical.levels[t]=e.options.level):o=!0);if(!0===o&&!0===i)throw new Error("To use the hierarchical layout, nodes require either no predefined levels or levels have to be defined for all nodes.");if(!0===o){var n=this.options.hierarchical.sortMethod;"hubsize"===n?this._determineLevelsByHubsize():"directed"===n?this._determineLevelsDirected():"custom"===n&&this._determineLevelsCustomCallback()}for(var s in this.body.nodes)this.body.nodes.hasOwnProperty(s)&&this.hierarchical.ensureLevel(s);var r=this._getDistribution();this._generateMap(),this._placeNodesByHierarchy(r),this._condenseHierarchy(),this._shiftToCenter()}}},{key:"_condenseHierarchy",value:function(){var e=this,t=!1,i={},o=function(t,i){var o=e.hierarchical.trees;for(var n in o)o.hasOwnProperty(n)&&o[n]===t&&e.direction.shift(n,i)},n=function(){for(var t=[],i=0;i<e.hierarchical.numTrees();i++)t.push(e.direction.getTreeSize(i));return t},r=function t(i,o){if(!o[i.id]&&(o[i.id]=!0,e.hierarchical.childrenReference[i.id])){var n=e.hierarchical.childrenReference[i.id];if(n.length>0)for(var s=0;s<n.length;s++)t(e.body.nodes[n[s]],o)}},a=function(t){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1e9,o=1e9,n=1e9,r=1e9,a=-1e9;for(var d in t)if(t.hasOwnProperty(d)){var h=e.body.nodes[d],l=e.hierarchical.levels[h.id],u=e.direction.getPosition(h),c=e._getSpaceAroundNode(h,t),f=(0,s.default)(c,2),p=f[0],v=f[1];o=Math.min(p,o),n=Math.min(v,n),l<=i&&(r=Math.min(u,r),a=Math.max(u,a))}return[r,a,o,n]},d=function(t,i){var o=e.hierarchical.getMaxLevel(t.id),n=e.hierarchical.getMaxLevel(i.id);return Math.min(o,n)},h=function(t,i,o){for(var n=e.hierarchical,s=0;s<i.length;s++){var r=i[s],a=n.distributionOrdering[r];if(a.length>1)for(var d=0;d<a.length-1;d++){var h=a[d],l=a[d+1];n.hasSameParent(h,l)&&n.inSameSubNetwork(h,l)&&t(h,l,o)}}},l=function(i,o){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],s=e.direction.getPosition(i),h=e.direction.getPosition(o),l=Math.abs(h-s),u=e.options.hierarchical.nodeSpacing;if(l>u){var c={},f={};r(i,c),r(o,f);var p=d(i,o),v=a(c,p),g=a(f,p),y=v[1],m=g[0],b=g[2];if(Math.abs(y-m)>u){var _=y-m+u;_<-b+u&&(_=-b+u),_<0&&(e._shiftBlock(o.id,_),t=!0,!0===n&&e._centerParent(o))}}},u=function(o,n){for(var d=n.id,h=n.edges,l=e.hierarchical.levels[n.id],u=e.options.hierarchical.levelSeparation*e.options.hierarchical.levelSeparation,c={},f=[],p=0;p<h.length;p++){var v=h[p];if(v.toId!=v.fromId){var g=v.toId==d?v.from:v.to;c[h[p].id]=g,e.hierarchical.levels[g.id]<l&&f.push(v)}}var y=function(t,i){for(var o=0,n=0;n<i.length;n++)if(void 0!==c[i[n].id]){var s=e.direction.getPosition(c[i[n].id])-t;o+=s/Math.sqrt(s*s+u)}return o},m=function(t,i){for(var o=0,n=0;n<i.length;n++)if(void 0!==c[i[n].id]){var s=e.direction.getPosition(c[i[n].id])-t;o-=u*Math.pow(s*s+u,-1.5)}return o},b=function(t,i){for(var o=e.direction.getPosition(n),s={},r=0;r<t;r++){var a=y(o,i),d=m(o,i);if(o-=Math.max(-40,Math.min(40,Math.round(a/d))),void 0!==s[o])break;s[o]=r}return o},_=b(o,f);!function(o){var s=e.direction.getPosition(n);if(void 0===i[n.id]){var d={};r(n,d),i[n.id]=d}var h=a(i[n.id]),l=h[2],u=h[3],c=o-s,f=0;c>0?f=Math.min(c,u-e.options.hierarchical.nodeSpacing):c<0&&(f=-Math.min(-c,l-e.options.hierarchical.nodeSpacing)),0!=f&&(e._shiftBlock(n.id,f),t=!0)}(_),_=b(o,h),function(i){var o=e.direction.getPosition(n),r=e._getSpaceAroundNode(n),a=(0,s.default)(r,2),d=a[0],h=a[1],l=i-o,u=o;l>0?u=Math.min(o+(h-e.options.hierarchical.nodeSpacing),i):l<0&&(u=Math.max(o-(d-e.options.hierarchical.nodeSpacing),i)),u!==o&&(e.direction.setPosition(n,u),t=!0)}(_)};!0===this.options.hierarchical.blockShifting&&(function(i){var o=e.hierarchical.getLevels();o=o.reverse();for(var n=0;n<i&&(t=!1,h(l,o,!0),!0===t);n++);}(5),function(){for(var t in e.body.nodes)e.body.nodes.hasOwnProperty(t)&&e._centerParent(e.body.nodes[t])}()),!0===this.options.hierarchical.edgeMinimization&&function(i){var o=e.hierarchical.getLevels();o=o.reverse();for(var n=0;n<i;n++){t=!1;for(var s=0;s<o.length;s++)for(var r=o[s],a=e.hierarchical.distributionOrdering[r],d=0;d<a.length;d++)u(1e3,a[d]);if(!0!==t)break}}(20),!0===this.options.hierarchical.parentCentralization&&function(){var t=e.hierarchical.getLevels();t=t.reverse();for(var i=0;i<t.length;i++)for(var o=t[i],n=e.hierarchical.distributionOrdering[o],s=0;s<n.length;s++)e._centerParent(n[s])}(),function(){for(var t=n(),i=0,s=0;s<t.length-1;s++){i+=t[s].max-t[s+1].min+e.options.hierarchical.treeSpacing,o(s+1,i)}}()}},{key:"_getSpaceAroundNode",value:function(e,t){var i=!0;void 0===t&&(i=!1);var o=this.hierarchical.levels[e.id];if(void 0!==o){var n=this.hierarchical.distributionIndex[e.id],s=this.direction.getPosition(e),r=this.hierarchical.distributionOrdering[o],a=1e9,d=1e9;if(0!==n){var h=r[n-1];if(!0===i&&void 0===t[h.id]||!1===i){a=s-this.direction.getPosition(h)}}if(n!=r.length-1){var l=r[n+1];if(!0===i&&void 0===t[l.id]||!1===i){var u=this.direction.getPosition(l);d=Math.min(d,u-s)}}return[a,d]}return[0,0]}},{key:"_centerParent",value:function(e){if(this.hierarchical.parentReference[e.id])for(var t=this.hierarchical.parentReference[e.id],i=0;i<t.length;i++){var o=t[i],n=this.body.nodes[o],r=this.hierarchical.childrenReference[o];if(void 0!==r){var a=this._getCenterPosition(r),d=this.direction.getPosition(n),h=this._getSpaceAroundNode(n),l=(0,s.default)(h,2),u=l[0],c=l[1],f=d-a;(f<0&&Math.abs(f)<c-this.options.hierarchical.nodeSpacing||f>0&&Math.abs(f)<u-this.options.hierarchical.nodeSpacing)&&this.direction.setPosition(n,a)}}}},{key:"_placeNodesByHierarchy",value:function(e){this.positionedNodes={};for(var t in e)if(e.hasOwnProperty(t)){var i=(0,h.default)(e[t]);i=this._indexArrayToNodes(i),this.direction.sort(i);for(var o=0,n=0;n<i.length;n++){var s=i[n];if(void 0===this.positionedNodes[s.id]){var r=this.options.hierarchical.nodeSpacing,a=r*o;o>0&&(a=this.direction.getPosition(i[n-1])+r),this.direction.setPosition(s,a,t),this._validatePositionAndContinue(s,t,a),o++}}}}},{key:"_placeBranchNodes",value:function(e,t){var i=this.hierarchical.childrenReference[e];if(void 0!==i){for(var o=[],n=0;n<i.length;n++)o.push(this.body.nodes[i[n]]);this.direction.sort(o);for(var s=0;s<o.length;s++){var r=o[s],a=this.hierarchical.levels[r.id];if(!(a>t&&void 0===this.positionedNodes[r.id]))return;var d=this.options.hierarchical.nodeSpacing,h=void 0;h=0===s?this.direction.getPosition(this.body.nodes[e]):this.direction.getPosition(o[s-1])+d,this.direction.setPosition(r,h,a),this._validatePositionAndContinue(r,a,h)}var l=this._getCenterPosition(o);this.direction.setPosition(this.body.nodes[e],l,t)}}},{key:"_validatePositionAndContinue",value:function(e,t,i){if(this.hierarchical.isTree){if(void 0!==this.lastNodeOnLevel[t]){var o=this.direction.getPosition(this.body.nodes[this.lastNodeOnLevel[t]]);if(i-o<this.options.hierarchical.nodeSpacing){var n=o+this.options.hierarchical.nodeSpacing-i,s=this._findCommonParent(this.lastNodeOnLevel[t],e.id);this._shiftBlock(s.withChild,n)}}this.lastNodeOnLevel[t]=e.id,this.positionedNodes[e.id]=!0,this._placeBranchNodes(e.id,t)}}},{key:"_indexArrayToNodes",value:function(e){for(var t=[],i=0;i<e.length;i++)t.push(this.body.nodes[e[i]]);return t}},{key:"_getDistribution",value:function(){var e={},t=void 0,i=void 0;for(t in this.body.nodes)if(this.body.nodes.hasOwnProperty(t)){i=this.body.nodes[t];var o=void 0===this.hierarchical.levels[t]?0:this.hierarchical.levels[t];this.direction.fix(i,o),void 0===e[o]&&(e[o]={}),e[o][t]=i}return e}},{key:"_getActiveEdges",value:function(e){var t=this,i=[];return v.forEach(e.edges,function(e){-1!==t.body.edgeIndices.indexOf(e.id)&&i.push(e)}),i}},{key:"_getHubSizes",value:function(){var e=this,t={},i=this.body.nodeIndices;v.forEach(i,function(i){var o=e.body.nodes[i],n=e._getActiveEdges(o).length;t[n]=!0});var o=[];return v.forEach(t,function(e){o.push(Number(e))}),p.sort(o,function(e,t){return t-e}),o}},{key:"_determineLevelsByHubsize",value:function(){for(var e=this,t=function(t,i){e.hierarchical.levelDownstream(t,i)},i=this._getHubSizes(),o=0;o<i.length;++o){if("break"===function(o){var n=i[o];if(0===n)return"break";v.forEach(e.body.nodeIndices,function(i){var o=e.body.nodes[i];n===e._getActiveEdges(o).length&&e._crawlNetwork(t,i)})}(o))break}}},{key:"_determineLevelsCustomCallback",value:function(){var e=this,t=function(t,i,o){var n=e.hierarchical.levels[t.id];void 0===n&&(n=e.hierarchical.levels[t.id]=1e5);var s=(g.cloneOptions(t,"node"),g.cloneOptions(i,"node"),void g.cloneOptions(o,"edge"));e.hierarchical.levels[i.id]=n+s};this._crawlNetwork(t),this.hierarchical.setMinLevelToZero(this.body.nodes)}},{key:"_determineLevelsDirected",value:function(){var e=this,t=function(t){return v.forEach(e.body.edges,function(e){if(e.toId===t.fromId&&e.fromId===t.toId)return!0}),!1},i=function(i,o,n){var s=e.hierarchical.levels[i.id],r=e.hierarchical.levels[o.id];t(n)&&void 0!==s&&void 0!==r||(void 0===s&&(s=e.hierarchical.levels[i.id]=1e4),n.toId==o.id?e.hierarchical.levels[o.id]=s+1:e.hierarchical.levels[o.id]=s-1)};this._crawlNetwork(i),this.hierarchical.setMinLevelToZero(this.body.nodes)}},{key:"_generateMap",value:function(){var e=this,t=function(t,i){e.hierarchical.levels[i.id]>e.hierarchical.levels[t.id]&&e.hierarchical.addRelation(t.id,i.id)};this._crawlNetwork(t),this.hierarchical.checkIfTree()}},{key:"_crawlNetwork",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:function(){},i=arguments[1],o={},n=function i(n,s){if(void 0===o[n.id]){e.hierarchical.setTreeIndex(n,s),o[n.id]=!0;for(var r=void 0,a=e._getActiveEdges(n),d=0;d<a.length;d++){var h=a[d];!0===h.connected&&(r=h.toId==n.id?h.from:h.to,n.id!=r.id&&(t(n,r,h),i(r,s)))}}};if(void 0===i)for(var s=0,r=0;r<this.body.nodeIndices.length;r++){var a=this.body.nodeIndices[r];if(void 0===o[a]){var d=this.body.nodes[a];n(d,s),s+=1}}else{var h=this.body.nodes[i];if(void 0===h)return void console.error("Node not found:",i);n(h)}}},{key:"_shiftBlock",value:function(e,t){var i=this,o={};!function e(n){if(!o[n]){o[n]=!0,i.direction.shift(n,t);var s=i.hierarchical.childrenReference[n];if(void 0!==s)for(var r=0;r<s.length;r++)e(s[r])}}(e)}},{key:"_findCommonParent",value:function(e,t){var i=this,o={};return function e(t,o){var n=i.hierarchical.parentReference[o];if(void 0!==n)for(var s=0;s<n.length;s++){var r=n[s];t[r]=!0,e(t,r)}}(o,e),function e(t,o){var n=i.hierarchical.parentReference[o];if(void 0!==n)for(var s=0;s<n.length;s++){var r=n[s];if(void 0!==t[r])return{foundParent:r,withChild:o};var a=e(t,r);if(null!==a.foundParent)return a}return{foundParent:null,withChild:o}}(o,t)}},{key:"setDirectionStrategy",value:function(){var e="UD"===this.options.hierarchical.direction||"DU"===this.options.hierarchical.direction;this.direction=e?new b(this):new m(this)}},{key:"_getCenterPosition",value:function(e){for(var t=1e9,i=-1e9,o=0;o<e.length;o++){var n=void 0;if(void 0!==e[o].id)n=e[o];else{var s=e[o];n=this.body.nodes[s]}var r=this.direction.getPosition(n);t=Math.min(t,r),i=Math.max(i,r)}return.5*(t+i)}}]),e}();t.default=w},function(e,t,i){var o,n,s;!function(i,r){n=[t],o=r,void 0!==(s="function"==typeof o?o.apply(t,n):o)&&(e.exports=s)}(0,function(e){"use strict";function t(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e){return e<1e5?e<100?e<10?0:1:e<1e4?e<1e3?2:3:4:e<1e7?e<1e6?5:6:e<1e9?e<1e8?7:8:9}function o(e,t){if(e===t)return 0;if(~~e===e&&~~t===t){if(0===e||0===t)return e<t?-1:1;if(e<0||t<0){if(t>=0)return-1;if(e>=0)return 1;e=-e,t=-t}var o=i(e),n=i(t),s=0;return o<n?(e*=p[n-o-1],t/=10,s=-1):o>n&&(t*=p[o-n-1],e/=10,s=1),e===t?s:e<t?-1:1}var r=String(e),a=String(t);return r===a?0:r<a?-1:1}function n(e){for(var t=0;e>=u;)t|=1&e,e>>=1;return e+t}function s(e,t,i,o){var n=t+1;if(n===i)return 1;if(o(e[n++],e[t])<0){for(;n<i&&o(e[n],e[n-1])<0;)n++;r(e,t,n)}else for(;n<i&&o(e[n],e[n-1])>=0;)n++;return n-t}function r(e,t,i){for(i--;t<i;){var o=e[t];e[t++]=e[i],e[i--]=o}}function a(e,t,i,o,n){for(o===t&&o++;o<i;o++){for(var s=e[o],r=t,a=o;r<a;){var d=r+a>>>1;n(s,e[d])<0?a=d:r=d+1}var h=o-r;switch(h){case 3:e[r+3]=e[r+2];case 2:e[r+2]=e[r+1];case 1:e[r+1]=e[r];break;default:for(;h>0;)e[r+h]=e[r+h-1],h--}e[r]=s}}function d(e,t,i,o,n,s){var r=0,a=0,d=1;if(s(e,t[i+n])>0){for(a=o-n;d<a&&s(e,t[i+n+d])>0;)r=d,(d=1+(d<<1))<=0&&(d=a);d>a&&(d=a),r+=n,d+=n}else{for(a=n+1;d<a&&s(e,t[i+n-d])<=0;)r=d,(d=1+(d<<1))<=0&&(d=a);d>a&&(d=a);var h=r;r=n-d,d=n-h}for(r++;r<d;){var l=r+(d-r>>>1);s(e,t[i+l])>0?r=l+1:d=l}return d}function h(e,t,i,o,n,s){var r=0,a=0,d=1;if(s(e,t[i+n])<0){for(a=n+1;d<a&&s(e,t[i+n-d])<0;)r=d,(d=1+(d<<1))<=0&&(d=a);d>a&&(d=a);var h=r;r=n-d,d=n-h}else{for(a=o-n;d<a&&s(e,t[i+n+d])>=0;)r=d,(d=1+(d<<1))<=0&&(d=a);d>a&&(d=a),r+=n,d+=n}for(r++;r<d;){var l=r+(d-r>>>1);s(e,t[i+l])<0?d=l:r=l+1}return d}function l(e,t,i,r){if(!Array.isArray(e))throw new TypeError("Can only sort arrays");t?"function"!=typeof t&&(r=i,i=t,t=o):t=o,i||(i=0),r||(r=e.length);var d=r-i;if(!(d<2)){var h=0;if(d<u)return h=s(e,i,r,t),void a(e,i,r,i+h,t);var l=new v(e,t),c=n(d);do{if((h=s(e,i,r,t))<c){var f=d;f>c&&(f=c),a(e,i,i+f,i+h,t),h=f}l.pushRun(i,h),l.mergeRuns(),d-=h,i+=h}while(0!==d);l.forceMergeRuns()}}e.__esModule=!0,e.sort=l;var u=32,c=7,f=256,p=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9],v=function(){function e(i,o){t(this,e),this.array=null,this.compare=null,this.minGallop=c,this.length=0,this.tmpStorageLength=f,this.stackLength=0,this.runStart=null,this.runLength=null,this.stackSize=0,this.array=i,this.compare=o,this.length=i.length,this.length<2*f&&(this.tmpStorageLength=this.length>>>1),this.tmp=new Array(this.tmpStorageLength),this.stackLength=this.length<120?5:this.length<1542?10:this.length<119151?19:40,this.runStart=new Array(this.stackLength),this.runLength=new Array(this.stackLength)}return e.prototype.pushRun=function(e,t){this.runStart[this.stackSize]=e,this.runLength[this.stackSize]=t,this.stackSize+=1},e.prototype.mergeRuns=function(){for(;this.stackSize>1;){var e=this.stackSize-2;if(e>=1&&this.runLength[e-1]<=this.runLength[e]+this.runLength[e+1]||e>=2&&this.runLength[e-2]<=this.runLength[e]+this.runLength[e-1])this.runLength[e-1]<this.runLength[e+1]&&e--;else if(this.runLength[e]>this.runLength[e+1])break;this.mergeAt(e)}},e.prototype.forceMergeRuns=function(){for(;this.stackSize>1;){var e=this.stackSize-2;e>0&&this.runLength[e-1]<this.runLength[e+1]&&e--,this.mergeAt(e)}},e.prototype.mergeAt=function(e){var t=this.compare,i=this.array,o=this.runStart[e],n=this.runLength[e],s=this.runStart[e+1],r=this.runLength[e+1];this.runLength[e]=n+r,e===this.stackSize-3&&(this.runStart[e+1]=this.runStart[e+2],this.runLength[e+1]=this.runLength[e+2]),this.stackSize--;var a=h(i[s],i,o,n,0,t);o+=a,0!==(n-=a)&&0!==(r=d(i[o+n-1],i,s,r,r-1,t))&&(n<=r?this.mergeLow(o,n,s,r):this.mergeHigh(o,n,s,r))},e.prototype.mergeLow=function(e,t,i,o){var n=this.compare,s=this.array,r=this.tmp,a=0;for(a=0;a<t;a++)r[a]=s[e+a];var l=0,u=i,f=e;if(s[f++]=s[u++],0!=--o){if(1===t){for(a=0;a<o;a++)s[f+a]=s[u+a];return void(s[f+o]=r[l])}for(var p=this.minGallop;;){var v=0,g=0,y=!1;do{if(n(s[u],r[l])<0){if(s[f++]=s[u++],g++,v=0,0==--o){y=!0;break}}else if(s[f++]=r[l++],v++,g=0,1==--t){y=!0;break}}while((v|g)<p);if(y)break;do{if(0!==(v=h(s[u],r,l,t,0,n))){for(a=0;a<v;a++)s[f+a]=r[l+a];if(f+=v,l+=v,(t-=v)<=1){y=!0;break}}if(s[f++]=s[u++],0==--o){y=!0;break}if(0!==(g=d(r[l],s,u,o,0,n))){for(a=0;a<g;a++)s[f+a]=s[u+a];if(f+=g,u+=g,0===(o-=g)){y=!0;break}}if(s[f++]=r[l++],1==--t){y=!0;break}p--}while(v>=c||g>=c);if(y)break;p<0&&(p=0),p+=2}if(this.minGallop=p,p<1&&(this.minGallop=1),1===t){for(a=0;a<o;a++)s[f+a]=s[u+a];s[f+o]=r[l]}else{if(0===t)throw new Error("mergeLow preconditions were not respected");for(a=0;a<t;a++)s[f+a]=r[l+a]}}else for(a=0;a<t;a++)s[f+a]=r[l+a]},e.prototype.mergeHigh=function(e,t,i,o){var n=this.compare,s=this.array,r=this.tmp,a=0;for(a=0;a<o;a++)r[a]=s[i+a];var l=e+t-1,u=o-1,f=i+o-1,p=0,v=0;if(s[f--]=s[l--],0!=--t){if(1===o){for(f-=t,l-=t,v=f+1,p=l+1,a=t-1;a>=0;a--)s[v+a]=s[p+a];return void(s[f]=r[u])}for(var g=this.minGallop;;){var y=0,m=0,b=!1;do{if(n(r[u],s[l])<0){if(s[f--]=s[l--],y++,m=0,0==--t){b=!0;break}}else if(s[f--]=r[u--],m++,y=0,1==--o){b=!0;break}}while((y|m)<g);if(b)break;do{if(0!==(y=t-h(r[u],s,e,t,t-1,n))){for(f-=y,l-=y,t-=y,v=f+1,p=l+1,a=y-1;a>=0;a--)s[v+a]=s[p+a];if(0===t){b=!0;break}}if(s[f--]=r[u--],1==--o){b=!0;break}if(0!==(m=o-d(s[l],r,0,o,o-1,n))){for(f-=m,u-=m,o-=m,v=f+1,p=u+1,a=0;a<m;a++)s[v+a]=r[p+a];if(o<=1){b=!0;break}}if(s[f--]=s[l--],0==--t){b=!0;break}g--}while(y>=c||m>=c);if(b)break;g<0&&(g=0),g+=2}if(this.minGallop=g,g<1&&(this.minGallop=1),1===o){for(f-=t,l-=t,v=f+1,p=l+1,a=t-1;a>=0;a--)s[v+a]=s[p+a];s[f]=r[u]}else{if(0===o)throw new Error("mergeHigh preconditions were not respected");for(p=f-(o-1),a=0;a<o;a++)s[p+a]=r[a]}}else for(p=f-(o-1),a=0;a<o;a++)s[p+a]=r[a]},e}()})},function(e,t,i){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0}),t.VerticalStrategy=t.HorizontalStrategy=void 0;var n=i(2),s=o(n),r=i(3),a=o(r),d=i(4),h=o(d),l=i(0),u=o(l),c=i(1),f=o(c),p=i(83),v=function(){function e(){(0,u.default)(this,e)}return(0,f.default)(e,[{key:"abstract",value:function(){throw new Error("Can't instantiate abstract class!")}},{key:"fake_use",value:function(){}},{key:"curveType",value:function(){return this.abstract()}},{key:"getPosition",value:function(e){return this.fake_use(e),this.abstract()}},{key:"setPosition",value:function(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0;this.fake_use(e,t,i),this.abstract()}},{key:"getTreeSize",value:function(e){return this.fake_use(e),this.abstract()}},{key:"sort",value:function(e){this.fake_use(e),this.abstract()}},{key:"fix",value:function(e,t){this.fake_use(e,t),this.abstract()}},{key:"shift",value:function(e,t){this.fake_use(e,t),this.abstract()}}]),e}(),g=function(e){function t(e){(0,u.default)(this,t);var i=(0,a.default)(this,(t.__proto__||(0,s.default)(t)).call(this));return i.layout=e,i}return(0,h.default)(t,e),(0,f.default)(t,[{key:"curveType",value:function(){return"horizontal"}},{key:"getPosition",value:function(e){return e.x}},{key:"setPosition",value:function(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0;void 0!==i&&this.layout.hierarchical.addToOrdering(e,i),e.x=t}},{key:"getTreeSize",value:function(e){var t=this.layout.hierarchical.getTreeSize(this.layout.body.nodes,e);return{min:t.min_x,max:t.max_x}}},{key:"sort",value:function(e){p.sort(e,function(e,t){return e.x-t.x})}},{key:"fix",value:function(e,t){e.y=this.layout.options.hierarchical.levelSeparation*t,e.options.fixed.y=!0}},{key:"shift",value:function(e,t){this.layout.body.nodes[e].x+=t}}]),t}(v),y=function(e){function t(e){(0,u.default)(this,t);var i=(0,a.default)(this,(t.__proto__||(0,s.default)(t)).call(this));return i.layout=e,i}return(0,h.default)(t,e),(0,f.default)(t,[{key:"curveType",value:function(){return"vertical"}},{key:"getPosition",value:function(e){return e.y}},{key:"setPosition",value:function(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0;void 0!==i&&this.layout.hierarchical.addToOrdering(e,i),e.y=t}},{key:"getTreeSize",value:function(e){var t=this.layout.hierarchical.getTreeSize(this.layout.body.nodes,e);return{min:t.min_y,max:t.max_y}}},{key:"sort",value:function(e){p.sort(e,function(e,t){return e.y-t.y})}},{key:"fix",value:function(e,t){e.x=this.layout.options.hierarchical.levelSeparation*t,e.options.fixed.x=!0}},{key:"shift",value:function(e,t){this.layout.body.nodes[e].y+=t}}]),t}(v);t.HorizontalStrategy=y,t.VerticalStrategy=g},function(e,t,i){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var n=i(9),s=o(n),r=i(23),a=o(r),d=i(7),h=o(d),l=i(0),u=o(l),c=i(1),f=o(c),p=i(5),v=i(24),g=i(36),y=function(){function e(t,i,o){var n=this;(0,u.default)(this,e),this.body=t,this.canvas=i,this.selectionHandler=o,this.editMode=!1,this.manipulationDiv=void 0,this.editModeDiv=void 0,this.closeDiv=void 0,this.manipulationHammers=[],this.temporaryUIFunctions={},this.temporaryEventFunctions=[],this.touchTime=0,this.temporaryIds={nodes:[],edges:[]},this.guiEnabled=!1,this.inMode=!1,this.selectedControlNode=void 0,this.options={},this.defaultOptions={enabled:!1,initiallyActive:!1,addNode:!0,addEdge:!0,editNode:void 0,editEdge:!0,deleteNode:!0,deleteEdge:!0,controlNodeStyle:{shape:"dot",size:6,color:{background:"#ff0000",border:"#3c3c3c",highlight:{background:"#07f968",border:"#3c3c3c"}},borderWidth:2,borderWidthSelected:2}},p.extend(this.options,this.defaultOptions),this.body.emitter.on("destroy",function(){n._clean()}),this.body.emitter.on("_dataChanged",this._restore.bind(this)),this.body.emitter.on("_resetData",this._restore.bind(this))}return(0,f.default)(e,[{key:"_restore",value:function(){!1!==this.inMode&&(!0===this.options.initiallyActive?this.enableEditMode():this.disableEditMode())}},{key:"setOptions",value:function(e,t,i){void 0!==t&&(void 0!==t.locale?this.options.locale=t.locale:this.options.locale=i.locale,void 0!==t.locales?this.options.locales=t.locales:this.options.locales=i.locales),void 0!==e&&("boolean"==typeof e?this.options.enabled=e:(this.options.enabled=!0,p.deepExtend(this.options,e)),!0===this.options.initiallyActive&&(this.editMode=!0),this._setup())}},{key:"toggleEditMode",value:function(){!0===this.editMode?this.disableEditMode():this.enableEditMode()}},{key:"enableEditMode",value:function(){this.editMode=!0,this._clean(),!0===this.guiEnabled&&(this.manipulationDiv.style.display="block",this.closeDiv.style.display="block",this.editModeDiv.style.display="none",this.showManipulatorToolbar())}},{key:"disableEditMode",value:function(){this.editMode=!1,this._clean(),!0===this.guiEnabled&&(this.manipulationDiv.style.display="none",this.closeDiv.style.display="none",this.editModeDiv.style.display="block",this._createEditButton())}},{key:"showManipulatorToolbar",value:function(){if(this._clean(),this.manipulationDOM={},!0===this.guiEnabled){this.editMode=!0,this.manipulationDiv.style.display="block",this.closeDiv.style.display="block";var e=this.selectionHandler._getSelectedNodeCount(),t=this.selectionHandler._getSelectedEdgeCount(),i=e+t,o=this.options.locales[this.options.locale],n=!1;!1!==this.options.addNode&&(this._createAddNodeButton(o),n=!0),!1!==this.options.addEdge&&(!0===n?this._createSeperator(1):n=!0,this._createAddEdgeButton(o)),1===e&&"function"==typeof this.options.editNode?(!0===n?this._createSeperator(2):n=!0,this._createEditNodeButton(o)):1===t&&0===e&&!1!==this.options.editEdge&&(!0===n?this._createSeperator(3):n=!0,this._createEditEdgeButton(o)),0!==i&&(e>0&&!1!==this.options.deleteNode?(!0===n&&this._createSeperator(4),this._createDeleteButton(o)):0===e&&!1!==this.options.deleteEdge&&(!0===n&&this._createSeperator(4),this._createDeleteButton(o))),this._bindHammerToDiv(this.closeDiv,this.toggleEditMode.bind(this)),this._temporaryBindEvent("select",this.showManipulatorToolbar.bind(this))}this.body.emitter.emit("_redraw")}},{key:"addNodeMode",value:function(){if(!0!==this.editMode&&this.enableEditMode(),this._clean(),this.inMode="addNode",!0===this.guiEnabled){var e=this.options.locales[this.options.locale];this.manipulationDOM={},this._createBackButton(e),this._createSeperator(),this._createDescription(e.addDescription||this.options.locales.en.addDescription),this._bindHammerToDiv(this.closeDiv,this.toggleEditMode.bind(this))}this._temporaryBindEvent("click",this._performAddNode.bind(this))}},{key:"editNode",value:function(){var e=this;!0!==this.editMode&&this.enableEditMode(),this._clean();var t=this.selectionHandler._getSelectedNode();if(void 0!==t){if(this.inMode="editNode","function"!=typeof this.options.editNode)throw new Error("No function has been configured to handle the editing of nodes.");if(!0!==t.isCluster){var i=p.deepExtend({},t.options,!1);if(i.x=t.x,i.y=t.y,2!==this.options.editNode.length)throw new Error("The function for edit does not support two arguments (data, callback)");this.options.editNode(i,function(t){null!==t&&void 0!==t&&"editNode"===e.inMode&&e.body.data.nodes.getDataSet().update(t),e.showManipulatorToolbar()})}else alert(this.options.locales[this.options.locale].editClusterError||this.options.locales.en.editClusterError)}else this.showManipulatorToolbar()}},{key:"addEdgeMode",value:function(){if(!0!==this.editMode&&this.enableEditMode(),this._clean(),this.inMode="addEdge",!0===this.guiEnabled){var e=this.options.locales[this.options.locale];this.manipulationDOM={},this._createBackButton(e),this._createSeperator(),this._createDescription(e.edgeDescription||this.options.locales.en.edgeDescription),this._bindHammerToDiv(this.closeDiv,this.toggleEditMode.bind(this))}this._temporaryBindUI("onTouch",this._handleConnect.bind(this)),this._temporaryBindUI("onDragEnd",this._finishConnect.bind(this)),this._temporaryBindUI("onDrag",this._dragControlNode.bind(this)),this._temporaryBindUI("onRelease",this._finishConnect.bind(this)),this._temporaryBindUI("onDragStart",this._dragStartEdge.bind(this)),this._temporaryBindUI("onHold",function(){})}},{key:"editEdgeMode",value:function(){if(!0!==this.editMode&&this.enableEditMode(),this._clean(),this.inMode="editEdge","object"===(0,h.default)(this.options.editEdge)&&"function"==typeof this.options.editEdge.editWithoutDrag&&(this.edgeBeingEditedId=this.selectionHandler.getSelectedEdges()[0],void 0!==this.edgeBeingEditedId)){var e=this.body.edges[this.edgeBeingEditedId];return void this._performEditEdge(e.from,e.to)}if(!0===this.guiEnabled){var t=this.options.locales[this.options.locale];this.manipulationDOM={},this._createBackButton(t),this._createSeperator(),this._createDescription(t.editEdgeDescription||this.options.locales.en.editEdgeDescription),this._bindHammerToDiv(this.closeDiv,this.toggleEditMode.bind(this))}if(this.edgeBeingEditedId=this.selectionHandler.getSelectedEdges()[0],void 0!==this.edgeBeingEditedId){var i=this.body.edges[this.edgeBeingEditedId],o=this._getNewTargetNode(i.from.x,i.from.y),n=this._getNewTargetNode(i.to.x,i.to.y);this.temporaryIds.nodes.push(o.id),this.temporaryIds.nodes.push(n.id),this.body.nodes[o.id]=o,this.body.nodeIndices.push(o.id),this.body.nodes[n.id]=n,this.body.nodeIndices.push(n.id),this._temporaryBindUI("onTouch",this._controlNodeTouch.bind(this)),this._temporaryBindUI("onTap",function(){}),this._temporaryBindUI("onHold",function(){}),this._temporaryBindUI("onDragStart",this._controlNodeDragStart.bind(this)),this._temporaryBindUI("onDrag",this._controlNodeDrag.bind(this)),this._temporaryBindUI("onDragEnd",this._controlNodeDragEnd.bind(this)),this._temporaryBindUI("onMouseMove",function(){}),this._temporaryBindEvent("beforeDrawing",function(e){var t=i.edgeType.findBorderPositions(e);!1===o.selected&&(o.x=t.from.x,o.y=t.from.y),!1===n.selected&&(n.x=t.to.x,n.y=t.to.y)}),this.body.emitter.emit("_redraw")}else this.showManipulatorToolbar()}},{key:"deleteSelected",value:function(){var e=this;!0!==this.editMode&&this.enableEditMode(),this._clean(),this.inMode="delete";var t=this.selectionHandler.getSelectedNodes(),i=this.selectionHandler.getSelectedEdges(),o=void 0;if(t.length>0){for(var n=0;n<t.length;n++)if(!0===this.body.nodes[t[n]].isCluster)return void alert(this.options.locales[this.options.locale].deleteClusterError||this.options.locales.en.deleteClusterError);"function"==typeof this.options.deleteNode&&(o=this.options.deleteNode)}else i.length>0&&"function"==typeof this.options.deleteEdge&&(o=this.options.deleteEdge);if("function"==typeof o){var s={nodes:t,edges:i};if(2!==o.length)throw new Error("The function for delete does not support two arguments (data, callback)");o(s,function(t){null!==t&&void 0!==t&&"delete"===e.inMode?(e.body.data.edges.getDataSet().remove(t.edges),e.body.data.nodes.getDataSet().remove(t.nodes),e.body.emitter.emit("startSimulation"),e.showManipulatorToolbar()):(e.body.emitter.emit("startSimulation"),e.showManipulatorToolbar())})}else this.body.data.edges.getDataSet().remove(i),this.body.data.nodes.getDataSet().remove(t),this.body.emitter.emit("startSimulation"),this.showManipulatorToolbar()}},{key:"_setup",value:function(){!0===this.options.enabled?(this.guiEnabled=!0,this._createWrappers(),!1===this.editMode?this._createEditButton():this.showManipulatorToolbar()):(this._removeManipulationDOM(),this.guiEnabled=!1)}},{key:"_createWrappers",value:function(){void 0===this.manipulationDiv&&(this.manipulationDiv=document.createElement("div"),this.manipulationDiv.className="vis-manipulation",!0===this.editMode?this.manipulationDiv.style.display="block":this.manipulationDiv.style.display="none",this.canvas.frame.appendChild(this.manipulationDiv)),void 0===this.editModeDiv&&(this.editModeDiv=document.createElement("div"),this.editModeDiv.className="vis-edit-mode",!0===this.editMode?this.editModeDiv.style.display="none":this.editModeDiv.style.display="block",this.canvas.frame.appendChild(this.editModeDiv)),void 0===this.closeDiv&&(this.closeDiv=document.createElement("div"),this.closeDiv.className="vis-close",this.closeDiv.style.display=this.manipulationDiv.style.display,this.canvas.frame.appendChild(this.closeDiv))}},{key:"_getNewTargetNode",value:function(e,t){var i=p.deepExtend({},this.options.controlNodeStyle);i.id="targetNode"+p.randomUUID(),i.hidden=!1,i.physics=!1,i.x=e,i.y=t;var o=this.body.functions.createNode(i);return o.shape.boundingBox={left:e,right:e,top:t,bottom:t},o}},{key:"_createEditButton",value:function(){this._clean(),this.manipulationDOM={},p.recursiveDOMDelete(this.editModeDiv);var e=this.options.locales[this.options.locale],t=this._createButton("editMode","vis-button vis-edit vis-edit-mode",e.edit||this.options.locales.en.edit);this.editModeDiv.appendChild(t),this._bindHammerToDiv(t,this.toggleEditMode.bind(this))}},{key:"_clean",value:function(){this.inMode=!1,!0===this.guiEnabled&&(p.recursiveDOMDelete(this.editModeDiv),p.recursiveDOMDelete(this.manipulationDiv),this._cleanManipulatorHammers()),this._cleanupTemporaryNodesAndEdges(),this._unbindTemporaryUIs(),this._unbindTemporaryEvents(),this.body.emitter.emit("restorePhysics")}},{key:"_cleanManipulatorHammers",value:function(){if(0!=this.manipulationHammers.length){for(var e=0;e<this.manipulationHammers.length;e++)this.manipulationHammers[e].destroy();this.manipulationHammers=[]}}},{key:"_removeManipulationDOM",value:function(){this._clean(),p.recursiveDOMDelete(this.manipulationDiv),p.recursiveDOMDelete(this.editModeDiv),p.recursiveDOMDelete(this.closeDiv),this.manipulationDiv&&this.canvas.frame.removeChild(this.manipulationDiv),this.editModeDiv&&this.canvas.frame.removeChild(this.editModeDiv),this.closeDiv&&this.canvas.frame.removeChild(this.closeDiv),this.manipulationDiv=void 0,this.editModeDiv=void 0,this.closeDiv=void 0}},{key:"_createSeperator",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;this.manipulationDOM["seperatorLineDiv"+e]=document.createElement("div"),this.manipulationDOM["seperatorLineDiv"+e].className="vis-separator-line",this.manipulationDiv.appendChild(this.manipulationDOM["seperatorLineDiv"+e])}},{key:"_createAddNodeButton",value:function(e){var t=this._createButton("addNode","vis-button vis-add",e.addNode||this.options.locales.en.addNode);this.manipulationDiv.appendChild(t),this._bindHammerToDiv(t,this.addNodeMode.bind(this))}},{key:"_createAddEdgeButton",value:function(e){var t=this._createButton("addEdge","vis-button vis-connect",e.addEdge||this.options.locales.en.addEdge);this.manipulationDiv.appendChild(t),this._bindHammerToDiv(t,this.addEdgeMode.bind(this))}},{key:"_createEditNodeButton",value:function(e){var t=this._createButton("editNode","vis-button vis-edit",e.editNode||this.options.locales.en.editNode);this.manipulationDiv.appendChild(t),this._bindHammerToDiv(t,this.editNode.bind(this))}},{key:"_createEditEdgeButton",value:function(e){var t=this._createButton("editEdge","vis-button vis-edit",e.editEdge||this.options.locales.en.editEdge);this.manipulationDiv.appendChild(t),this._bindHammerToDiv(t,this.editEdgeMode.bind(this))}},{key:"_createDeleteButton",value:function(e){var t;t=this.options.rtl?"vis-button vis-delete-rtl":"vis-button vis-delete";var i=this._createButton("delete",t,e.del||this.options.locales.en.del);this.manipulationDiv.appendChild(i),this._bindHammerToDiv(i,this.deleteSelected.bind(this))}},{key:"_createBackButton",value:function(e){var t=this._createButton("back","vis-button vis-back",e.back||this.options.locales.en.back);this.manipulationDiv.appendChild(t),this._bindHammerToDiv(t,this.showManipulatorToolbar.bind(this))}},{key:"_createButton",value:function(e,t,i){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"vis-label";return this.manipulationDOM[e+"Div"]=document.createElement("div"),this.manipulationDOM[e+"Div"].className=t,this.manipulationDOM[e+"Label"]=document.createElement("div"),this.manipulationDOM[e+"Label"].className=o,this.manipulationDOM[e+"Label"].innerHTML=i,this.manipulationDOM[e+"Div"].appendChild(this.manipulationDOM[e+"Label"]),this.manipulationDOM[e+"Div"]}},{key:"_createDescription",value:function(e){this.manipulationDiv.appendChild(this._createButton("description","vis-button vis-none",e))}},{key:"_temporaryBindEvent",value:function(e,t){this.temporaryEventFunctions.push({event:e,boundFunction:t}),this.body.emitter.on(e,t)}},{key:"_temporaryBindUI",value:function(e,t){if(void 0===this.body.eventListeners[e])throw new Error("This UI function does not exist. Typo? You tried: "+e+" possible are: "+(0,a.default)((0,s.default)(this.body.eventListeners)));this.temporaryUIFunctions[e]=this.body.eventListeners[e],this.body.eventListeners[e]=t}},{key:"_unbindTemporaryUIs",value:function(){for(var e in this.temporaryUIFunctions)this.temporaryUIFunctions.hasOwnProperty(e)&&(this.body.eventListeners[e]=this.temporaryUIFunctions[e],delete this.temporaryUIFunctions[e]);this.temporaryUIFunctions={}}},{key:"_unbindTemporaryEvents",value:function(){for(var e=0;e<this.temporaryEventFunctions.length;e++){var t=this.temporaryEventFunctions[e].event,i=this.temporaryEventFunctions[e].boundFunction;this.body.emitter.off(t,i)}this.temporaryEventFunctions=[]}},{key:"_bindHammerToDiv",value:function(e,t){var i=new v(e,{});g.onTouch(i,t),this.manipulationHammers.push(i)}},{key:"_cleanupTemporaryNodesAndEdges",value:function(){for(var e=0;e<this.temporaryIds.edges.length;e++){this.body.edges[this.temporaryIds.edges[e]].disconnect(),delete this.body.edges[this.temporaryIds.edges[e]];var t=this.body.edgeIndices.indexOf(this.temporaryIds.edges[e]);-1!==t&&this.body.edgeIndices.splice(t,1)}for(var i=0;i<this.temporaryIds.nodes.length;i++){delete this.body.nodes[this.temporaryIds.nodes[i]];var o=this.body.nodeIndices.indexOf(this.temporaryIds.nodes[i]);-1!==o&&this.body.nodeIndices.splice(o,1)}this.temporaryIds={nodes:[],edges:[]}}},{key:"_controlNodeTouch",value:function(e){this.selectionHandler.unselectAll(),this.lastTouch=this.body.functions.getPointer(e.center),this.lastTouch.translation=p.extend({},this.body.view.translation)}},{key:"_controlNodeDragStart",value:function(){var e=this.lastTouch,t=this.selectionHandler._pointerToPositionObject(e),i=this.body.nodes[this.temporaryIds.nodes[0]],o=this.body.nodes[this.temporaryIds.nodes[1]],n=this.body.edges[this.edgeBeingEditedId];this.selectedControlNode=void 0;var s=i.isOverlappingWith(t),r=o.isOverlappingWith(t);!0===s?(this.selectedControlNode=i,n.edgeType.from=i):!0===r&&(this.selectedControlNode=o,n.edgeType.to=o),void 0!==this.selectedControlNode&&this.selectionHandler.selectObject(this.selectedControlNode),this.body.emitter.emit("_redraw")}},{key:"_controlNodeDrag",value:function(e){this.body.emitter.emit("disablePhysics");var t=this.body.functions.getPointer(e.center),i=this.canvas.DOMtoCanvas(t);if(void 0!==this.selectedControlNode)this.selectedControlNode.x=i.x,this.selectedControlNode.y=i.y;else{var o=t.x-this.lastTouch.x,n=t.y-this.lastTouch.y;this.body.view.translation={x:this.lastTouch.translation.x+o,y:this.lastTouch.translation.y+n}}this.body.emitter.emit("_redraw")}},{key:"_controlNodeDragEnd",value:function(e){var t=this.body.functions.getPointer(e.center),i=this.selectionHandler._pointerToPositionObject(t),o=this.body.edges[this.edgeBeingEditedId];if(void 0!==this.selectedControlNode){this.selectionHandler.unselectAll();for(var n=this.selectionHandler._getAllNodesOverlappingWith(i),s=void 0,r=n.length-1;r>=0;r--)if(n[r]!==this.selectedControlNode.id){s=this.body.nodes[n[r]];break}if(void 0!==s&&void 0!==this.selectedControlNode)if(!0===s.isCluster)alert(this.options.locales[this.options.locale].createEdgeError||this.options.locales.en.createEdgeError);else{var a=this.body.nodes[this.temporaryIds.nodes[0]];this.selectedControlNode.id===a.id?this._performEditEdge(s.id,o.to.id):this._performEditEdge(o.from.id,s.id)}else o.updateEdgeType(),this.body.emitter.emit("restorePhysics");this.body.emitter.emit("_redraw")}}},{key:"_handleConnect",value:function(e){if((new Date).valueOf()-this.touchTime>100){this.lastTouch=this.body.functions.getPointer(e.center),this.lastTouch.translation=p.extend({},this.body.view.translation);var t=this.lastTouch,i=this.selectionHandler.getNodeAt(t);if(void 0!==i)if(!0===i.isCluster)alert(this.options.locales[this.options.locale].createEdgeError||this.options.locales.en.createEdgeError);else{var o=this._getNewTargetNode(i.x,i.y);this.body.nodes[o.id]=o,this.body.nodeIndices.push(o.id);var n=this.body.functions.createEdge({id:"connectionEdge"+p.randomUUID(),from:i.id,to:o.id,physics:!1,smooth:{enabled:!0,type:"continuous",roundness:.5}});this.body.edges[n.id]=n,this.body.edgeIndices.push(n.id),this.temporaryIds.nodes.push(o.id),this.temporaryIds.edges.push(n.id)}this.touchTime=(new Date).valueOf()}}},{key:"_dragControlNode",value:function(e){var t=this.body.functions.getPointer(e.center),i=this.selectionHandler._pointerToPositionObject(t),o=void 0;void 0!==this.temporaryIds.edges[0]&&(o=this.body.edges[this.temporaryIds.edges[0]].fromId);for(var n=this.selectionHandler._getAllNodesOverlappingWith(i),s=void 0,r=n.length-1;r>=0;r--)if(-1===this.temporaryIds.nodes.indexOf(n[r])){s=this.body.nodes[n[r]];break}if(e.controlEdge={from:o,to:s?s.id:void 0},this.selectionHandler._generateClickEvent("controlNodeDragging",e,t),void 0!==this.temporaryIds.nodes[0]){var a=this.body.nodes[this.temporaryIds.nodes[0]];a.x=this.canvas._XconvertDOMtoCanvas(t.x),a.y=this.canvas._YconvertDOMtoCanvas(t.y),this.body.emitter.emit("_redraw")}else{var d=t.x-this.lastTouch.x,h=t.y-this.lastTouch.y;this.body.view.translation={x:this.lastTouch.translation.x+d,y:this.lastTouch.translation.y+h}}}},{key:"_finishConnect",value:function(e){var t=this.body.functions.getPointer(e.center),i=this.selectionHandler._pointerToPositionObject(t),o=void 0;void 0!==this.temporaryIds.edges[0]&&(o=this.body.edges[this.temporaryIds.edges[0]].fromId);for(var n=this.selectionHandler._getAllNodesOverlappingWith(i),s=void 0,r=n.length-1;r>=0;r--)if(-1===this.temporaryIds.nodes.indexOf(n[r])){s=this.body.nodes[n[r]];break}this._cleanupTemporaryNodesAndEdges(),void 0!==s&&(!0===s.isCluster?alert(this.options.locales[this.options.locale].createEdgeError||this.options.locales.en.createEdgeError):void 0!==this.body.nodes[o]&&void 0!==this.body.nodes[s.id]&&this._performAddEdge(o,s.id)),e.controlEdge={from:o,to:s?s.id:void 0},this.selectionHandler._generateClickEvent("controlNodeDragEnd",e,t),this.body.emitter.emit("_redraw")}},{key:"_dragStartEdge",value:function(e){var t=this.lastTouch;this.selectionHandler._generateClickEvent("dragStart",e,t,void 0,!0)}},{key:"_performAddNode",value:function(e){var t=this,i={id:p.randomUUID(),x:e.pointer.canvas.x,y:e.pointer.canvas.y,label:"new"};if("function"==typeof this.options.addNode){if(2!==this.options.addNode.length)throw this.showManipulatorToolbar(),new Error("The function for add does not support two arguments (data,callback)");this.options.addNode(i,function(e){null!==e&&void 0!==e&&"addNode"===t.inMode&&t.body.data.nodes.getDataSet().add(e),t.showManipulatorToolbar()})}else this.body.data.nodes.getDataSet().add(i),this.showManipulatorToolbar()}},{key:"_performAddEdge",value:function(e,t){var i=this,o={from:e,to:t};if("function"==typeof this.options.addEdge){if(2!==this.options.addEdge.length)throw new Error("The function for connect does not support two arguments (data,callback)");this.options.addEdge(o,function(e){null!==e&&void 0!==e&&"addEdge"===i.inMode&&(i.body.data.edges.getDataSet().add(e),i.selectionHandler.unselectAll(),i.showManipulatorToolbar())})}else this.body.data.edges.getDataSet().add(o),this.selectionHandler.unselectAll(),this.showManipulatorToolbar()}},{key:"_performEditEdge",value:function(e,t){var i=this,o={id:this.edgeBeingEditedId,from:e,to:t,label:this.body.data.edges._data[this.edgeBeingEditedId].label},n=this.options.editEdge;if("object"===(void 0===n?"undefined":(0,h.default)(n))&&(n=n.editWithoutDrag),"function"==typeof n){if(2!==n.length)throw new Error("The function for edit does not support two arguments (data, callback)");n(o,function(e){null===e||void 0===e||"editEdge"!==i.inMode?(i.body.edges[o.id].updateEdgeType(),i.body.emitter.emit("_redraw"),i.showManipulatorToolbar()):(i.body.data.edges.getDataSet().update(e),i.selectionHandler.unselectAll(),i.showManipulatorToolbar())})}else this.body.data.edges.getDataSet().update(o),this.selectionHandler.unselectAll(),this.showManipulatorToolbar()}}]),e}();t.default=y},function(e,t,i){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var n=i(23),s=o(n),r=i(7),a=o(r),d=i(0),h=o(d),l=i(1),u=o(l),c=i(5),f=i(191).default,p=function(){function e(t,i,o){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;(0,h.default)(this,e),this.parent=t,this.changedOptions=[],this.container=i,this.allowCreation=!1,this.options={},this.initialized=!1,this.popupCounter=0,this.defaultOptions={enabled:!1,filter:!0,container:void 0,showButton:!0},c.extend(this.options,this.defaultOptions),this.configureOptions=o,this.moduleOptions={},this.domElements=[],this.popupDiv={},this.popupLimit=5,this.popupHistory={},this.colorPicker=new f(n),this.wrapper=void 0}return(0,u.default)(e,[{key:"setOptions",value:function(e){if(void 0!==e){this.popupHistory={},this._removePopup();var t=!0;if("string"==typeof e)this.options.filter=e;else if(e instanceof Array)this.options.filter=e.join();else if("object"===(void 0===e?"undefined":(0,a.default)(e))){if(null==e)throw new TypeError("options cannot be null");void 0!==e.container&&(this.options.container=e.container),void 0!==e.filter&&(this.options.filter=e.filter),void 0!==e.showButton&&(this.options.showButton=e.showButton),void 0!==e.enabled&&(t=e.enabled)}else"boolean"==typeof e?(this.options.filter=!0,t=e):"function"==typeof e&&(this.options.filter=e,t=!0);!1===this.options.filter&&(t=!1),this.options.enabled=t}this._clean()}},{key:"setModuleOptions",value:function(e){this.moduleOptions=e,!0===this.options.enabled&&(this._clean(),void 0!==this.options.container&&(this.container=this.options.container),this._create())}},{key:"_create",value:function(){this._clean(),this.changedOptions=[];var e=this.options.filter,t=0,i=!1;for(var o in this.configureOptions)this.configureOptions.hasOwnProperty(o)&&(this.allowCreation=!1,i=!1,"function"==typeof e?(i=e(o,[]),i=i||this._handleObject(this.configureOptions[o],[o],!0)):!0!==e&&-1===e.indexOf(o)||(i=!0),!1!==i&&(this.allowCreation=!0,t>0&&this._makeItem([]),this._makeHeader(o),this._handleObject(this.configureOptions[o],[o])),t++);this._makeButton(),this._push()}},{key:"_push",value:function(){this.wrapper=document.createElement("div"),this.wrapper.className="vis-configuration-wrapper",this.container.appendChild(this.wrapper);for(var e=0;e<this.domElements.length;e++)this.wrapper.appendChild(this.domElements[e]);this._showPopupIfNeeded()}},{key:"_clean",value:function(){for(var e=0;e<this.domElements.length;e++)this.wrapper.removeChild(this.domElements[e]);void 0!==this.wrapper&&(this.container.removeChild(this.wrapper),this.wrapper=void 0),this.domElements=[],this._removePopup()}},{key:"_getValue",value:function(e){for(var t=this.moduleOptions,i=0;i<e.length;i++){if(void 0===t[e[i]]){t=void 0;break}t=t[e[i]]}return t}},{key:"_makeItem",value:function(e){if(!0===this.allowCreation){var t=document.createElement("div");t.className="vis-configuration vis-config-item vis-config-s"+e.length;for(var i=arguments.length,o=Array(i>1?i-1:0),n=1;n<i;n++)o[n-1]=arguments[n];return o.forEach(function(e){t.appendChild(e)}),this.domElements.push(t),this.domElements.length}return 0}},{key:"_makeHeader",value:function(e){var t=document.createElement("div");t.className="vis-configuration vis-config-header",t.innerHTML=e,this._makeItem([],t)}},{key:"_makeLabel",value:function(e,t){var i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o=document.createElement("div");return o.className="vis-configuration vis-config-label vis-config-s"+t.length,o.innerHTML=!0===i?"<i><b>"+e+":</b></i>":e+":",o}},{key:"_makeDropdown",value:function(e,t,i){var o=document.createElement("select");o.className="vis-configuration vis-config-select";var n=0;void 0!==t&&-1!==e.indexOf(t)&&(n=e.indexOf(t));for(var s=0;s<e.length;s++){var r=document.createElement("option");r.value=e[s],s===n&&(r.selected="selected"),r.innerHTML=e[s],o.appendChild(r)}var a=this;o.onchange=function(){a._update(this.value,i)};var d=this._makeLabel(i[i.length-1],i);this._makeItem(i,d,o)}},{key:"_makeRange",value:function(e,t,i){var o=e[0],n=e[1],s=e[2],r=e[3],a=document.createElement("input");a.className="vis-configuration vis-config-range";try{a.type="range",a.min=n,a.max=s}catch(e){}a.step=r;var d="",h=0;if(void 0!==t){t<0&&1.2*t<n?(a.min=Math.ceil(1.2*t),h=a.min,d="range increased"):t/1.2<n&&(a.min=Math.ceil(t/1.2),h=a.min,d="range increased"),1.2*t>s&&1!==s&&(a.max=Math.ceil(1.2*t),h=a.max,d="range increased"),a.value=t}else a.value=o;var l=document.createElement("input");l.className="vis-configuration vis-config-rangeinput",l.value=a.value;var u=this;a.onchange=function(){l.value=this.value,u._update(Number(this.value),i)},a.oninput=function(){l.value=this.value};var c=this._makeLabel(i[i.length-1],i),f=this._makeItem(i,c,a,l);""!==d&&this.popupHistory[f]!==h&&(this.popupHistory[f]=h,this._setupPopup(d,f))}},{key:"_makeButton",value:function(){var e=this;if(!0===this.options.showButton){var t=document.createElement("div");t.className="vis-configuration vis-config-button",t.innerHTML="generate options",t.onclick=function(){e._printOptions()},t.onmouseover=function(){t.className="vis-configuration vis-config-button hover"},t.onmouseout=function(){t.className="vis-configuration vis-config-button"},this.optionsContainer=document.createElement("div"),this.optionsContainer.className="vis-configuration vis-config-option-container",this.domElements.push(this.optionsContainer),this.domElements.push(t)}}},{key:"_setupPopup",value:function(e,t){var i=this;if(!0===this.initialized&&!0===this.allowCreation&&this.popupCounter<this.popupLimit){var o=document.createElement("div");o.id="vis-configuration-popup",o.className="vis-configuration-popup",o.innerHTML=e,o.onclick=function(){i._removePopup()},this.popupCounter+=1,this.popupDiv={html:o,index:t}}}},{key:"_removePopup",value:function(){void 0!==this.popupDiv.html&&(this.popupDiv.html.parentNode.removeChild(this.popupDiv.html),clearTimeout(this.popupDiv.hideTimeout),clearTimeout(this.popupDiv.deleteTimeout),this.popupDiv={})}},{key:"_showPopupIfNeeded",value:function(){var e=this;if(void 0!==this.popupDiv.html){var t=this.domElements[this.popupDiv.index],i=t.getBoundingClientRect();this.popupDiv.html.style.left=i.left+"px",this.popupDiv.html.style.top=i.top-30+"px",document.body.appendChild(this.popupDiv.html),this.popupDiv.hideTimeout=setTimeout(function(){e.popupDiv.html.style.opacity=0},1500),this.popupDiv.deleteTimeout=setTimeout(function(){e._removePopup()},1800)}}},{key:"_makeCheckbox",value:function(e,t,i){var o=document.createElement("input");o.type="checkbox",o.className="vis-configuration vis-config-checkbox",o.checked=e,void 0!==t&&(o.checked=t,t!==e&&("object"===(void 0===e?"undefined":(0,a.default)(e))?t!==e.enabled&&this.changedOptions.push({path:i,value:t}):this.changedOptions.push({path:i,value:t})));var n=this;o.onchange=function(){n._update(this.checked,i)};var s=this._makeLabel(i[i.length-1],i);this._makeItem(i,s,o)}},{key:"_makeTextInput",value:function(e,t,i){var o=document.createElement("input");o.type="text",o.className="vis-configuration vis-config-text",o.value=t,t!==e&&this.changedOptions.push({path:i,value:t});var n=this;o.onchange=function(){n._update(this.value,i)};var s=this._makeLabel(i[i.length-1],i);this._makeItem(i,s,o)}},{key:"_makeColorField",value:function(e,t,i){var o=this,n=e[1],s=document.createElement("div");t=void 0===t?n:t,"none"!==t?(s.className="vis-configuration vis-config-colorBlock",s.style.backgroundColor=t):s.className="vis-configuration vis-config-colorBlock none",t=void 0===t?n:t,s.onclick=function(){o._showColorPicker(t,s,i)};var r=this._makeLabel(i[i.length-1],i);this._makeItem(i,r,s)}},{key:"_showColorPicker",value:function(e,t,i){var o=this;t.onclick=function(){},this.colorPicker.insertTo(t),this.colorPicker.show(),this.colorPicker.setColor(e),this.colorPicker.setUpdateCallback(function(e){var n="rgba("+e.r+","+e.g+","+e.b+","+e.a+")";t.style.backgroundColor=n,o._update(n,i)}),this.colorPicker.setCloseCallback(function(){t.onclick=function(){o._showColorPicker(e,t,i)}})}},{key:"_handleObject",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o=!1,n=this.options.filter,s=!1;for(var r in e)if(e.hasOwnProperty(r)){o=!0;var a=e[r],d=c.copyAndExtendArray(t,r);if("function"==typeof n&&!1===(o=n(r,t))&&!(a instanceof Array)&&"string"!=typeof a&&"boolean"!=typeof a&&a instanceof Object&&(this.allowCreation=!1,o=this._handleObject(a,d,!0),this.allowCreation=!1===i),!1!==o){s=!0;var h=this._getValue(d);if(a instanceof Array)this._handleArray(a,h,d);else if("string"==typeof a)this._makeTextInput(a,h,d);else if("boolean"==typeof a)this._makeCheckbox(a,h,d);else if(a instanceof Object){var l=!0;if(-1!==t.indexOf("physics")&&this.moduleOptions.physics.solver!==r&&(l=!1),!0===l)if(void 0!==a.enabled){var u=c.copyAndExtendArray(d,"enabled"),f=this._getValue(u);if(!0===f){var p=this._makeLabel(r,d,!0);this._makeItem(d,p),s=this._handleObject(a,d)||s}else this._makeCheckbox(a,f,d)}else{var v=this._makeLabel(r,d,!0);this._makeItem(d,v),s=this._handleObject(a,d)||s}}else console.error("dont know how to handle",a,r,d)}}return s}},{key:"_handleArray",value:function(e,t,i){"string"==typeof e[0]&&"color"===e[0]?(this._makeColorField(e,t,i),e[1]!==t&&this.changedOptions.push({path:i,value:t})):"string"==typeof e[0]?(this._makeDropdown(e,t,i),e[0]!==t&&this.changedOptions.push({path:i,value:t})):"number"==typeof e[0]&&(this._makeRange(e,t,i),e[0]!==t&&this.changedOptions.push({path:i,value:Number(t)}))}},{key:"_update",value:function(e,t){var i=this._constructOptions(e,t);this.parent.body&&this.parent.body.emitter&&this.parent.body.emitter.emit&&this.parent.body.emitter.emit("configChange",i),this.initialized=!0,this.parent.setOptions(i)}},{key:"_constructOptions",value:function(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},o=i;e="true"===e||e,e="false"!==e&&e;for(var n=0;n<t.length;n++)"global"!==t[n]&&(void 0===o[t[n]]&&(o[t[n]]={}),n!==t.length-1?o=o[t[n]]:o[t[n]]=e);return i}},{key:"_printOptions",value:function(){var e=this.getOptions();this.optionsContainer.innerHTML="<pre>var options = "+(0,s.default)(e,null,2)+"</pre>"}},{key:"getOptions",value:function(){for(var e={},t=0;t<this.changedOptions.length;t++)this._constructOptions(this.changedOptions[t].value,this.changedOptions[t].path,e);return e}}]),e}();t.default=p},function(e,t,i){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var n=i(23),s=o(n),r=i(0),a=o(r),d=i(1),h=o(d),l=i(24),u=i(36),c=i(5),f={black:"#000000",navy:"#000080",darkblue:"#00008B",mediumblue:"#0000CD",blue:"#0000FF",darkgreen:"#006400",green:"#008000",teal:"#008080",darkcyan:"#008B8B",deepskyblue:"#00BFFF",darkturquoise:"#00CED1",mediumspringgreen:"#00FA9A",lime:"#00FF00",springgreen:"#00FF7F",aqua:"#00FFFF",cyan:"#00FFFF",midnightblue:"#191970",dodgerblue:"#1E90FF",lightseagreen:"#20B2AA",forestgreen:"#228B22",seagreen:"#2E8B57",darkslategray:"#2F4F4F",limegreen:"#32CD32",mediumseagreen:"#3CB371",turquoise:"#40E0D0",royalblue:"#4169E1",steelblue:"#4682B4",darkslateblue:"#483D8B",mediumturquoise:"#48D1CC",indigo:"#4B0082",darkolivegreen:"#556B2F",cadetblue:"#5F9EA0",cornflowerblue:"#6495ED",mediumaquamarine:"#66CDAA",dimgray:"#696969",slateblue:"#6A5ACD",olivedrab:"#6B8E23",slategray:"#708090",lightslategray:"#778899",mediumslateblue:"#7B68EE",lawngreen:"#7CFC00",chartreuse:"#7FFF00",aquamarine:"#7FFFD4",maroon:"#800000",purple:"#800080",olive:"#808000",gray:"#808080",skyblue:"#87CEEB",lightskyblue:"#87CEFA",blueviolet:"#8A2BE2",darkred:"#8B0000",darkmagenta:"#8B008B",saddlebrown:"#8B4513",darkseagreen:"#8FBC8F",lightgreen:"#90EE90",mediumpurple:"#9370D8",darkviolet:"#9400D3",palegreen:"#98FB98",darkorchid:"#9932CC",yellowgreen:"#9ACD32",sienna:"#A0522D",brown:"#A52A2A",darkgray:"#A9A9A9",lightblue:"#ADD8E6",greenyellow:"#ADFF2F",paleturquoise:"#AFEEEE",lightsteelblue:"#B0C4DE",powderblue:"#B0E0E6",firebrick:"#B22222",darkgoldenrod:"#B8860B",mediumorchid:"#BA55D3",rosybrown:"#BC8F8F",darkkhaki:"#BDB76B",silver:"#C0C0C0",mediumvioletred:"#C71585",indianred:"#CD5C5C",peru:"#CD853F",chocolate:"#D2691E",tan:"#D2B48C",lightgrey:"#D3D3D3",palevioletred:"#D87093",thistle:"#D8BFD8",orchid:"#DA70D6",goldenrod:"#DAA520",crimson:"#DC143C",gainsboro:"#DCDCDC",plum:"#DDA0DD",burlywood:"#DEB887",lightcyan:"#E0FFFF",lavender:"#E6E6FA",darksalmon:"#E9967A",violet:"#EE82EE",palegoldenrod:"#EEE8AA",lightcoral:"#F08080",khaki:"#F0E68C",aliceblue:"#F0F8FF",honeydew:"#F0FFF0",azure:"#F0FFFF",sandybrown:"#F4A460",wheat:"#F5DEB3",beige:"#F5F5DC",whitesmoke:"#F5F5F5",mintcream:"#F5FFFA",ghostwhite:"#F8F8FF",salmon:"#FA8072",antiquewhite:"#FAEBD7",linen:"#FAF0E6",lightgoldenrodyellow:"#FAFAD2",oldlace:"#FDF5E6",red:"#FF0000",fuchsia:"#FF00FF",magenta:"#FF00FF",deeppink:"#FF1493",orangered:"#FF4500",tomato:"#FF6347",hotpink:"#FF69B4",coral:"#FF7F50",darkorange:"#FF8C00",lightsalmon:"#FFA07A",orange:"#FFA500",lightpink:"#FFB6C1",pink:"#FFC0CB",gold:"#FFD700",peachpuff:"#FFDAB9",navajowhite:"#FFDEAD",moccasin:"#FFE4B5",bisque:"#FFE4C4",mistyrose:"#FFE4E1",blanchedalmond:"#FFEBCD",papayawhip:"#FFEFD5",lavenderblush:"#FFF0F5",seashell:"#FFF5EE",cornsilk:"#FFF8DC",lemonchiffon:"#FFFACD",floralwhite:"#FFFAF0",snow:"#FFFAFA",yellow:"#FFFF00",lightyellow:"#FFFFE0",ivory:"#FFFFF0",white:"#FFFFFF"},p=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;(0,a.default)(this,e),this.pixelRatio=t,this.generated=!1,this.centerCoordinates={x:144.5,y:144.5},this.r=289*.49,this.color={r:255,g:255,b:255,a:1},this.hueCircle=void 0,this.initialColor={r:255,g:255,b:255,a:1},this.previousColor=void 0,this.applied=!1,this.updateCallback=function(){},this.closeCallback=function(){},this._create()}return(0,h.default)(e,[{key:"insertTo",value:function(e){void 0!==this.hammer&&(this.hammer.destroy(),this.hammer=void 0),this.container=e,this.container.appendChild(this.frame),this._bindHammer(),this._setSize()}},{key:"setUpdateCallback",value:function(e){if("function"!=typeof e)throw new Error("Function attempted to set as colorPicker update callback is not a function.");this.updateCallback=e}},{key:"setCloseCallback",value:function(e){if("function"!=typeof e)throw new Error("Function attempted to set as colorPicker closing callback is not a function.");this.closeCallback=e}},{key:"_isColorString",value:function(e){if("string"==typeof e)return f[e]}},{key:"setColor",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if("none"!==e){var i=void 0,o=this._isColorString(e);if(void 0!==o&&(e=o),!0===c.isString(e)){if(!0===c.isValidRGB(e)){var n=e.substr(4).substr(0,e.length-5).split(",");i={r:n[0],g:n[1],b:n[2],a:1}}else if(!0===c.isValidRGBA(e)){var r=e.substr(5).substr(0,e.length-6).split(",");i={r:r[0],g:r[1],b:r[2],a:r[3]}}else if(!0===c.isValidHex(e)){var a=c.hexToRGB(e);i={r:a.r,g:a.g,b:a.b,a:1}}}else if(e instanceof Object&&void 0!==e.r&&void 0!==e.g&&void 0!==e.b){var d=void 0!==e.a?e.a:"1.0";i={r:e.r,g:e.g,b:e.b,a:d}}if(void 0===i)throw new Error("Unknown color passed to the colorPicker. Supported are strings: rgb, hex, rgba. Object: rgb ({r:r,g:g,b:b,[a:a]}). Supplied: "+(0,s.default)(e));this._setColor(i,t)}}},{key:"show",value:function(){void 0!==this.closeCallback&&(this.closeCallback(),this.closeCallback=void 0),this.applied=!1,this.frame.style.display="block",this._generateHueCircle()}},{key:"_hide",value:function(){var e=this;!0===(!(arguments.length>0&&void 0!==arguments[0])||arguments[0])&&(this.previousColor=c.extend({},this.color)),!0===this.applied&&this.updateCallback(this.initialColor),this.frame.style.display="none",setTimeout(function(){void 0!==e.closeCallback&&(e.closeCallback(),e.closeCallback=void 0)},0)}},{key:"_save",value:function(){this.updateCallback(this.color),this.applied=!1,this._hide()}},{key:"_apply",value:function(){this.applied=!0,this.updateCallback(this.color),this._updatePicker(this.color)}},{key:"_loadLast",value:function(){void 0!==this.previousColor?this.setColor(this.previousColor,!1):alert("There is no last color to load...")}},{key:"_setColor",value:function(e){!0===(!(arguments.length>1&&void 0!==arguments[1])||arguments[1])&&(this.initialColor=c.extend({},e)),this.color=e;var t=c.RGBToHSV(e.r,e.g,e.b),i=2*Math.PI,o=this.r*t.s,n=this.centerCoordinates.x+o*Math.sin(i*t.h),s=this.centerCoordinates.y+o*Math.cos(i*t.h);this.colorPickerSelector.style.left=n-.5*this.colorPickerSelector.clientWidth+"px",this.colorPickerSelector.style.top=s-.5*this.colorPickerSelector.clientHeight+"px",this._updatePicker(e)}},{key:"_setOpacity",value:function(e){this.color.a=e/100,this._updatePicker(this.color)}},{key:"_setBrightness",value:function(e){var t=c.RGBToHSV(this.color.r,this.color.g,this.color.b);t.v=e/100;var i=c.HSVToRGB(t.h,t.s,t.v);i.a=this.color.a,this.color=i,this._updatePicker()}},{key:"_updatePicker",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.color,t=c.RGBToHSV(e.r,e.g,e.b),i=this.colorPickerCanvas.getContext("2d");void 0===this.pixelRation&&(this.pixelRatio=(window.devicePixelRatio||1)/(i.webkitBackingStorePixelRatio||i.mozBackingStorePixelRatio||i.msBackingStorePixelRatio||i.oBackingStorePixelRatio||i.backingStorePixelRatio||1)),i.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);var o=this.colorPickerCanvas.clientWidth,n=this.colorPickerCanvas.clientHeight;i.clearRect(0,0,o,n),i.putImageData(this.hueCircle,0,0),i.fillStyle="rgba(0,0,0,"+(1-t.v)+")",i.circle(this.centerCoordinates.x,this.centerCoordinates.y,this.r),i.fill(),this.brightnessRange.value=100*t.v,this.opacityRange.value=100*e.a,this.initialColorDiv.style.backgroundColor="rgba("+this.initialColor.r+","+this.initialColor.g+","+this.initialColor.b+","+this.initialColor.a+")",this.newColorDiv.style.backgroundColor="rgba("+this.color.r+","+this.color.g+","+this.color.b+","+this.color.a+")"}},{key:"_setSize",value:function(){this.colorPickerCanvas.style.width="100%",this.colorPickerCanvas.style.height="100%",this.colorPickerCanvas.width=289*this.pixelRatio,this.colorPickerCanvas.height=289*this.pixelRatio}},{key:"_create",value:function(){if(this.frame=document.createElement("div"),this.frame.className="vis-color-picker",this.colorPickerDiv=document.createElement("div"),this.colorPickerSelector=document.createElement("div"),this.colorPickerSelector.className="vis-selector",this.colorPickerDiv.appendChild(this.colorPickerSelector),this.colorPickerCanvas=document.createElement("canvas"),this.colorPickerDiv.appendChild(this.colorPickerCanvas),this.colorPickerCanvas.getContext){var e=this.colorPickerCanvas.getContext("2d");this.pixelRatio=(window.devicePixelRatio||1)/(e.webkitBackingStorePixelRatio||e.mozBackingStorePixelRatio||e.msBackingStorePixelRatio||e.oBackingStorePixelRatio||e.backingStorePixelRatio||1),this.colorPickerCanvas.getContext("2d").setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0)}else{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.colorPickerCanvas.appendChild(t)}this.colorPickerDiv.className="vis-color",this.opacityDiv=document.createElement("div"),this.opacityDiv.className="vis-opacity",this.brightnessDiv=document.createElement("div"),this.brightnessDiv.className="vis-brightness",this.arrowDiv=document.createElement("div"),this.arrowDiv.className="vis-arrow",this.opacityRange=document.createElement("input");try{this.opacityRange.type="range",this.opacityRange.min="0",this.opacityRange.max="100"}catch(e){}this.opacityRange.value="100",this.opacityRange.className="vis-range",this.brightnessRange=document.createElement("input");try{this.brightnessRange.type="range",this.brightnessRange.min="0",this.brightnessRange.max="100"}catch(e){}this.brightnessRange.value="100",this.brightnessRange.className="vis-range",this.opacityDiv.appendChild(this.opacityRange),this.brightnessDiv.appendChild(this.brightnessRange);var i=this;this.opacityRange.onchange=function(){i._setOpacity(this.value)},this.opacityRange.oninput=function(){i._setOpacity(this.value)},this.brightnessRange.onchange=function(){i._setBrightness(this.value)},this.brightnessRange.oninput=function(){i._setBrightness(this.value)},this.brightnessLabel=document.createElement("div"),this.brightnessLabel.className="vis-label vis-brightness",this.brightnessLabel.innerHTML="brightness:",this.opacityLabel=document.createElement("div"),this.opacityLabel.className="vis-label vis-opacity",this.opacityLabel.innerHTML="opacity:",this.newColorDiv=document.createElement("div"),this.newColorDiv.className="vis-new-color",this.newColorDiv.innerHTML="new",this.initialColorDiv=document.createElement("div"),this.initialColorDiv.className="vis-initial-color",this.initialColorDiv.innerHTML="initial",this.cancelButton=document.createElement("div"),this.cancelButton.className="vis-button vis-cancel",this.cancelButton.innerHTML="cancel",this.cancelButton.onclick=this._hide.bind(this,!1),this.applyButton=document.createElement("div"),this.applyButton.className="vis-button vis-apply",this.applyButton.innerHTML="apply",this.applyButton.onclick=this._apply.bind(this),this.saveButton=document.createElement("div"),this.saveButton.className="vis-button vis-save",this.saveButton.innerHTML="save",this.saveButton.onclick=this._save.bind(this),this.loadButton=document.createElement("div"),this.loadButton.className="vis-button vis-load",this.loadButton.innerHTML="load last",this.loadButton.onclick=this._loadLast.bind(this),this.frame.appendChild(this.colorPickerDiv),this.frame.appendChild(this.arrowDiv),this.frame.appendChild(this.brightnessLabel),this.frame.appendChild(this.brightnessDiv),this.frame.appendChild(this.opacityLabel),this.frame.appendChild(this.opacityDiv),this.frame.appendChild(this.newColorDiv),this.frame.appendChild(this.initialColorDiv),this.frame.appendChild(this.cancelButton),this.frame.appendChild(this.applyButton),this.frame.appendChild(this.saveButton),this.frame.appendChild(this.loadButton)}},{key:"_bindHammer",value:function(){var e=this;this.drag={},this.pinch={},this.hammer=new l(this.colorPickerCanvas),this.hammer.get("pinch").set({enable:!0}),u.onTouch(this.hammer,function(t){e._moveSelector(t)}),this.hammer.on("tap",function(t){e._moveSelector(t)}),this.hammer.on("panstart",function(t){e._moveSelector(t)}),this.hammer.on("panmove",function(t){e._moveSelector(t)}),this.hammer.on("panend",function(t){e._moveSelector(t)})}},{key:"_generateHueCircle",value:function(){if(!1===this.generated){var e=this.colorPickerCanvas.getContext("2d");void 0===this.pixelRation&&(this.pixelRatio=(window.devicePixelRatio||1)/(e.webkitBackingStorePixelRatio||e.mozBackingStorePixelRatio||e.msBackingStorePixelRatio||e.oBackingStorePixelRatio||e.backingStorePixelRatio||1)),e.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);var t=this.colorPickerCanvas.clientWidth,i=this.colorPickerCanvas.clientHeight;e.clearRect(0,0,t,i);var o=void 0,n=void 0,s=void 0,r=void 0;this.centerCoordinates={x:.5*t,y:.5*i},this.r=.49*t;var a=2*Math.PI/360,d=1/this.r,h=void 0;for(s=0;s<360;s++)for(r=0;r<this.r;r++)o=this.centerCoordinates.x+r*Math.sin(a*s),n=this.centerCoordinates.y+r*Math.cos(a*s),h=c.HSVToRGB(s*(1/360),r*d,1),e.fillStyle="rgb("+h.r+","+h.g+","+h.b+")",e.fillRect(o-.5,n-.5,2,2);e.strokeStyle="rgba(0,0,0,1)",e.circle(this.centerCoordinates.x,this.centerCoordinates.y,this.r),e.stroke(),this.hueCircle=e.getImageData(0,0,t,i)}this.generated=!0}},{key:"_moveSelector",value:function(e){var t=this.colorPickerDiv.getBoundingClientRect(),i=e.center.x-t.left,o=e.center.y-t.top,n=.5*this.colorPickerDiv.clientHeight,s=.5*this.colorPickerDiv.clientWidth,r=i-s,a=o-n,d=Math.atan2(r,a),h=.98*Math.min(Math.sqrt(r*r+a*a),s),l=Math.cos(d)*h+n,u=Math.sin(d)*h+s;this.colorPickerSelector.style.top=l-.5*this.colorPickerSelector.clientHeight+"px",this.colorPickerSelector.style.left=u-.5*this.colorPickerSelector.clientWidth+"px";var f=d/(2*Math.PI);f=f<0?f+1:f;var p=h/this.r,v=c.RGBToHSV(this.color.r,this.color.g,this.color.b);v.h=f,v.s=p;var g=c.HSVToRGB(v.h,v.s,v.v);g.a=this.color.a,this.color=g,this.initialColorDiv.style.backgroundColor="rgba("+this.initialColor.r+","+this.initialColor.g+","+this.initialColor.b+","+this.initialColor.a+")",this.newColorDiv.style.backgroundColor="rgba("+this.color.r+","+this.color.g+","+this.color.b+","+this.color.a+")"}}]),e}();t.default=p},function(e,t,i){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var n=i(15),s=o(n),r=i(0),a=o(r),d=i(1),h=o(d),l=i(193),u=o(l),c=function(){function e(t,i,o){(0,a.default)(this,e),this.body=t,this.springLength=i,this.springConstant=o,this.distanceSolver=new u.default}return(0,h.default)(e,[{key:"setOptions",value:function(e){e&&(e.springLength&&(this.springLength=e.springLength),e.springConstant&&(this.springConstant=e.springConstant))}},{key:"solve",value:function(e,t){var i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o=this.distanceSolver.getDistances(this.body,e,t);this._createL_matrix(o),this._createK_matrix(o),this._createE_matrix();for(var n=0,r=Math.max(1e3,Math.min(10*this.body.nodeIndices.length,6e3)),a=1e9,d=0,h=0,l=0,u=0,c=0;a>.01&&n<r;){n+=1;var f=this._getHighestEnergyNode(i),p=(0,s.default)(f,4);for(d=p[0],a=p[1],h=p[2],l=p[3],u=a,c=0;u>1&&c<5;){c+=1,this._moveNode(d,h,l);var v=this._getEnergy(d),g=(0,s.default)(v,3);u=g[0],h=g[1],l=g[2]}}}},{key:"_getHighestEnergyNode",value:function(e){for(var t=this.body.nodeIndices,i=this.body.nodes,o=0,n=t[0],r=0,a=0,d=0;d<t.length;d++){var h=t[d];if(!1===i[h].predefinedPosition||!0===i[h].isCluster&&!0===e||!0===i[h].options.fixed.x||!0===i[h].options.fixed.y){var l=this._getEnergy(h),u=(0,s.default)(l,3),c=u[0],f=u[1],p=u[2];o<c&&(o=c,n=h,r=f,a=p)}}return[n,o,r,a]}},{key:"_getEnergy",value:function(e){var t=(0,s.default)(this.E_sums[e],2),i=t[0],o=t[1];return[Math.sqrt(Math.pow(i,2)+Math.pow(o,2)),i,o]}},{key:"_moveNode",value:function(e,t,i){for(var o=this.body.nodeIndices,n=this.body.nodes,s=0,r=0,a=0,d=n[e].x,h=n[e].y,l=this.K_matrix[e],u=this.L_matrix[e],c=0;c<o.length;c++){var f=o[c];if(f!==e){var p=n[f].x,v=n[f].y,g=l[f],y=u[f],m=1/Math.pow(Math.pow(d-p,2)+Math.pow(h-v,2),1.5);s+=g*(1-y*Math.pow(h-v,2)*m),r+=g*(y*(d-p)*(h-v)*m),a+=g*(1-y*Math.pow(d-p,2)*m)}}var b=s,_=r,w=t,k=a,x=i,O=(w/b+x/_)/(_/b-k/_),M=-(_*O+w)/b;n[e].x+=M,n[e].y+=O,this._updateE_matrix(e)}},{key:"_createL_matrix",value:function(e){var t=this.body.nodeIndices,i=this.springLength;this.L_matrix=[];for(var o=0;o<t.length;o++){this.L_matrix[t[o]]={};for(var n=0;n<t.length;n++)this.L_matrix[t[o]][t[n]]=i*e[t[o]][t[n]]}}},{key:"_createK_matrix",value:function(e){var t=this.body.nodeIndices,i=this.springConstant;this.K_matrix=[];for(var o=0;o<t.length;o++){this.K_matrix[t[o]]={};for(var n=0;n<t.length;n++)this.K_matrix[t[o]][t[n]]=i*Math.pow(e[t[o]][t[n]],-2)}}},{key:"_createE_matrix",value:function(){var e=this.body.nodeIndices,t=this.body.nodes;this.E_matrix={},this.E_sums={};for(var i=0;i<e.length;i++)this.E_matrix[e[i]]=[];for(var o=0;o<e.length;o++){for(var n=e[o],s=t[n].x,r=t[n].y,a=0,d=0,h=o;h<e.length;h++){var l=e[h];if(l!==n){var u=t[l].x,c=t[l].y,f=1/Math.sqrt(Math.pow(s-u,2)+Math.pow(r-c,2));this.E_matrix[n][h]=[this.K_matrix[n][l]*(s-u-this.L_matrix[n][l]*(s-u)*f),this.K_matrix[n][l]*(r-c-this.L_matrix[n][l]*(r-c)*f)],this.E_matrix[l][o]=this.E_matrix[n][h],a+=this.E_matrix[n][h][0],d+=this.E_matrix[n][h][1]}}this.E_sums[n]=[a,d]}}},{key:"_updateE_matrix",value:function(e){for(var t=this.body.nodeIndices,i=this.body.nodes,o=this.E_matrix[e],n=this.K_matrix[e],s=this.L_matrix[e],r=i[e].x,a=i[e].y,d=0,h=0,l=0;l<t.length;l++){var u=t[l];if(u!==e){var c=o[l],f=c[0],p=c[1],v=i[u].x,g=i[u].y,y=1/Math.sqrt(Math.pow(r-v,2)+Math.pow(a-g,2)),m=n[u]*(r-v-s[u]*(r-v)*y),b=n[u]*(a-g-s[u]*(a-g)*y);o[l]=[m,b],d+=m,h+=b;var _=this.E_sums[u];_[0]+=m-f,_[1]+=b-p}}this.E_sums[e]=[d,h]}}]),e}();t.default=c},function(e,t,i){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var n=i(0),s=o(n),r=i(1),a=o(r),d=function(){function e(){(0,s.default)(this,e)}return(0,a.default)(e,[{key:"getDistances",value:function(e,t,i){for(var o={},n=e.edges,s=0;s<t.length;s++){var r=t[s],a={};o[r]=a;for(var d=0;d<t.length;d++)a[t[d]]=s==d?0:1e9}for(var h=0;h<i.length;h++){var l=n[i[h]];!0===l.connected&&void 0!==o[l.fromId]&&void 0!==o[l.toId]&&(o[l.fromId][l.toId]=1,o[l.toId][l.fromId]=1)}for(var u=t.length,c=0;c<u;c++)for(var f=t[c],p=o[f],v=0;v<u-1;v++)for(var g=t[v],y=o[g],m=v+1;m<u;m++){var b=t[m],_=o[b],w=Math.min(y[b],y[f]+p[b]);y[b]=w,_[g]=w}return o}}]),e}();t.default=d}])}); //data const zooData = [ // functionalities { "category": "functionality", "name": "Anonymous Transmission", "id": "anon_tran", "uri": "https://wiki.veriqloud.fr/index.php?title=Anonymous_Transmission", "implemented_by": ["ghz_q_anon_tran", "veri_q_anon_tran"] }, { "category": "functionality", "name": "Bit Commitment", "id": "bit_comm", "uri": "https://wiki.veriqloud.fr/index.php?title=Bit_Commitment", "implemented_by": ["q_bit_comm"] }, { "category": "functionality", "name": "Byzantine Agreement", "id": "byza_agre", "uri": "https://wiki.veriqloud.fr/index.php?title=Byzantine_Agreement", "implemented_by": ["fast_q_byza_agre"] }, { "category": "functionality", "name": "Coin Flipping", "id": "coin_flip", "uri": "https://wiki.veriqloud.fr/index.php?title=Coin_Flipping", "implemented_by": ["q_coin_flip"] }, { "category": "functionality", "name": "Digital Signature", "id": "digi_sign", "uri": "https://wiki.veriqloud.fr/index.php?title=Quantum_Digital_Signature", "implemented_by": ["gott_chua_q_digi_sign", "prep_meas_q_digi_sign", "meas_devi_inde_q_digi_sign", "arbi_q_digi_sign", "blin_dele_q_digi_sign"] }, { "category": "functionality", "name": "Fingerprinting", "id": "fing", "uri": "https://wiki.veriqloud.fr/index.php?title=Fingerprinting", "implemented_by": ["q_fing"] }, { "category": "functionality", "name": "Identity Authentication", "id": "iden_auth", "uri": "https://wiki.veriqloud.fr/index.php?title=Quantum_Identity_Authentication", "implemented_by": [] }, { "category": "functionality", "name": "Key Distribution", "id": "key_dist", "uri": "https://wiki.veriqloud.fr/index.php?title=Quantum_Key_Distribution", "implemented_by": ["bb84_q_key_dist", "devi_inde_q_key_dist"] }, { "category": "functionality", "name": "Leader Election", "id": "lead_elec", "uri": "https://wiki.veriqloud.fr/index.php?title=Leader_Election", "implemented_by": ["q_lead_elec"] }, { "category": "functionality", "name": "Money", "id": "mone", "uri": "https://wiki.veriqloud.fr/index.php?title=Quantum_Money", "implemented_by": ["q_cheq", "q_coin", "q_toke", "weis_q_mone"] }, { "category": "functionality", "name": "Oblivious Transfer", "id": "obli_tran", "uri": "https://wiki.veriqloud.fr/index.php?title=Oblivious_Transfer", "implemented_by": ["q_obli_tran"] }, { "category": "functionality", "name": "Secure Client-Server Delegated Computation", "id": "secu_clie_serv_dele_comp", "uri": "https://wiki.veriqloud.fr/index.php?title=Secure_Client-_Server_Delegated_Computation", "implemented_by": ["clas_full_homo_encr_q_circ", "meas_only_univ_blin_q_comp", "prep_send_q_full_homo_encr", "prep_send_univ_blin_q_comp", "pseu_secr_rand_qubi_gene"] }, { "category": "functionality", "name": "Secure Delegated Classical Computation", "id": "secu_dele_clas_comp", "uri": "https://wiki.veriqloud.fr/index.php?title=Secure_Delegated_Classical_Computation", "implemented_by": ["secu_clie_serv_clas_dele_comp", "secu_mult_dele_clas_comp"] }, { "category": "functionality", "name": "Secure Multiparty Delegated Computation", "id": "secu_mult_dele_comp", "uri": "https://wiki.veriqloud.fr/index.php?title=Secure_Multi-Party_Delegated_Computation", "implemented_by": ["secu_mult_dele_clas_comp", "secu_mult_dele_q_comp"] }, { "category": "functionality", "name": "Secure Verifiable Client-Server Delegated Computation", "id": "secu_veri_clie_serv_dele_comp", "uri": "https://wiki.veriqloud.fr/index.php?title=Secure_Verifiable_Client-Server_Delegated_Quantum_Computation", "implemented_by": ["meas_only_veri_univ_blin_q_comp", "prep_send_veri_q_full_homo_encr", "prep_send_veri_univ_blin_q_comp"] }, { "category": "functionality", "name": "Teleportation", "id": "tele", "uri": "https://wiki.veriqloud.fr/index.php?title=Teleportation", "implemented_by": ["stat_tele", "gate_tele"] }, // nodal subroutines { "category": "nodal_subroutine", "name": "Classical Processing", "id": "clas_proc" }, { "category": "nodal_subroutine", "name": "Error Correction", "id": "erro_corr" }, { "category": "nodal_subroutine", "name": "One Way Function", "id": "one_way_func", "has_subtype": ["c_q_one_way_func", "q_q_one_way_func"] }, { "category": "nodal_subroutine", "name": "Classical to Quantum One Way Function", "id": "c_q_one_way_func" }, { "category": "nodal_subroutine", "name": "Quantum to Quantum One Way Function", "id": "q_q_one_way_func" }, { "category": "nodal_subroutine", "name": "Privacy Amplification", "id": "priv_ampl" }, { "category": "nodal_subroutine", "name": "Quantum One Time Pad", "id": "q_one_time_pad" }, { "category": "nodal_subroutine", "name": "Quantum SWAP Test", "id": "q_swap_test" }, { "category": "nodal_subroutine", "name": "Random Number Generator", "id": "rand_numb_gene" }, // physical resources { "category": "physical_resource", "name": "Classical Channel", "id": "clas_chan", "has_subtype": ["clas_chan_broa", "clas_chan_secu", "clas_chan_erro_free", "clas_chan_auth"] }, { "category": "physical_resource", "name": "Classical Channel (Broadcast)", "id": "clas_chan_broa" }, { "category": "physical_resource", "name": "Classical Channel (Secure)", "id": "clas_chan_secu" }, { "category": "physical_resource", "name": "Classical Channel (Error Free)", "id": "clas_chan_erro_free" }, { "category": "physical_resource", "name": "Classical Channel (Authenticated)", "id": "clas_chan_auth" }, { "category": "physical_resource", "name": "Measurement", "id": "meas", "has_subtype": ["sing_qubi_meas", "mult_qubi_meas"] }, { "category": "physical_resource", "name": "Single Qubit Measurement", "id": "sing_qubi_meas" }, { "category": "physical_resource", "name": "Multi Qubit Measurement", "id": "mult_qubi_meas" }, { "category": "physical_resource", "name": "Quantum Channel", "id": "quan_chan", "has_subtype": ["quan_chan_broa", "quan_chan_secu", "quan_chan_auth"] }, { "category": "physical_resource", "name": "Quantum Channel (Broadcast)", "id": "quan_chan_broa" }, { "category": "physical_resource", "name": "Quantum Channel (Secure)", "id": "quan_chan_secu" }, { "category": "physical_resource", "name": "Quantum Channel (Authenticated)", "id": "quan_chan_auth" }, { "category": "physical_resource", "name": "Quantum Memory", "id": "quan_memo", "has_subtype": [] }, { "category": "physical_resource", "name": "State Preparation", "id": "stat_prep", "has_subtype": ["sing_qubi_stat_prep", "mult_qubi_stat_prep"] }, { "category": "physical_resource", "name": "Single Qubit State Preparation", "id": "sing_qubi_stat_prep" }, { "category": "physical_resource", "name": "Multi Qubit State Preparation", "id": "mult_qubi_stat_prep", "has_subtype": ["sepa_mult_qubi_stat_prep", "non_sepa_mult_qubi_stat_prep"] }, { "category": "physical_resource", "name": "Separable Multi Qubit State Preparation", "id": "sepa_mult_qubi_stat_prep" }, { "category": "physical_resource", "name": "Non Separable Multi Qubit State Preparation", "id": "non_sepa_mult_qubi_stat_prep" }, { "category": "physical_resource", "name": "Single Qubit Gates", "id": "sing_qubi_gate" }, { "category": "physical_resource", "name": "Two Qubit Gates", "id": "two_qubi_gate" }, // Protocols { "category": "protocol", "name": "GHZ-based Quantum Anonymous Transmission", "id": "ghz_q_anon_tran", "uri": "https://wiki.veriqloud.fr/index.php?title=GHZ-based_Quantum_Anonymous_Transmission", "requires": ["ghz_q_anon_tran_node", "ghz_q_anon_tran_trus_dist"] }, { "category": "protocol_party", "name": "GHZ-based Quantum Anonymous Transmission (Nodes)", "id": "ghz_q_anon_tran_node", "uri": "https://wiki.veriqloud.fr/index.php?title=GHZ-based_Quantum_Anonymous_Transmission", "requires": ["clas_coll_dete", "anon_enta", "clas_logi_or", "quan_chan", "sing_qubi_gate", "sing_qubi_meas", "clas_chan_broa"] }, { "category": "protocol_party", "name": "GHZ-based Quantum Anonymous Transmission (Trusted Distributor)", "id": "ghz_q_anon_tran_trus_dist", "uri": "https://wiki.veriqloud.fr/index.php?title=GHZ-based_Quantum_Anonymous_Transmission", "requires": ["quan_chan", "non_sepa_mult_qubi_stat_prep"] }, { "category": "protocol", "name": "Verifiable Quantum Anonymous Transmission", "id": "veri_q_anon_tran", "uri": "https://wiki.veriqloud.fr/index.php?title=Verifiable_Quantum_Anonymous_Transmission", "requires": ["veri_q_anon_tran_node", "veri_q_anon_tran_untr_dist"] }, { "category": "protocol_party", "name": "Verifiable Quantum Anonymous Transmission (Nodes)", "id": "veri_q_anon_tran_node", "uri": "https://wiki.veriqloud.fr/index.php?title=Verifiable_Quantum_Anonymous_Transmission", "requires": ["quan_chan", "sing_qubi_gate", "sing_qubi_meas", "clas_chan_broa", "clas_chan_auth", "rand_numb_gene", "clas_proc", "clas_logi_or"] }, { "category": "protocol_party", "name": "Verifiable Quantum Anonymous Transmission (Untrusted Distributor)", "id": "veri_q_anon_tran_untr_dist", "uri": "https://wiki.veriqloud.fr/index.php?title=Verifiable_Quantum_Anonymous_Transmission", "requires": ["quan_chan", "non_sepa_mult_qubi_stat_prep"] }, { "category": "protocol", "name": "Fast Quantum Byzantine Agreement", "id": "fast_q_byza_agre", "uri": "https://wiki.veriqloud.fr/index.php?title=Fast_Quantum_Byzantine_Agreement", "requires": ["quan_obli_comm_coin", "clas_chan", "clas_proc"] }, { "category": "protocol", "name": "Quantum Oblivious Common Coin", "id": "quan_obli_comm_coin", "uri": "", "requires": ["clas_grad", "veri_quan_secr_shar", "clas_chan", "quan_chan", "sepa_mult_qubi_stat_prep"] }, { "category": "protocol", "name": "Quantum Bit Commitment", "id": "q_bit_comm", "uri": "https://wiki.veriqloud.fr/index.php?title=Quantum_Bit_Commitment", "requires": ["q_bit_comm_comm", "q_bit_comm_rece", "q_bit_comm_agen"] }, { "category": "protocol_party", "name": "Quantum Bit Commitment (Committer)", "id": "q_bit_comm_comm", "uri": "https://wiki.veriqloud.fr/index.php?title=Quantum_Bit_Commitment", "requires": ["quan_chan", "sing_qubi_meas", "clas_chan_secu"] }, { "category": "protocol_party", "name": "Quantum Bit Commitment (Receiver)", "id": "q_bit_comm_rece", "uri": "https://wiki.veriqloud.fr/index.php?title=Quantum_Bit_Commitment", "requires": ["quan_chan", "sing_qubi_stat_prep", "clas_chan_secu"] }, { "category": "protocol_party", "name": "Quantum Bit Commitment (Agents)", "id": "q_bit_comm_agen", "uri": "https://wiki.veriqloud.fr/index.php?title=Quantum_Bit_Commitment", "requires": ["clas_chan_secu"] }, { "category": "protocol", "name": "Quantum Coin Flipping", "id": "q_coin_flip", "uri": "https://wiki.veriqloud.fr/index.php?title=Quantum_Coin_Flipping", "requires": ["rand_numb_gene", "quan_memo", "quan_chan", "sepa_mult_qubi_stat_prep", "mult_qubi_meas"] }, { "category": "protocol", "name": "Gottesman and Chuang Quantum Digital Signature", "id": "gott_chua_q_digi_sign", "uri": "https://wiki.veriqloud.fr/index.php?title=Gottesman_and_Chuang_Quantum_Digital_Signature", "requires": ["gott_chua_q_digi_sign_sell", "gott_chua_q_digi_sign_buye", "gott_chua_q_digi_sign_veri"] }, { "category": "protocol_party", "name": "Gottesman and Chuang Quantum Digital Signature (Seller)", "id": "gott_chua_q_digi_sign_sell", "uri": "https://wiki.veriqloud.fr/index.php?title=Gottesman_and_Chuang_Quantum_Digital_Signature", "requires": ["rand_numb_gene", "c_q_one_way_func", "quan_chan_auth", "clas_chan_auth"] }, { "category": "protocol_party", "name": "Gottesman and Chuang Quantum Digital Signature (Buyer)", "id": "gott_chua_q_digi_sign_buye", "uri": "https://wiki.veriqloud.fr/index.php?title=Gottesman_and_Chuang_Quantum_Digital_Signature", "requires": ["c_q_one_way_func", "q_swap_test", "quan_memo", "quan_chan_auth", "clas_chan_auth"] }, { "category": "protocol_party", "name": "Gottesman and Chuang Quantum Digital Signature (Verifier)", "id": "gott_chua_q_digi_sign_veri", "uri": "https://wiki.veriqloud.fr/index.php?title=Gottesman_and_Chuang_Quantum_Digital_Signature", "requires": ["c_q_one_way_func", "q_swap_test", "quan_memo", "quan_chan_auth", "clas_chan_auth"] }, { "category": "protocol", "name": "Prepare and Measure Quantum Digital Signature", "id": "prep_meas_q_digi_sign", "uri": "https://wiki.veriqloud.fr/index.php?title=Prepare_and_Measure_Quantum_Digital_Signature", "requires": ["prep_meas_q_digi_sign_sell", "prep_meas_q_digi_sign_buye", "prep_meas_q_digi_sign_veri"] }, { "category": "protocol_party", "name": "Prepare and Measure Quantum Digital Signature (Seller)", "id": "prep_meas_q_digi_sign_sell", "uri": "https://wiki.veriqloud.fr/index.php?title=Prepare_and_Measure_Quantum_Digital_Signature", "requires": ["rand_numb_gene", "quan_chan_auth", "clas_chan_auth", "sing_qubi_stat_prep"] }, { "category": "protocol_party", "name": "Prepare and Measure Quantum Digital Signature (Buyer)", "id": "prep_meas_q_digi_sign_buye", "uri": "https://wiki.veriqloud.fr/index.php?title=Prepare_and_Measure_Quantum_Digital_Signature", "requires": ["rand_numb_gene", "quan_chan_auth", "clas_chan_auth", "sing_qubi_meas"] }, { "category": "protocol_party", "name": "Prepare and Measure Quantum Digital Signature (Verifier)", "id": "prep_meas_q_digi_sign_veri", "uri": "https://wiki.veriqloud.fr/index.php?title=Prepare_and_Measure_Quantum_Digital_Signature", "requires": ["rand_numb_gene", "quan_chan_auth", "clas_chan_auth", "sing_qubi_meas"] }, { "category": "missing protocol", "name": "Measurement Device Independent Quantum Digital Signature", "id": "meas_devi_inde_q_digi_sign", "uri": "https://wiki.veriqloud.fr/index.php?title=Measurement_Device_Independent_Quantum_Digital_Signature_(MDI-QDS)", "requires": [] }, { "category": "missing protocol", "name": "Arbitrated Quantum Digital Signature", "id": "arbi_q_digi_sign", "uri": "https://wiki.veriqloud.fr/index.php?title=Arbitrated_Quantum_Digital_Signature", "requires": [] }, { "category": "protocol", "name": "Blind Delegation of Quantum Digital Signature", "id": "blin_dele_q_digi_sign", "uri": "https://wiki.veriqloud.fr/index.php?title=Blind_Delegation_of_Quantum_Digital_Signature", "requires": ["blin_dele_q_digi_sign_owne", "blin_dele_q_digi_sign_sign", "blin_dele_q_digi_sign_veri"] }, { "category": "protocol_party", "name": "Blind Delegation of Quantum Digital Signature (Owner)", "id": "blin_dele_q_digi_sign_owne", "uri": "https://wiki.veriqloud.fr/index.php?title=Blind_Delegation_of_Quantum_Digital_Signature", "requires": ["clas_proc", "clas_chan_auth", "high_capa_mult_qubi_enta_q_key_dist"] }, { "category": "protocol_party", "name": "Blind Delegation of Quantum Digital Signature (Signer)", "id": "blin_dele_q_digi_sign_sign", "uri": "https://wiki.veriqloud.fr/index.php?title=Blind_Delegation_of_Quantum_Digital_Signature", "requires": ["clas_proc", "clas_chan_auth", "high_capa_mult_qubi_enta_q_key_dist"] }, { "category": "protocol_party", "name": "Blind Delegation of Quantum Digital Signature (Verifier)", "id": "blin_dele_q_digi_sign_veri", "uri": "https://wiki.veriqloud.fr/index.php?title=Blind_Delegation_of_Quantum_Digital_Signature", "requires": ["clas_proc", "clas_chan_auth", "high_capa_mult_qubi_enta_q_key_dist"] }, { "category": "protocol", "name": "Quantum Fingerprinting", "id": "q_fing", "uri": "https://wiki.veriqloud.fr/index.php?title=Quantum_Fingerprinting", "requires": ["non_sepa_mult_qubi_stat_prep", "sing_qubi_meas", "quan_memo", "quan_chan_auth", "erro_corr"] }, { "category": "protocol", "name": "BB84 Quantum Key Distribution", "id": "bb84_q_key_dist", "uri": "https://wiki.veriqloud.fr/index.php?title=BB84_Quantum_Key_Distribution", "requires": ["bb84_q_key_dist_send", "bb84_q_key_dist_rece"] }, { "category": "protocol_party", "name": "BB84 Quantum Key Distribution (Sender)", "id": "bb84_q_key_dist_send", "uri": "https://wiki.veriqloud.fr/index.php?title=BB84_Quantum_Key_Distribution", "requires": ["erro_corr", "rand_numb_gene", "priv_ampl", "quan_chan", "clas_chan_auth", "sing_qubi_stat_prep"] }, { "category": "protocol_party", "name": "BB84 Quantum Key Distribution (Receiver)", "id": "bb84_q_key_dist_rece", "uri": "https://wiki.veriqloud.fr/index.php?title=BB84_Quantum_Key_Distribution", "requires": ["erro_corr", "rand_numb_gene", "priv_ampl", "quan_chan", "clas_chan_auth", "sing_qubi_meas"] }, { "category": "protocol", "name": "Device-Independent Quantum Key Distribution", "id": "devi_inde_q_key_dist", "uri": "https://wiki.veriqloud.fr/index.php?title=Device-Independent_Quantum_Key_Distribution", "requires": ["devi_inde_q_key_dist_send", "devi_inde_q_key_dist_rece"] }, { "category": "protocol_party", "name": "Device-Independent Quantum Key Distribution (Sender)", "id": "devi_inde_q_key_dist_send", "uri": "https://wiki.veriqloud.fr/index.php?title=Device-Independent_Quantum_Key_Distribution", "requires": ["clas_proc", "erro_corr", "rand_numb_gene", "priv_ampl", "quan_chan", "clas_chan_auth", "sing_qubi_meas", "non_sepa_mult_qubi_stat_prep"] }, { "category": "protocol_party", "name": "Device-Independent Quantum Key Distribution (Receiver)", "id": "devi_inde_q_key_dist_rece", "uri": "https://wiki.veriqloud.fr/index.php?title=Device-Independent_Quantum_Key_Distribution", "requires": ["clas_proc", "erro_corr", "rand_numb_gene", "priv_ampl", "quan_chan", "clas_chan_auth", "sing_qubi_meas", "non_sepa_mult_qubi_stat_prep"] }, { "category": "protocol", "name": "Quantum Leader Election", "id": "q_lead_elec", "uri": "https://wiki.veriqloud.fr/index.php?title=Quantum_Leader_Election", "requires": ["bala_q_coin_flip", "unba_q_coin_flip"] }, { "category": "protocol", "name": "Quantum Cheque", "id": "q_cheq", "uri": "https://wiki.veriqloud.fr/index.php?title=Quantum_Cheque", "requires": ["q_cheq_bank", "q_cheq_cust", "q_cheq_veri"] }, { "category": "protocol_party", "name": "Quantum Cheque (Bank)", "id": "q_cheq_bank", "uri": "https://wiki.veriqloud.fr/index.php?title=Quantum_Cheque", "requires": ["key_dist", "digi_sign", "rand_numb_gene", "q_swap_test", "c_q_one_way_func", "quan_chan_secu", "clas_chan", "sing_qubi_meas", "sing_qubi_gate", "non_sepa_mult_qubi_stat_prep", "quan_memo"] }, { "category": "protocol_party", "name": "Quantum Cheque (Customer)", "id": "q_cheq_cust", "uri": "https://wiki.veriqloud.fr/index.php?title=Quantum_Cheque", "requires": ["key_dist", "digi_sign", "secr_shar", "rand_numb_gene", "c_q_one_way_func", "quan_chan_secu", "clas_chan", "mult_qubi_meas", "sing_qubi_stat_prep", "quan_memo", "sing_qubi_gate"] }, { "category": "protocol_party", "name": "Quantum Cheque (Verifier)", "id": "q_cheq_veri", "uri": "https://wiki.veriqloud.fr/index.php?title=Quantum_Cheque", "requires": ["quan_chan_secu", "clas_chan_auth", "quan_memo"] }, { "category": "protocol", "name": "Quantum Coin", "id": "q_coin", "uri": "https://wiki.veriqloud.fr/index.php?title=Quantum_Coin", "requires": ["q_coin_ttp", "q_coin_cust"] }, { "category": "protocol_party", "name": "Quantum Coin (TTP)", "id": "q_coin_ttp", "uri": "https://wiki.veriqloud.fr/index.php?title=Quantum_Coin", "requires": ["rand_numb_gene", "clas_chan", "non_sepa_mult_qubi_stat_prep"] }, { "category": "protocol_party", "name": "Quantum Coin (Customer)", "id": "q_coin_cust", "uri": "https://wiki.veriqloud.fr/index.php?title=Quantum_Coin", "requires": ["rand_numb_gene", "clas_chan", "mult_qubi_meas", "quan_memo"] }, { "category": "protocol", "name": "Quantum Token", "id": "q_toke", "uri": "https://wiki.veriqloud.fr/index.php?title=Quantum_Token", "requires": ["q_toke_bank", "q_toke_clie"] }, { "category": "protocol_party", "name": "Quantum Token (Bank)", "id": "q_toke_bank", "uri": "https://wiki.veriqloud.fr/index.php?title=Quantum_Token", "requires": ["rand_numb_gene", "clas_chan", "sing_qubi_stat_prep"] }, { "category": "protocol_party", "name": "Quantum Token (Client)", "id": "q_toke_clie", "uri": "https://wiki.veriqloud.fr/index.php?title=Quantum_Token", "requires": ["rand_numb_gene", "clas_chan", "sing_qubi_meas", "quan_memo"] }, { "category": "protocol", "name": "Wiesner Quantum Money", "id": "wies_q_mone", "uri": "https://wiki.veriqloud.fr/index.php?title=Wiesner_Quantum_Money", "requires": ["wies_q_mone_mint", "wies_q_mone_clie"] }, { "category": "protocol_party", "name": "Wiesner Quantum Money (Mint)", "id": "wies_q_mone_mint", "uri": "https://wiki.veriqloud.fr/index.php?title=Wiesner_Quantum_Money", "requires": ["rand_numb_gene", "sing_qubi_meas", "sing_qubi_stat_prep", "quan_memo"] }, { "category": "protocol_party", "name": "Wiesner Quantum Money (Client)", "id": "wies_q_mone_clie", "uri": "https://wiki.veriqloud.fr/index.php?title=Wiesner_Quantum_Money", "requires": ["quan_memo"] }, { "category": "protocol", "name": "Quantum Oblivious Transfer", "id": "q_obli_tran", "uri": "https://wiki.veriqloud.fr/index.php?title=Quantum_Oblivious_Transfer", "requires": ["q_obli_tran_send", "q_obli_tran_rece"] }, { "category": "protocol_party", "name": "Quantum Oblivious Transfer (Sender)", "id": "q_obli_tran_send", "uri": "https://wiki.veriqloud.fr/index.php?title=Quantum_Oblivious_Transfer", "requires": ["clas_proc", "erro_corr", "quan_chan", "sing_qubi_stat_prep", "clas_chan_erro_free"] }, { "category": "protocol_party", "name": "Quantum Oblivious Transfer (Receiver)", "id": "q_obli_tran_rece", "uri": "https://wiki.veriqloud.fr/index.php?title=Quantum_Oblivious_Transfer", "requires": ["clas_proc", "erro_corr", "quan_chan", "sing_qubi_meas", "clas_chan_erro_free"] }, { "category": "protocol", "name": "Classical Fully Homomorphic Encryption for Quantum Circuits", "id": "clas_full_homo_encr_q_circ", "uri": "https://wiki.veriqloud.fr/index.php?title=Classical_Fully_Homomorphic_Encryption_for_Quantum_Circuits", "requires": ["clas_full_homo_encr_q_circ_serv", "clas_full_homo_encr_q_circ_clie"] }, { "category": "protocol_party", "name": "Classical Fully Homomorphic Encryption for Quantum Circuits (Server)", "id": "clas_full_homo_encr_q_circ_serv", "uri": "https://wiki.veriqloud.fr/index.php?title=Classical_Fully_Homomorphic_Encryption_for_Quantum_Circuits", "requires": ["clas_fhe", "q_one_time_pad", "clas_proc", "non_sepa_mult_qubi_stat_prep", "sing_qubi_meas", "clas_chan", "quan_memo"] }, { "category": "protocol_party", "name": "Classical Fully Homomorphic Encryption for Quantum Circuits (Client)", "id": "clas_full_homo_encr_q_circ_clie", "uri": "https://wiki.veriqloud.fr/index.php?title=Classical_Fully_Homomorphic_Encryption_for_Quantum_Circuits", "requires": ["clas_fhe", "q_one_time_pad", "clas_proc", "non_sepa_mult_qubi_stat_prep", "sing_qubi_meas", "clas_chan", "quan_memo"] }, { "category": "protocol", "name": "Measurement-Only Universal Blind Quantum Computation", "id": "meas_only_univ_blin_q_comp", "uri": "https://wiki.veriqloud.fr/index.php?title=Measurement-Only_Universal_Blind_Quantum_Computation", "requires": ["meas_only_univ_blin_q_comp_serv", "meas_only_univ_blin_q_comp_clie"] }, { "category": "protocol_party", "name": "Measurement-Only Universal Blind Quantum Computation (Server)", "id": "meas_only_univ_blin_q_comp_serv", "uri": "https://wiki.veriqloud.fr/index.php?title=Measurement-Only_Universal_Blind_Quantum_Computation", "requires": ["gate_tele", "quan_chan", "clas_chan", "sing_qubi_meas", "non_sepa_mult_qubi_stat_prep", "two_qubi_gate"] }, { "category": "protocol_party", "name": "Measurement-Only Universal Blind Quantum Computation (Client)", "id": "meas_only_univ_blin_q_comp_clie", "uri": "https://wiki.veriqloud.fr/index.php?title=Measurement-Only_Universal_Blind_Quantum_Computation", "requires": ["quan_chan", "clas_chan", "sing_qubi_meas"] }, { "category": "protocol", "name": "Measurement-Only Verifiable Universal Blind Quantum Computation", "id": "meas_only_veri_univ_blin_q_comp", "uri": "https://wiki.veriqloud.fr/index.php?title=Measurement-Only_Verifiable_Universal_Blind_Quantum_Computation", "requires": ["meas_only_veri_univ_blin_q_comp_serv", "meas_only_veri_univ_blin_q_comp_clie"] }, { "category": "protocol_party", "name": "Measurement-Only Verifiable Universal Blind Quantum Computation (Server)", "id": "meas_only_veri_univ_blin_q_comp_serv", "uri": "https://wiki.veriqloud.fr/index.php?title=Measurement-Only_Verifiable_Universal_Blind_Quantum_Computation", "requires": ["quan_chan", "quan_memo", "non_sepa_mult_qubi_stat_prep"] }, { "category": "protocol_party", "name": "Measurement-Only Verifiable Universal Blind Quantum Computation (Client)", "id": "meas_only_veri_univ_blin_q_comp_clie", "uri": "https://wiki.veriqloud.fr/index.php?title=Measurement-Only_Verifiable_Universal_Blind_Quantum_Computation", "requires": ["quan_chan", "quan_memo", "sing_qubi_meas"] }, { "category": "protocol", "name": "Prepare-and-Send Quantum Fully Homomorphic Encryption", "id": "prep_send_q_full_homo_encr", "uri": "https://wiki.veriqloud.fr/index.php?title=Prepare-and-Send_Quantum_Fully_Homomorphic_Encryption", "requires": ["prep_send_q_full_homo_encr_serv", "prep_send_q_full_homo_encr_clie"] }, { "category": "protocol_party", "name": "Prepare-and-Send Quantum Fully Homomorphic Encryption (Server)", "id": "prep_send_q_full_homo_encr_serv", "uri": "https://wiki.veriqloud.fr/index.php?title=Prepare-and-Send_Quantum_Fully_Homomorphic_Encryption", "requires": ["rand_numb_gene", "q_one_time_pad", "quan_chan", "mult_qubi_meas", "non_sepa_mult_qubi_stat_prep"] }, { "category": "protocol_party", "name": "Prepare-and-Send Quantum Fully Homomorphic Encryption (Client)", "id": "prep_send_q_full_homo_encr_clie", "uri": "https://wiki.veriqloud.fr/index.php?title=Prepare-and-Send_Quantum_Fully_Homomorphic_Encryption", "requires": ["rand_numb_gene", "q_one_time_pad", "quan_chan", "mult_qubi_meas", "non_sepa_mult_qubi_stat_prep"] }, { "category": "protocol", "name": "Prepare-and-Send Verifiable Quantum Fully Homomorphic Encryption", "id": "prep_send_veri_q_full_homo_encr", "uri": "https://wiki.veriqloud.fr/index.php?title=Prepare-and-Send_Verifiable_Quantum_Fully_Homomorphic_Encryption", "requires": ["clas_fhe", "mess_auth_sche", "q_one_time_pad", "erro_corr", "mult_qubi_meas", "non_sepa_mult_qubi_stat_prep", "clas_chan"] }, { "category": "protocol", "name": "Prepare-and-Send Universal Blind Quantum Computation", "id": "prep_send_univ_blin_q_comp", "uri": "https://wiki.veriqloud.fr/index.php?title=Prepare-and-Send_Universal_Blind_Quantum_Computation", "requires": ["prep_send_univ_blin_q_comp_serv", "prep_send_univ_blin_q_comp_clie"] }, { "category": "protocol_party", "name": "Prepare-and-Send Universal Blind Quantum Computation (Server)", "id": "prep_send_univ_blin_q_comp_serv", "uri": "https://wiki.veriqloud.fr/index.php?title=Prepare-and-Send_Universal_Blind_Quantum_Computation", "requires": ["clas_chan", "quan_chan", "sing_qubi_meas", "two_qubi_gate"] }, { "category": "protocol_party", "name": "Prepare-and-Send Universal Blind Quantum Computation (Client)", "id": "prep_send_univ_blin_q_comp_clie", "uri": "https://wiki.veriqloud.fr/index.php?title=Prepare-and-Send_Universal_Blind_Quantum_Computation", "requires": ["rand_numb_gene", "clas_chan", "quan_chan", "sing_qubi_stat_prep"] }, { "category": "protocol", "name": "Prepare-and-Send Verifiable Universal Blind Quantum Computation", "id": "prep_send_veri_univ_blin_q_comp", "uri": "https://wiki.veriqloud.fr/index.php?title=Prepare-and-Send_Verifiable_Universal_Blind_Quantum_Computation", "requires": ["prep_send_veri_univ_blin_q_comp_serv", "prep_send_veri_univ_blin_q_comp_clie"] }, { "category": "protocol_party", "name": "Prepare-and-Send Verifiable Universal Blind Quantum Computation (Server)", "id": "prep_send_veri_univ_blin_q_comp_serv", "uri": "https://wiki.veriqloud.fr/index.php?title=Prepare-and-Send_Verifiable_Universal_Blind_Quantum_Computation", "requires": ["clas_chan", "quan_chan", "sing_qubi_meas", "two_qubi_gate"] }, { "category": "protocol_party", "name": "Prepare-and-Send Verifiable Universal Blind Quantum Computation (Client)", "id": "prep_send_veri_univ_blin_q_comp_clie", "uri": "https://wiki.veriqloud.fr/index.php?title=Prepare-and-Send_Verifiable_Universal_Blind_Quantum_Computation", "requires": ["rand_numb_gene", "q_one_time_pad", "clas_proc", "clas_chan", "quan_chan", "sing_qubi_meas", "sing_qubi_stat_prep"] }, { "category": "protocol", "name": "Secure Multiparty Delegated Classical Computation", "id": "secu_mult_dele_clas_comp", "uri": "https://wiki.veriqloud.fr/index.php?title=Prepare-and-Send_Verifiable_Universal_Blind_Quantum_Computation", "requires": ["secu_mult_dele_clas_comp_serv", "secu_mult_dele_clas_comp_clie"] }, { "category": "protocol_party", "name": "Secure Multiparty Delegated Classical Computation (Server)", "id": "secu_mult_dele_clas_comp_serv", "uri": "https://wiki.veriqloud.fr/index.php?title=Prepare-and-Send_Verifiable_Universal_Blind_Quantum_Computation", "requires": ["quan_chan", "sing_qubi_meas", "sing_qubi_stat_prep"] }, { "category": "protocol_party", "name": "Secure Multiparty Delegated Classical Computation (Clients)", "id": "secu_mult_dele_clas_comp_clie", "uri": "https://wiki.veriqloud.fr/index.php?title=Prepare-and-Send_Verifiable_Universal_Blind_Quantum_Computation", "requires": ["rand_numb_gene", "clas_proc", "clas_chan_secu", "quan_chan", "sing_qubi_gate"] }, { "category": "protocol", "name": "Secure Multiparty Delegated Quantum Computation", "id": "secu_mult_dele_q_comp", "uri": "https://wiki.veriqloud.fr/index.php?title=Secure_Multiparty_Delegated_Quantum_Computation", "requires": ["secu_mult_dele_q_comp_serv", "secu_mult_dele_q_comp_clie"] }, { "category": "protocol_party", "name": "Secure Multiparty Delegated Quantum Computation (Server)", "id": "secu_mult_dele_q_comp_serv", "uri": "https://wiki.veriqloud.fr/index.php?title=Secure_Multiparty_Delegated_Quantum_Computation", "requires": ["two_qubi_gate", "quan_memo", "quan_chan", "clas_chan", "sing_qubi_meas", "sing_qubi_stat_prep"] }, { "category": "protocol_party", "name": "Secure Multiparty Delegated Quantum Computation (Clients)", "id": "secu_mult_dele_q_comp_clie", "uri": "https://wiki.veriqloud.fr/index.php?title=Secure_Multiparty_Delegated_Quantum_Computation", "requires": ["veri_secr_shar", "rand_numb_gene", "q_one_time_pad", "clas_proc", "clas_chan", "quan_chan", "sing_qubi_gate", "sing_qubi_stat_prep"] }, { "category": "protocol", "name": "State Teleportation", "id": "stat_tele", "uri": "https://wiki.veriqloud.fr/index.php?title=Quantum_Teleportation", "requires": ["stat_tele_thir_part", "stat_tele_send", "stat_tele_rece"] }, { "category": "protocol_party", "name": "State Teleportation (Third Party)", "id": "stat_tele_thir_part", "uri": "https://wiki.veriqloud.fr/index.php?title=Quantum_Teleportation", "requires": ["non_sepa_mult_qubi_stat_prep"] }, { "category": "protocol_party", "name": "State Teleportation (Sender)", "id": "stat_tele_send", "uri": "https://wiki.veriqloud.fr/index.php?title=Quantum_Teleportation", "requires": ["mult_qubi_meas", "clas_chan"] }, { "category": "protocol_party", "name": "State Teleportation (Receiver)", "id": "stat_tele_rece", "uri": "https://wiki.veriqloud.fr/index.php?title=Quantum_Teleportation", "requires": ["sing_qubi_gate", "clas_chan"] }, { "category": "missing protocol", "name": "Gate Teleportation", "id": "gate_tele", "uri": "https://wiki.veriqloud.fr/index.php?title=Gate_Teleportation", "requires": [] }, { "category": "protocol", "name": "Weak String Erasure", "id": "weak_stri_eras", "uri": "https://wiki.veriqloud.fr/index.php?title=Weak_String_Erasure", "requires": ["weak_stri_eras_send", "weak_stri_eras_rece"] }, { "category": "protocol_party", "name": "Weak String Erasure (Sender)", "id": "weak_stri_eras_send", "uri": "https://wiki.veriqloud.fr/index.php?title=Weak_String_Erasure", "requires": ["rand_numb_gene", "clas_chan", "quan_chan", "sing_qubi_stat_prep", "sing_qubi_gate"] }, { "category": "protocol_party", "name": "Weak String Erasure (Receiver)", "id": "weak_stri_eras_rece", "uri": "https://wiki.veriqloud.fr/index.php?title=Weak_String_Erasure", "requires": ["rand_numb_gene", "clas_chan", "quan_chan", "sing_qubi_meas"] }, { "category": "missing protocol", "name": "Pseudo-Secret Random Qubit Generator (PSQRG)", "id": "pseu_secr_rand_qubi_gene", "uri": "https://wiki.veriqloud.fr/index.php?title=Pseudo-Secret_Random_Qubit_Generator_(PSQRG)", "requires": [] }, { "category": "missing protocol", "name": "Secure Client-Server Classical Delegated Computation", "id": "secu_clie_serv_clas_dele_comp", "uri": "https://wiki.veriqloud.fr/index.php?title=Secure_Client-Server_Classical_Delegated_Computation", "requires": [] }, { "category": "missing protocol", "name": "High Capacity Mutli Qubit Entangled Quantum Key Distribution", "id": "high_capa_mult_qubi_enta_q_key_dist", "uri": "", "requires": [] }, { "category": "missing protocol", "name": "Classical Collision Detection", "id": "clas_coll_dete", "uri": "", "requires": [] }, { "category": "missing protocol", "name": "Classical Logical OR", "id": "clas_logi_or", "uri": "", "requires": [] }, { "category": "missing protocol", "name": "Balanced Quantum Coin Flipping", "id": "bala_q_coin_flip", "uri": "", "requires": [] }, { "category": "missing protocol", "name": "Unbalanced Quantum Coin Flipping", "id": "unba_q_coin_flip", "uri": "", "requires": [] }, { "category": "missing protocol", "name": "Anonymous Entanglement", "id": "anon_enta", "uri": "", "requires": [] }, { "category": "missing protocol", "name": "Verifiable Secret Sharing", "id": "veri_secr_shar", "uri": "", "requires": [] }, { "category": "missing functionality", "name": "Secret Sharing", "id": "secr_shar", "uri": "", "requires": [] } ]; //////////////////////// // all the function used for drawing and fixing the data //////////////////////// //////////////////////// // first part, unique //////////////////////// // all the code used in this first part is used uniquely in this part, and is used to get the right data to display on every pages of the wiki zoo function getAllUrlParams(url) { // found on internet, works great to find parameter if needed var queryString = url ? url.split('?')[1] : window.location.search.slice(1); var obj = {}; if (queryString) { queryString = queryString.split('#')[0]; var arr = queryString.split('&'); for (var i = 0; i < arr.length; i++) { var a = arr[i].split('='); var paramName = a[0]; var paramValue = typeof (a[1]) === 'undefined' ? true : a[1]; paramName = paramName.toLowerCase(); if (typeof paramValue === 'string') paramValue = paramValue.toLowerCase(); if (paramName.match(/\[(\d+)?\]$/)) { var key = paramName.replace(/\[(\d+)?\]/, ''); if (!obj[key]) obj[key] = []; if (paramName.match(/\[\d+\]$/)) { var index = /\[(\d+)\]/.exec(paramName)[1]; obj[key][index] = paramValue; } else { obj[key].push(paramValue); } } else { if (!obj[paramName]) { obj[paramName] = paramValue; } else if (obj[paramName] && typeof obj[paramName] === 'string'){ obj[paramName] = [obj[paramName]]; obj[paramName].push(paramValue); } else { obj[paramName].push(paramValue); } } } } return obj; } // useless for now function arraysEqual(a,b) { if (a instanceof Array && b instanceof Array) { if (a.length!=b.length) return false; for(var i=0; i<a.length; i++) if (!arraysEqual(a[i],b[i])) return false; return true; } else { return a==b; } } let directasc = []; function getdirectasczoo(nodeid){ // get all direct ascendant of an item // return an array of them for (i=0;i<zooData.length;i++){ if (typeof zooData[i].requires !== 'undefined') { if (zooData[i]['requires'].includes(nodeid)){ if (! directasc.includes(zooData[i].id)){directasc.push(zooData[i].id)}} } else if (typeof zooData[i].has_subtype !== 'undefined') { if (zooData[i]['has_subtype'].includes(nodeid)){ if (! directasc.includes(zooData[i].id)){directasc.push(zooData[i].id)}} } else if (typeof zooData[i].implemented_by !== 'undefined') { if (zooData[i]['implemented_by'].includes(nodeid)){ if (! directasc.includes(zooData[i].id)){directasc.push(zooData[i].id)}} } } var flatArray= directasc.flat(); let unique = [...new Set(flatArray)]; return unique; } function getdirectdeszoo(nodeid){ // get all direct descendant of an item // return an array of them let directdes = []; for (i=0;i<zooData.length;i++){ if (nodeid== zooData[i].id){ if (typeof zooData[i].requires !== 'undefined') { directdes.push(zooData[i].requires); } else if (typeof zooData[i].has_subtype !== 'undefined') { directdes.push(zooData[i].has_subtype); } else if (typeof zooData[i].implemented_by !== 'undefined') { directdes.push(zooData[i].implemented_by); } } } var flatArray= directdes.flat(); let unique = [...new Set(flatArray)]; return unique; } var bool = false; var nodestest=[]; var nodesids=[]; function getasczoo(nodeids){ // return an array of every ascendant of an item, including the ascendant of them recursively nodestest.length=0; bool=false; for (j=0;j<nodeids.length;j++){ nodestest.push(getdirectasczoo(nodeids[j])); } // we find the ascendant of all the nodes selected (or the unique one to start) nodesids=nodestest.flat(); let uniquenodes= [...new Set(nodesids)]; var bool = false; // we test if in this iteration all the asc are included in the array of ascendant, what would mean that the search is over for (i=0;i<nodeids.length;i++){ if( !nodeids.includes(uniquenodes[i]) ){ bool=true; break; } } //if new elements are found, we find the ascendants again if (bool==true){ return getasczoo(uniquenodes); } else { return uniquenodes; } } function getdeszoo(nodeids){ // we find the desc of the desc.. and return them in an array, other method return nodeids .reduce( (acc, cur) => { return [...acc, ...getdeszoo(getdirectdeszoo(cur))]; }, nodeids ); } function lineagezoo(nodeid){ // we concatenate all the ascendant and descendant in an unique array lineage returned let lineage=[]; let des=getdeszoo(nodeid); let asc=getasczoo(nodeid); for (i=0;i<des.length;i++){ lineage.push(des[i]); } for (i=0;i<asc.length;i++){ lineage.push(asc[i]); } return lineage; } // get the url of current page function getProperUrl(){ var url = window.location.toString(); url = url.split("#")[0]; return url; } var selected= []; function noParty() { // we want to express the requirement of an element that is a protocol party in its parent protocol // so that every protocol requires the the requirement of its party // we find every protocol party, then search for their parent, and add its requirement to the parents // finally delete the protocol party from the data for (i=0;i<zooData.length;i++){ if(zooData[i]['category']=='protocol_party'){ if ( typeof zooData[i]['requires'] !== 'undefined'){ for (j=0;j<zooData.length;j++){ if ( typeof zooData[j]['requires'] !== 'undefined' ){ if(zooData[j]['requires'].includes(zooData[i]['id'])){ for (k=0;k<zooData[i]['requires'].length;k++){ zooData[j]['requires'].push(zooData[i]['requires'][k]); } } } } } zooData.splice(i,1); i--; } } } function unique(){ // we use the proper data for the page we are in if (typeof getAllUrlParams().title !== 'undefined'){ var titre= getAllUrlParams().title; // if we are on not on the main page or the graph page, we dont need to erase anything from the data if (getAllUrlParams().title.length >0 && getAllUrlParams().title != "main_page" && getAllUrlParams().title != "graphs" ){ // we find the right item from zoo data by comparing its .uri entry to match witch the current url for (i=0;i<zooData.length;i++){ if ( typeof zooData[i].uri !== 'undefined'){ if (zooData[i].uri==getProperUrl()){ selected[0]= zooData[i].id; break; } } } // we then select only the lineage of this right item from the zoo // by creating a new zoo from the selected id returned by the lineage function var toKeep= lineagezoo(selected); var newZoo= []; for (i=0; i<toKeep.length; i++){ for(j=0;j<zooData.length;j++){ if(toKeep[i]==zooData[j].id){ newZoo.push(zooData[j]); } } } // finally we erase all zoodata and replace it by all the items found let unique = [...new Set(newZoo)]; zooData.length=0; for(i=0;i<unique.length;i++){ zooData.push(unique[i]); } } // if we are in these pages we erase the protocol party to show uniquely the graph without complexing it with all the protocol party else {noParty();} } else {noParty();} } let allNodes; let allEdges; // transformation data for protocol_party and graphs in pages // first function called unique(); //////////////////////// // second part, loading data and displaying data //////////////////////// // creating the nodes and the edges const nodes = zooData.map(n => { return { id: n.id, label: n.name, group: n.category, level: ((cat) => { if (cat === 'functionality') { return 0; } else if (cat === 'protocol') { return 1; } else if (cat === 'protocol_party') { return 2; } else if (cat === 'nodal_subroutine') { return 3; } else if (cat === 'physical_resource') { return 4; } else if (cat === 'missing functionality') { return 0; } else if (cat === 'missing protocol') { return 2; } return 3; })(n.category), uri: n.uri }; }); // we can change parameters of the edges like their colors const edges = zooData.reduce( (edges, node) => { if (node.implemented_by) { edges.push(...node.implemented_by.map(r => { return { from: node.id, to: r, arrows: "to", color: {inherit:'from'}, /*label: "IMPLEMENTED_BY"*/ }; })); } if (node.requires) { edges.push(...node.requires.map(r => { return { from: node.id, to: r, arrows: "to",color: {inherit:'from'}, /*label: "REQUIRES"*/ }; })); } if (node.has_subtype) { edges.push(...node.has_subtype.map(r => { return { from: node.id, to: r, arrows: {to : { enabled: false}, from : { enabled: true} } , dashes:[3,12], color: {inherit:'from'}, /*label: "HAS_SUBTYPE"*/ }; })); } return edges; }, [] ); const missing_nodes = [... new Set([...edges.map(edge => { return edge.from; }), ...edges.map(edge => { return edge.to; })])].filter(node => { return !(nodes.find(n => { return n.id === node; })); }); const nodesDataset = new vis.DataSet(nodes); const edgesDataset = new vis.DataSet(edges); var which= true; var textbutton=""; function buttonclicked(){ // function called on onclick on the button element displayed in the graph page // empty the graph, redrawing it and changing the button text if (which == true){ which=false; document.getElementById("button").innerHTML="Switch to Lineage graph"; emptyL(); redrawAll(); } else if(which==false) { which=true; document.getElementById("button").innerHTML="Switch to Resources graph"; emptyR(); redrawAll(); } } var network= null; function redrawAll() { // function used to draw the graph from all the parameters expressed before var container = document.getElementById('mynetwork'); var options = { nodes: { shape: 'box', shapeProperties:{borderRadius:60}, widthConstraint: { maximum: 300, minimum: 300 }, heightConstraint: { minimum: 250 }, font: { size: 36, face: 'Arial' } }, edges: {width: 3, color: { inherit: false }, smooth: { enabled: true, type: "dynamic", roundness: 0.5}, }, physics: { enabled: false }, layout: { randomSeed: 0, hierarchical: { direction: 'UD', sortMethod: 'directed', "enabled": true, "nodeSpacing": 500, levelSeparation: 400 } }, interaction: { dragNodes:false, }, }; const data = { nodes: nodesDataset, edges: edgesDataset, }; network = new vis.Network(container, data, options); allNodes = nodesDataset.get({ returnType: 'Object' }); allEdges = edgesDataset.get({ returnType: 'Object' }); network.on('click', function(properties){ if (which==true){ selectNode(properties);} else { RselectNode(properties);} }); network.on('doubleClick', visitWikiNode); let updateEdge = []; for (let edge in allEdges) { if (allEdges.hasOwnProperty(edge)) { updateEdge.push(allEdges[edge]); } } edgesDataset.update(edges); } function visitWikiNode(params) { // onclick on an item of the graph to redirect on its uri const selectedNodeId = params.nodes[0]; const selectedNode = allNodes[selectedNodeId]; if (selectedNode.uri) { window.open(selectedNode.uri, '_blank'); } } //////////////////////// // third part : get the right interactions when clicking nodes //////////////////////// // resources let selectedResources = []; const Rhighlight = (nodeIds, nodeIds2) => { //coloring the nodes the right way so that the highliting looks right // its a contextual fix of the normal behaviour of the library for (let nodeId in allNodes) { if (nodeIds2.includes(nodeId)){ allNodes[nodeId].color = 'rgba(50, 126, 130,0.5)';} else if (nodeIds.includes(nodeId) || nodeIds.length === 0) { allNodes[nodeId].color = undefined; } else { allNodes[nodeId].color = 'rgba(200,200,200,0.5)'; } }; }; const getDoables = (selectedResources) => { // finding all the right ressources doable with the ressource selected, and its children, recursively const RgetDirectDesc = (nodeId) => { const desc = edges .filter(rec => { return rec.from === nodeId ; }) .map(rec => { return rec.to; }); return desc; }; const RgetDirectAsc = (nodeId) => { const asc = edges .filter(rec => { return rec.to === nodeId; }) .map(rec => { return rec.from; }); return asc; }; const RgetLeafs = (nodeIds) => { return nodeIds .reduce( (acc, cur) => { const directDesc = RgetDirectDesc(cur); if (directDesc.length === 0) { return [...acc, cur]; } else { return [...acc, ...RgetLeafs(directDesc)]; } }, [] ); }; const impliedAvailableResources = [... new Set(RgetLeafs(selectedResources))]; const getDirectDoables = (nodeId, impliedDoables) => { const asc = RgetDirectAsc(nodeId); const directDoables = [... new Set( asc.filter(r => { // for each ascendent r checks if each d, descendent of r, is in the list of implied doables if (impliedDoables.includes(r)) { return true; } else { return RgetDirectDesc(r).every(d => { return impliedDoables.includes(d); }); } }) )]; return directDoables; }; const getDoables = (impliedDoables) => { let newImpliedDoables = impliedDoables .reduce( (acc, cur) => { return [...acc, ...getDirectDoables(cur, impliedDoables)]; }, impliedDoables ); const oldSet = new Set(impliedDoables); const newSet = new Set(newImpliedDoables); if (!(newSet.size === oldSet.size && [...newSet].every(r => oldSet.has(r)))) { return [... new Set(getDoables([...newSet]))]; } else { return [...newSet]; } }; return getDoables(impliedAvailableResources); }; function emptyR(){ // empty the list of selected node selectNode({nodes:[]}); } function RselectNode(params) { // getting the right selection of nodes (that will be correctly highlighted) // fixing the normal behaviour of the library var booltest= false; if (params.nodes[0]) { for (i=0;i<selectedResources.length;i++){ if (params.nodes[0]==selectedResources[i]){ selectedResources.splice(i,1); i-- booltest=true; } } if (booltest==false){ selectedResources = [... new Set([...selectedResources, params.nodes[0]])]; } } else { selectedResources = []; } // we find the fathers of every item which is a subtype that is include in the selected resources let father = []; for (var i=0; i<zooData.length;i++){ if ( typeof zooData[i].has_subtype !== 'undefined'){ for (var j=0; j<selectedResources.length; j++){ if(zooData[i].has_subtype.includes(selectedResources[j])){ father.push(zooData[i].id); } } } } // we add them to the selection, and re run again the resources function, to get their doables let selection= selectedResources.concat(father); const impliedDoables = getDoables(selection); // then we search in the zoodata the items that has a subtype, then compare them to the selected item // then their sons are selected and added to an array of items that will be highlighted differently let fathers=[]; for (i=0;i<zooData.length;i++){ if ( typeof zooData[i].has_subtype !== 'undefined'){ fathers.push(zooData[i].id); } } let highlightsub=[]; for(i=0; i<impliedDoables.length;i++){ if( fathers.includes(impliedDoables[i]) ){ for (j=0; j<edges.length;j++){ if ( impliedDoables[i]==edges[j].from) { highlightsub.push(edges[j].to); } } } } for (i=0;i<selectedResources.length;i++){ for (j=0;j<highlightsub.length;j++){ if (highlightsub[j]==selectedResources[i]){ highlightsub.splice(j,1); j--; } } } // we highlight the selected items and their subtype Rhighlight(impliedDoables,highlightsub); let updateArray = []; for (let nodeId in allNodes) { if (allNodes.hasOwnProperty(nodeId)) { updateArray.push(allNodes[nodeId]); } } // we update the dataset nodesDataset.update(updateArray); } // lineage const highlight = (nodeIds, nodeIds2) => { //parameters of highlighting for (let nodeId in allNodes) { if (nodeIds2.includes(nodeId)){ allNodes[nodeId].color = 'rgba(50, 126, 130,0.5)';} else if (nodeIds.includes(nodeId) || nodeIds.length === 0) { allNodes[nodeId].color = undefined; allNodes[nodeId].label = allNodes[nodeId].hiddenLabel || allNodes[nodeId].label; } else { allNodes[nodeId].color = 'rgba(200,200,200,0.15)', allNodes[nodeId].hiddenLabel = allNodes[nodeId].label || allNodes[nodeId].hiddenLabel, allNodes[nodeId].label = undefined; } }; }; function edgesfix(nodesids){ // fixing the display ot the edges so that the colors match their "from" node if (nodesids.length!==0){ for (i=0;i<edges.length;i++){ for (j=0;j<nodesids.length;j++){ if (edges[i]['to'] == nodesids[j]){ edges[i]['color']={inherit:'from'}; edges[i]['width']=10; break; } else { edges[i]['color']={color:'rgba(200,200,200,0.15)'}; } } } } else { for (i=0;i<edges.length;i++){ edges[i]['color']= {inherit:'from'}; edges[i]['width']=3; } } } // boolean that calls the the resources or the lineage graph var which= true; var textbutton=""; //useless, this function is directly in the "display the graph" part function trace(){ if (which==true){ selectNode;} else { RselectNode;} } // get the selected lineage const selectLineage = (params) => { const selectedNodeId = params.nodes[0]; const getDirectDesc = (nodeId) => { const desc = edges .filter(rec => { return rec.from === nodeId; }) .map(rec => { return rec.to; }); return desc; }; const getDirectAsc = (nodeId) => { const asc = edges .filter(rec => { return rec.to === nodeId; }) .map(rec => { return rec.from; }); return asc; }; const getAsc = (nodeIds) => { return nodeIds .reduce( (acc, cur) => { return [...acc, ...getAsc(getDirectAsc(cur))]; }, nodeIds ); }; const getDesc = (nodeIds) => { return nodeIds .reduce( (acc, cur) => { return [...acc, ...getDesc(getDirectDesc(cur))]; }, nodeIds ); }; if (selectedNodeId) { return [... new Set([...getDesc([selectedNodeId]), ...getAsc([selectedNodeId])])]; } else { return []; } }; function emptyL(){ //empty the selection of nodes selectNode({nodes:[]}); } function sons(params){ // same as in the ressources, all the subtypes are selected const selectedNodeId = params.nodes[0]; var sons= []; var x = []; //if undefined... for (i=0;i<zooData.length;i++){ x=zooData[i].has_subtype; if ( typeof x !== 'undefined'){ if (x.includes(selectedNodeId)){ for (j=0;j<x.length;j++){ sons.push(x[j]); } } } if (selectedNodeId== zooData[i].id){ if (typeof x !== 'undefined'){ for (j=0;j<x.length;j++){ sons.push(x[j]); } } sons.push(); } } for (i=0;i<sons.length;i++){ if (selectedNodeId==sons[i]){ sons.splice(i,1); i--; } } return sons; } function selectNode(params) { // function called on click if this is the lineage graph selected const lineage = selectLineage(params); const highlightsub= sons(params); highlight(lineage, highlightsub); edgesfix(lineage); let updateArray = []; for (let nodeId in allNodes) { if (allNodes.hasOwnProperty(nodeId)) { updateArray.push(allNodes[nodeId]); } } let updateEdge = []; for (let edge in allEdges) { if (allEdges.hasOwnProperty(edge)) { updateEdge.push(allEdges[edge]); } } // we update the dataset, and the edgesset because of the edgesfix nodesDataset.update(updateArray); edgesDataset.update(edges); } redrawAll(); /////////////////// // final part: animation /////////////////// // if we are in the knowledge graph page, the graph start by an animation if (document.getElementById('biggraph')){ setTimeout(showAnimation,100); // the animation is divided in two part, the focus on a random item, then returning on a larger view function showAnimation() { focusOnOne(); setTimeout(notFocus,1500); } function focusOnOne() { // the focus is made on a random node with all the options above var alea= Math.floor(Math.random() * 87); var nodeId=network["body"]["nodeIndices"][alea]; var options = { scale: 0.5, offset: {x:0,y:0}, animation: { duration: 1500, easingFunction: "easeInOutCubic" } }; network.focus(nodeId, options); } function notFocus() { // the larger view is made from a selected node with all the options above var nodeId ="q_coin"; // the node "from the middle" needs to be changed to suit the datas if the layout change var options = { scale: 0.1, offset: {x:0,y:0}, animation: { duration: 1200, easingFunction: "easeInOutCubic" } }; network.focus(nodeId, options); } }