Socket
Socket
Sign inDemoInstall

mermaid

Package Overview
Dependencies
Maintainers
1
Versions
230
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

mermaid - npm Package Compare versions

Comparing version 0.4.0 to 0.5.0

CHANGELOG.md

2

bower.json
{
"name": "mermaid",
"version": "0.4.0",
"version": "0.5.0",
"authors": [

@@ -5,0 +5,0 @@ "knsv <knut@sveido.com>"

var gulp = require('gulp');
var path = require('path');
var jison = require('gulp-jison');
var less = require('gulp-less');
var shell = require('gulp-shell');

@@ -13,5 +12,9 @@ var concat = require('gulp-concat');

var tag_version = require('gulp-tag-version');
var jshint = require('gulp-jshint');
var stylish = require('jshint-stylish');
var insert = require('gulp-insert');
var requireDir = require('require-dir');
var tasks = requireDir('./gulp/tasks');
var paths = {

@@ -21,184 +24,19 @@ scripts: ['./src/**/*.js', '!**/parser/*.js']

gulp.task('jison2', function() {
return gulp.src('./src/*.jison')
.pipe(jison({ moduleType: 'commonjs' }))
.pipe(gulp.dest('./src/parser'));
});
gulp.task('jison', shell.task([
'jison src/diagrams/flowchart/parser/flow.jison -o src/diagrams/flowchart/parser/flow.js',
'jison src/diagrams/flowchart/parser/dot.jison -o src/diagrams/flowchart/parser/dot.js',
'jison src/diagrams/sequenceDiagram/parser/sequenceDiagram.jison -o src/diagrams/sequenceDiagram/parser/sequenceDiagram.js',
'jison src/diagrams/example/parser/example.jison -o src/diagrams/example/parser/example.js',
'jison src/diagrams/gantt/parser/gantt.jison -o src/diagrams/gantt/parser/gantt.js',
//'jison src/diagrams/sequenceDiagram/parser/sequenceDiagram.jison -o src/diagrams/sequenceDiagram/parser/sequenceDiagram.js'
]));
gulp.task('jison2', function() {
return gulp.src('./src/diagrams/flowchart/**/*.jison')
.pipe(jison({ }))
.pipe(gulp.dest('./src/diagrams/flowchart'));
});
gulp.task('dist', ['slimDist', 'fullDist','jasmine']);
gulp.task('rdist', ['slimDist', 'fullDist']);
var jasmine = require('gulp-jasmine');
gulp.task('jasmine',['jison','lint'], function () {
return gulp.src(['src/**/*.spec.js'])
.pipe(jasmine({includeStackTrace:true}));
});
gulp.task('tape', shell.task(['./node_modules/.bin/tape ./test/cli_test-*.js']));
gulp.task('coverage', function (cb) {
gulp.src(['src/**/*.js', '!src/**/*.spec.js'])
.pipe(istanbul()) // Covering files
.on('finish', function () {
gulp.src(['src/**/*.spec.js'])
.pipe(jasmine())
.pipe(istanbul.writeReports()) // Creating the reports after tests runned
.on('end', cb);
});
});
gulp.task('less', function () {
gulp.src(['./editor/css/editor.less'])
.pipe(less({
generateSourceMap: false, // default true
paths: [ path.join(__dirname, 'less', 'includes') ]
}))
.pipe(concat('editor.css'))
.pipe(gulp.dest('./editor/css/'));
});
var browserify = require('gulp-browserify');
//var slim_ext_libs = [
// 'dagre-d3',
// 'd3'
//];
// Basic usage
gulp.task('slimDist', function() {
// Single entry point to browserify
return gulp.src('src/main.js')
.pipe(browserify())
/*.pipe(browserify({standalone: 'mermaid'}))
.on('prebundle', function(bundle) {
// Keep these external for the slim version.
slim_ext_libs.forEach(function(lib) {
bundle.external(lib);
});
})*/
.pipe(rename('mermaid.slim.js'))
.pipe(gulp.dest('./dist/'))
.pipe(uglify())
.pipe(extReplace('.min.js'))
.pipe(gulp.dest('./dist/'));
});
// Build editor
gulp.task('editor', function() {
/*gulp.src(['src/editor.js'])
.pipe(browserify())
.pipe(concat('main.js'))
.pipe(gulp.dest('./editor/'));*/
return gulp.src(['node_modules/d3/d3.min.js','node_modules/dagre-d3/dist/dagre-d3.min.js','dist/mermaid.slim.js','src/editor.js'])
.pipe(concat('build.js'))
.pipe(gulp.dest('./editor/'));
});
// Basic usage
gulp.task('fullDist', ['slimDist'], function() {
// Single entry point to browserify
gulp.src(['node_modules/d3/d3.min.js','node_modules/dagre-d3/dist/dagre-d3.min.js','dist/mermaid.slim.js'])
.pipe(concat('mermaid.full.js'))
.pipe(gulp.dest('./dist/'));
return gulp.src(['node_modules/d3/d3.min.js','node_modules/dagre-d3/dist/dagre-d3.min.js','dist/mermaid.slim.min.js'])
.pipe(concat('mermaid.full.min.js'))
.pipe(gulp.dest('./dist/'));
});
// Basic usage
gulp.task('npmDist', ['slimDist'], function() {
// Single entry point to browserify
return gulp.src('src/main.js')
.pipe(browserify())
.pipe(gulp.dest('./dist/'));
});
gulp.task('bump', function(){
gulp.src('./bw.json')
.pipe(bump({key: "version"}))
.pipe(gulp.dest('./'));
});
// Assuming there's "version: 1.2.3" in package.json,
// tag the last commit as "v1.2.3"//
gulp.task('tag', function() {
return gulp.src(['./package.json']).pipe(tag_version());
});
/**
* Bumping version number and tagging the repository with it.
* Please read http://semver.org/
*
* You can use the commands
*
* gulp patch # makes v0.1.0 → v0.1.1
* gulp feature # makes v0.1.1 → v0.2.0
* gulp release # makes v0.2.1 → v1.0.0
*
* To bump the version numbers accordingly after you did a patch,
* introduced a feature or made a backwards-incompatible release.
*/
function inc(importance) {
// get all the files to bump version in
return gulp.src(['./package.json', './bower.json'])
// bump the version number in those files
.pipe(bump({type: importance}))
// save it back to filesystem
.pipe(gulp.dest('./'));
// commit the changed version number
//.pipe(git.commit('bumps package version'))
// read only one file to get the version number
//.pipe(filter('package.json'))
// **tag it in the repository**
//.pipe(tag_version());
}
gulp.task('patch', function() { return inc('patch'); })
gulp.task('feature', function() { return inc('minor'); })
gulp.task('release', function() { return inc('major'); })
// Using gulp-jshint and jshint-stylish
gulp.task('lint', function() {
return gulp.src(paths.scripts)
.pipe(jshint())
.pipe(jshint.reporter(stylish));
});
gulp.task('test',['coverage','tape']);
gulp.task('mermaid-less', function () {
gulp.src(['./src/less/*/mermaid.less'])
.pipe(less({
generateSourceMap: false, // default true
paths: [ path.join(__dirname, 'less', 'includes') ]
}))
.pipe(rename(function (path) {
if(path.dirname === 'default'){
path.basename = 'mermaid';
}else{
path.basename = 'mermaid.' + path.dirname;
}
path.dirname = '';
}))
.pipe(gulp.dest('./dist/'));
});

@@ -27,2 +27,3 @@ var fs = require('fs')

, sequenceConfig: 'c'
, ganttConfig: 'g'
, css: 't'

@@ -49,2 +50,3 @@ }

, " -c --sequenceConfig Specify the path to the file with the configuration to be applied in the sequence diagram"
, " -g --ganttConfig Specify the path to the file with the configuration to be applied in the gantt diagram"
, " -h --help Show this message"

@@ -79,3 +81,3 @@ , " -v --verbose Show logging"

// ensure that parameter-expecting options have parameters
;['outputDir', 'phantomPath', 'sequenceConfig', 'css'].forEach(function(i) {
;['outputDir', 'phantomPath', 'sequenceConfig', 'ganttConfig', 'css'].forEach(function(i) {
if(typeof options[i] !== 'undefined') {

@@ -100,2 +102,9 @@ if (typeof options[i] !== 'string' || options[i].length < 1) {

if (options.ganttConfig) {
console.log('Got conf1'+options.ganttConfig);
options.ganttConfig = checkConfig(options.ganttConfig)
console.log('Got conf'+options.ganttConfig);
}
if (options.css) {

@@ -127,6 +136,7 @@ try {

try {
var text = fs.readFileSync(configPath, 'utf8')
var text = fs.readFileSync(configPath, 'utf8');
JSON.parse(text)
return text
} catch (e) {
console.log(e);
return null;

@@ -133,0 +143,0 @@ }

@@ -23,2 +23,3 @@ var os = require('os')

, options.sequenceConfig
, options.ganttConfig
, options.verbose

@@ -25,0 +26,0 @@ ]

@@ -31,4 +31,5 @@ /**

var page = webpage.create()
, files = phantom.args.slice(6, phantom.args.length)
, files = phantom.args.slice(7, phantom.args.length)
, options = {

@@ -40,6 +41,11 @@ outputDir: phantom.args[0]

, sequenceConfig: phantom.args[4]
, verbose: phantom.args[5] === 'true' ? true : false
, ganttConfig: phantom.args[5]
, verbose: phantom.args[6] === 'true' ? true : false
}
, log = logger(options.verbose)
console.log('options');
console.log(phantom.args.length);
page.content = [

@@ -57,3 +63,3 @@ '<html>'

page.injectJs('../dist/mermaid.full.js')
page.injectJs('../dist/mermaid.js')
page.onConsoleMessage = function(msg, lineNum, sourceId) {

@@ -70,2 +76,4 @@ console.log('CONSOLE: ' + msg + ' (from line #' + lineNum + ' in "' + sourceId + '")');

console.log('Gantconfig: '+options.ganttConfig);
// this JS is executed in this statement is sandboxed, even though it doesn't

@@ -75,4 +83,5 @@ // look like it. we need to serialize then unserialize the svgContent that's

svgContent = page.evaluate(executeInPage, {
contents: contents,
sequenceConfig: options.sequenceConfig
contents : contents,
ganttConfig : options.ganttConfig,
sequenceConfig : options.sequenceConfig
})

@@ -201,2 +210,3 @@ oDOM = oParser.parseFromString(svgContent, "text/xml")

, sequenceConfig = data.sequenceConfig
, ganttConfig = data.ganttConfig
, toRemove

@@ -221,4 +231,24 @@ , el

document.body.appendChild(el)
mermaid.init(sequenceConfig)
if(typeof sequenceConfig !== undefined && sequenceConfig !== 'undefined'){
sc = document.createElement("script")
scContent = document.createTextNode('mermaid.sequenceConfig = JSON.parse(' + JSON.stringify(sequenceConfig) + ');')
sc.appendChild(scContent)
document.body.appendChild(sc)
}
if(typeof ganttConfig !== undefined && ganttConfig !== 'undefined'){
sc = document.createElement("script")
scContent = document.createTextNode('mermaid.ganttConfig = JSON.parse(' + JSON.stringify(ganttConfig) + ');')
sc.appendChild(scContent)
document.body.appendChild(sc)
}else{
console.log('NO gantt config');
}
mermaid.init();
svg = document.querySelector('svg')

@@ -225,0 +255,0 @@ svgValue = xmlSerializer.serializeToString(svg)

{
"name": "mermaid",
"version": "0.4.0",
"version": "0.5.0",
"description": "Markdownish syntax for generating flowcharts, sequence diagrams and gantt charts.",
"main": "src/main.js",
"main": "src/mermaid.js",
"keywords": [

@@ -28,3 +28,3 @@ "diagram",

"d3": "~3.4.13",
"dagre-d3": "~0.3.3",
"dagre-d3": "~0.4.8",
"he": "^0.5.0",

@@ -43,3 +43,3 @@ "minimist": "^1.1.0",

"d3": "~3.4.13",
"dagre-d3": "~0.3.3",
"dateformat": "^1.0.11",
"event-stream": "^3.2.0",

@@ -55,2 +55,3 @@ "foundation": "^4.2.1-1",

"gulp-hogan": "^1.1.0",
"gulp-insert": "^0.4.0",
"gulp-istanbul": "^0.4.0",

@@ -87,2 +88,3 @@ "gulp-jasmine": "~1.0.1",

"proxyquire": "^1.3.1",
"require-dir": "^0.3.0",
"rewire": "^2.1.3",

@@ -89,0 +91,0 @@ "rimraf": "^2.2.8",

mermaid [![Build Status](https://travis-ci.org/knsv/mermaid.svg?branch=master)](https://travis-ci.org/knsv/mermaid) [![Code Climate](https://codeclimate.com/github/knsv/mermaid/badges/gpa.svg)](https://codeclimate.com/github/knsv/mermaid)
=======
>Development work currently ongoing in branch dev-0.5.0. Please submit any pull requests based on that branch if possible. Thanks.
Generation of diagrams and flowcharts from text in a similar manner as markdown.

@@ -6,0 +6,0 @@

@@ -6,4 +6,4 @@ /**

var exampleParser = require('./parser/example.js');
var d3 = require('../../d3');
/**

@@ -10,0 +10,0 @@ * Draws a an info picture in the tag with id: id based on the graph definition in text.

/* global window */
var dagreD3;
//console.log('setting up dagre-d3');
if (require) {
try {
dagreD3 = require("dagre-d3");
} catch (e) {}
//console.log('Got it (dagre-d3)');
} catch (e) {console.log('Could not load dagre-d3');}
}

@@ -10,0 +11,0 @@

@@ -7,3 +7,14 @@ /**

var dot = require('./parser/dot');
var d3 = require('../../d3');
var dagreD3 = require('./dagre-d3');
var conf = {
};
module.exports.setConf = function(cnf){
var keys = Object.keys(cnf);
var i;
for(i=0;i<keys.length;i++){
conf[keys[i]] = cnf[keys[i]];
}
};
/**

@@ -65,3 +76,3 @@ * Function that adds the vertices found in the graph definition to the graph to be rendered.

var labelTypeStr = '';
if(global.mermaid.htmlLabels) {
if(conf.htmlLabels) {
labelTypeStr = 'html';

@@ -117,2 +128,3 @@ } else {

defaultStyle = edges.defaultStyle.toString().replace(/,/g , ';');
}

@@ -142,3 +154,3 @@

case 'normal':
style = 'stroke: #333; stroke-width: 1.5px;fill:none';
style = 'fill:none';
if(typeof defaultStyle !== 'undefined'){

@@ -171,3 +183,3 @@ style = defaultStyle;

if(typeof edge.style === 'undefined'){
if (global.mermaid.htmlLabels){
if (conf.htmlLabels){
g.setEdge(edge.start, edge.end,{labelType: "html",style: style, labelpos:'c', label: '<span style="background:#e8e8e8">'+edge.text+'</span>', arrowheadStyle: "fill: #333", arrowhead: aHead},cnt);

@@ -225,2 +237,3 @@ }else{

exports.draw = function (text, id,isDot) {
var parser;

@@ -267,9 +280,9 @@ graph.clear();

var subG;
var subGraphs = graph.getSubGraphs();
var i = 0;
subGraphs.forEach(function(subG){
i = i + 1;
var id = 'subG'+i;
graph.addVertex(id,undefined,undefined,undefined);
});
for(i=subGraphs.length-1;i>=0;i--){
subG = subGraphs[i];
graph.addVertex(subG.id,undefined,undefined,undefined);
}

@@ -281,18 +294,15 @@ // Fetch the verices/nodes and edges/links from the parsed graph definition

var edges = graph.getEdges();
//g.setParent("A", "p");
//g.setParent("B", "p");
//console.log(subGraphs);
i = 0;
subGraphs.forEach(function(subG){
i = i + 1;
var id = 'subG'+i;
var j;
for(i=subGraphs.length-1;i>=0;i--){
subG = subGraphs[i];
d3.selectAll('cluster').append('text');
subG.nodes.forEach(function(node){
//console.log('Setting node',node,' to subgraph '+id);
g.setParent(node,id);
});
});
for(j=0;j<subG.nodes.length;j++){
//console.log('Setting node',subG.nodes[j],' to subgraph '+id);
g.setParent(subG.nodes[j],subG.id);
}
}
exports.addVertices(vert, g);

@@ -411,32 +421,44 @@ exports.addEdges(edges, g);

svg.attr("height", g.graph().height );
svg.attr("width", g.graph().width );
svg.attr("viewBox", svgb.getBBox().x + ' 0 '+ g.graph().width+' '+ g.graph().height);
if(typeof conf.width === 'undefined'){
svg.attr("width", g.graph().width );
}else{
svg.attr("width", conf.width );
}
//svg.attr("viewBox", svgb.getBBox().x + ' 0 '+ g.graph().width+' '+ g.graph().height);
svg.attr("viewBox", '0 0 ' + (g.graph().width+20) + ' ' + (g.graph().height+20));
// Index nodes
graph.indexNodes('sunGraph'+i);
for(i=0;i<subGraphs.length;i++){
var pos = graph.getDepthFirstPos(i);
subG = subGraphs[i];
setTimeout(function(){
var i = 0;
subGraphs.forEach(function(subG){
if (subG.title !== 'undefined') {
var clusterRects = document.querySelectorAll('#' + id + ' #' + subG.id + ' rect');
//console.log('looking up: #' + id + ' #' + subG.id)
var clusterEl = document.querySelectorAll('#' + id + ' #' + subG.id);
var clusterRects = document.querySelectorAll('#' + id + ' .clusters rect');
var clusters = document.querySelectorAll('#' + id + ' .cluster');
var xPos = clusterRects[0].x.baseVal.value;
var yPos = clusterRects[0].y.baseVal.value;
var width = clusterRects[0].width.baseVal.value;
var cluster = d3.select(clusterEl[0]);
var te = cluster.append('text');
te.attr('x', xPos + width / 2);
te.attr('y', yPos + 14);
te.attr('fill', 'black');
te.attr('stroke', 'none');
te.attr('id', id + 'Text');
te.style('text-anchor', 'middle');
if(typeof subG.title === 'undefined'){
te.text('Undef');
}else{
//te.text(subGraphs[subGraphs.length-i-1].title);
te.text(subG.title);
if(subG.title !== 'undefined'){
var xPos = clusterRects[i].x.baseVal.value;
var yPos = clusterRects[i].y.baseVal.value;
var width = clusterRects[i].width.baseVal.value;
var cluster = d3.select(clusters[i]);
var te = cluster.append('text');
te.attr('x', xPos+width/2);
te.attr('y', yPos +14);
te.attr('fill', 'black');
te.attr('stroke','none');
te.attr('id', id+'Text');
te.style('text-anchor', 'middle');
te.text(subG.title);
}
i = i + 1;
});
},20);
}
}
};

@@ -9,2 +9,3 @@ /**

var subGraphs = [];
var subCount=0;
var direction;

@@ -21,3 +22,4 @@ // Functions to be run after graph rendering

exports.addVertex = function (id, text, type, style) {
var txt;
if(typeof id === 'undefined'){

@@ -34,3 +36,10 @@ return;

if (typeof text !== 'undefined') {
vertices[id].text = text;
txt = text.trim();
// strip quotes if string starts and exnds with a quote
if(txt[0] === '"' && txt[txt.length-1] === '"'){
txt = txt.substring(1,txt.length-1);
}
vertices[id].text = txt;
}

@@ -65,3 +74,8 @@ if (typeof type !== 'undefined') {

if (typeof linktext !== 'undefined') {
edge.text = linktext;
edge.text = linktext.trim();
// strip quotes if string starts and exnds with a quote
if(edge.text[0] === '"' && edge.text[edge.text.length-1] === '"'){
edge.text = edge.text.substring(1,edge.text.length-1);
}
}

@@ -212,2 +226,3 @@

subGraphs = [];
subCount = 0;
};

@@ -231,2 +246,5 @@ /**

var type = typeof item;
if(item===' '){
return false;
}
if(type in prims)

@@ -239,9 +257,85 @@ return prims[type].hasOwnProperty(item) ? false : (prims[type][item] = true);

var subG = [];
var nodeList = [];
subG = uniq(subG.concat.apply(subG,list));
//console.log(subG);
nodeList = uniq(nodeList.concat.apply(nodeList,list));
subGraphs.push({nodes:subG,title:title});
var subGraph = {id:'subGraph'+subCount, nodes:nodeList,title:title};
//console.log('subGraph:' + subGraph.title + subGraph.id);
//console.log(subGraph.nodes);
subGraphs.push(subGraph);
subCount = subCount + 1;
return subGraph.id;
};
var getPosForId = function(id){
var i;
for(i=0;i<subGraphs.length;i++){
if(subGraphs[i].id===id){
//console.log('Found pos for ',id,' ',i);
return i;
}
}
//console.log('No pos found for ',id,' ',i);
return -1;
};
var secCount = -1;
var posCrossRef = [];
var indexNodes = function (id, pos) {
var nodes = subGraphs[pos].nodes;
secCount = secCount + 1;
if(secCount>2000){
return;
}
//var nPos = getPosForId(subGraphs[pos].id);
posCrossRef[secCount]=pos;
console.log('Setting ',' ',secCount,' to ',pos);
// Check if match
if(subGraphs[pos].id === id){
return {
result:true,
count:0
};
}
var count = 0;
var posCount = 1;
while(count<nodes.length){
var childPos = getPosForId(nodes[count]);
// Ignore regular nodes (pos will be -1)
if(childPos>=0){
var res = indexNodes(id,childPos);
if(res.result){
return {
result:true,
count:posCount+res.count
};
}else{
posCount = posCount + res.count;
}
}
count = count +1;
}
return {
result:false,
count:posCount
};
};
exports.getDepthFirstPos = function (pos) {
return posCrossRef[pos];
};
exports.indexNodes = function (id) {
secCount = -1;
if(subGraphs.length>0){
indexNodes('none',subGraphs.length-1,0);
}
};
exports.getSubGraphs = function (list) {

@@ -248,0 +342,0 @@ return subGraphs;

@@ -75,8 +75,8 @@ /* parser generated by jison 0.4.15 */

var parser = (function(){
var o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,9,10,12,13,19,29,68,69,70,71,72,78,79,81,83,84,86,87,89,90,91],$V1=[2,2],$V2=[1,9],$V3=[1,10],$V4=[1,11],$V5=[1,30],$V6=[1,12],$V7=[1,20],$V8=[1,23],$V9=[1,24],$Va=[1,25],$Vb=[1,26],$Vc=[1,27],$Vd=[1,33],$Ve=[1,21],$Vf=[1,35],$Vg=[1,32],$Vh=[1,34],$Vi=[1,40],$Vj=[1,39],$Vk=[1,36],$Vl=[1,37],$Vm=[1,38],$Vn=[1,9,10,12,13,19,29,32,68,69,70,71,72,78,79,81,83,84,86,87,89,90,91],$Vo=[13,29,68,69,70,71,72,78,79,81,83,84,86,87,89,90,91],$Vp=[2,19],$Vq=[1,52],$Vr=[1,53],$Vs=[1,51],$Vt=[1,78],$Vu=[1,70],$Vv=[1,79],$Vw=[1,64],$Vx=[1,63],$Vy=[1,83],$Vz=[1,82],$VA=[1,80],$VB=[1,81],$VC=[1,71],$VD=[1,66],$VE=[1,65],$VF=[1,73],$VG=[1,74],$VH=[1,75],$VI=[1,76],$VJ=[1,77],$VK=[1,68],$VL=[1,67],$VM=[9,10,19],$VN=[9,10,19,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62],$VO=[1,113],$VP=[9,10,12,13,15,19,36,38,40,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,78,81,83,84,86,87,89,90,91],$VQ=[9,10,11,12,13,15,16,17,18,19,29,32,36,37,38,39,40,41,44,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,68,69,70,71,72,75,78,79,81,83,84,86,87,89,90,91,92,93,94],$VR=[1,116],$VS=[1,117],$VT=[9,10,12,13,19,29,32,68,69,70,71,72,78,79,81,83,84,86,87,89,90,91],$VU=[9,10,11,12,13,15,16,17,18,19,29,32,37,39,41,44,48,50,51,52,53,54,55,56,57,58,59,60,61,62,63,68,69,70,71,72,75,78,79,81,83,84,86,87,89,90,91],$VV=[9,10,11,12,13,15,16,17,18,19,29,32,36,37,38,39,40,41,44,48,50,51,52,53,54,55,56,57,58,59,60,61,62,63,68,69,70,71,72,75,78,79,81,83,84,86,87,89,90,91,92,93,94],$VW=[1,144],$VX=[1,133],$VY=[1,134],$VZ=[1,131],$V_=[1,132],$V$=[1,135],$V01=[1,136],$V11=[1,140],$V21=[1,141],$V31=[1,139],$V41=[1,142],$V51=[1,130],$V61=[1,137],$V71=[1,138],$V81=[1,143],$V91=[13,78,81,83,84,86,87,89,90,91],$Va1=[13,63,78,81,83,84,86,87,89,90,91],$Vb1=[1,170],$Vc1=[1,169],$Vd1=[9,11,12,13,15,16,17,18,19,29,32,36,37,38,39,40,41,44,48,50,51,52,53,54,63,68,69,70,71,72,75,78,79,81,83,84,86,87,89,90,91,92,93,94],$Ve1=[1,211],$Vf1=[1,208],$Vg1=[1,215],$Vh1=[1,212],$Vi1=[1,209],$Vj1=[1,216],$Vk1=[1,206],$Vl1=[1,207],$Vm1=[1,210],$Vn1=[1,213],$Vo1=[1,214],$Vp1=[1,230],$Vq1=[9,10,19,81],$Vr1=[9,10,12,19,44,68,77,78,79,81,83,84,85,86,87];
var o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,4],$V1=[1,3],$V2=[1,5],$V3=[1,8,9,10,11,13,30,67,68,69,70,71,77,81,83,84,86,87,89,90,91],$V4=[2,2],$V5=[1,12],$V6=[1,13],$V7=[1,14],$V8=[1,15],$V9=[1,31],$Va=[1,22],$Vb=[1,24],$Vc=[1,25],$Vd=[1,26],$Ve=[1,27],$Vf=[1,28],$Vg=[1,34],$Vh=[1,36],$Vi=[1,33],$Vj=[1,35],$Vk=[1,41],$Vl=[1,40],$Vm=[1,37],$Vn=[1,38],$Vo=[1,39],$Vp=[1,8,9,10,11,13,30,32,67,68,69,70,71,77,81,83,84,86,87,89,90,91],$Vq=[1,49],$Vr=[1,48],$Vs=[1,50],$Vt=[1,67],$Vu=[1,75],$Vv=[1,76],$Vw=[1,61],$Vx=[1,60],$Vy=[1,80],$Vz=[1,79],$VA=[1,77],$VB=[1,78],$VC=[1,68],$VD=[1,63],$VE=[1,62],$VF=[1,70],$VG=[1,71],$VH=[1,72],$VI=[1,73],$VJ=[1,74],$VK=[1,65],$VL=[1,64],$VM=[8,9,11],$VN=[8,9,11,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61],$VO=[1,109],$VP=[8,9,10,11,13,15,36,38,40,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,77,81,83,84,86,87,89,90,91],$VQ=[8,9,10,11,12,13,15,16,17,18,30,32,36,37,38,39,40,41,44,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,67,68,69,70,71,74,77,79,81,83,84,86,87,89,90,91],$VR=[1,112],$VS=[1,113],$VT=[8,9,10,11,13,30,32,67,68,69,70,71,77,81,83,84,86,87,89,90,91],$VU=[8,9,10,11,12,13,15,16,17,18,30,32,37,39,41,44,47,48,49,50,51,53,54,55,56,57,58,59,60,61,62,67,68,69,70,71,74,77,79,81,83,84,86,87,89,90,91],$VV=[13,77,81,83,84,86,87,89,90,91],$VW=[13,62,77,81,83,84,86,87,89,90,91],$VX=[1,183],$VY=[1,180],$VZ=[1,187],$V_=[1,184],$V$=[1,181],$V01=[1,188],$V11=[1,178],$V21=[1,179],$V31=[1,182],$V41=[1,185],$V51=[1,186],$V61=[1,201],$V71=[8,9,11,81],$V81=[8,9,10,11,44,67,76,77,79,81,83,84,85,86,87];
var parser = {trace: function trace() { },
yy: {},
symbols_: {"error":2,"mermaidDoc":3,"graphConfig":4,"document":5,"line":6,"spaceListNewline":7,"statement":8,"SEMI":9,"EOF":10,"GRAPH":11,"SPACE":12,"DIR":13,"FirstStmtSeperator":14,"TAGEND":15,"TAGSTART":16,"UP":17,"DOWN":18,"NEWLINE":19,"spaceList":20,"commentStatement":21,"verticeStatement":22,"separator":23,"styleStatement":24,"linkStyleStatement":25,"classDefStatement":26,"classStatement":27,"clickStatement":28,"subgraph":29,"text":30,"endStatement":31,"end":32,"vertex":33,"link":34,"alphaNum":35,"SQS":36,"SQE":37,"PS":38,"PE":39,"DIAMOND_START":40,"DIAMOND_STOP":41,"alphaNumStatement":42,"alphaNumToken":43,"MINUS":44,"linkOld":45,"linkStatement":46,"arrowText":47,"--":48,"-.":49,"==":50,"ARROW_POINT":51,"ARROW_CIRCLE":52,"ARROW_CROSS":53,"ARROW_OPEN":54,"DOTTED_ARROW_POINT":55,"DOTTED_ARROW_CIRCLE":56,"DOTTED_ARROW_CROSS":57,"DOTTED_ARROW_OPEN":58,"THICK_ARROW_POINT":59,"THICK_ARROW_CIRCLE":60,"THICK_ARROW_CROSS":61,"THICK_ARROW_OPEN":62,"PIPE":63,"textToken":64,"commentText":65,"commentToken":66,"keywords":67,"STYLE":68,"LINKSTYLE":69,"CLASSDEF":70,"CLASS":71,"CLICK":72,"textNoTags":73,"textNoTagsToken":74,"DEFAULT":75,"stylesOpt":76,"HEX":77,"NUM":78,"PCT":79,"style":80,"COMMA":81,"styleComponent":82,"ALPHA":83,"COLON":84,"UNIT":85,"BRKT":86,"DOT":87,"graphCodeTokens":88,"PLUS":89,"EQUALS":90,"MULT":91,"TAG_START":92,"TAG_END":93,"QUOTE":94,"$accept":0,"$end":1},
terminals_: {2:"error",9:"SEMI",10:"EOF",11:"GRAPH",12:"SPACE",13:"DIR",15:"TAGEND",16:"TAGSTART",17:"UP",18:"DOWN",19:"NEWLINE",29:"subgraph",32:"end",36:"SQS",37:"SQE",38:"PS",39:"PE",40:"DIAMOND_START",41:"DIAMOND_STOP",44:"MINUS",48:"--",49:"-.",50:"==",51:"ARROW_POINT",52:"ARROW_CIRCLE",53:"ARROW_CROSS",54:"ARROW_OPEN",55:"DOTTED_ARROW_POINT",56:"DOTTED_ARROW_CIRCLE",57:"DOTTED_ARROW_CROSS",58:"DOTTED_ARROW_OPEN",59:"THICK_ARROW_POINT",60:"THICK_ARROW_CIRCLE",61:"THICK_ARROW_CROSS",62:"THICK_ARROW_OPEN",63:"PIPE",68:"STYLE",69:"LINKSTYLE",70:"CLASSDEF",71:"CLASS",72:"CLICK",75:"DEFAULT",77:"HEX",78:"NUM",79:"PCT",81:"COMMA",83:"ALPHA",84:"COLON",85:"UNIT",86:"BRKT",87:"DOT",89:"PLUS",90:"EQUALS",91:"MULT",92:"TAG_START",93:"TAG_END",94:"QUOTE"},
productions_: [0,[3,2],[5,0],[5,2],[6,2],[6,1],[6,1],[6,1],[4,4],[4,4],[4,4],[4,4],[4,4],[14,1],[14,1],[14,2],[7,2],[7,2],[7,1],[7,1],[20,2],[20,1],[8,2],[8,2],[8,2],[8,2],[8,2],[8,2],[8,2],[8,6],[8,5],[31,1],[31,2],[23,1],[23,1],[23,1],[22,3],[22,1],[33,4],[33,5],[33,6],[33,7],[33,4],[33,5],[33,4],[33,5],[33,4],[33,5],[33,1],[33,2],[35,1],[35,2],[42,1],[42,1],[42,3],[45,2],[45,3],[45,1],[45,2],[45,3],[45,6],[45,5],[45,6],[45,5],[45,6],[34,2],[34,3],[34,1],[34,3],[34,3],[34,3],[34,3],[34,3],[34,3],[34,3],[34,3],[34,3],[34,3],[34,3],[34,3],[46,1],[46,1],[46,1],[46,1],[46,1],[46,1],[46,1],[46,1],[46,1],[46,1],[46,1],[46,1],[47,3],[30,1],[30,2],[65,1],[65,2],[67,1],[67,1],[67,1],[67,1],[67,1],[67,1],[67,1],[67,1],[67,1],[67,1],[67,1],[73,1],[73,2],[26,5],[26,5],[27,5],[28,5],[24,5],[24,5],[25,5],[25,5],[21,3],[76,1],[76,3],[80,1],[80,2],[82,1],[82,1],[82,1],[82,1],[82,1],[82,1],[82,1],[82,1],[82,1],[82,1],[82,1],[66,1],[66,1],[64,1],[64,1],[64,1],[64,1],[64,1],[64,1],[64,1],[74,1],[74,1],[74,1],[74,1],[43,1],[43,1],[43,1],[43,1],[43,1],[43,1],[43,1],[43,1],[43,1],[88,1],[88,1],[88,1],[88,1],[88,1],[88,1],[88,1],[88,1],[88,1],[88,1],[88,1],[88,1],[88,1],[88,1],[88,1]],
symbols_: {"error":2,"mermaidDoc":3,"graphConfig":4,"document":5,"line":6,"statement":7,"SEMI":8,"NEWLINE":9,"SPACE":10,"EOF":11,"GRAPH":12,"DIR":13,"FirstStmtSeperator":14,"TAGEND":15,"TAGSTART":16,"UP":17,"DOWN":18,"ending":19,"endToken":20,"spaceList":21,"spaceListNewline":22,"verticeStatement":23,"separator":24,"styleStatement":25,"linkStyleStatement":26,"classDefStatement":27,"classStatement":28,"clickStatement":29,"subgraph":30,"text":31,"end":32,"vertex":33,"link":34,"alphaNum":35,"SQS":36,"SQE":37,"PS":38,"PE":39,"DIAMOND_START":40,"DIAMOND_STOP":41,"alphaNumStatement":42,"alphaNumToken":43,"MINUS":44,"linkStatement":45,"arrowText":46,"--":47,"ARROW_POINT":48,"ARROW_CIRCLE":49,"ARROW_CROSS":50,"ARROW_OPEN":51,"-.":52,"DOTTED_ARROW_POINT":53,"DOTTED_ARROW_CIRCLE":54,"DOTTED_ARROW_CROSS":55,"DOTTED_ARROW_OPEN":56,"==":57,"THICK_ARROW_POINT":58,"THICK_ARROW_CIRCLE":59,"THICK_ARROW_CROSS":60,"THICK_ARROW_OPEN":61,"PIPE":62,"textToken":63,"commentText":64,"commentToken":65,"keywords":66,"STYLE":67,"LINKSTYLE":68,"CLASSDEF":69,"CLASS":70,"CLICK":71,"textNoTags":72,"textNoTagsToken":73,"DEFAULT":74,"stylesOpt":75,"HEX":76,"NUM":77,"commentStatement":78,"PCT":79,"style":80,"COMMA":81,"styleComponent":82,"ALPHA":83,"COLON":84,"UNIT":85,"BRKT":86,"DOT":87,"graphCodeTokens":88,"PLUS":89,"EQUALS":90,"MULT":91,"TAG_START":92,"TAG_END":93,"QUOTE":94,"$accept":0,"$end":1},
terminals_: {2:"error",8:"SEMI",9:"NEWLINE",10:"SPACE",11:"EOF",12:"GRAPH",13:"DIR",15:"TAGEND",16:"TAGSTART",17:"UP",18:"DOWN",30:"subgraph",32:"end",36:"SQS",37:"SQE",38:"PS",39:"PE",40:"DIAMOND_START",41:"DIAMOND_STOP",44:"MINUS",47:"--",48:"ARROW_POINT",49:"ARROW_CIRCLE",50:"ARROW_CROSS",51:"ARROW_OPEN",52:"-.",53:"DOTTED_ARROW_POINT",54:"DOTTED_ARROW_CIRCLE",55:"DOTTED_ARROW_CROSS",56:"DOTTED_ARROW_OPEN",57:"==",58:"THICK_ARROW_POINT",59:"THICK_ARROW_CIRCLE",60:"THICK_ARROW_CROSS",61:"THICK_ARROW_OPEN",62:"PIPE",67:"STYLE",68:"LINKSTYLE",69:"CLASSDEF",70:"CLASS",71:"CLICK",74:"DEFAULT",76:"HEX",77:"NUM",79:"PCT",81:"COMMA",83:"ALPHA",84:"COLON",85:"UNIT",86:"BRKT",87:"DOT",89:"PLUS",90:"EQUALS",91:"MULT",92:"TAG_START",93:"TAG_END",94:"QUOTE"},
productions_: [0,[3,2],[5,0],[5,2],[6,1],[6,1],[6,1],[6,1],[6,1],[4,2],[4,2],[4,4],[4,4],[4,4],[4,4],[4,4],[19,2],[19,1],[20,1],[20,1],[20,1],[14,1],[14,1],[14,2],[22,2],[22,2],[22,1],[22,1],[21,2],[21,1],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,5],[7,4],[24,1],[24,1],[24,1],[23,3],[23,1],[33,4],[33,5],[33,6],[33,7],[33,4],[33,5],[33,4],[33,5],[33,4],[33,5],[33,1],[33,2],[35,1],[35,2],[42,1],[42,1],[42,3],[34,2],[34,3],[34,1],[34,3],[34,3],[34,3],[34,3],[34,3],[34,3],[34,3],[34,3],[34,3],[34,3],[34,3],[34,3],[45,1],[45,1],[45,1],[45,1],[45,1],[45,1],[45,1],[45,1],[45,1],[45,1],[45,1],[45,1],[46,3],[31,1],[31,2],[64,1],[64,2],[66,1],[66,1],[66,1],[66,1],[66,1],[66,1],[66,1],[66,1],[66,1],[66,1],[66,1],[72,1],[72,2],[27,5],[27,5],[28,5],[29,5],[25,5],[25,5],[26,5],[26,5],[78,3],[75,1],[75,3],[80,1],[80,2],[82,1],[82,1],[82,1],[82,1],[82,1],[82,1],[82,1],[82,1],[82,1],[82,1],[82,1],[65,1],[65,1],[63,1],[63,1],[63,1],[63,1],[63,1],[63,1],[63,1],[73,1],[73,1],[73,1],[73,1],[43,1],[43,1],[43,1],[43,1],[43,1],[43,1],[43,1],[43,1],[43,1],[88,1],[88,1],[88,1],[88,1],[88,1],[88,1],[88,1],[88,1],[88,1],[88,1],[88,1],[88,1],[88,1],[88,1],[88,1]],
performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {

@@ -97,195 +97,186 @@ /* this == yyval */

break;
case 4: case 5: case 50: case 52: case 53: case 93: case 95: case 108:
case 4: case 55: case 57: case 58: case 88: case 90: case 103:
this.$=$$[$0];
break;
case 8:
case 11:
yy.setDirection($$[$0-1]);this.$ = $$[$0-1];
break;
case 9:
case 12:
yy.setDirection("LR");this.$ = $$[$0-1];
break;
case 10:
case 13:
yy.setDirection("RL");this.$ = $$[$0-1];
break;
case 11:
case 14:
yy.setDirection("BT");this.$ = $$[$0-1];
break;
case 12:
case 15:
yy.setDirection("TB");this.$ = $$[$0-1];
break;
case 22: case 24: case 25: case 26: case 27: case 28:
case 30:
this.$=$$[$0-1]
break;
case 31: case 32: case 33: case 34: case 35:
this.$=[];
break;
case 23:
this.$=$$[$0-1]
case 36:
this.$=yy.addSubGraph($$[$0-1],$$[$0-3]);
break;
case 29:
yy.addSubGraph($$[$0-2],$$[$0-4]);
case 37:
this.$=yy.addSubGraph($$[$0-1],undefined);
break;
case 30:
yy.addSubGraph($$[$0-2],undefined);
break;
case 36:
case 41:
yy.addLink($$[$0-2],$$[$0],$$[$0-1]);this.$ = [$$[$0-2],$$[$0]];
break;
case 37:
case 42:
this.$ = [$$[$0]];
break;
case 38:
case 43:
this.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'square');
break;
case 39:
case 44:
this.$ = $$[$0-4];yy.addVertex($$[$0-4],$$[$0-2],'square');
break;
case 40:
case 45:
this.$ = $$[$0-5];yy.addVertex($$[$0-5],$$[$0-2],'circle');
break;
case 41:
case 46:
this.$ = $$[$0-6];yy.addVertex($$[$0-6],$$[$0-3],'circle');
break;
case 42:
case 47:
this.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'round');
break;
case 43:
case 48:
this.$ = $$[$0-4];yy.addVertex($$[$0-4],$$[$0-2],'round');
break;
case 44:
case 49:
this.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'diamond');
break;
case 45:
case 50:
this.$ = $$[$0-4];yy.addVertex($$[$0-4],$$[$0-2],'diamond');
break;
case 46:
case 51:
this.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'odd');
break;
case 47:
case 52:
this.$ = $$[$0-4];yy.addVertex($$[$0-4],$$[$0-2],'odd');
break;
case 48:
case 53:
this.$ = $$[$0];yy.addVertex($$[$0]);
break;
case 49:
case 54:
this.$ = $$[$0-1];yy.addVertex($$[$0-1]);
break;
case 51: case 94: case 96: case 109:
case 56: case 89: case 91: case 104:
this.$=$$[$0-1]+''+$$[$0];
break;
case 54:
case 59:
this.$=$$[$0-2]+'-'+$$[$0];
break;
case 55: case 65:
case 60:
$$[$0-1].text = $$[$0];this.$ = $$[$0-1];
break;
case 56: case 66:
case 61:
$$[$0-2].text = $$[$0-1];this.$ = $$[$0-2];
break;
case 57: case 67:
case 62:
this.$ = $$[$0];
break;
case 58: case 92:
this.$ = $$[$0-1];
break;
case 59:
$$[$02].text = $$[$0];this.$ = $$[$02];
break;
case 60: case 62: case 64:
$$[$0-1].text = $$[$0-3];this.$ = $$[$0-1];
break;
case 61: case 63:
$$[$0].text = $$[$0-2];this.$ = $$[$0];
break;
case 68:
case 63:
this.$ = {"type":"arrow","stroke":"normal","text":$$[$0-1]};
break;
case 69:
case 64:
this.$ = {"type":"arrow_circle","stroke":"normal","text":$$[$0-1]};
break;
case 70:
case 65:
this.$ = {"type":"arrow_cross","stroke":"normal","text":$$[$0-1]};
break;
case 71:
case 66:
this.$ = {"type":"arrow_open","stroke":"normal","text":$$[$0-1]};
break;
case 72:
case 67:
this.$ = {"type":"arrow","stroke":"dotted","text":$$[$0-1]};
break;
case 73:
case 68:
this.$ = {"type":"arrow_circle","stroke":"dotted","text":$$[$0-1]};
break;
case 74:
case 69:
this.$ = {"type":"arrow_cross","stroke":"dotted","text":$$[$0-1]};
break;
case 75:
case 70:
this.$ = {"type":"arrow_open","stroke":"dotted","text":$$[$0-1]};
break;
case 76:
case 71:
this.$ = {"type":"arrow","stroke":"thick","text":$$[$0-1]};
break;
case 77:
case 72:
this.$ = {"type":"arrow_circle","stroke":"thick","text":$$[$0-1]};
break;
case 78:
case 73:
this.$ = {"type":"arrow_cross","stroke":"thick","text":$$[$0-1]};
break;
case 79:
case 74:
this.$ = {"type":"arrow_open","stroke":"thick","text":$$[$0-1]};
break;
case 80:
case 75:
this.$ = {"type":"arrow","stroke":"normal"};
break;
case 81:
case 76:
this.$ = {"type":"arrow_circle","stroke":"normal"};
break;
case 82:
case 77:
this.$ = {"type":"arrow_cross","stroke":"normal"};
break;
case 83:
case 78:
this.$ = {"type":"arrow_open","stroke":"normal"};
break;
case 84:
case 79:
this.$ = {"type":"arrow","stroke":"dotted"};
break;
case 85:
case 80:
this.$ = {"type":"arrow_circle","stroke":"dotted"};
break;
case 86:
case 81:
this.$ = {"type":"arrow_cross","stroke":"dotted"};
break;
case 87:
case 82:
this.$ = {"type":"arrow_open","stroke":"dotted"};
break;
case 88:
case 83:
this.$ = {"type":"arrow","stroke":"thick"};
break;
case 89:
case 84:
this.$ = {"type":"arrow_circle","stroke":"thick"};
break;
case 90:
case 85:
this.$ = {"type":"arrow_cross","stroke":"thick"};
break;
case 91:
case 86:
this.$ = {"type":"arrow_open","stroke":"thick"};
break;
case 110: case 111:
case 87:
this.$ = $$[$0-1];
break;
case 105: case 106:
this.$ = $$[$0-4];yy.addClass($$[$0-2],$$[$0]);
break;
case 112:
case 107:
this.$ = $$[$0-4];yy.setClass($$[$0-2], $$[$0]);
break;
case 113:
case 108:
this.$ = $$[$0-4];yy.setClickEvent($$[$0-2], $$[$0]);
break;
case 114:
case 109:
this.$ = $$[$0-4];yy.addVertex($$[$0-2],undefined,undefined,$$[$0]);
break;
case 115: case 116: case 117:
case 110: case 111: case 112:
this.$ = $$[$0-4];yy.updateLink($$[$0-2],$$[$0]);
break;
case 119:
case 114:
this.$ = [$$[$0]]
break;
case 120:
case 115:
$$[$0-2].push($$[$0]);this.$ = $$[$0-2];
break;
case 122:
case 117:
this.$ = $$[$0-1] + $$[$0];

@@ -295,3 +286,3 @@ break;

},
table: [{3:1,4:2,11:[1,3]},{1:[3]},o($V0,$V1,{5:4}),{12:[1,5]},{1:[2,1],6:6,7:7,8:8,9:$V2,10:$V3,12:$V4,13:$V5,19:$V6,21:13,22:14,24:15,25:16,26:17,27:18,28:19,29:$V7,33:22,35:28,42:29,43:31,68:$V8,69:$V9,70:$Va,71:$Vb,72:$Vc,78:$Vd,79:$Ve,81:$Vf,83:$Vg,84:$Vh,86:$Vi,87:$Vj,89:$Vk,90:$Vl,91:$Vm},{13:[1,41],15:[1,42],16:[1,43],17:[1,44],18:[1,45]},o($Vn,[2,3]),{8:46,13:$V5,21:13,22:14,24:15,25:16,26:17,27:18,28:19,29:$V7,33:22,35:28,42:29,43:31,68:$V8,69:$V9,70:$Va,71:$Vb,72:$Vc,78:$Vd,79:$Ve,81:$Vf,83:$Vg,84:$Vh,86:$Vi,87:$Vj,89:$Vk,90:$Vl,91:$Vm},o($Vn,[2,5]),o($Vn,[2,6]),o($Vn,[2,7]),o($Vo,$Vp,{7:47,12:$V4,19:$V6}),o($Vo,[2,18],{7:48,12:$V4,19:$V6}),{19:[1,49]},{9:$Vq,10:$Vr,19:$Vs,23:50},{9:$Vq,10:$Vr,19:$Vs,23:54},{9:$Vq,10:$Vr,19:$Vs,23:55},{9:$Vq,10:$Vr,19:$Vs,23:56},{9:$Vq,10:$Vr,19:$Vs,23:57},{9:$Vq,10:$Vr,19:$Vs,23:58},{9:$Vq,10:$Vr,11:$Vt,12:$Vu,13:$Vv,15:$Vw,16:$Vx,17:$Vy,18:$Vz,19:$Vs,23:60,29:$VA,30:59,32:$VB,43:69,44:$VC,48:$VD,50:$VE,64:61,67:72,68:$VF,69:$VG,70:$VH,71:$VI,72:$VJ,74:62,75:$VK,78:$Vd,79:$VL,81:$Vf,83:$Vg,84:$Vh,86:$Vi,87:$Vj,89:$Vk,90:$Vl,91:$Vm},{79:[1,84]},o($VM,[2,37],{34:85,46:86,48:[1,87],49:[1,88],50:[1,89],51:[1,90],52:[1,91],53:[1,92],54:[1,93],55:[1,94],56:[1,95],57:[1,96],58:[1,97],59:[1,98],60:[1,99],61:[1,100],62:[1,101]}),{12:[1,102]},{12:[1,103]},{12:[1,104]},{12:[1,105]},{12:[1,106]},o($VN,[2,48],{43:31,20:111,42:112,12:$VO,13:$V5,15:[1,110],36:[1,107],38:[1,108],40:[1,109],78:$Vd,81:$Vf,83:$Vg,84:$Vh,86:$Vi,87:$Vj,89:$Vk,90:$Vl,91:$Vm}),o($VP,[2,50]),o($VP,[2,52]),o($VP,[2,53],{44:[1,114]}),o($VQ,[2,147]),o($VQ,[2,148]),o($VQ,[2,149]),o($VQ,[2,150]),o($VQ,[2,151]),o($VQ,[2,152]),o($VQ,[2,153]),o($VQ,[2,154]),o($VQ,[2,155]),{9:$VR,12:$VO,14:115,19:$VS,20:118},{9:$VR,12:$VO,14:119,19:$VS,20:118},{9:$VR,12:$VO,14:120,19:$VS,20:118},{9:$VR,12:$VO,14:121,19:$VS,20:118},{9:$VR,12:$VO,14:122,19:$VS,20:118},o($Vn,[2,4]),o($Vo,[2,16]),o($Vo,[2,17]),o($Vn,[2,22]),o($Vn,[2,23]),o($Vn,[2,33]),o($Vn,[2,34]),o($Vn,[2,35]),o($Vn,[2,24]),o($Vn,[2,25]),o($Vn,[2,26]),o($Vn,[2,27]),o($Vn,[2,28]),{9:$Vq,10:$Vr,11:$Vt,12:$Vu,13:$Vv,15:$Vw,16:$Vx,17:$Vy,18:$Vz,19:$Vs,23:123,29:$VA,32:$VB,43:69,44:$VC,48:$VD,50:$VE,64:124,67:72,68:$VF,69:$VG,70:$VH,71:$VI,72:$VJ,74:62,75:$VK,78:$Vd,79:$VL,81:$Vf,83:$Vg,84:$Vh,86:$Vi,87:$Vj,89:$Vk,90:$Vl,91:$Vm},o($VT,$V1,{5:125}),o($VU,[2,93]),o($VV,[2,136]),o($VV,[2,137]),o($VV,[2,138]),o($VV,[2,139]),o($VV,[2,140]),o($VV,[2,141]),o($VV,[2,142]),o($VV,[2,143]),o($VV,[2,144]),o($VV,[2,145]),o($VV,[2,146]),o($VV,[2,97]),o($VV,[2,98]),o($VV,[2,99]),o($VV,[2,100]),o($VV,[2,101]),o($VV,[2,102]),o($VV,[2,103]),o($VV,[2,104]),o($VV,[2,105]),o($VV,[2,106]),o($VV,[2,107]),{9:$VW,11:$Vt,12:$Vu,13:$Vv,15:$Vw,16:$Vx,17:$Vy,18:$Vz,29:$VA,32:$VB,36:$VX,37:$VY,38:$VZ,39:$V_,40:$V$,41:$V01,43:69,44:$VC,48:$VD,50:$VE,51:$V11,52:$V21,53:$V31,54:$V41,63:$V51,64:128,65:126,66:127,67:72,68:$VF,69:$VG,70:$VH,71:$VI,72:$VJ,74:62,75:$VK,78:$Vd,79:$VL,81:$Vf,83:$Vg,84:$Vh,86:$Vi,87:$Vj,88:129,89:$Vk,90:$Vl,91:$Vm,92:$V61,93:$V71,94:$V81},{13:$V5,33:145,35:28,42:29,43:31,78:$Vd,81:$Vf,83:$Vg,84:$Vh,86:$Vi,87:$Vj,89:$Vk,90:$Vl,91:$Vm},o($V91,[2,67],{47:146,63:[1,147]}),{11:$Vt,12:$Vu,13:$Vv,15:$Vw,16:$Vx,17:$Vy,18:$Vz,29:$VA,30:148,32:$VB,43:69,44:$VC,48:$VD,50:$VE,64:61,67:72,68:$VF,69:$VG,70:$VH,71:$VI,72:$VJ,74:62,75:$VK,78:$Vd,79:$VL,81:$Vf,83:$Vg,84:$Vh,86:$Vi,87:$Vj,89:$Vk,90:$Vl,91:$Vm},{11:$Vt,12:$Vu,13:$Vv,15:$Vw,16:$Vx,17:$Vy,18:$Vz,29:$VA,30:149,32:$VB,43:69,44:$VC,48:$VD,50:$VE,64:61,67:72,68:$VF,69:$VG,70:$VH,71:$VI,72:$VJ,74:62,75:$VK,78:$Vd,79:$VL,81:$Vf,83:$Vg,84:$Vh,86:$Vi,87:$Vj,89:$Vk,90:$Vl,91:$Vm},{11:$Vt,12:$Vu,13:$Vv,15:$Vw,16:$Vx,17:$Vy,18:$Vz,29:$VA,30:150,32:$VB,43:69,44:$VC,48:$VD,50:$VE,64:61,67:72,68:$VF,69:$VG,70:$VH,71:$VI,72:$VJ,74:62,75:$VK,78:$Vd,79:$VL,81:$Vf,83:$Vg,84:$Vh,86:$Vi,87:$Vj,89:$Vk,90:$Vl,91:$Vm},o($Va1,[2,80]),o($Va1,[2,81]),o($Va1,[2,82]),o($Va1,[2,83]),o($Va1,[2,84]),o($Va1,[2,85]),o($Va1,[2,86]),o($Va1,[2,87]),o($Va1,[2,88]),o($Va1,[2,89]),o($Va1,[2,90]),o($Va1,[2,91]),{13:$V5,35:151,42:29,43:31,77:[1,152],78:$Vd,81:$Vf,83:$Vg,84:$Vh,86:$Vi,87:$Vj,89:$Vk,90:$Vl,91:$Vm},{75:[1,153],78:[1,154]},{13:$V5,35:156,42:29,43:31,75:[1,155],78:$Vd,81:$Vf,83:$Vg,84:$Vh,86:$Vi,87:$Vj,89:$Vk,90:$Vl,91:$Vm},{13:$V5,35:157,42:29,43:31,78:$Vd,81:$Vf,83:$Vg,84:$Vh,86:$Vi,87:$Vj,89:$Vk,90:$Vl,91:$Vm},{13:$V5,35:158,42:29,43:31,78:$Vd,81:$Vf,83:$Vg,84:$Vh,86:$Vi,87:$Vj,89:$Vk,90:$Vl,91:$Vm},{11:$Vt,12:$Vu,13:$Vv,15:$Vw,16:$Vx,17:$Vy,18:$Vz,29:$VA,30:159,32:$VB,43:69,44:$VC,48:$VD,50:$VE,64:61,67:72,68:$VF,69:$VG,70:$VH,71:$VI,72:$VJ,74:62,75:$VK,78:$Vd,79:$VL,81:$Vf,83:$Vg,84:$Vh,86:$Vi,87:$Vj,89:$Vk,90:$Vl,91:$Vm},{11:$Vt,12:$Vu,13:$Vv,15:$Vw,16:$Vx,17:$Vy,18:$Vz,29:$VA,30:161,32:$VB,38:[1,160],43:69,44:$VC,48:$VD,50:$VE,64:61,67:72,68:$VF,69:$VG,70:$VH,71:$VI,72:$VJ,74:62,75:$VK,78:$Vd,79:$VL,81:$Vf,83:$Vg,84:$Vh,86:$Vi,87:$Vj,89:$Vk,90:$Vl,91:$Vm},{11:$Vt,12:$Vu,13:$Vv,15:$Vw,16:$Vx,17:$Vy,18:$Vz,29:$VA,30:162,32:$VB,43:69,44:$VC,48:$VD,50:$VE,64:61,67:72,68:$VF,69:$VG,70:$VH,71:$VI,72:$VJ,74:62,75:$VK,78:$Vd,79:$VL,81:$Vf,83:$Vg,84:$Vh,86:$Vi,87:$Vj,89:$Vk,90:$Vl,91:$Vm},{11:$Vt,12:$Vu,13:$Vv,15:$Vw,16:$Vx,17:$Vy,18:$Vz,29:$VA,30:163,32:$VB,43:69,44:$VC,48:$VD,50:$VE,64:61,67:72,68:$VF,69:$VG,70:$VH,71:$VI,72:$VJ,74:62,75:$VK,78:$Vd,79:$VL,81:$Vf,83:$Vg,84:$Vh,86:$Vi,87:$Vj,89:$Vk,90:$Vl,91:$Vm},o($VN,[2,49]),o($VP,[2,51]),o($VN,[2,21],{20:164,12:$VO}),{43:165,78:$Vd,81:$Vf,83:$Vg,84:$Vh,86:$Vi,87:$Vj,89:$Vk,90:$Vl,91:$Vm},o($V0,[2,8]),o($V0,[2,13]),o($V0,[2,14]),{19:[1,166]},o($V0,[2,9]),o($V0,[2,10]),o($V0,[2,11]),o($V0,[2,12]),o($VT,$V1,{5:167}),o($VU,[2,94]),{6:6,7:7,8:8,9:$V2,10:$V3,12:$Vb1,13:$V5,19:$V6,21:13,22:14,24:15,25:16,26:17,27:18,28:19,29:$V7,31:168,32:$Vc1,33:22,35:28,42:29,43:31,68:$V8,69:$V9,70:$Va,71:$Vb,72:$Vc,78:$Vd,79:$Ve,81:$Vf,83:$Vg,84:$Vh,86:$Vi,87:$Vj,89:$Vk,90:$Vl,91:$Vm},{9:$VW,11:$Vt,12:$Vu,13:$Vv,15:$Vw,16:$Vx,17:$Vy,18:$Vz,19:[2,118],29:$VA,32:$VB,36:$VX,37:$VY,38:$VZ,39:$V_,40:$V$,41:$V01,43:69,44:$VC,48:$VD,50:$VE,51:$V11,52:$V21,53:$V31,54:$V41,63:$V51,64:128,66:171,67:72,68:$VF,69:$VG,70:$VH,71:$VI,72:$VJ,74:62,75:$VK,78:$Vd,79:$VL,81:$Vf,83:$Vg,84:$Vh,86:$Vi,87:$Vj,88:129,89:$Vk,90:$Vl,91:$Vm,92:$V61,93:$V71,94:$V81},o($Vd1,[2,95]),o($Vd1,[2,134]),o($Vd1,[2,135]),o($Vd1,[2,156]),o($Vd1,[2,157]),o($Vd1,[2,158]),o($Vd1,[2,159]),o($Vd1,[2,160]),o($Vd1,[2,161]),o($Vd1,[2,162]),o($Vd1,[2,163]),o($Vd1,[2,164]),o($Vd1,[2,165]),o($Vd1,[2,166]),o($Vd1,[2,167]),o($Vd1,[2,168]),o($Vd1,[2,169]),o($Vd1,[2,170]),o($VM,[2,36]),o($V91,[2,65],{12:[1,172]}),{11:$Vt,12:$Vu,13:$Vv,15:$Vw,16:$Vx,17:$Vy,18:$Vz,29:$VA,30:173,32:$VB,43:69,44:$VC,48:$VD,50:$VE,64:61,67:72,68:$VF,69:$VG,70:$VH,71:$VI,72:$VJ,74:62,75:$VK,78:$Vd,79:$VL,81:$Vf,83:$Vg,84:$Vh,86:$Vi,87:$Vj,89:$Vk,90:$Vl,91:$Vm},{11:$Vt,12:$Vu,13:$Vv,15:$Vw,16:$Vx,17:$Vy,18:$Vz,29:$VA,32:$VB,43:69,44:$VC,48:$VD,50:$VE,51:[1,174],52:[1,175],53:[1,176],54:[1,177],64:124,67:72,68:$VF,69:$VG,70:$VH,71:$VI,72:$VJ,74:62,75:$VK,78:$Vd,79:$VL,81:$Vf,83:$Vg,84:$Vh,86:$Vi,87:$Vj,89:$Vk,90:$Vl,91:$Vm},{11:$Vt,12:$Vu,13:$Vv,15:$Vw,16:$Vx,17:$Vy,18:$Vz,29:$VA,32:$VB,43:69,44:$VC,48:$VD,50:$VE,55:[1,178],56:[1,179],57:[1,180],58:[1,181],64:124,67:72,68:$VF,69:$VG,70:$VH,71:$VI,72:$VJ,74:62,75:$VK,78:$Vd,79:$VL,81:$Vf,83:$Vg,84:$Vh,86:$Vi,87:$Vj,89:$Vk,90:$Vl,91:$Vm},{11:$Vt,12:$Vu,13:$Vv,15:$Vw,16:$Vx,17:$Vy,18:$Vz,29:$VA,32:$VB,43:69,44:$VC,48:$VD,50:$VE,59:[1,182],60:[1,183],61:[1,184],62:[1,185],64:124,67:72,68:$VF,69:$VG,70:$VH,71:$VI,72:$VJ,74:62,75:$VK,78:$Vd,79:$VL,81:$Vf,83:$Vg,84:$Vh,86:$Vi,87:$Vj,89:$Vk,90:$Vl,91:$Vm},{12:[1,186],13:$V5,42:112,43:31,78:$Vd,81:$Vf,83:$Vg,84:$Vh,86:$Vi,87:$Vj,89:$Vk,90:$Vl,91:$Vm},{12:[1,187]},{12:[1,188]},{12:[1,189]},{12:[1,190]},{12:[1,191],13:$V5,42:112,43:31,78:$Vd,81:$Vf,83:$Vg,84:$Vh,86:$Vi,87:$Vj,89:$Vk,90:$Vl,91:$Vm},{12:[1,192],13:$V5,42:112,43:31,78:$Vd,81:$Vf,83:$Vg,84:$Vh,86:$Vi,87:$Vj,89:$Vk,90:$Vl,91:$Vm},{12:[1,193],13:$V5,42:112,43:31,78:$Vd,81:$Vf,83:$Vg,84:$Vh,86:$Vi,87:$Vj,89:$Vk,90:$Vl,91:$Vm},{11:$Vt,12:$Vu,13:$Vv,15:$Vw,16:$Vx,17:$Vy,18:$Vz,29:$VA,32:$VB,37:[1,194],43:69,44:$VC,48:$VD,50:$VE,64:124,67:72,68:$VF,69:$VG,70:$VH,71:$VI,72:$VJ,74:62,75:$VK,78:$Vd,79:$VL,81:$Vf,83:$Vg,84:$Vh,86:$Vi,87:$Vj,89:$Vk,90:$Vl,91:$Vm},{11:$Vt,12:$Vu,13:$Vv,15:$Vw,16:$Vx,17:$Vy,18:$Vz,29:$VA,30:195,32:$VB,43:69,44:$VC,48:$VD,50:$VE,64:61,67:72,68:$VF,69:$VG,70:$VH,71:$VI,72:$VJ,74:62,75:$VK,78:$Vd,79:$VL,81:$Vf,83:$Vg,84:$Vh,86:$Vi,87:$Vj,89:$Vk,90:$Vl,91:$Vm},{11:$Vt,12:$Vu,13:$Vv,15:$Vw,16:$Vx,17:$Vy,18:$Vz,29:$VA,32:$VB,39:[1,196],43:69,44:$VC,48:$VD,50:$VE,64:124,67:72,68:$VF,69:$VG,70:$VH,71:$VI,72:$VJ,74:62,75:$VK,78:$Vd,79:$VL,81:$Vf,83:$Vg,84:$Vh,86:$Vi,87:$Vj,89:$Vk,90:$Vl,91:$Vm},{11:$Vt,12:$Vu,13:$Vv,15:$Vw,16:$Vx,17:$Vy,18:$Vz,29:$VA,32:$VB,41:[1,197],43:69,44:$VC,48:$VD,50:$VE,64:124,67:72,68:$VF,69:$VG,70:$VH,71:$VI,72:$VJ,74:62,75:$VK,78:$Vd,79:$VL,81:$Vf,83:$Vg,84:$Vh,86:$Vi,87:$Vj,89:$Vk,90:$Vl,91:$Vm},{11:$Vt,12:$Vu,13:$Vv,15:$Vw,16:$Vx,17:$Vy,18:$Vz,29:$VA,32:$VB,37:[1,198],43:69,44:$VC,48:$VD,50:$VE,64:124,67:72,68:$VF,69:$VG,70:$VH,71:$VI,72:$VJ,74:62,75:$VK,78:$Vd,79:$VL,81:$Vf,83:$Vg,84:$Vh,86:$Vi,87:$Vj,89:$Vk,90:$Vl,91:$Vm},o($VN,[2,20]),o($VP,[2,54]),o($V0,[2,15]),{6:6,7:7,8:8,9:$V2,10:$V3,12:$Vb1,13:$V5,19:$V6,21:13,22:14,24:15,25:16,26:17,27:18,28:19,29:$V7,31:199,32:$Vc1,33:22,35:28,42:29,43:31,68:$V8,69:$V9,70:$Va,71:$Vb,72:$Vc,78:$Vd,79:$Ve,81:$Vf,83:$Vg,84:$Vh,86:$Vi,87:$Vj,89:$Vk,90:$Vl,91:$Vm},{9:$Vq,10:$Vr,19:$Vs,23:200},o($VM,[2,31]),o($Vo,$Vp,{7:47,31:201,12:$Vb1,19:$V6,32:$Vc1}),o($Vd1,[2,96]),o($V91,[2,66]),{11:$Vt,12:$Vu,13:$Vv,15:$Vw,16:$Vx,17:$Vy,18:$Vz,29:$VA,32:$VB,43:69,44:$VC,48:$VD,50:$VE,63:[1,202],64:124,67:72,68:$VF,69:$VG,70:$VH,71:$VI,72:$VJ,74:62,75:$VK,78:$Vd,79:$VL,81:$Vf,83:$Vg,84:$Vh,86:$Vi,87:$Vj,89:$Vk,90:$Vl,91:$Vm},o($V91,[2,68]),o($V91,[2,69]),o($V91,[2,70]),o($V91,[2,71]),o($V91,[2,72]),o($V91,[2,73]),o($V91,[2,74]),o($V91,[2,75]),o($V91,[2,76]),o($V91,[2,77]),o($V91,[2,78]),o($V91,[2,79]),{12:$Ve1,44:$Vf1,68:$Vg1,76:203,77:$Vh1,78:$Vi1,79:$Vj1,80:204,82:205,83:$Vk1,84:$Vl1,85:$Vm1,86:$Vn1,87:$Vo1},{12:$Ve1,44:$Vf1,68:$Vg1,76:217,77:$Vh1,78:$Vi1,79:$Vj1,80:204,82:205,83:$Vk1,84:$Vl1,85:$Vm1,86:$Vn1,87:$Vo1},{12:$Ve1,44:$Vf1,68:$Vg1,76:218,77:$Vh1,78:$Vi1,79:$Vj1,80:204,82:205,83:$Vk1,84:$Vl1,85:$Vm1,86:$Vn1,87:$Vo1},{12:$Ve1,44:$Vf1,68:$Vg1,76:219,77:$Vh1,78:$Vi1,79:$Vj1,80:204,82:205,83:$Vk1,84:$Vl1,85:$Vm1,86:$Vn1,87:$Vo1},{12:$Ve1,44:$Vf1,68:$Vg1,76:220,77:$Vh1,78:$Vi1,79:$Vj1,80:204,82:205,83:$Vk1,84:$Vl1,85:$Vm1,86:$Vn1,87:$Vo1},{12:$Ve1,44:$Vf1,68:$Vg1,76:221,77:$Vh1,78:$Vi1,79:$Vj1,80:204,82:205,83:$Vk1,84:$Vl1,85:$Vm1,86:$Vn1,87:$Vo1},{13:$V5,35:222,42:29,43:31,78:$Vd,81:$Vf,83:$Vg,84:$Vh,86:$Vi,87:$Vj,89:$Vk,90:$Vl,91:$Vm},{13:$V5,35:223,42:29,43:31,78:$Vd,81:$Vf,83:$Vg,84:$Vh,86:$Vi,87:$Vj,89:$Vk,90:$Vl,91:$Vm},o($VN,[2,38],{20:224,12:$VO}),{11:$Vt,12:$Vu,13:$Vv,15:$Vw,16:$Vx,17:$Vy,18:$Vz,29:$VA,32:$VB,39:[1,225],43:69,44:$VC,48:$VD,50:$VE,64:124,67:72,68:$VF,69:$VG,70:$VH,71:$VI,72:$VJ,74:62,75:$VK,78:$Vd,79:$VL,81:$Vf,83:$Vg,84:$Vh,86:$Vi,87:$Vj,89:$Vk,90:$Vl,91:$Vm},o($VN,[2,42],{20:226,12:$VO}),o($VN,[2,44],{20:227,12:$VO}),o($VN,[2,46],{20:228,12:$VO}),{9:$Vq,10:$Vr,19:$Vs,23:229},o($Vn,[2,30]),o($VM,[2,32]),o([12,13,78,81,83,84,86,87,89,90,91],[2,92]),o($VM,[2,114],{81:$Vp1}),o($Vq1,[2,119],{82:231,12:$Ve1,44:$Vf1,68:$Vg1,77:$Vh1,78:$Vi1,79:$Vj1,83:$Vk1,84:$Vl1,85:$Vm1,86:$Vn1,87:$Vo1}),o($Vr1,[2,121]),o($Vr1,[2,123]),o($Vr1,[2,124]),o($Vr1,[2,125]),o($Vr1,[2,126]),o($Vr1,[2,127]),o($Vr1,[2,128]),o($Vr1,[2,129]),o($Vr1,[2,130]),o($Vr1,[2,131]),o($Vr1,[2,132]),o($Vr1,[2,133]),o($VM,[2,115],{81:$Vp1}),o($VM,[2,116],{81:$Vp1}),o($VM,[2,117],{81:$Vp1}),o($VM,[2,110],{81:$Vp1}),o($VM,[2,111],{81:$Vp1}),o($VM,[2,112],{43:31,42:112,13:$V5,78:$Vd,81:$Vf,83:$Vg,84:$Vh,86:$Vi,87:$Vj,89:$Vk,90:$Vl,91:$Vm}),o($VM,[2,113],{43:31,42:112,13:$V5,78:$Vd,81:$Vf,83:$Vg,84:$Vh,86:$Vi,87:$Vj,89:$Vk,90:$Vl,91:$Vm}),o($VN,[2,39]),{39:[1,232]},o($VN,[2,43]),o($VN,[2,45]),o($VN,[2,47]),o($Vn,[2,29]),{12:$Ve1,44:$Vf1,68:$Vg1,77:$Vh1,78:$Vi1,79:$Vj1,80:233,82:205,83:$Vk1,84:$Vl1,85:$Vm1,86:$Vn1,87:$Vo1},o($Vr1,[2,122]),o($VN,[2,40],{20:234,12:$VO}),o($Vq1,[2,120],{82:231,12:$Ve1,44:$Vf1,68:$Vg1,77:$Vh1,78:$Vi1,79:$Vj1,83:$Vk1,84:$Vl1,85:$Vm1,86:$Vn1,87:$Vo1}),o($VN,[2,41])],
table: [{3:1,4:2,9:$V0,10:$V1,12:$V2},{1:[3]},o($V3,$V4,{5:6}),{4:7,9:$V0,10:$V1,12:$V2},{4:8,9:$V0,10:$V1,12:$V2},{10:[1,9]},{1:[2,1],6:10,7:11,8:$V5,9:$V6,10:$V7,11:$V8,13:$V9,23:16,25:17,26:18,27:19,28:20,29:21,30:$Va,33:23,35:29,42:30,43:32,67:$Vb,68:$Vc,69:$Vd,70:$Ve,71:$Vf,77:$Vg,81:$Vh,83:$Vi,84:$Vj,86:$Vk,87:$Vl,89:$Vm,90:$Vn,91:$Vo},o($V3,[2,9]),o($V3,[2,10]),{13:[1,42],15:[1,43],16:[1,44],17:[1,45],18:[1,46]},o($Vp,[2,3]),o($Vp,[2,4]),o($Vp,[2,5]),o($Vp,[2,6]),o($Vp,[2,7]),o($Vp,[2,8]),{8:$Vq,9:$Vr,11:$Vs,24:47},{8:$Vq,9:$Vr,11:$Vs,24:51},{8:$Vq,9:$Vr,11:$Vs,24:52},{8:$Vq,9:$Vr,11:$Vs,24:53},{8:$Vq,9:$Vr,11:$Vs,24:54},{8:$Vq,9:$Vr,11:$Vs,24:55},{8:$Vq,9:$Vr,10:$Vt,11:$Vs,12:$Vu,13:$Vv,15:$Vw,16:$Vx,17:$Vy,18:$Vz,24:57,30:$VA,31:56,32:$VB,43:66,44:$VC,47:$VD,57:$VE,63:58,66:69,67:$VF,68:$VG,69:$VH,70:$VI,71:$VJ,73:59,74:$VK,77:$Vg,79:$VL,81:$Vh,83:$Vi,84:$Vj,86:$Vk,87:$Vl,89:$Vm,90:$Vn,91:$Vo},o($VM,[2,42],{34:81,45:82,47:[1,83],48:[1,86],49:[1,87],50:[1,88],51:[1,89],52:[1,84],53:[1,90],54:[1,91],55:[1,92],56:[1,93],57:[1,85],58:[1,94],59:[1,95],60:[1,96],61:[1,97]}),{10:[1,98]},{10:[1,99]},{10:[1,100]},{10:[1,101]},{10:[1,102]},o($VN,[2,53],{43:32,21:107,42:108,10:$VO,13:$V9,15:[1,106],36:[1,103],38:[1,104],40:[1,105],77:$Vg,81:$Vh,83:$Vi,84:$Vj,86:$Vk,87:$Vl,89:$Vm,90:$Vn,91:$Vo}),o($VP,[2,55]),o($VP,[2,57]),o($VP,[2,58],{44:[1,110]}),o($VQ,[2,142]),o($VQ,[2,143]),o($VQ,[2,144]),o($VQ,[2,145]),o($VQ,[2,146]),o($VQ,[2,147]),o($VQ,[2,148]),o($VQ,[2,149]),o($VQ,[2,150]),{8:$VR,9:$VS,10:$VO,14:111,21:114},{8:$VR,9:$VS,10:$VO,14:115,21:114},{8:$VR,9:$VS,10:$VO,14:116,21:114},{8:$VR,9:$VS,10:$VO,14:117,21:114},{8:$VR,9:$VS,10:$VO,14:118,21:114},o($Vp,[2,30]),o($Vp,[2,38]),o($Vp,[2,39]),o($Vp,[2,40]),o($Vp,[2,31]),o($Vp,[2,32]),o($Vp,[2,33]),o($Vp,[2,34]),o($Vp,[2,35]),{8:$Vq,9:$Vr,10:$Vt,11:$Vs,12:$Vu,13:$Vv,15:$Vw,16:$Vx,17:$Vy,18:$Vz,24:119,30:$VA,32:$VB,43:66,44:$VC,47:$VD,57:$VE,63:120,66:69,67:$VF,68:$VG,69:$VH,70:$VI,71:$VJ,73:59,74:$VK,77:$Vg,79:$VL,81:$Vh,83:$Vi,84:$Vj,86:$Vk,87:$Vl,89:$Vm,90:$Vn,91:$Vo},o($VT,$V4,{5:121}),o($VU,[2,88]),o($VU,[2,131]),o($VU,[2,132]),o($VU,[2,133]),o($VU,[2,134]),o($VU,[2,135]),o($VU,[2,136]),o($VU,[2,137]),o($VU,[2,138]),o($VU,[2,139]),o($VU,[2,140]),o($VU,[2,141]),o($VU,[2,92]),o($VU,[2,93]),o($VU,[2,94]),o($VU,[2,95]),o($VU,[2,96]),o($VU,[2,97]),o($VU,[2,98]),o($VU,[2,99]),o($VU,[2,100]),o($VU,[2,101]),o($VU,[2,102]),{13:$V9,33:122,35:29,42:30,43:32,77:$Vg,81:$Vh,83:$Vi,84:$Vj,86:$Vk,87:$Vl,89:$Vm,90:$Vn,91:$Vo},o($VV,[2,62],{46:123,62:[1,124]}),{10:$Vt,12:$Vu,13:$Vv,15:$Vw,16:$Vx,17:$Vy,18:$Vz,30:$VA,31:125,32:$VB,43:66,44:$VC,47:$VD,57:$VE,63:58,66:69,67:$VF,68:$VG,69:$VH,70:$VI,71:$VJ,73:59,74:$VK,77:$Vg,79:$VL,81:$Vh,83:$Vi,84:$Vj,86:$Vk,87:$Vl,89:$Vm,90:$Vn,91:$Vo},{10:$Vt,12:$Vu,13:$Vv,15:$Vw,16:$Vx,17:$Vy,18:$Vz,30:$VA,31:126,32:$VB,43:66,44:$VC,47:$VD,57:$VE,63:58,66:69,67:$VF,68:$VG,69:$VH,70:$VI,71:$VJ,73:59,74:$VK,77:$Vg,79:$VL,81:$Vh,83:$Vi,84:$Vj,86:$Vk,87:$Vl,89:$Vm,90:$Vn,91:$Vo},{10:$Vt,12:$Vu,13:$Vv,15:$Vw,16:$Vx,17:$Vy,18:$Vz,30:$VA,31:127,32:$VB,43:66,44:$VC,47:$VD,57:$VE,63:58,66:69,67:$VF,68:$VG,69:$VH,70:$VI,71:$VJ,73:59,74:$VK,77:$Vg,79:$VL,81:$Vh,83:$Vi,84:$Vj,86:$Vk,87:$Vl,89:$Vm,90:$Vn,91:$Vo},o($VW,[2,75]),o($VW,[2,76]),o($VW,[2,77]),o($VW,[2,78]),o($VW,[2,79]),o($VW,[2,80]),o($VW,[2,81]),o($VW,[2,82]),o($VW,[2,83]),o($VW,[2,84]),o($VW,[2,85]),o($VW,[2,86]),{13:$V9,35:128,42:30,43:32,76:[1,129],77:$Vg,81:$Vh,83:$Vi,84:$Vj,86:$Vk,87:$Vl,89:$Vm,90:$Vn,91:$Vo},{74:[1,130],77:[1,131]},{13:$V9,35:133,42:30,43:32,74:[1,132],77:$Vg,81:$Vh,83:$Vi,84:$Vj,86:$Vk,87:$Vl,89:$Vm,90:$Vn,91:$Vo},{13:$V9,35:134,42:30,43:32,77:$Vg,81:$Vh,83:$Vi,84:$Vj,86:$Vk,87:$Vl,89:$Vm,90:$Vn,91:$Vo},{13:$V9,35:135,42:30,43:32,77:$Vg,81:$Vh,83:$Vi,84:$Vj,86:$Vk,87:$Vl,89:$Vm,90:$Vn,91:$Vo},{10:$Vt,12:$Vu,13:$Vv,15:$Vw,16:$Vx,17:$Vy,18:$Vz,30:$VA,31:136,32:$VB,43:66,44:$VC,47:$VD,57:$VE,63:58,66:69,67:$VF,68:$VG,69:$VH,70:$VI,71:$VJ,73:59,74:$VK,77:$Vg,79:$VL,81:$Vh,83:$Vi,84:$Vj,86:$Vk,87:$Vl,89:$Vm,90:$Vn,91:$Vo},{10:$Vt,12:$Vu,13:$Vv,15:$Vw,16:$Vx,17:$Vy,18:$Vz,30:$VA,31:138,32:$VB,38:[1,137],43:66,44:$VC,47:$VD,57:$VE,63:58,66:69,67:$VF,68:$VG,69:$VH,70:$VI,71:$VJ,73:59,74:$VK,77:$Vg,79:$VL,81:$Vh,83:$Vi,84:$Vj,86:$Vk,87:$Vl,89:$Vm,90:$Vn,91:$Vo},{10:$Vt,12:$Vu,13:$Vv,15:$Vw,16:$Vx,17:$Vy,18:$Vz,30:$VA,31:139,32:$VB,43:66,44:$VC,47:$VD,57:$VE,63:58,66:69,67:$VF,68:$VG,69:$VH,70:$VI,71:$VJ,73:59,74:$VK,77:$Vg,79:$VL,81:$Vh,83:$Vi,84:$Vj,86:$Vk,87:$Vl,89:$Vm,90:$Vn,91:$Vo},{10:$Vt,12:$Vu,13:$Vv,15:$Vw,16:$Vx,17:$Vy,18:$Vz,30:$VA,31:140,32:$VB,43:66,44:$VC,47:$VD,57:$VE,63:58,66:69,67:$VF,68:$VG,69:$VH,70:$VI,71:$VJ,73:59,74:$VK,77:$Vg,79:$VL,81:$Vh,83:$Vi,84:$Vj,86:$Vk,87:$Vl,89:$Vm,90:$Vn,91:$Vo},o($VN,[2,54]),o($VP,[2,56]),o($VN,[2,29],{21:141,10:$VO}),{43:142,77:$Vg,81:$Vh,83:$Vi,84:$Vj,86:$Vk,87:$Vl,89:$Vm,90:$Vn,91:$Vo},o($V3,[2,11]),o($V3,[2,21]),o($V3,[2,22]),{9:[1,143]},o($V3,[2,12]),o($V3,[2,13]),o($V3,[2,14]),o($V3,[2,15]),o($VT,$V4,{5:144}),o($VU,[2,89]),{6:10,7:11,8:$V5,9:$V6,10:$V7,11:$V8,13:$V9,23:16,25:17,26:18,27:19,28:20,29:21,30:$Va,32:[1,145],33:23,35:29,42:30,43:32,67:$Vb,68:$Vc,69:$Vd,70:$Ve,71:$Vf,77:$Vg,81:$Vh,83:$Vi,84:$Vj,86:$Vk,87:$Vl,89:$Vm,90:$Vn,91:$Vo},o($VM,[2,41]),o($VV,[2,60],{10:[1,146]}),{10:$Vt,12:$Vu,13:$Vv,15:$Vw,16:$Vx,17:$Vy,18:$Vz,30:$VA,31:147,32:$VB,43:66,44:$VC,47:$VD,57:$VE,63:58,66:69,67:$VF,68:$VG,69:$VH,70:$VI,71:$VJ,73:59,74:$VK,77:$Vg,79:$VL,81:$Vh,83:$Vi,84:$Vj,86:$Vk,87:$Vl,89:$Vm,90:$Vn,91:$Vo},{10:$Vt,12:$Vu,13:$Vv,15:$Vw,16:$Vx,17:$Vy,18:$Vz,30:$VA,32:$VB,43:66,44:$VC,47:$VD,48:[1,148],49:[1,149],50:[1,150],51:[1,151],57:$VE,63:120,66:69,67:$VF,68:$VG,69:$VH,70:$VI,71:$VJ,73:59,74:$VK,77:$Vg,79:$VL,81:$Vh,83:$Vi,84:$Vj,86:$Vk,87:$Vl,89:$Vm,90:$Vn,91:$Vo},{10:$Vt,12:$Vu,13:$Vv,15:$Vw,16:$Vx,17:$Vy,18:$Vz,30:$VA,32:$VB,43:66,44:$VC,47:$VD,53:[1,152],54:[1,153],55:[1,154],56:[1,155],57:$VE,63:120,66:69,67:$VF,68:$VG,69:$VH,70:$VI,71:$VJ,73:59,74:$VK,77:$Vg,79:$VL,81:$Vh,83:$Vi,84:$Vj,86:$Vk,87:$Vl,89:$Vm,90:$Vn,91:$Vo},{10:$Vt,12:$Vu,13:$Vv,15:$Vw,16:$Vx,17:$Vy,18:$Vz,30:$VA,32:$VB,43:66,44:$VC,47:$VD,57:$VE,58:[1,156],59:[1,157],60:[1,158],61:[1,159],63:120,66:69,67:$VF,68:$VG,69:$VH,70:$VI,71:$VJ,73:59,74:$VK,77:$Vg,79:$VL,81:$Vh,83:$Vi,84:$Vj,86:$Vk,87:$Vl,89:$Vm,90:$Vn,91:$Vo},{10:[1,160],13:$V9,42:108,43:32,77:$Vg,81:$Vh,83:$Vi,84:$Vj,86:$Vk,87:$Vl,89:$Vm,90:$Vn,91:$Vo},{10:[1,161]},{10:[1,162]},{10:[1,163]},{10:[1,164]},{10:[1,165],13:$V9,42:108,43:32,77:$Vg,81:$Vh,83:$Vi,84:$Vj,86:$Vk,87:$Vl,89:$Vm,90:$Vn,91:$Vo},{10:[1,166],13:$V9,42:108,43:32,77:$Vg,81:$Vh,83:$Vi,84:$Vj,86:$Vk,87:$Vl,89:$Vm,90:$Vn,91:$Vo},{10:[1,167],13:$V9,42:108,43:32,77:$Vg,81:$Vh,83:$Vi,84:$Vj,86:$Vk,87:$Vl,89:$Vm,90:$Vn,91:$Vo},{10:$Vt,12:$Vu,13:$Vv,15:$Vw,16:$Vx,17:$Vy,18:$Vz,30:$VA,32:$VB,37:[1,168],43:66,44:$VC,47:$VD,57:$VE,63:120,66:69,67:$VF,68:$VG,69:$VH,70:$VI,71:$VJ,73:59,74:$VK,77:$Vg,79:$VL,81:$Vh,83:$Vi,84:$Vj,86:$Vk,87:$Vl,89:$Vm,90:$Vn,91:$Vo},{10:$Vt,12:$Vu,13:$Vv,15:$Vw,16:$Vx,17:$Vy,18:$Vz,30:$VA,31:169,32:$VB,43:66,44:$VC,47:$VD,57:$VE,63:58,66:69,67:$VF,68:$VG,69:$VH,70:$VI,71:$VJ,73:59,74:$VK,77:$Vg,79:$VL,81:$Vh,83:$Vi,84:$Vj,86:$Vk,87:$Vl,89:$Vm,90:$Vn,91:$Vo},{10:$Vt,12:$Vu,13:$Vv,15:$Vw,16:$Vx,17:$Vy,18:$Vz,30:$VA,32:$VB,39:[1,170],43:66,44:$VC,47:$VD,57:$VE,63:120,66:69,67:$VF,68:$VG,69:$VH,70:$VI,71:$VJ,73:59,74:$VK,77:$Vg,79:$VL,81:$Vh,83:$Vi,84:$Vj,86:$Vk,87:$Vl,89:$Vm,90:$Vn,91:$Vo},{10:$Vt,12:$Vu,13:$Vv,15:$Vw,16:$Vx,17:$Vy,18:$Vz,30:$VA,32:$VB,41:[1,171],43:66,44:$VC,47:$VD,57:$VE,63:120,66:69,67:$VF,68:$VG,69:$VH,70:$VI,71:$VJ,73:59,74:$VK,77:$Vg,79:$VL,81:$Vh,83:$Vi,84:$Vj,86:$Vk,87:$Vl,89:$Vm,90:$Vn,91:$Vo},{10:$Vt,12:$Vu,13:$Vv,15:$Vw,16:$Vx,17:$Vy,18:$Vz,30:$VA,32:$VB,37:[1,172],43:66,44:$VC,47:$VD,57:$VE,63:120,66:69,67:$VF,68:$VG,69:$VH,70:$VI,71:$VJ,73:59,74:$VK,77:$Vg,79:$VL,81:$Vh,83:$Vi,84:$Vj,86:$Vk,87:$Vl,89:$Vm,90:$Vn,91:$Vo},o($VN,[2,28]),o($VP,[2,59]),o($V3,[2,23]),{6:10,7:11,8:$V5,9:$V6,10:$V7,11:$V8,13:$V9,23:16,25:17,26:18,27:19,28:20,29:21,30:$Va,32:[1,173],33:23,35:29,42:30,43:32,67:$Vb,68:$Vc,69:$Vd,70:$Ve,71:$Vf,77:$Vg,81:$Vh,83:$Vi,84:$Vj,86:$Vk,87:$Vl,89:$Vm,90:$Vn,91:$Vo},o($Vp,[2,37]),o($VV,[2,61]),{10:$Vt,12:$Vu,13:$Vv,15:$Vw,16:$Vx,17:$Vy,18:$Vz,30:$VA,32:$VB,43:66,44:$VC,47:$VD,57:$VE,62:[1,174],63:120,66:69,67:$VF,68:$VG,69:$VH,70:$VI,71:$VJ,73:59,74:$VK,77:$Vg,79:$VL,81:$Vh,83:$Vi,84:$Vj,86:$Vk,87:$Vl,89:$Vm,90:$Vn,91:$Vo},o($VV,[2,63]),o($VV,[2,64]),o($VV,[2,65]),o($VV,[2,66]),o($VV,[2,67]),o($VV,[2,68]),o($VV,[2,69]),o($VV,[2,70]),o($VV,[2,71]),o($VV,[2,72]),o($VV,[2,73]),o($VV,[2,74]),{10:$VX,44:$VY,67:$VZ,75:175,76:$V_,77:$V$,79:$V01,80:176,82:177,83:$V11,84:$V21,85:$V31,86:$V41,87:$V51},{10:$VX,44:$VY,67:$VZ,75:189,76:$V_,77:$V$,79:$V01,80:176,82:177,83:$V11,84:$V21,85:$V31,86:$V41,87:$V51},{10:$VX,44:$VY,67:$VZ,75:190,76:$V_,77:$V$,79:$V01,80:176,82:177,83:$V11,84:$V21,85:$V31,86:$V41,87:$V51},{10:$VX,44:$VY,67:$VZ,75:191,76:$V_,77:$V$,79:$V01,80:176,82:177,83:$V11,84:$V21,85:$V31,86:$V41,87:$V51},{10:$VX,44:$VY,67:$VZ,75:192,76:$V_,77:$V$,79:$V01,80:176,82:177,83:$V11,84:$V21,85:$V31,86:$V41,87:$V51},{10:$VX,44:$VY,67:$VZ,75:193,76:$V_,77:$V$,79:$V01,80:176,82:177,83:$V11,84:$V21,85:$V31,86:$V41,87:$V51},{13:$V9,35:194,42:30,43:32,77:$Vg,81:$Vh,83:$Vi,84:$Vj,86:$Vk,87:$Vl,89:$Vm,90:$Vn,91:$Vo},{13:$V9,35:195,42:30,43:32,77:$Vg,81:$Vh,83:$Vi,84:$Vj,86:$Vk,87:$Vl,89:$Vm,90:$Vn,91:$Vo},o($VN,[2,43],{21:196,10:$VO}),{10:$Vt,12:$Vu,13:$Vv,15:$Vw,16:$Vx,17:$Vy,18:$Vz,30:$VA,32:$VB,39:[1,197],43:66,44:$VC,47:$VD,57:$VE,63:120,66:69,67:$VF,68:$VG,69:$VH,70:$VI,71:$VJ,73:59,74:$VK,77:$Vg,79:$VL,81:$Vh,83:$Vi,84:$Vj,86:$Vk,87:$Vl,89:$Vm,90:$Vn,91:$Vo},o($VN,[2,47],{21:198,10:$VO}),o($VN,[2,49],{21:199,10:$VO}),o($VN,[2,51],{21:200,10:$VO}),o($Vp,[2,36]),o([10,13,77,81,83,84,86,87,89,90,91],[2,87]),o($VM,[2,109],{81:$V61}),o($V71,[2,114],{82:202,10:$VX,44:$VY,67:$VZ,76:$V_,77:$V$,79:$V01,83:$V11,84:$V21,85:$V31,86:$V41,87:$V51}),o($V81,[2,116]),o($V81,[2,118]),o($V81,[2,119]),o($V81,[2,120]),o($V81,[2,121]),o($V81,[2,122]),o($V81,[2,123]),o($V81,[2,124]),o($V81,[2,125]),o($V81,[2,126]),o($V81,[2,127]),o($V81,[2,128]),o($VM,[2,110],{81:$V61}),o($VM,[2,111],{81:$V61}),o($VM,[2,112],{81:$V61}),o($VM,[2,105],{81:$V61}),o($VM,[2,106],{81:$V61}),o($VM,[2,107],{43:32,42:108,13:$V9,77:$Vg,81:$Vh,83:$Vi,84:$Vj,86:$Vk,87:$Vl,89:$Vm,90:$Vn,91:$Vo}),o($VM,[2,108],{43:32,42:108,13:$V9,77:$Vg,81:$Vh,83:$Vi,84:$Vj,86:$Vk,87:$Vl,89:$Vm,90:$Vn,91:$Vo}),o($VN,[2,44]),{39:[1,203]},o($VN,[2,48]),o($VN,[2,50]),o($VN,[2,52]),{10:$VX,44:$VY,67:$VZ,76:$V_,77:$V$,79:$V01,80:204,82:177,83:$V11,84:$V21,85:$V31,86:$V41,87:$V51},o($V81,[2,117]),o($VN,[2,45],{21:205,10:$VO}),o($V71,[2,115],{82:202,10:$VX,44:$VY,67:$VZ,76:$V_,77:$V$,79:$V01,83:$V11,84:$V21,85:$V31,86:$V41,87:$V51}),o($VN,[2,46])],
defaultActions: {},

@@ -771,21 +762,21 @@ parseError: function parseError(str, hash) {

switch($avoiding_name_collisions) {
case 0:return 68;
case 0:/* do nothing */
break;
case 1:return 75;
case 1:return 67;
break;
case 2:return 69;
case 2:return 74;
break;
case 3:return 70;
case 3:return 68;
break;
case 4:return 71;
case 4:return 69;
break;
case 5:return 72;
case 5:return 70;
break;
case 6:return 11;
case 6:return 71;
break;
case 7:return 29;
case 7:return 12;
break;
case 8:return 32;
case 8:return 30;
break;
case 9:return 13;
case 9:return 32;
break;

@@ -802,100 +793,102 @@ case 10:return 13;

break;
case 15:return 78;
case 15:return 13;
break;
case 16:return 86;
case 16:return 77;
break;
case 17:return 84;
case 17:return 86;
break;
case 18:return 9;
case 18:return 84;
break;
case 19:return 81;
case 19:return 8;
break;
case 20:return 91;
case 20:return 81;
break;
case 21:return 16;
case 21:return 91;
break;
case 22:return 15;
case 22:return 16;
break;
case 23:return 17;
case 23:return 15;
break;
case 24:return 18;
case 24:return 17;
break;
case 25:return 53;
case 25:return 18;
break;
case 26:return 51;
case 26:return 50;
break;
case 27:return 52;
case 27:return 48;
break;
case 28:return 54;
case 28:return 49;
break;
case 29:return 57;
case 29:return 51;
break;
case 30:return 55;
break;
case 31:return 56;
case 31:return 53;
break;
case 32:return 58;
case 32:return 54;
break;
case 33:return 57;
case 33:return 56;
break;
case 34:return 55;
break;
case 35:return 56;
case 35:return 53;
break;
case 36:return 58;
case 36:return 54;
break;
case 37:return 61;
case 37:return 56;
break;
case 38:return 59;
case 38:return 60;
break;
case 39:return 60;
case 39:return 58;
break;
case 40:return 62;
case 40:return 59;
break;
case 41:return 48;
case 41:return 61;
break;
case 42:return 49;
case 42:return 47;
break;
case 43:return 50;
case 43:return 52;
break;
case 44:return 44;
case 44:return 57;
break;
case 45:return 87;
case 45:return 44;
break;
case 46:return 89;
case 46:return 87;
break;
case 47:return 79;
case 47:return 89;
break;
case 48:return 90;
case 48:return 79;
break;
case 49:return 90;
break;
case 50:return 83;
case 50:return 90;
break;
case 51:return 63;
case 51:return 83;
break;
case 52:return 38;
case 52:return 62;
break;
case 53:return 39;
case 53:return 38;
break;
case 54:return 36;
case 54:return 39;
break;
case 55:return 37;
case 55:return 36;
break;
case 56:return 40
case 56:return 37;
break;
case 57:return 41
case 57:return 40
break;
case 58:return 94;
case 58:return 41
break;
case 59:return 19;
case 59:return 94;
break;
case 60:return 12;
case 60:return 9;
break;
case 61:return 10;
break;
case 62:return 11;
break;
}
},
rules: [/^(?:style\b)/,/^(?:default\b)/,/^(?:linkStyle\b)/,/^(?:classDef\b)/,/^(?:class\b)/,/^(?:click\b)/,/^(?:graph\b)/,/^(?:subgraph\b)/,/^(?:end\b)/,/^(?:LR\b)/,/^(?:RL\b)/,/^(?:TB\b)/,/^(?:BT\b)/,/^(?:TD\b)/,/^(?:BR\b)/,/^(?:[0-9]+)/,/^(?:#)/,/^(?::)/,/^(?:;)/,/^(?:,)/,/^(?:\*)/,/^(?:<)/,/^(?:>)/,/^(?:\^)/,/^(?:v\b)/,/^(?:\s*--[x]\s*)/,/^(?:\s*-->\s*)/,/^(?:\s*--[o]\s*)/,/^(?:\s*---\s*)/,/^(?:\s*-\.-[x]\s*)/,/^(?:\s*-\.->\s*)/,/^(?:\s*-\.-[o]\s*)/,/^(?:\s*-\.-\s*)/,/^(?:\s*.-[x]\s*)/,/^(?:\s*\.->\s*)/,/^(?:\s*\.-[o]\s*)/,/^(?:\s*\.-\s*)/,/^(?:\s*==[x]\s*)/,/^(?:\s*==>\s*)/,/^(?:\s*==[o]\s*)/,/^(?:\s*==[\=]\s*)/,/^(?:\s*--\s*)/,/^(?:\s*-\.\s*)/,/^(?:\s*==\s*)/,/^(?:-)/,/^(?:\.)/,/^(?:\+)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:[\u0021-\u0027\u002A-\u002E\u003F\u0041-\u005A\u005C\u005F-\u007A\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC_\/])/,/^(?:\|)/,/^(?:\()/,/^(?:\))/,/^(?:\[)/,/^(?:\])/,/^(?:\{)/,/^(?:\})/,/^(?:")/,/^(?:\n)/,/^(?:\s)/,/^(?:$)/],
conditions: {"INITIAL":{"rules":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61],"inclusive":true}}
rules: [/^(?:%%[^\n]*)/,/^(?:style\b)/,/^(?:default\b)/,/^(?:linkStyle\b)/,/^(?:classDef\b)/,/^(?:class\b)/,/^(?:click\b)/,/^(?:graph\b)/,/^(?:subgraph\b)/,/^(?:end\s*)/,/^(?:LR\b)/,/^(?:RL\b)/,/^(?:TB\b)/,/^(?:BT\b)/,/^(?:TD\b)/,/^(?:BR\b)/,/^(?:[0-9]+)/,/^(?:#)/,/^(?::)/,/^(?:;)/,/^(?:,)/,/^(?:\*)/,/^(?:<)/,/^(?:>)/,/^(?:\^)/,/^(?:v\b)/,/^(?:\s*--[x]\s*)/,/^(?:\s*-->\s*)/,/^(?:\s*--[o]\s*)/,/^(?:\s*---\s*)/,/^(?:\s*-\.-[x]\s*)/,/^(?:\s*-\.->\s*)/,/^(?:\s*-\.-[o]\s*)/,/^(?:\s*-\.-\s*)/,/^(?:\s*.-[x]\s*)/,/^(?:\s*\.->\s*)/,/^(?:\s*\.-[o]\s*)/,/^(?:\s*\.-\s*)/,/^(?:\s*==[x]\s*)/,/^(?:\s*==>\s*)/,/^(?:\s*==[o]\s*)/,/^(?:\s*==[\=]\s*)/,/^(?:\s*--\s*)/,/^(?:\s*-\.\s*)/,/^(?:\s*==\s*)/,/^(?:-)/,/^(?:\.)/,/^(?:\+)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:[\u0021-\u0027\u002A-\u002E\u003F\u0041-\u005A\u005C\u005F-\u007A\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC_\/])/,/^(?:\|)/,/^(?:\()/,/^(?:\))/,/^(?:\[)/,/^(?:\])/,/^(?:\{)/,/^(?:\})/,/^(?:")/,/^(?:\n+)/,/^(?:\s)/,/^(?:$)/],
conditions: {"INITIAL":{"rules":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62],"inclusive":true}}
});

@@ -902,0 +895,0 @@ return lexer;

@@ -173,5 +173,94 @@ /**

});
it('should handle comments a at the start',function(){
var res = flow.parser.parse('%% Comment\ngraph TD;\n A-->B;');
var vert = flow.parser.yy.getVertices();
var edges = flow.parser.yy.getEdges();
expect(vert['A'].id).toBe('A');
expect(vert['B'].id).toBe('B');
expect(edges.length).toBe(1);
expect(edges[0].start).toBe('A');
expect(edges[0].end).toBe('B');
expect(edges[0].type).toBe('arrow');
expect(edges[0].text).toBe('');
});
it('should handle comments at the end',function(){
var res = flow.parser.parse('graph TD;\n A-->B\n %% Comment at the find\n');
var vert = flow.parser.yy.getVertices();
var edges = flow.parser.yy.getEdges();
expect(vert['A'].id).toBe('A');
expect(vert['B'].id).toBe('B');
expect(edges.length).toBe(1);
expect(edges[0].start).toBe('A');
expect(edges[0].end).toBe('B');
expect(edges[0].type).toBe('arrow');
expect(edges[0].text).toBe('');
});
it('should handle comments at the end no trailing newline',function(){
var res = flow.parser.parse('graph TD;\n A-->B\n%% Commento');
var vert = flow.parser.yy.getVertices();
var edges = flow.parser.yy.getEdges();
expect(vert['A'].id).toBe('A');
expect(vert['B'].id).toBe('B');
expect(edges.length).toBe(1);
expect(edges[0].start).toBe('A');
expect(edges[0].end).toBe('B');
expect(edges[0].type).toBe('arrow');
expect(edges[0].text).toBe('');
});
it('should handle comments at the end many trailing newlines',function(){
var res = flow.parser.parse('graph TD;\n A-->B\n%% Commento\n\n\n');
var vert = flow.parser.yy.getVertices();
var edges = flow.parser.yy.getEdges();
expect(vert['A'].id).toBe('A');
expect(vert['B'].id).toBe('B');
expect(edges.length).toBe(1);
expect(edges[0].start).toBe('A');
expect(edges[0].end).toBe('B');
expect(edges[0].type).toBe('arrow');
expect(edges[0].text).toBe('');
});
it('should handle no trailing newlines',function(){
var res = flow.parser.parse('graph TD;\n A-->B');
var vert = flow.parser.yy.getVertices();
var edges = flow.parser.yy.getEdges();
expect(vert['A'].id).toBe('A');
expect(vert['B'].id).toBe('B');
expect(edges.length).toBe(1);
expect(edges[0].start).toBe('A');
expect(edges[0].end).toBe('B');
expect(edges[0].type).toBe('arrow');
expect(edges[0].text).toBe('');
});
it('should handle many trailing newlines',function(){
var res = flow.parser.parse('graph TD;\n A-->B\n\n');
var vert = flow.parser.yy.getVertices();
var edges = flow.parser.yy.getEdges();
expect(vert['A'].id).toBe('A');
expect(vert['B'].id).toBe('B');
expect(edges.length).toBe(1);
expect(edges[0].start).toBe('A');
expect(edges[0].end).toBe('B');
expect(edges[0].type).toBe('arrow');
expect(edges[0].text).toBe('');
});
it('should handle a comments with blank rows in-between',function(){
var res = flow.parser.parse('graph TD;\n\n\n %% CComment\n A-->B;');
var res = flow.parser.parse('graph TD;\n\n\n %% Comment\n A-->B;');

@@ -208,3 +297,3 @@

it('it should handle a trailing whitespaces after statememnts',function(){
var res = flow.parser.parse('graph TD;\n\n\n %% CComment\n A-->B; \n B-->C;');
var res = flow.parser.parse('graph TD;\n\n\n %% Comment\n A-->B; \n B-->C;');

@@ -264,3 +353,3 @@

it('should handle subgraphs',function(){
var res = flow.parser.parse('graph TD\nA-->B\nsubgraph myTitle\nc-->d\nend\n');
var res = flow.parser.parse('graph TD\nA-->B\nsubgraph myTitle\n\n c-->d \nend\n');

@@ -274,2 +363,14 @@ var vert = flow.parser.yy.getVertices();

it('should handle nested subgraphs',function(){
var str = 'graph TD\n' +
'A-->B\n' +
'subgraph myTitle\n\n' +
' c-->d \n\n' +
' subgraph inner\n\n e-->f \n end \n\n' +
' subgraph inner\n\n h-->i \n end \n\n' +
'end\n';
var res = flow.parser.parse(str);
});
it('should handle subgraphs',function(){

@@ -466,2 +567,8 @@ var res = flow.parser.parse('graph TD\nA-->B\nsubgraph myTitle\nc-->d\nend;');

});
it('should handle quoted text',function(){
var res = flow.parser.parse('graph TD;V-- "test string" -->a[v]');
var vert = flow.parser.yy.getVertices();
var edges = flow.parser.yy.getEdges();
expect(edges[0].text).toBe('test string');
});
});

@@ -619,2 +726,11 @@

});
it('should handle keywords',function(){
var res = flow.parser.parse('graph TD;A-- text including graph space and v --xB[blav]');
var vert = flow.parser.yy.getVertices();
var edges = flow.parser.yy.getEdges();
expect(edges[0].text).toBe('text including graph space and v');
});
xit('should handle text on open links',function(){

@@ -691,2 +807,11 @@ var res = flow.parser.parse('graph TD;A-- text including graph space --B');

it('should handle quoted text in vertices ',function(){
var res = flow.parser.parse('graph TD;A["chimpansen hoppar"] --> C;');
var vert = flow.parser.yy.getVertices();
var edges = flow.parser.yy.getEdges();
expect(vert['A'].type).toBe('square');
expect(vert['A'].text).toBe('chimpansen hoppar');
});
it('should handle text in circle vertices with space',function(){

@@ -693,0 +818,0 @@ var res = flow.parser.parse('graph TD;A((chimpansen hoppar))-->C;');

/* global window */
var d3;
/*var d3;

@@ -15,2 +15,2 @@ if (require) {

module.exports = d3;
module.exports = d3;*/
var gantt = require('./parser/gantt').parser;
gantt.yy = require('./ganttDb');
var d3 = require('./d3');
var d3 = require('../../d3');
var moment = require('moment');
var daysInChart;

@@ -32,3 +33,3 @@ var conf = {

if (typeof w === 'undefined') {
w = 800;
w = 1200;
}

@@ -41,8 +42,10 @@

elem.style.height = h + 'px';
elem.setAttribute('height', "100%");
// Set viewBox
elem.setAttribute('viewBox','0 0 '+w+' '+h);
var svg = d3.select('#' + id);
// http://codepen.io/anon/pen/azLvWR
var dateFormat = d3.time.format("%Y-%m-%d");

@@ -321,3 +324,3 @@

if(daysInChart >7 && daysInChart<60){
if(daysInChart >7 && daysInChart<230){
xAxis = xAxis.ticks(d3.time.monday.range);

@@ -324,0 +327,0 @@ }

@@ -1,2 +0,2 @@

/* global window */
/* global window

@@ -15,2 +15,2 @@ var d3;

module.exports = d3;
module.exports = d3;*/
/**
* Created by knut on 14-11-19.
*/
var actors = {};
var actors = {};
var actorKeys = [];
var messages = [];
var notes = [];
var messages = [];
var notes = [];
exports.addActor = function(id,name,description){

@@ -19,2 +20,5 @@ //console.log('Adding actor: '+id);

/**
*
*/
exports.addSignal = function(idFrom, idTo, message, messageType){

@@ -40,3 +44,3 @@ //console.log('Adding message from='+idFrom+' to='+idTo+' message='+message+' answer='+answer);

exports.clear = function(){
actors = {};
actors = {};
messages = [];

@@ -46,28 +50,27 @@ };

exports.LINETYPE = {
SOLID : 0,
DOTTED : 1,
NOTE : 2,
SOLID_CROSS : 3,
DOTTED_CROSS: 4,
SOLID_OPEN : 5,
DOTTED_OPEN : 6,
LOOP_START : 10,
LOOP_END : 11,
ALT_START : 12,
ALT_ELSE : 13,
ALT_END : 14,
OPT_START : 15,
OPT_END : 16
SOLID : 0 ,
DOTTED : 1 ,
NOTE : 2 ,
SOLID_CROSS : 3 ,
DOTTED_CROSS : 4 ,
SOLID_OPEN : 5 ,
DOTTED_OPEN : 6 ,
LOOP_START : 10 ,
LOOP_END : 11 ,
ALT_START : 12 ,
ALT_ELSE : 13 ,
ALT_END : 14 ,
OPT_START : 15 ,
OPT_END : 16
};
exports.ARROWTYPE = {
FILLED : 0,
OPEN : 1
FILLED : 0,
OPEN : 1
};
exports.PLACEMENT = {
LEFTOF : 0,
RIGHTOF : 1,
OVER : 2
LEFTOF : 0,
RIGHTOF : 1,
OVER : 2
};

@@ -74,0 +77,0 @@

@@ -6,3 +6,6 @@ /**

var sq = require('./parser/sequenceDiagram').parser;
var newD3;
var d3 = {

@@ -13,4 +16,4 @@ select:function(){

};
var sq = require('./parser/sequenceDiagram').parser;
var sd = proxyquire('./sequenceRenderer', { './d3': d3 });
var sd = proxyquire('./sequenceRenderer', { '../../d3': d3 });

@@ -17,0 +20,0 @@ var str;

@@ -8,3 +8,3 @@ /**

var svgDraw = require('./svgDraw');
var d3 = require('./d3');
var d3 = require('../../d3');
var conf = {

@@ -34,2 +34,3 @@

//var bb = getBBox("path");
exports.bounds = {

@@ -178,4 +179,14 @@ data:{

var textWidth = textElem[0][0].getBBox().width;
var textWidth;
if(typeof textElem[0][0].getBBox !== 'undefined'){
textWidth = textElem[0][0].getBBox().width;
}
else{
console.log(textElem[0][0].getBoundingClientRect());
//textWidth = getBBox(textElem).width; //.getComputedTextLength()
textWidth = textElem[0][0].getBoundingClientRect();
//textWidth = textElem[0][0].getComputedTextLength();
}
var line;

@@ -182,0 +193,0 @@

@@ -220,13 +220,13 @@ /**

var rect = {
x: 0,
y: 0,
fill: '#EDF2AE',
stroke: '#666',
width: 100,
anchor:'start',
height: 100,
rx: 0,
ry: 0
x : 0,
y : 0,
fill : '#EDF2AE',
stroke : '#666',
width : 100,
anchor : 'start',
height : 100,
rx : 0,
ry : 0
};
return rect;
};

@@ -17,2 +17,4 @@ var graph = require('./diagrams/flowchart/graphDb');

var ganttDb = require('./diagrams/gantt/ganttDb');
var d3 = require('./d3');
var nextId = 0;

@@ -64,3 +66,8 @@ /**

* attribute already set. This way the init function can be triggered several times.
*
*
* Optionally, `init` can accept in the second argument one of the following:
* - a DOM Node
* - an array of DOM nodes (as would come from a jQuery selector)
* - a W3C selector, a la `.mermaid`
*
* ```

@@ -73,18 +80,33 @@ * graph LR;

*/
var init = function (sequenceConfig) {
var arr = document.querySelectorAll('.mermaid');
/**
* Renders the mermaid diagrams
* @* param nodes- a css selector or an array of nodes
*/
var init = function () {
var nodes;
if(arguments.length === 2){
// sequence config was passed as #1
if(typeof arguments[0] !== 'undefined'){
mermaid.sequenceConfig = arguments[0];
}
nodes = arguments[1];
}
else{
nodes = arguments[0];
}
nodes = nodes === undefined ? document.querySelectorAll('.mermaid')
: typeof nodes === "string" ? document.querySelectorAll(nodes)
: nodes instanceof Node ? [nodes]
// Last case - sequence config was passed pick next
: nodes;
var i;
if (sequenceConfig !== 'undefined' && (typeof sequenceConfig !== 'undefined')) {
if(typeof sequenceConfig === 'object'){
seq.setConf(sequenceConfig);
} else{
seq.setConf(JSON.parse(sequenceConfig));
}
}
console.log('Found ',nodes.length,' nodes');
for (i = 0; i < nodes.length; i++) {
var element = nodes[i];
var cnt = 0;
for (i = 0; i < arr.length; i++) {
var element = arr[i];
// Check if previously processed

@@ -97,7 +119,4 @@ if(!element.getAttribute("data-processed")) {

var id;
var id = 'mermaidChart' + nextId++;
id = 'mermaidChart' + cnt;
cnt++;
var txt = element.innerHTML;

@@ -114,6 +133,9 @@ txt = txt.replace(/>/g,'&gt;');

var classes = {};
switch(graphType){
case 'graph':
classes = flowRenderer.getClasses(txt, false);
if(typeof mermaid.flowchartConfig === 'object'){
flowRenderer.setConf(mermaid.flowchartConfig);
}
flowRenderer.draw(txt, id, false);

@@ -129,2 +151,5 @@ utils.cloneCssStyles(element.firstChild, classes);

case 'sequenceDiagram':
if(typeof mermaid.sequenceConfig === 'object'){
seq.setConf(mermaid.sequenceConfig);
}
seq.draw(txt,id);

@@ -170,21 +195,151 @@ utils.cloneCssStyles(element.firstChild, []);

var render = function(id, txt,cb){
// var element = doc.createElement('svg');
// element.setAttribute('id',id);
// element.setAttribute('width','100%');
// element.setAttribute('xmlns','http://www.w3.org/2000/svg');
// element.innerHTML = '<g />';
//var element = doc.createElement('div');
//element.setAttribute('id','d'+id);
//
//element.innerHTML = '<svg id="' + id + '" width="100%" xmlns="http://www.w3.org/2000/svg">' +
// '<g />' +
// '</svg>';
//document.body.appendChild(element);
d3.select('body').append('div')
.attr('id', 'd'+id)
.append('svg')
.attr('id', id)
.attr('width','100%')
.attr('xmlns','http://www.w3.org/2000/svg')
.append('g');
console.log(d3.select('#d'+id).node().innerHTML);
var element = d3.select('#d'+id).node();
var graphType = utils.detectType(txt);
var classes = {};
switch(graphType){
case 'graph':
classes = flowRenderer.getClasses(txt, false);
if(typeof mermaid.flowchartConfig === 'object'){
flowRenderer.setConf(mermaid.flowchartConfig);
}
flowRenderer.draw(txt, id, false);
utils.cloneCssStyles(element.firstChild, classes);
graph.bindFunctions();
break;
case 'dotGraph':
classes = flowRenderer.getClasses(txt, true);
flowRenderer.draw(txt, id, true);
utils.cloneCssStyles(element.firstChild, classes);
break;
case 'sequenceDiagram':
if(typeof mermaid.sequenceConfig === 'object'){
seq.setConf(mermaid.sequenceConfig);
}
seq.draw(txt,id);
utils.cloneCssStyles(element.firstChild, []);
break;
case 'gantt':
if(typeof mermaid.ganttConfig === 'object'){
gantt.setConf(mermaid.ganttConfig);
}
gantt.draw(txt,id);
utils.cloneCssStyles(element.firstChild, []);
break;
case 'info':
info.draw(txt,id,exports.version());
utils.cloneCssStyles(element.firstChild, []);
break;
}
//console.log(document.body.innerHTML);
cb(d3.select('#d'+id).node().innerHTML);
d3.select('#d'+id).node().remove();
};
exports.render = function(id, text){
var callback = function(svgText){
console.log(svgText);
};
if(typeof document === 'undefined'){
//jsdom = require('jsdom').jsdom;
//console.log(jsdom);
//htmlStub = '<html><head></head><body><div class="mermaid">'+text+'</div><script src="dist/mermaid.full.js"></script><script>var mermaid_config = {startOnLoad:true}</script></body></html>';
htmlStub = '<html><head></head><body></body></html>';
// // html file skull with a container div for the d3 dataviz
//
// pass the html stub to jsDom
/* jsdom.env({
features : { QuerySelectorAll : true },
html : htmlStub,
done : function(errors, win) {
// process the html document, like if we were at client side
// code to generate the dataviz and process the resulting html file to be added here
//var d3 = require('d3');
//console.log('Here we go: '+JSON.stringify(d3));
global.document = win.document;
global.window = win;
var element = win.document.createElement('div');
element.setAttribute('id','did');
//document.
console.log(document.body.innerHTML);
//console.log('Element:',element);
//console.log(win);
//mermaid.init();
//render(win.document, 'myId', text, callback);
}
});*/
//var jsdom = require('jsdom').jsdom;
//global.document = jsdom(htmlStub);
//global.window = document.parentWindow;
render(id, text, callback);
//var element = win.document.createElement('div');
//element.setAttribute('id','did');
//document.
}
else{
// In browser
render( id, text, callback);
}
};
global.mermaid = {
startOnLoad:true,
htmlLabels:true,
init:function(sequenceConfig){
init(sequenceConfig);
startOnLoad: true,
htmlLabels: true,
init: function(sequenceConfig, nodes) {
init.apply(null, arguments);
},
version:function(){
version: function() {
return exports.version();
},
getParser:function(){
getParser: function() {
return flow.parser;
},
parse:function(text){
parse: function(text) {
return parse(text);
},
parseError:function(err,hash){
parseError: function(err, hash) {
console.log('Mermaid Syntax error:');
console.log(err);
},
render:function(id, text){
return exports.render(id, text);
}

@@ -194,3 +349,3 @@ };

exports.contentLoaded = function(){
// Check state of start config mermaid namespece
// Check state of start config mermaid namespace
//console.log('global.mermaid.startOnLoad',global.mermaid.startOnLoad);

@@ -210,3 +365,3 @@ //console.log('mermaid_config',mermaid_config);

if (equals(true, mermaid_config.startOnLoad)) {
global.mermaid.init(mermaid.sequenceConfig);
global.mermaid.init();
}

@@ -216,3 +371,3 @@ }

// No config found, do autostart in this simple case
global.mermaid.init(mermaid.sequenceConfig);
global.mermaid.init();
}

@@ -223,2 +378,4 @@ }

if(typeof document !== 'undefined'){

@@ -232,3 +389,1 @@ /**

}

@@ -50,10 +50,14 @@ /**

if (sheets[i].title !== 'mermaid-svg-internal-css') {
var rules = sheets[i].cssRules;
if(rules !== null) {
for (var j = 0; j < rules.length; j++) {
var rule = rules[j];
if (typeof(rule.style) !== 'undefined') {
var elems = svg.querySelectorAll(rule.selectorText);
if (elems.length > 0) {
usedStyles += rule.selectorText + " { " + rule.style.cssText + " }\n";
try {
var rules = sheets[i].cssRules;
if (rules !== null) {
for (var j = 0; j < rules.length; j++) {
var rule = rules[j];
if (typeof(rule.style) !== 'undefined') {
var elems;
elems = svg.querySelectorAll(rule.selectorText);
if (elems.length > 0) {
usedStyles += rule.selectorText + " { " + rule.style.cssText + " }\n";
}
}

@@ -63,2 +67,11 @@ }

}
catch(err) {
if(typeof console !== 'undefined'){
if(console.warn !== 'undefined'){
if(rule !== 'undefined'){
console.warn('Invalid CSS selector "' + rule.selectorText + '"', err);
}
}
}
}
}

@@ -65,0 +78,0 @@ }

@@ -1,1 +0,11 @@

{"diagramMarginX":50,"diagramMarginY":10,"actorMargin":50,"width":150,"height":165,"boxMargin":10,"boxTextMargin":5,"noteMargin":10,"messageMargin":35}
{
"diagramMarginX": 50,
"diagramMarginY": 10,
"actorMargin": 50,
"width": 150,
"height": 165,
"boxMargin": 10,
"boxTextMargin": 5,
"noteMargin": 10,
"messageMargin": 35
}

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc