From 57671b2b786c77ddf544c6282a34157657cf8097 Mon Sep 17 00:00:00 2001 From: Matthieu MOREL Date: Wed, 10 Nov 2021 08:41:52 +0100 Subject: [PATCH] enable prettier-plugin-jsdoc --- .prettierrc | 5 +- dist/mermaid.core.js | 1435 ++++++++--------- dist/mermaid.core.js.map | 2 +- dist/mermaid.js | 1435 ++++++++--------- dist/mermaid.js.map | 2 +- dist/mermaid.min.js.map | 2 +- docs/Setup.md | 477 +++--- package.json | 1 + src/config.js | 113 +- src/config_org.js | 113 +- src/dagre-wrapper/clusters.js | 2 +- src/dagre-wrapper/createLabel.js | 2 +- src/dagre-wrapper/edges.js | 4 +- src/dagre-wrapper/intersect/intersect-line.js | 4 +- .../intersect/intersect-polygon.js | 4 +- src/dagre-wrapper/markers.js | 4 +- src/dagre-wrapper/mermaid-graphlib.js | 8 +- src/dagre-wrapper/patterns.js | 4 +- src/defaultConfig.js | 717 ++++---- src/diagrams/class/classDb.js | 11 +- src/diagrams/class/classRenderer-v2.js | 4 +- src/diagrams/er/erDb.js | 3 - src/diagrams/er/erRenderer.js | 33 +- src/diagrams/flowchart/flowChartShapes.js | 8 +- src/diagrams/flowchart/flowDb.js | 19 +- src/diagrams/flowchart/flowRenderer-v2.js | 2 +- src/diagrams/flowchart/flowRenderer.js | 2 +- src/diagrams/gantt/ganttDb.js | 3 +- src/diagrams/gantt/ganttRenderer.js | 8 +- src/diagrams/git/gitGraphAst.js | 7 +- src/diagrams/git/gitGraphRenderer.js | 4 +- src/diagrams/info/infoDb.js | 4 +- src/diagrams/info/infoRenderer.js | 4 +- src/diagrams/pie/pieDb.js | 3 - src/diagrams/pie/pieRenderer.js | 4 +- src/diagrams/sequence/sequenceRenderer.js | 26 +- src/diagrams/sequence/svgDraw.js | 22 +- src/diagrams/state/shapes.js | 21 +- src/diagrams/state/stateRenderer-v2.js | 2 +- src/diagrams/user-journey/journeyRenderer.js | 8 +- src/diagrams/user-journey/svgDraw.js | 12 +- src/errorRenderer.js | 4 +- src/mermaid.js | 23 +- src/mermaidAPI.js | 149 +- src/themes/theme-base.js | 5 +- src/utils.js | 177 +- yarn.lock | 72 +- 47 files changed, 2293 insertions(+), 2681 deletions(-) diff --git a/.prettierrc b/.prettierrc index e9eb8060d..c6420f535 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,5 +1,6 @@ { + "endOfLine": "auto", + "plugins": ["prettier-plugin-jsdoc"], "printWidth": 100, - "singleQuote": true, - "endOfLine": "auto" + "singleQuote": true } diff --git a/dist/mermaid.core.js b/dist/mermaid.core.js index 720c51a03..8cbdfac4e 100644 --- a/dist/mermaid.core.js +++ b/dist/mermaid.core.js @@ -8803,19 +8803,22 @@ var updateCurrentConfig = function updateCurrentConfig(siteCfg, _directives) { return cfg; }; /** - *## setSiteConfig - *| Function | Description | Type | Values | - *| --------- | ------------------- | ------- | ------------------ | - *| setSiteConfig|Sets the siteConfig to desired values | Put Request | Any Values, except ones in secure array| - ***Notes:** - *Sets the siteConfig. The siteConfig is a protected configuration for repeat use. Calls to reset() will reset - *the currentConfig to siteConfig. Calls to reset(configApi.defaultConfig) will reset siteConfig and currentConfig - *to the defaultConfig - *Note: currentConfig is set in this function - *Default value: At default, will mirror Global Config + * ## setSiteConfig * - * @param {any} conf - the base currentConfig to use as siteConfig - * @returns {*} - the siteConfig + * | Function | Description | Type | Values | + * | ------------- | ------------------------------------- | ----------- | --------------------------------------- | + * | setSiteConfig | Sets the siteConfig to desired values | Put Request | Any Values, except ones in secure array | + * + * **Notes:** Sets the siteConfig. The siteConfig is a protected configuration for repeat use. Calls + * to reset() will reset the currentConfig to siteConfig. Calls to reset(configApi.defaultConfig) + * will reset siteConfig and current Config to the defaultConfig + * + * Note: currentConfig is set in this function + * + * Default value: At default, will mirror Global Config + * + * @param {any} conf - The base currentConfig to use as siteConfig + * @returns {any} - The siteConfig */ var setSiteConfig = function setSiteConfig(conf) { @@ -8838,31 +8841,33 @@ var updateSiteConfig = function updateSiteConfig(conf) { return siteConfig; }; /** - *## getSiteConfig - *| Function | Description | Type | Values | - *| --------- | ------------------- | ------- | ------------------ | - *| setSiteConfig|Returns the current siteConfig base configuration | Get Request | Returns Any Values in siteConfig| - ***Notes**: - *Returns **any** values in siteConfig. + * ## getSiteConfig * - * @returns {*} + * | Function | Description | Type | Values | + * | ------------- | ------------------------------------------------- | ----------- | --------------------------------- | + * | setSiteConfig | Returns the current siteConfig base configuration | Get Request | Returns Any Values in site Config | + * + * **Notes**: Returns **any** values in siteConfig. + * + * @returns {any} */ var getSiteConfig = function getSiteConfig() { return (0,_utils__WEBPACK_IMPORTED_MODULE_1__.assignWithDepth)({}, siteConfig); }; /** - *## setConfig - *| Function | Description | Type | Values | - *| --------- | ------------------- | ------- | ------------------ | - *| setSiteConfig|Sets the siteConfig to desired values | Put Request| Any Values, except ones in secure array| - ***Notes**: - *Sets the currentConfig. The parameter conf is sanitized based on the siteConfig.secure keys. Any - *values found in conf with key found in siteConfig.secure will be replaced with the corresponding - *siteConfig value. + * ## setConfig * - * @param {any} conf - the potential currentConfig - * @returns {*} - the currentConfig merged with the sanitized conf + * | Function | Description | Type | Values | + * | ------------- | ------------------------------------- | ----------- | --------------------------------------- | + * | setSiteConfig | Sets the siteConfig to desired values | Put Request | Any Values, except ones in secure array | + * + * **Notes**: Sets the currentConfig. The parameter conf is sanitized based on the siteConfig.secure + * keys. Any values found in conf with key found in siteConfig.secure will be replaced with the + * corresponding siteConfig value. + * + * @param {any} conf - The potential currentConfig + * @returns {any} - The currentConfig merged with the sanitized conf */ var setConfig = function setConfig(conf) { @@ -8875,29 +8880,31 @@ var setConfig = function setConfig(conf) { return getConfig(); }; /** - * ## getConfig - *| Function | Description | Type | Return Values | - *| --------- | ------------------- | ------- | ------------------ | - *| getConfig |Obtains the currentConfig | Get Request | Any Values from currentConfig| - ***Notes**: - *Returns **any** the currentConfig + * ## getConfig * - * @returns {*} - the currentConfig + * | Function | Description | Type | Return Values | + * | --------- | ------------------------- | ----------- | ------------------------------ | + * | getConfig | Obtains the currentConfig | Get Request | Any Values from current Config | + * + * **Notes**: Returns **any** the currentConfig + * + * @returns {any} - The currentConfig */ var getConfig = function getConfig() { return (0,_utils__WEBPACK_IMPORTED_MODULE_1__.assignWithDepth)({}, currentConfig); }; /** - *## sanitize - *| Function | Description | Type | Values | - *| --------- | ------------------- | ------- | ------------------ | - *| sanitize |Sets the siteConfig to desired values. | Put Request |None| - *Ensures options parameter does not attempt to override siteConfig secure keys - ***Notes**: - * modifies options in-place + * ## sanitize * - * @param {any} options - the potential setConfig parameter + * | Function | Description | Type | Values | + * | -------- | -------------------------------------- | ----------- | ------ | + * | sanitize | Sets the siteConfig to desired values. | Put Request | None | + * + * Ensures options parameter does not attempt to override siteConfig secure keys **Notes**: modifies + * options in-place + * + * @param {any} options - The potential setConfig parameter */ var sanitize = function sanitize(options) { @@ -8949,18 +8956,18 @@ var addDirective = function addDirective(directive) { updateCurrentConfig(siteConfig, directives); }; /** - *## reset - *| Function | Description | Type | Required | Values | - *| --------- | ------------------- | ------- | -------- | ------------------ | - *| reset|Resets currentConfig to conf| Put Request | Required | None| + * ## reset * - *| Parameter | Description |Type | Required | Values| - *| --- | --- | --- | --- | --- | - *| conf| base set of values, which currentConfig coul be **reset** to.| Dictionary | Required | Any Values, with respect to the secure Array| + * | Function | Description | Type | Required | Values | + * | -------- | ---------------------------- | ----------- | -------- | ------ | + * | reset | Resets currentConfig to conf | Put Request | Required | None | * - ***Notes**: - * (default: current siteConfig ) (optional, default `getSiteConfig()`) + * | Parameter | Description | Type | Required | Values | * + * | --------- | ------------------------------------------------------------ | ---------- | -------- | -------------------------------------------- | + * | conf | base set of values, which currentConfig coul be **reset** to.| Dictionary | Required | Any Values, with respect to the secure Array | + * + * **Notes**: (default: current siteConfig ) (optional, default `getSiteConfig()`) */ var reset = function reset() { @@ -9049,7 +9056,7 @@ var rect = function rect(parent, node) { * * @param {any} parent * @param {any} node - * @returns {*} shapeSvg + * @returns {any} ShapeSvg */ @@ -9205,7 +9212,7 @@ function applyStyle(dom, styleFn) { } /** * @param {any} node - * @returns {SVGForeignObjectElement} node + * @returns {SVGForeignObjectElement} Node */ @@ -9652,8 +9659,8 @@ var intersection = function intersection(node, outsidePoint, insidePoint) { * and return an update path ending by the border of the node. * * @param {Array} _points - * @param {*} boundryNode - * @returns {Array} points + * @param {any} boundryNode + * @returns {Array} Points */ var cutPathAtIntersect = function cutPathAtIntersect(_points, boundryNode) { @@ -10256,9 +10263,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /** - * Returns the point at which two lines, p and q, intersect or returns - * undefined if they do not intersect. - * + * Returns the point at which two lines, p and q, intersect or returns undefined if they do not intersect. * * @param p1 * @param p2 @@ -10369,8 +10374,8 @@ __webpack_require__.r(__webpack_exports__); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (intersectPolygon); /** - * Returns the point ({x, y}) at which the point argument intersects with the - * node argument assuming that it has the shape specified by polygon. + * Returns the point ({x, y}) at which the point argument intersects with the node argument assuming + * that it has the shape specified by polygon. * * @param node * @param polyPoints @@ -10498,9 +10503,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../logger */ "./src/logger.js"); -/** - * Setup arrow head and define the marker. The result is appended to the svg. - */ +/** Setup arrow head and define the marker. The result is appended to the svg. */ // Only add the number of markers that the diagram needs var insertMarkers = function insertMarkers(elem, markerArray, type, id) { @@ -10587,9 +10590,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../logger */ "./src/logger.js"); /* harmony import */ var graphlib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! graphlib */ "graphlib"); /* harmony import */ var graphlib__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(graphlib__WEBPACK_IMPORTED_MODULE_0__); -/** - * Decorates with functions required by mermaids dagre-wrapper. - */ +/** Decorates with functions required by mermaids dagre-wrapper. */ var clusterDb = {}; @@ -10726,8 +10727,8 @@ var validate = function validate(graph) { /** * Finds a child that is not a cluster. When faking a edge between a node and a cluster. * - * @param {Finds a } id - * @param {*} graph + * @param {Finds a} id + * @param {any} graph */ var findNonClusterChild = function findNonClusterChild(id, graph) { @@ -12021,56 +12022,38 @@ function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "functi /** - * **Configuration methods in Mermaid version 8.6.0 have been updated, to learn more[[click here](8.6.0_docs.md)].** + * **Configuration methods in Mermaid version 8.6.0 have been updated, to learn more[[click + * here](8.6.0_docs.md)].** * * ## **What follows are config instructions for older versions** * * These are the default options which can be overridden with the initialization call like so: * - * **Example 1:** - *
- * mermaid.initialize({
- *   flowchart:{
- *     htmlLabels: false
- *   }
- * });
- * 
+ * **Example 1:**
 mermaid.initialize({ flowchart:{ htmlLabels: false } }); 
* - * **Example 2:** - *
- * <script>
- *   var config = {
- *     startOnLoad:true,
- *     flowchart:{
- *       useMaxWidth:true,
- *       htmlLabels:true,
- *       curve:'cardinal',
- *     },
+ * **Example 2:**
  
+ * + * A summary of all options and their defaults is found [here](#mermaidapi-configuration-defaults). + * A description of each option follows below. * * @name Configuration */ var config = { /** - * theme , the CSS style sheet + * Theme , the CSS style sheet * - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | - * | theme | Built in Themes | string | Optional | 'default', 'forest', 'dark', 'neutral', 'null'| + * | Parameter | Description | Type | Required | Values | + * | --------- | --------------- | ------ | -------- | ---------------------------------------------- | + * | theme | Built in Themes | string | Optional | 'default', 'forest', 'dark', 'neutral', 'null' | * - * **Notes:** To disable any pre-defined mermaid theme, use "null". - * - *
-   *  "theme": "forest",
-   *  "themeCSS": ".node rect { fill: red; }"
-   * 
+ * **Notes:** To disable any pre-defined mermaid theme, use "null".
 "theme": "forest",
+   * "themeCSS": ".node rect { fill: red; }" 
*/ theme: 'default', themeVariables: _themes__WEBPACK_IMPORTED_MODULE_0__["default"]["default"].getThemeVariables(), @@ -12080,47 +12063,46 @@ var config = { maxTextSize: 50000, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | - * | fontFamily | specifies the font to be used in the rendered diagrams| string | Required | Any Possible CSS FontFamily | + * | Parameter | Description | Type | Required | Values | + * | ---------- | ------------------------------------------------------ | ------ | -------- | --------------------------- | + * | fontFamily | specifies the font to be used in the rendered diagrams | string | Required | Any Possible CSS FontFamily | * - * **Notes:** - * Default value: '"trebuchet ms", verdana, arial, sans-serif;'. + * **Notes:** Default value: '"trebuchet ms", verdana, arial, sans-serif;'. */ fontFamily: '"trebuchet ms", verdana, arial, sans-serif;', /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | - * | logLevel |This option decides the amount of logging to be used.| string \| number | Required | 1, 2, 3, 4, 5 | - * + * | Parameter | Description | Type | Required | Values | + * | --------- | ----------------------------------------------------- | ---------------- | -------- | ------------- | + * | logLevel | This option decides the amount of logging to be used. | string \| number | Required | 1, 2, 3, 4, 5 | * * **Notes:** * - * - debug: 1 - * - info: 2 - * - warn: 3 - * - error: 4 - * - fatal: 5 (default) + * - Debug: 1 + * - Info: 2 + * - Warn: 3 + * - Error: 4 + * - Fatal: 5 (default) */ logLevel: 5, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | - * | securitylevel | Level of trust for parsed diagram|string | Required | 'strict', 'loose', 'antiscript' | + * | Parameter | Description | Type | Required | Values | + * | ------------- | --------------------------------- | ------ | -------- | ------------------------------- | + * | securitylevel | Level of trust for parsed diagram | string | Required | 'strict', 'loose', 'antiscript' | * * **Notes**: * * - **strict**: (**default**) tags in text are encoded, click functionality is disabled * - **loose**: tags in text are allowed, click functionality is enabled - * - **antiscript**: html tags in text are allowed, (only script element is removed), click functionality is enabled + * - **antiscript**: html tags in text are allowed, (only script element is removed), click + * functionality is enabled */ securityLevel: 'strict', /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | + * | Parameter | Description | Type | Required | Values | + * | ----------- | -------------------------------------------- | ------- | -------- | ----------- | * | startOnLoad | Dictates whether mermaid starts on Page load | boolean | Required | true, false | * * **Notes:** Default value: true @@ -12128,11 +12110,10 @@ var config = { startOnLoad: true, /** - * | Parameter | Description |Type | Required |Values| - * | --- | --- | --- | --- | --- | + * | Parameter | Description | Type | Required | Values | + * | ------------------- | ---------------------------------------------------------------------------- | ------- | -------- | ----------- | * | arrowMarkerAbsolute | Controls whether or arrow markers in html code are absolute paths or anchors | boolean | Required | true, false | * - * * **Notes**: * * This matters if you are using base tag settings. @@ -12142,91 +12123,95 @@ var config = { arrowMarkerAbsolute: false, /** - * This option controls which currentConfig keys are considered _secure_ and can only be changed via - * call to mermaidAPI.initialize. Calls to mermaidAPI.reinitialize cannot make changes to - * the `secure` keys in the current currentConfig. This prevents malicious graph directives from + * This option controls which currentConfig keys are considered *secure* and can only be changed + * via call to mermaidAPI.initialize. Calls to mermaidAPI.reinitialize cannot make changes to the + * `secure` keys in the current currentConfig. This prevents malicious graph directives from * overriding a site's default security. * - ***Notes**: + * **Notes**: * * Default value: ['secure', 'securityLevel', 'startOnLoad', 'maxTextSize'] */ secure: ['secure', 'securityLevel', 'startOnLoad', 'maxTextSize'], /** - * This option controls if the generated ids of nodes in the SVG are generated randomly or based on a seed. - * If set to false, the IDs are generated based on the current date and thus are not deterministic. This is the default behaviour. + * This option controls if the generated ids of nodes in the SVG are generated randomly or based + * on a seed. If set to false, the IDs are generated based on the current date and thus are not + * deterministic. This is the default behaviour. * * **Notes**: * - * This matters if your files are checked into sourcecontrol e.g. git and should not change unless content is changed. + * This matters if your files are checked into sourcecontrol e.g. git and should not change unless + * content is changed. * * Default value: false */ deterministicIds: false, /** - * This option is the optional seed for deterministic ids. if set to undefined but deterministicIds is true, a simple number iterator is used. - * You can set this attribute to base the seed on a static string. + * This option is the optional seed for deterministic ids. if set to undefined but + * deterministicIds is true, a simple number iterator is used. You can set this attribute to base + * the seed on a static string. */ deterministicIDSeed: undefined, - /** - * The object containing configurations specific for flowcharts - */ + /** The object containing configurations specific for flowcharts */ flowchart: { /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | + * | Parameter | Description | Type | Required | Values | + * | -------------- | ----------------------------------------------- | ------- | -------- | ------------------ | * | diagramPadding | Amount of padding around the diagram as a whole | Integer | Required | Any Positive Value | * * **Notes:** * - * The amount of padding around the diagram as a whole so that embedded diagrams have margins, expressed in pixels + * The amount of padding around the diagram as a whole so that embedded diagrams have margins, + * expressed in pixels * * Default value: 8 */ diagramPadding: 8, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | - * | htmlLabels | Flag for setting whether or not a html tag should be used for rendering labels on the edges. | boolean| Required | true, false | + * | Parameter | Description | Type | Required | Values | + * | ---------- | -------------------------------------------------------------------------------------------- | ------- | -------- | ----------- | + * | htmlLabels | Flag for setting whether or not a html tag should be used for rendering labels on the edges. | boolean | Required | true, false | * * **Notes:** Default value: true. */ htmlLabels: true, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | + * | Parameter | Description | Type | Required | Values | + * | ----------- | --------------------------------------------------- | ------- | -------- | ------------------- | * | nodeSpacing | Defines the spacing between nodes on the same level | Integer | Required | Any positive Number | * * **Notes:** * - * Pertains to horizontal spacing for TB (top to bottom) or BT (bottom to top) graphs, and the vertical spacing for LR as well as RL graphs.** + * Pertains to horizontal spacing for TB (top to bottom) or BT (bottom to top) graphs, and the + * vertical spacing for LR as well as RL graphs.** * * Default value: 50 */ nodeSpacing: 50, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | + * | Parameter | Description | Type | Required | Values | + * | ----------- | ----------------------------------------------------- | ------- | -------- | ------------------- | * | rankSpacing | Defines the spacing between nodes on different levels | Integer | Required | Any Positive Number | * * **Notes**: * - * pertains to vertical spacing for TB (top to bottom) or BT (bottom to top), and the horizontal spacing for LR as well as RL graphs. + * Pertains to vertical spacing for TB (top to bottom) or BT (bottom to top), and the horizontal + * spacing for LR as well as RL graphs. * * Default value 50 */ rankSpacing: 50, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | - * | curve | Defines how mermaid renders curves for flowcharts. | string | Required | 'basis', 'linear', 'cardinal'| + * | Parameter | Description | Type | Required | Values | + * | --------- | -------------------------------------------------- | ------ | -------- | ----------------------------- | + * | curve | Defines how mermaid renders curves for flowcharts. | string | Required | 'basis', 'linear', 'cardinal' | * * **Notes:** * @@ -12238,9 +12223,9 @@ var config = { padding: 15, /** - * | Parameter | Description | Type | Required | Values| - * | --- | --- | --- | --- | --- | - * | useMaxWidth | See notes | boolean | 4 | true, false | + * | Parameter | Description | Type | Required | Values | + * | ----------- | ----------- | ------- | -------- | ----------- | + * | useMaxWidth | See notes | boolean | 4 | true, false | * * **Notes:** * @@ -12252,38 +12237,34 @@ var config = { useMaxWidth: true, /** - * | Parameter | Description | Type | Required | Values| - * | --- | --- | --- | --- | --- | - * | defaultRenderer | See notes | boolean | 4 | dagre-d3, dagre-wrapper | + * | Parameter | Description | Type | Required | Values | + * | --------------- | ----------- | ------- | -------- | ----------------------- | + * | defaultRenderer | See notes | boolean | 4 | dagre-d3, dagre-wrapper | * * **Notes:** * * Decides which rendering engine that is to be used for the rendering. Legal values are: - * dagre-d3 - * dagre-wrapper - wrapper for dagre implemented in mermaid + * dagre-d3 dagre-wrapper - wrapper for dagre implemented in mermaid * * Default value: 'dagre-d3' */ defaultRenderer: 'dagre-d3' }, - /** - * The object containing configurations specific for sequence diagrams - */ + /** The object containing configurations specific for sequence diagrams */ sequence: { /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | + * | Parameter | Description | Type | Required | Values | + * | --------------- | ---------------------------- | ------- | -------- | ------------------ | * | activationWidth | Width of the activation rect | Integer | Required | Any Positive Value | * - * * **Notes:** Default value :10 */ activationWidth: 10, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | + * | Parameter | Description | Type | Required | Values | + * | -------------- | ---------------------------------------------------- | ------- | -------- | ------------------ | * | diagramMarginX | Margin to the right and left of the sequence diagram | Integer | Required | Any Positive Value | * * **Notes:** Default value: 50 @@ -12291,108 +12272,99 @@ var config = { diagramMarginX: 50, /** - *| Parameter | Description | Type | Required | Values | - *| --- | --- | --- | --- | --- | - *| diagramMarginY | Margin to the over and under the sequence diagram | Integer | Required | Any Positive Value | + * | Parameter | Description | Type | Required | Values | + * | -------------- | ------------------------------------------------- | ------- | -------- | ------------------ | + * | diagramMarginY | Margin to the over and under the sequence diagram | Integer | Required | Any Positive Value | * * **Notes:** Default value: 10 */ diagramMarginY: 10, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | + * | Parameter | Description | Type | Required | Values | + * | ----------- | --------------------- | ------- | -------- | ------------------ | * | actorMargin | Margin between actors | Integer | Required | Any Positive Value | * - * **Notes:** - * Default value: 50 + * **Notes:** Default value: 50 */ actorMargin: 50, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | - * | width | Width of actor boxes | Integer | Required | Any Positive Value | + * | Parameter | Description | Type | Required | Values | + * | --------- | -------------------- | ------- | -------- | ------------------ | + * | width | Width of actor boxes | Integer | Required | Any Positive Value | * - * **Notes:** - * Default value: 150 + * **Notes:** Default value: 150 */ width: 150, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | - * | height | Height of actor boxes | Integer | Required | Any Positive Value| + * | Parameter | Description | Type | Required | Values | + * | --------- | --------------------- | ------- | -------- | ------------------ | + * | height | Height of actor boxes | Integer | Required | Any Positive Value | * - * **Notes:** - * Default value: 65 + * **Notes:** Default value: 65 */ height: 65, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | + * | Parameter | Description | Type | Required | Values | + * | --------- | ------------------------ | ------- | -------- | ------------------ | * | boxMargin | Margin around loop boxes | Integer | Required | Any Positive Value | * - * **Notes:** - * Default value: 10 + * **Notes:** Default value: 10 */ boxMargin: 10, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | + * | Parameter | Description | Type | Required | Values | + * | ------------- | -------------------------------------------- | ------- | -------- | ------------------ | * | boxTextMargin | Margin around the text in loop/alt/opt boxes | Integer | Required | Any Positive Value | * - * **Notes:** - * Default value: 5 + * **Notes:** Default value: 5 */ boxTextMargin: 5, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | + * | Parameter | Description | Type | Required | Values | + * | ---------- | ------------------- | ------- | -------- | ------------------ | * | noteMargin | margin around notes | Integer | Required | Any Positive Value | * - * **Notes:** - * Default value: 10 + * **Notes:** Default value: 10 */ noteMargin: 10, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | + * | Parameter | Description | Type | Required | Values | + * | ------------- | ---------------------- | ------- | -------- | ------------------ | * | messageMargin | Space between messages | Integer | Required | Any Positive Value | * - * **Notes:** - * Default value: 35 + * **Notes:** Default value: 35 */ messageMargin: 35, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | + * | Parameter | Description | Type | Required | Values | + * | ------------ | --------------------------- | ------ | -------- | ------------------------- | * | messageAlign | Multiline message alignment | string | Required | 'left', 'center', 'right' | * - * **Notes:** - * Default value: 'center' + * **Notes:** Default value: 'center' */ messageAlign: 'center', /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | + * | Parameter | Description | Type | Required | Values | + * | ------------ | --------------------------- | ------- | -------- | ----------- | * | mirrorActors | Mirror actors under diagram | boolean | Required | true, false | * - * **Notes:** - * Default value: true + * **Notes:** Default value: true */ mirrorActors: true, /** - *| Parameter | Description |Type | Required | Values| - *| --- | --- | --- | --- | --- | - *| forceMenus | forces actor popup menus to always be visible (to support E2E testing). | Boolean| Required | True, False | + * | Parameter | Description | Type | Required | Values | + * | ---------- | ----------------------------------------------------------------------- | ------- | -------- | ----------- | + * | forceMenus | forces actor popup menus to always be visible (to support E2E testing). | Boolean | Required | True, False | * * **Notes:** * @@ -12401,8 +12373,8 @@ var config = { forceMenus: false, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | + * | Parameter | Description | Type | Required | Values | + * | --------------- | ------------------------------------------ | ------- | -------- | ------------------ | * | bottomMarginAdj | Prolongs the edge of the diagram downwards | Integer | Required | Any Positive Value | * * **Notes:** @@ -12414,21 +12386,20 @@ var config = { bottomMarginAdj: 1, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | - * | useMaxWidth | See Notes | boolean | Required | true, false | + * | Parameter | Description | Type | Required | Values | + * | ----------- | ----------- | ------- | -------- | ----------- | + * | useMaxWidth | See Notes | boolean | Required | true, false | * - * **Notes:** - * When this flag is set to true, the height and width is set to 100% and is then scaling with the - * available space. If set to false, the absolute space required is used. + * **Notes:** When this flag is set to true, the height and width is set to 100% and is then + * scaling with the available space. If set to false, the absolute space required is used. * * Default value: true */ useMaxWidth: true, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | + * | Parameter | Description | Type | Required | Values | + * | ----------- | ------------------------------------ | ------- | -------- | ----------- | * | rightAngles | display curve arrows as right angles | boolean | Required | true, false | * * **Notes:** @@ -12440,138 +12411,123 @@ var config = { rightAngles: false, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | + * | Parameter | Description | Type | Required | Values | + * | ------------------- | ------------------------------- | ------- | -------- | ----------- | * | showSequenceNumbers | This will show the node numbers | boolean | Required | true, false | * - * **Notes:** - * Default value: false + * **Notes:** Default value: false */ showSequenceNumbers: false, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | - * | actorFontSize| This sets the font size of the actor's description | Integer | Require | Any Positive Value | + * | Parameter | Description | Type | Required | Values | + * | ------------- | -------------------------------------------------- | ------- | -------- | ------------------ | + * | actorFontSize | This sets the font size of the actor's description | Integer | Require | Any Positive Value | * - ***Notes:** - ***Default value 14**.. + * **Notes:** **Default value 14**.. */ actorFontSize: 14, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | - * | actorFontFamily |This sets the font family of the actor's description | string | Required | Any Possible CSS FontFamily | + * | Parameter | Description | Type | Required | Values | + * | --------------- | ---------------------------------------------------- | ------ | -------- | --------------------------- | + * | actorFontFamily | This sets the font family of the actor's description | string | Required | Any Possible CSS FontFamily | * - * **Notes:** - * Default value: "'Open-Sans", "sans-serif"' + * **Notes:** Default value: "'Open-Sans", "sans-serif"' */ actorFontFamily: '"Open-Sans", "sans-serif"', /** * This sets the font weight of the actor's description * - * **Notes:** - * Default value: 400. + * **Notes:** Default value: 400. */ actorFontWeight: 400, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | + * | Parameter | Description | Type | Required | Values | + * | ------------ | ----------------------------------------------- | ------- | -------- | ------------------ | * | noteFontSize | This sets the font size of actor-attached notes | Integer | Required | Any Positive Value | * - * **Notes:** - * Default value: 14 + * **Notes:** Default value: 14 */ noteFontSize: 14, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | - * | noteFontFamily| This sets the font family of actor-attached notes. | string | Required | Any Possible CSS FontFamily | + * | Parameter | Description | Type | Required | Values | + * | -------------- | -------------------------------------------------- | ------ | -------- | --------------------------- | + * | noteFontFamily | This sets the font family of actor-attached notes. | string | Required | Any Possible CSS FontFamily | * - * **Notes:** - * Default value: ''"trebuchet ms", verdana, arial, sans-serif' + * **Notes:** Default value: ''"trebuchet ms", verdana, arial, sans-serif' */ noteFontFamily: '"trebuchet ms", verdana, arial, sans-serif', /** * This sets the font weight of the note's description * - * **Notes:** - * Default value: 400 + * **Notes:** Default value: 400 */ noteFontWeight: 400, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | - * | noteAlign | This sets the text alignment of actor-attached notes | string | required | 'left', 'center', 'right'| + * | Parameter | Description | Type | Required | Values | + * | --------- | ---------------------------------------------------- | ------ | -------- | ------------------------- | + * | noteAlign | This sets the text alignment of actor-attached notes | string | required | 'left', 'center', 'right' | * - * **Notes:** - * Default value: 'center' + * **Notes:** Default value: 'center' */ noteAlign: 'center', /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | + * | Parameter | Description | Type | Required | Values | + * | --------------- | ----------------------------------------- | ------- | -------- | ------------------- | * | messageFontSize | This sets the font size of actor messages | Integer | Required | Any Positive Number | * - * **Notes:** - * Default value: 16 + * **Notes:** Default value: 16 */ messageFontSize: 16, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | + * | Parameter | Description | Type | Required | Values | + * | ----------------- | ------------------------------------------- | ------ | -------- | --------------------------- | * | messageFontFamily | This sets the font family of actor messages | string | Required | Any Possible CSS FontFamily | * - * **Notes:** - * Default value: '"trebuchet ms", verdana, arial, sans-serif' + * **Notes:** Default value: '"trebuchet ms", verdana, arial, sans-serif' */ messageFontFamily: '"trebuchet ms", verdana, arial, sans-serif', /** * This sets the font weight of the message's description * - * **Notes:** - * Default value: 400. + * **Notes:** Default value: 400. */ messageFontWeight: 400, /** * This sets the auto-wrap state for the diagram * - * **Notes:** - * Default value: false. + * **Notes:** Default value: false. */ wrap: false, /** * This sets the auto-wrap padding for the diagram (sides only) * - * **Notes:** - * Default value: 0. + * **Notes:** Default value: 0. */ wrapPadding: 10, /** * This sets the width of the loop-box (loop, alt, opt, par) * - * **Notes:** - * Default value: 50. + * **Notes:** Default value: 50. */ labelBoxWidth: 50, /** * This sets the height of the loop-box (loop, alt, opt, par) * - * **Notes:** - * Default value: 20. + * **Notes:** Default value: 20. */ labelBoxHeight: 20, messageFont: function messageFont() { @@ -12597,116 +12553,104 @@ var config = { } }, - /** - * The object containing configurations specific for gantt diagrams - */ + /** The object containing configurations specific for gantt diagrams */ gantt: { /** * ### titleTopMargin * - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | + * | Parameter | Description | Type | Required | Values | + * | -------------- | ---------------------------------------------- | ------- | -------- | ------------------ | * | titleTopMargin | Margin top for the text over the gantt diagram | Integer | Required | Any Positive Value | * - * **Notes:** - * Default value: 25 + * **Notes:** Default value: 25 */ titleTopMargin: 25, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | + * | Parameter | Description | Type | Required | Values | + * | --------- | ----------------------------------- | ------- | -------- | ------------------ | * | barHeight | The height of the bars in the graph | Integer | Required | Any Positive Value | * - * **Notes:** - * Default value: 20 + * **Notes:** Default value: 20 */ barHeight: 20, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | - * | barGap | The margin between the different activities in the gantt diagram | Integer | Optional | Any Positive Value | + * | Parameter | Description | Type | Required | Values | + * | --------- | ---------------------------------------------------------------- | ------- | -------- | ------------------ | + * | barGap | The margin between the different activities in the gantt diagram | Integer | Optional | Any Positive Value | * - * **Notes:** - * Default value: 4 + * **Notes:** Default value: 4 */ barGap: 4, /** - * | Parameter | Description | Type | Required | Values| - * | --- | --- | --- | --- | --- | + * | Parameter | Description | Type | Required | Values | + * | ---------- | -------------------------------------------------------------------------- | ------- | -------- | ------------------ | * | topPadding | Margin between title and gantt diagram and between axis and gantt diagram. | Integer | Required | Any Positive Value | * - * **Notes:** - * Default value: 50 + * **Notes:** Default value: 50 */ topPadding: 50, /** - * | Parameter | Description | Type | Required | Values| - * | --- | --- | --- | --- | --- | + * | Parameter | Description | Type | Required | Values | + * | ------------ | ----------------------------------------------------------------------- | ------- | -------- | ------------------ | * | rightPadding | The space allocated for the section name to the right of the activities | Integer | Required | Any Positive Value | * - * **Notes:** - * Default value: 75 + * **Notes:** Default value: 75 */ rightPadding: 75, /** - * | Parameter | Description | Type | Required | Values| - * | --- | --- | --- | --- | --- | + * | Parameter | Description | Type | Required | Values | + * | ----------- | ---------------------------------------------------------------------- | ------- | -------- | ------------------ | * | leftPadding | The space allocated for the section name to the left of the activities | Integer | Required | Any Positive Value | * - * **Notes:** - * Default value: 75 + * **Notes:** Default value: 75 */ leftPadding: 75, /** - * | Parameter | Description | Type | Required | Values| - * | --- | --- | --- | --- | --- | + * | Parameter | Description | Type | Required | Values | + * | -------------------- | -------------------------------------------- | ------- | -------- | ------------------ | * | gridLineStartPadding | Vertical starting position of the grid lines | Integer | Required | Any Positive Value | * - * **Notes:** - * Default value: 35 + * **Notes:** Default value: 35 */ gridLineStartPadding: 35, /** - * | Parameter | Description | Type | Required | Values| - * | --- | --- | --- | --- | --- | - * | fontSize | Font size | Integer | Required | Any Positive Value | + * | Parameter | Description | Type | Required | Values | + * | --------- | ----------- | ------- | -------- | ------------------ | + * | fontSize | Font size | Integer | Required | Any Positive Value | * - * **Notes:** - * Default value: 11 + * **Notes:** Default value: 11 */ fontSize: 11, /** - * | Parameter | Description | Type | Required | Values| - * | --- | --- | --- | --- | --- | - * | sectionFontSize | Font size for sections| Integer | Required | Any Positive Value | + * | Parameter | Description | Type | Required | Values | + * | --------------- | ---------------------- | ------- | -------- | ------------------ | + * | sectionFontSize | Font size for sections | Integer | Required | Any Positive Value | * - * **Notes:** - * Default value: 11 + * **Notes:** Default value: 11 */ sectionFontSize: 11, /** - * | Parameter | Description | Type | Required | Values| - * | --- | --- | --- | --- | --- | - * | numberSectionStyles | The number of alternating section styles | Integer | 4 | Any Positive Value | + * | Parameter | Description | Type | Required | Values | + * | ------------------- | ---------------------------------------- | ------- | -------- | ------------------ | + * | numberSectionStyles | The number of alternating section styles | Integer | 4 | Any Positive Value | * - * **Notes:** - * Default value: 4 + * **Notes:** Default value: 4 */ numberSectionStyles: 4, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | - * | axisFormat | Datetime format of the axis | 3 | Required | Date in yy-mm-dd | + * | Parameter | Description | Type | Required | Values | + * | ---------- | --------------------------- | ---- | -------- | ---------------- | + * | axisFormat | Datetime format of the axis | 3 | Required | Date in yy-mm-dd | * * **Notes:** * @@ -12717,9 +12661,9 @@ var config = { axisFormat: '%Y-%m-%d', /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | - * | useMaxWidth | See notes | boolean | 4 | true, false | + * | Parameter | Description | Type | Required | Values | + * | ----------- | ----------- | ------- | -------- | ----------- | + * | useMaxWidth | See notes | boolean | 4 | true, false | * * **Notes:** * @@ -12731,107 +12675,96 @@ var config = { useMaxWidth: true, /** - *| Parameter | Description |Type | Required | Values| - *| --- | --- | --- | --- | --- | - *| topAxis | See notes | Boolean | 4 | True, False | + * | Parameter | Description | Type | Required | Values | + * | --------- | ----------- | ------- | -------- | ----------- | + * | topAxis | See notes | Boolean | 4 | True, False | * - ***Notes:** when this flag is set date labels will be added to the - top of the chart + * **Notes:** when this flag is set date labels will be added to the top of the chart * - ***Default value false**. + * **Default value false**. */ topAxis: false, useWidth: undefined }, - /** - * The object containing configurations specific for journey diagrams - */ + /** The object containing configurations specific for journey diagrams */ journey: { /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | + * | Parameter | Description | Type | Required | Values | + * | -------------- | ---------------------------------------------------- | ------- | -------- | ------------------ | * | diagramMarginX | Margin to the right and left of the sequence diagram | Integer | Required | Any Positive Value | * - * **Notes:** - * Default value: 50 + * **Notes:** Default value: 50 */ diagramMarginX: 50, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | + * | Parameter | Description | Type | Required | Values | + * | -------------- | -------------------------------------------------- | ------- | -------- | ------------------ | * | diagramMarginY | Margin to the over and under the sequence diagram. | Integer | Required | Any Positive Value | * - * **Notes:** - * Default value: 10 + * **Notes:** Default value: 10 */ diagramMarginY: 10, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | + * | Parameter | Description | Type | Required | Values | + * | ----------- | --------------------- | ------- | -------- | ------------------ | * | actorMargin | Margin between actors | Integer | Required | Any Positive Value | * - * **Notes:** - * Default value: 50 + * **Notes:** Default value: 50 */ leftMargin: 150, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | - * | width | Width of actor boxes | Integer | Required | Any Positive Value | + * | Parameter | Description | Type | Required | Values | + * | --------- | -------------------- | ------- | -------- | ------------------ | + * | width | Width of actor boxes | Integer | Required | Any Positive Value | * - * **Notes:** - * Default value: 150 + * **Notes:** Default value: 150 */ width: 150, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | - * | height | Height of actor boxes | Integer | Required | Any Positive Value | + * | Parameter | Description | Type | Required | Values | + * | --------- | --------------------- | ------- | -------- | ------------------ | + * | height | Height of actor boxes | Integer | Required | Any Positive Value | * - * **Notes:** - * Default value: 65 + * **Notes:** Default value: 65 */ height: 50, /** - *| Parameter | Description |Type | Required | Values| - *| --- | --- | --- | --- | --- | - *| boxMargin | Margin around loop boxes | Integer | Required | Any Positive Value | + * | Parameter | Description | Type | Required | Values | + * | --------- | ------------------------ | ------- | -------- | ------------------ | + * | boxMargin | Margin around loop boxes | Integer | Required | Any Positive Value | * - * **Notes:** - * Default value: 10 + * **Notes:** Default value: 10 */ boxMargin: 10, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | + * | Parameter | Description | Type | Required | Values | + * | ------------- | -------------------------------------------- | ------- | -------- | ------------------ | * | boxTextMargin | Margin around the text in loop/alt/opt boxes | Integer | Required | Any Positive Value | * - * **Notes:** - * Default value: 5 + * **Notes:** Default value: 5 */ boxTextMargin: 5, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | + * | Parameter | Description | Type | Required | Values | + * | ---------- | ------------------- | ------- | -------- | ------------------ | * | noteMargin | Margin around notes | Integer | Required | Any Positive Value | * - * **Notes:** - * Default value: 10 + * **Notes:** Default value: 10 */ noteMargin: 10, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | - * | messageMargin |Space between messages. | Integer | Required | Any Positive Value | + * | Parameter | Description | Type | Required | Values | + * | ------------- | ----------------------- | ------- | -------- | ------------------ | + * | messageMargin | Space between messages. | Integer | Required | Any Positive Value | * * **Notes:** * @@ -12842,19 +12775,18 @@ var config = { messageMargin: 35, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | - * | messageAlign | Multiline message alignment | 3 | 4 | 'left', 'center', 'right' | + * | Parameter | Description | Type | Required | Values | + * | ------------ | --------------------------- | ---- | -------- | ------------------------- | + * | messageAlign | Multiline message alignment | 3 | 4 | 'left', 'center', 'right' | * - * **Notes:** - * Default value: 'center' + * **Notes:** Default value: 'center' */ messageAlign: 'center', /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | - * | bottomMarginAdj | Prolongs the edge of the diagram downwards | Integer | 4 | Any Positive Value | + * | Parameter | Description | Type | Required | Values | + * | --------------- | ------------------------------------------ | ------- | -------- | ------------------ | + * | bottomMarginAdj | Prolongs the edge of the diagram downwards | Integer | 4 | Any Positive Value | * * **Notes:** * @@ -12865,9 +12797,9 @@ var config = { bottomMarginAdj: 1, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | - * | useMaxWidth | See notes | boolean | 4 | true, false | + * | Parameter | Description | Type | Required | Values | + * | ----------- | ----------- | ------- | -------- | ----------- | + * | useMaxWidth | See notes | boolean | 4 | true, false | * * **Notes:** * @@ -12879,9 +12811,9 @@ var config = { useMaxWidth: true, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | - * | rightAngles | Curved Arrows become Right Angles | 3 | 4 | true, false | + * | Parameter | Description | Type | Required | Values | + * | ----------- | --------------------------------- | ---- | -------- | ----------- | + * | rightAngles | Curved Arrows become Right Angles | 3 | 4 | true, false | * * **Notes:** * @@ -12905,9 +12837,9 @@ var config = { arrowMarkerAbsolute: false, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | - * | useMaxWidth | See notes | boolean | 4 | true, false | + * | Parameter | Description | Type | Required | Values | + * | ----------- | ----------- | ------- | -------- | ----------- | + * | useMaxWidth | See notes | boolean | 4 | true, false | * * **Notes:** * @@ -12919,15 +12851,14 @@ var config = { useMaxWidth: true, /** - * | Parameter | Description | Type | Required | Values| - * | --- | --- | --- | --- | --- | - * | defaultRenderer | See notes | boolean | 4 | dagre-d3, dagre-wrapper | + * | Parameter | Description | Type | Required | Values | + * | --------------- | ----------- | ------- | -------- | ----------------------- | + * | defaultRenderer | See notes | boolean | 4 | dagre-d3, dagre-wrapper | * - ***Notes**: + * **Notes**: * * Decides which rendering engine that is to be used for the rendering. Legal values are: - * dagre-d3 - * dagre-wrapper - wrapper for dagre implemented in mermaid + * dagre-d3 dagre-wrapper - wrapper for dagre implemented in mermaid * * Default value: 'dagre-d3' */ @@ -12938,9 +12869,9 @@ var config = { useWidth: undefined, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | - * | useMaxWidth | See notes | boolean | 4 | true, false | + * | Parameter | Description | Type | Required | Values | + * | ----------- | ----------- | ------- | -------- | ----------- | + * | useMaxWidth | See notes | boolean | 4 | true, false | * * **Notes:** * @@ -12972,9 +12903,9 @@ var config = { radius: 5, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | - * | useMaxWidth | See notes | boolean | 4 | true, false | + * | Parameter | Description | Type | Required | Values | + * | ----------- | ----------- | ------- | -------- | ----------- | + * | useMaxWidth | See notes | boolean | 4 | true, false | * * **Notes:** * @@ -12986,41 +12917,39 @@ var config = { useMaxWidth: true, /** - * | Parameter | Description | Type | Required | Values| - * | --- | --- | --- | --- | --- | - * | defaultRenderer | See notes | boolean | 4 | dagre-d3, dagre-wrapper | + * | Parameter | Description | Type | Required | Values | + * | --------------- | ----------- | ------- | -------- | ----------------------- | + * | defaultRenderer | See notes | boolean | 4 | dagre-d3, dagre-wrapper | * * **Notes:** * * Decides which rendering engine that is to be used for the rendering. Legal values are: - * dagre-d3 - * dagre-wrapper - wrapper for dagre implemented in mermaid + * dagre-d3 dagre-wrapper - wrapper for dagre implemented in mermaid * * Default value: 'dagre-d3' */ defaultRenderer: 'dagre-wrapper' }, - /** - * The object containing configurations specific for entity relationship diagrams - */ + /** The object containing configurations specific for entity relationship diagrams */ er: { /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | + * | Parameter | Description | Type | Required | Values | + * | -------------- | ----------------------------------------------- | ------- | -------- | ------------------ | * | diagramPadding | Amount of padding around the diagram as a whole | Integer | Required | Any Positive Value | * * **Notes:** * - * The amount of padding around the diagram as a whole so that embedded diagrams have margins, expressed in pixels + * The amount of padding around the diagram as a whole so that embedded diagrams have margins, + * expressed in pixels * * Default value: 20 */ diagramPadding: 20, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | + * | Parameter | Description | Type | Required | Values | + * | --------------- | ---------------------------------------- | ------ | -------- | ---------------------- | * | layoutDirection | Directional bias for layout of entities. | string | Required | "TB", "BT", "LR", "RL" | * * **Notes:** @@ -13034,126 +12963,113 @@ var config = { layoutDirection: 'TB', /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | - * | minEntityWidth | The minimum width of an entity box | Integer | Required | Any Positive Value | + * | Parameter | Description | Type | Required | Values | + * | -------------- | ---------------------------------- | ------- | -------- | ------------------ | + * | minEntityWidth | The minimum width of an entity box | Integer | Required | Any Positive Value | * - * **Notes:** - * Expressed in pixels. - * Default value: 100 + * **Notes:** Expressed in pixels. Default value: 100 */ minEntityWidth: 100, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | - * | minEntityHeight| The minimum height of an entity box | Integer | 4 | Any Positive Value | + * | Parameter | Description | Type | Required | Values | + * | --------------- | ----------------------------------- | ------- | -------- | ------------------ | + * | minEntityHeight | The minimum height of an entity box | Integer | 4 | Any Positive Value | * - * **Notes:** - * Expressed in pixels - * Default value: 75 + * **Notes:** Expressed in pixels Default value: 75 */ minEntityHeight: 75, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | - * | entityPadding | Minimum internal padding betweentext in box and box borders | Integer | 4 | Any Positive Value | + * | Parameter | Description | Type | Required | Values | + * | ------------- | ----------------------------------------------------------- | ------- | -------- | ------------------ | + * | entityPadding | Minimum internal padding betweentext in box and box borders | Integer | 4 | Any Positive Value | * * **Notes:** * - * The minimum internal padding betweentext in an entity box and the enclosing box borders, expressed in pixels. + * The minimum internal padding betweentext in an entity box and the enclosing box borders, + * expressed in pixels. * * Default value: 15 */ entityPadding: 15, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | - * | stroke | Stroke color of box edges and lines | string | 4 | Any recognized color | + * | Parameter | Description | Type | Required | Values | + * | --------- | ----------------------------------- | ------ | -------- | -------------------- | + * | stroke | Stroke color of box edges and lines | string | 4 | Any recognized color | * - * **Notes:** - * Default value: 'gray' + * **Notes:** Default value: 'gray' */ stroke: 'gray', /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | - * | fill | Fill color of entity boxes | string | 4 | Any recognized color | + * | Parameter | Description | Type | Required | Values | + * | --------- | -------------------------- | ------ | -------- | -------------------- | + * | fill | Fill color of entity boxes | string | 4 | Any recognized color | * - * **Notes:** - * Default value: 'honeydew' + * **Notes:** Default value: 'honeydew' */ fill: 'honeydew', /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | - * | fontSize | Font Size in pixels | Integer | | Any Positive Value | + * | Parameter | Description | Type | Required | Values | + * | --------- | ------------------- | ------- | -------- | ------------------ | + * | fontSize | Font Size in pixels | Integer | | Any Positive Value | * * **Notes:** * - * Font size (expressed as an integer representing a number of pixels) - * Default value: 12 + * Font size (expressed as an integer representing a number of pixels) Default value: 12 */ fontSize: 12, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | - * | useMaxWidth | See Notes | boolean | Required | true, false | + * | Parameter | Description | Type | Required | Values | + * | ----------- | ----------- | ------- | -------- | ----------- | + * | useMaxWidth | See Notes | boolean | Required | true, false | * * **Notes:** * - * When this flag is set to true, the diagram width is locked to 100% and - * scaled based on available space. If set to false, the diagram reserves its - * absolute width. + * When this flag is set to true, the diagram width is locked to 100% and scaled based on + * available space. If set to false, the diagram reserves its absolute width. * * Default value: true */ useMaxWidth: true }, - /** - * The object containing configurations specific for pie diagrams - */ + /** The object containing configurations specific for pie diagrams */ pie: { useWidth: undefined, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | - * | useMaxWidth | See Notes | boolean | Required | true, false | + * | Parameter | Description | Type | Required | Values | + * | ----------- | ----------- | ------- | -------- | ----------- | + * | useMaxWidth | See Notes | boolean | Required | true, false | * * **Notes:** * - * When this flag is set to true, the diagram width is locked to 100% and - * scaled based on available space. If set to false, the diagram reserves its - * absolute width. + * When this flag is set to true, the diagram width is locked to 100% and scaled based on + * available space. If set to false, the diagram reserves its absolute width. * * Default value: true */ useMaxWidth: true }, - /** - * The object containing configurations specific for req diagrams - */ + /** The object containing configurations specific for req diagrams */ requirement: { useWidth: undefined, /** - * | Parameter | Description | Type | Required | Values | - * | --- | --- | --- | --- | --- | - * | useMaxWidth | See Notes | boolean | Required | true, false | + * | Parameter | Description | Type | Required | Values | + * | ----------- | ----------- | ------- | -------- | ----------- | + * | useMaxWidth | See Notes | boolean | Required | true, false | * * **Notes:** * - * When this flag is set to true, the diagram width is locked to 100% and - * scaled based on available space. If set to false, the diagram reserves its - * absolute width. + * When this flag is set to true, the diagram width is locked to 100% and scaled based on + * available space. If set to false, the diagram reserves its absolute width. * * Default value: true */ @@ -13331,8 +13247,8 @@ var addRelation = function addRelation(relation) { relations.push(relation); }; /** - * Adds an annotation to the specified class - * Annotations mark special properties of the given type (like 'interface' or 'service') + * Adds an annotation to the specified class Annotations mark special properties of the given type + * (like 'interface' or 'service') * * @param className The class name * @param annotation The name of the annotation without any brackets @@ -13347,10 +13263,9 @@ var addAnnotation = function addAnnotation(className, annotation) { * Adds a member to the specified class * * @param className The class name - * @param member The full name of the member. - * If the member is enclosed in <> it is treated as an annotation - * If the member is ending with a closing bracket ) it is treated as a method - * Otherwise the member will be treated as a normal property + * @param member The full name of the member. If the member is enclosed in <> it is + * treated as an annotation If the member is ending with a closing bracket ) it is treated as a + * method Otherwise the member will be treated as a normal property * @public */ @@ -14071,9 +13986,7 @@ var draw = function draw(text, id) { setConf: setConf, draw: draw }); -/** - * @param type - */ +/** @param type */ function getArrowMarker(type) { var marker; @@ -14776,9 +14689,6 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../logger */ "./src/logger.js"); /* harmony import */ var _mermaidAPI__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../mermaidAPI */ "./src/mermaidAPI.js"); /* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../config */ "./src/config.js"); -/** - * - */ @@ -14977,9 +14887,9 @@ __webpack_require__.r(__webpack_exports__); var conf = {}; /** - * Allows the top-level API module to inject config specific to this renderer, - * storing it in the local conf object. Note that generic config still needs to be - * retrieved using getConfig() imported from the config module + * Allows the top-level API module to inject config specific to this renderer, storing it in the + * local conf object. Note that generic config still needs to be retrieved using getConfig() + * imported from the config module * * @param cnf */ @@ -14994,10 +14904,10 @@ var setConf = function setConf(cnf) { /** * Draw attributes for an entity * - * @param groupNode the svg group node for the entity - * @param entityTextNode the svg node for the entity label text - * @param attributes an array of attributes defined for the entity (each attribute has a type and a name) - * @returns the bounding box of the entity, after attributes have been added + * @param groupNode The svg group node for the entity + * @param entityTextNode The svg node for the entity label text + * @param attributes An array of attributes defined for the entity (each attribute has a type and a name) + * @returns The bounding box of the entity, after attributes have been added */ var drawAttributes = function drawAttributes(groupNode, entityTextNode, attributes) { @@ -15123,7 +15033,7 @@ var drawAttributes = function drawAttributes(groupNode, entityTextNode, attribut /** * Use D3 to construct the svg elements for the entities * - * @param svgNode the svg node that contains the diagram + * @param svgNode The svg node that contains the diagram * @param entities The entities to be drawn * @param graph The graph that contains the vertex and edge definitions post-layout * @returns The first entity that was inserted @@ -15176,8 +15086,8 @@ var getEdgeName = function getEdgeName(rel) { /** * Add each relationship to the graph * - * @param relationships the relationships to be added - * @param g the graph + * @param relationships The relationships to be added + * @param g The graph * @returns {Array} The array of relationships */ @@ -15196,10 +15106,11 @@ var relCnt = 0; /** * Draw a relationship using edge information from the graph * - * @param svg the svg node - * @param rel the relationship to draw in the svg - * @param g the graph containing the edge information - * @param insert the insertion point in the svg DOM (because relationships have markers that need to sit 'behind' opaque entity boxes) + * @param svg The svg node + * @param rel The relationship to draw in the svg + * @param g The graph containing the edge information + * @param insert The insertion point in the svg DOM (because relationships have markers that need to + * sit 'behind' opaque entity boxes) */ var drawRelationshipFromLayout = function drawRelationshipFromLayout(svg, rel, g, insert) { @@ -15283,8 +15194,8 @@ var drawRelationshipFromLayout = function drawRelationshipFromLayout(svg, rel, g /** * Draw en E-R diagram in the tag with id: id based on the text definition of the diagram * - * @param text the text of the diagram - * @param id the unique id of the DOM node that contains the diagram + * @param text The text of the diagram + * @param id The unique id of the DOM node that contains the diagram */ @@ -15765,9 +15676,7 @@ function cylinder(parent, bbox, node) { return shapeSvg; } -/** - * @param render - */ +/** @param render */ function addToRender(render) { @@ -15789,9 +15698,7 @@ function addToRender(render) { render.shapes().rect_right_inv_arrow = rect_right_inv_arrow; } -/** - * @param addShape - */ +/** @param addShape */ function addToRenderV2(addShape) { addShape({ @@ -16287,7 +16194,7 @@ var getDirection = function getDirection() { /** * Retrieval function for fetching the found nodes after parsing has completed. * - * @returns {{}|*|vertices} + * @returns {{} | any | vertices} */ var getVertices = function getVertices() { @@ -16296,7 +16203,7 @@ var getVertices = function getVertices() { /** * Retrieval function for fetching the found links after parsing has completed. * - * @returns {{}|*|edges} + * @returns {{} | any | edges} */ var getEdges = function getEdges() { @@ -16305,7 +16212,7 @@ var getEdges = function getEdges() { /** * Retrieval function for fetching the found class definitions after parsing has completed. * - * @returns {{}|*|classes} + * @returns {{} | any | classes} */ var getClasses = function getClasses() { @@ -16363,10 +16270,7 @@ var clear = function clear(ver) { var setGen = function setGen(ver) { version = ver || 'gen-1'; }; -/** - * - * @returns {string} - */ +/** @returns {string} */ var defaultStyle = function defaultStyle() { return 'fill:#ffa;stroke: #f66; stroke-width: 3px; stroke-dasharray: 5, 5;fill:#ffa;stroke: #666;'; @@ -16388,9 +16292,7 @@ var addSubGraph = function addSubGraph(_id, list, _title) { if (_id === _title && _title.match(/\s/)) { id = undefined; } - /** - * @param a - */ + /** @param a */ function uniq(a) { @@ -16455,9 +16357,7 @@ var addSubGraph = function addSubGraph(_id, list, _title) { dir: dir }; _logger__WEBPACK_IMPORTED_MODULE_5__.log.info('Adding', subGraph.id, subGraph.nodes, subGraph.dir); - /** - * Deletes an id from all subgraphs - */ + /** Deletes an id from all subgraphs */ // const del = _id => { // subGraphs.forEach(sg => { // const pos = sg.nodes.indexOf(_id); @@ -17150,7 +17050,7 @@ var addEdges = function addEdges(edges, g) { * Returns the all the styles from classDef statements in the graph definition. * * @param text - * @returns {object} classDef styles + * @returns {object} ClassDef styles */ var getClasses = function getClasses(text) { @@ -17633,7 +17533,7 @@ var addEdges = function addEdges(edges, g) { * Returns the all the styles from classDef statements in the graph definition. * * @param text - * @returns {object} classDef styles + * @returns {object} ClassDef styles */ var getClasses = function getClasses(text) { @@ -18495,7 +18395,8 @@ var setClickFun = function setClickFun(id, functionName, functionArgs) { } }; /** - * The callbackFunction is executed in a click event bound to the task with the specified id or the task's assigned text + * The callbackFunction is executed in a click event bound to the task with the specified id or the + * task's assigned text * * @param id The task's id * @param callbackFunction A function to be executed when clicked on the task or the task's text @@ -19070,7 +18971,8 @@ var draw = function draw(text, id) { } } /** - * from this stackexchange question: http://stackoverflow.com/questions/1890203/unique-for-arrays-in-javascript + * From this stackexchange question: + * http://stackoverflow.com/questions/1890203/unique-for-arrays-in-javascript * * @param arr */ @@ -19092,7 +18994,8 @@ var draw = function draw(text, id) { return result; } /** - *from this stackexchange question: http://stackoverflow.com/questions/14227981/count-how-many-strings-in-an-array-have-duplicates-in-the-same-array + * From this stackexchange question: + * http://stackoverflow.com/questions/14227981/count-how-many-strings-in-an-array-have-duplicates-in-the-same-array * * @param arr */ @@ -19110,7 +19013,7 @@ var draw = function draw(text, id) { return obj; } /** - * get specific from everything + * Get specific from everything * * @param word * @param arr @@ -19356,9 +19259,7 @@ function upsert(arr, key, newval) { arr.splice(index, 1, newval); } } -/** - * @param commitArr - */ +/** @param commitArr */ function prettyPrintCommitHistory(commitArr) { @@ -19523,9 +19424,7 @@ var apiConfig = {}; var setConf = function setConf(c) { apiConfig = c; }; -/** - * @param svg - */ +/** @param svg */ function svgCreateDefs(svg) { svg.append('defs').append('g').attr('id', 'def-commit').append('circle').attr('r', config.nodeRadius).attr('cx', 0).attr('cy', 0); @@ -19853,9 +19752,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../logger */ "./src/logger.js"); -/** - * Created by knut on 15-01-14. - */ +/** Created by knut on 15-01-14. */ var message = ''; var info = false; @@ -19904,9 +19801,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _parser_info__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./parser/info */ "./src/diagrams/info/parser/info.jison"); /* harmony import */ var _parser_info__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_parser_info__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../logger */ "./src/logger.js"); -/** - * Created by knut on 14-12-11. - */ +/** Created by knut on 14-12-11. */ @@ -19987,9 +19882,6 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../logger */ "./src/logger.js"); /* harmony import */ var _mermaidAPI__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../mermaidAPI */ "./src/mermaidAPI.js"); /* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../config */ "./src/config.js"); -/** - * - */ @@ -20083,9 +19975,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../logger */ "./src/logger.js"); /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../utils */ "./src/utils.js"); /* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../config */ "./src/config.js"); -/** - * Created by AshishJ on 11-09-2019. - */ +/** Created by AshishJ on 11-09-2019. */ @@ -21342,9 +21232,7 @@ var bounds = { var _self = this; var cnt = 0; - /** - * @param {any} type - */ + /** @param {any} type */ function updateFn(type) { return function updateItemBounds(item) { @@ -21470,7 +21358,9 @@ var bounds = { * Draws an note in the diagram with the attached line * * @param {any} elem - The diagram to draw to. - * @param {{x: number, y: number, message: string, width: number}} noteModel - startx: x axis start position, verticalPos: y axis position, messsage: the message to be shown, width: Set this with a custom width to override the default configured width. + * @param {{ x: number; y: number; message: string; width: number }} noteModel - Startx: x axis + * start position, verticalPos: y axis position, messsage: the message to be shown, width: Set + * this with a custom width to override the default configured width. */ var drawNote = function drawNote(elem, noteModel) { @@ -21538,8 +21428,8 @@ var actorFont = function actorFont(cnf) { /** * Draws a message * - * @param {any} g - the parent of the message element - * @param {any} msgModel - the model containing fields describing a message + * @param {any} g - The parent of the message element + * @param {any} msgModel - The model containing fields describing a message */ @@ -21974,14 +21864,14 @@ var draw = function draw(text, id) { _logger__WEBPACK_IMPORTED_MODULE_6__.log.debug("models:", bounds.models); }; /** - * Retrieves the max message width of each actor, supports signals (messages, loops) - * and notes. + * Retrieves the max message width of each actor, supports signals (messages, loops) and notes. * - * It will enumerate each given message, and will determine its text width, in relation - * to the actor it originates from, and destined to. + * It will enumerate each given message, and will determine its text width, in relation to the actor + * it originates from, and destined to. * * @param {any} actors - The actors map - * @param {array} messages - A list of message objects to iterate + * @param {Array} messages - A list of message objects to iterate + * @returns {any} */ var getMaxMessageWidthPerActor = function getMaxMessageWidthPerActor(actors, messages) { @@ -22064,11 +21954,10 @@ var getRequiredPopupWidth = function getRequiredPopupWidth(actor) { return requiredPopupWidth; }; /** - * This will calculate the optimal margin for each given actor, for a given - * actor->messageWidth map. + * This will calculate the optimal margin for each given actor, for a given actor->messageWidth map. * - * An actor's margin is determined by the width of the actor, the width of the - * largest message that originates from it, and the configured conf.actorMargin. + * An actor's margin is determined by the width of the actor, the width of the largest message that + * originates from it, and the configured conf.actorMargin. * * @param {any} actors - The actors map to calculate margins for * @param {any} actorToMessageWidth - A map of actor key -> max message width it holds @@ -22632,6 +22521,7 @@ var drawLabel = function drawLabel(elem, txtObject) { * @param {any} width * @param {any} height * @param {any} cut + * @returns {any} */ function genPoints(x, y, width, height, cut) { return x + ',' + y + ' ' + (x + width) + ',' + y + ' ' + (x + width) + ',' + (y + height - cut) + ' ' + (x + width - cut * 1.2) + ',' + (y + height) + ' ' + x + ',' + (y + height); @@ -22654,7 +22544,7 @@ var fixLifeLineHeights = function fixLifeLineHeights(diagram, bounds) { * * @param {any} elem - The diagram we'll draw to. * @param {any} actor - The actor to draw. - * @param {any} conf - drawText implementation discriminator object + * @param {any} conf - DrawText implementation discriminator object */ var drawActorTypeParticipant = function drawActorTypeParticipant(elem, actor, conf) { @@ -22773,11 +22663,11 @@ var anchorElement = function anchorElement(elem) { /** * Draws an activation in the diagram * - * @param {any} elem - element to append activation rect. - * @param {any} bounds - activation box bounds. - * @param {any} verticalPos - precise y cooridnate of bottom activation box edge. - * @param {any} conf - sequence diagram config object. - * @param {any} actorActivations - number of activations on the actor. + * @param {any} elem - Element to append activation rect. + * @param {any} bounds - Activation box bounds. + * @param {any} verticalPos - Precise y cooridnate of bottom activation box edge. + * @param {any} conf - Sequence diagram config object. + * @param {any} actorActivations - Number of activations on the actor. */ var drawActivation = function drawActivation(elem, bounds, verticalPos, conf, actorActivations) { @@ -22794,10 +22684,11 @@ var drawActivation = function drawActivation(elem, bounds, verticalPos, conf, ac /** * Draws a loop in the diagram * - * @param {any} elem - elemenet to append the loop to. - * @param {any} loopModel - loopModel of the given loop. + * @param {any} elem - Elemenet to append the loop to. + * @param {any} loopModel - LoopModel of the given loop. * @param {any} labelText - Text within the loop. - * @param {any} conf - diagrom configuration + * @param {any} conf - Diagrom configuration + * @returns {any} */ var drawLoop = function drawLoop(elem, loopModel, labelText, conf) { @@ -22885,8 +22776,8 @@ var drawLoop = function drawLoop(elem, loopModel, labelText, conf) { /** * Draws a background rectangle * - * @param {any} elem diagram (reference for bounds) - * @param {any} bounds shape of the rectangle + * @param {any} elem Diagram (reference for bounds) + * @param {any} bounds Shape of the rectangle */ var drawBackgroundRect = function drawBackgroundRect(elem, bounds) { @@ -22930,7 +22821,7 @@ var insertArrowFilledHead = function insertArrowFilledHead(elem) { /** * Setup node number. The result is appended to the svg. * - * @param elem + * @param {any} elem */ var insertSequenceNumber = function insertSequenceNumber(elem) { @@ -23265,7 +23156,7 @@ var drawStartState = function drawStartState(g) { /** * Draws a start state as a black circle * - * @param g + * @param {any} g */ var drawDivider = function drawDivider(g) { @@ -23287,8 +23178,8 @@ var drawSimpleState = function drawSimpleState(g, stateDef) { /** * Draws a state with descriptions * - * @param {*} g - * @param {*} stateDef + * @param {any} g + * @param {any} stateDef * @returns */ @@ -23325,17 +23216,14 @@ var drawDescrState = function drawDescrState(g, stateDef) { g.insert('rect', ':first-child').attr('x', (0,_config__WEBPACK_IMPORTED_MODULE_1__.getConfig)().state.padding).attr('y', (0,_config__WEBPACK_IMPORTED_MODULE_1__.getConfig)().state.padding).attr('width', width + 2 * (0,_config__WEBPACK_IMPORTED_MODULE_1__.getConfig)().state.padding).attr('height', descrBox.height + titleHeight + 2 * (0,_config__WEBPACK_IMPORTED_MODULE_1__.getConfig)().state.padding).attr('rx', (0,_config__WEBPACK_IMPORTED_MODULE_1__.getConfig)().state.radius); return g; }; -/** - * Adds the creates a box around the existing content and adds a - * panel for the id on top of the content. - */ +/** Adds the creates a box around the existing content and adds a panel for the id on top of the content. */ /** * Function that creates an title row and a frame around a substate for a composit state diagram. * The function returns a new d3 svg object with updated width and height properties; * - * @param {*} g The d3 svg object for the substate to framed - * @param {*} stateDef The info about the + * @param {any} g The d3 svg object for the substate to framed + * @param {any} stateDef The info about the * @param {any} altBkg */ @@ -23514,11 +23402,11 @@ var drawNote = function drawNote(text, g) { return note; }; /** - * Starting point for drawing a state. The function finds out the specifics - * about the state and renders with approprtiate function. + * Starting point for drawing a state. The function finds out the specifics about the state and + * renders with approprtiate function. * - * @param {*} elem - * @param {*} stateDef + * @param {any} elem + * @param {any} stateDef */ var drawState = function drawState(elem, stateDef) { @@ -24036,7 +23924,7 @@ var nodeDb = {}; * Returns the all the styles from classDef statements in the graph definition. * * @param {any} text - * @returns {object} classDef styles + * @returns {object} ClassDef styles */ var getClasses = function getClasses(text) { @@ -24831,9 +24719,7 @@ var setConf = function setConf(cnf) { }); }; var actors = {}; -/** - * @param {any} diagram - */ +/** @param {any} diagram */ function drawActorLegend(diagram) { var conf = (0,_config__WEBPACK_IMPORTED_MODULE_3__.getConfig)().journey; // Draw the actors @@ -24941,9 +24827,7 @@ var bounds = { var _self = this; var cnt = 0; - /** - * @param {any} type - */ + /** @param {any} type */ function updateFn(type) { return function updateItemBounds(item) { @@ -25128,18 +25012,14 @@ var drawFace = function drawFace(element, faceData) { face.append('circle').attr('cx', faceData.cx - radius / 3).attr('cy', faceData.cy - radius / 3).attr('r', 1.5).attr('stroke-width', 2).attr('fill', '#666').attr('stroke', '#666'); //right eye face.append('circle').attr('cx', faceData.cx + radius / 3).attr('cy', faceData.cy - radius / 3).attr('r', 1.5).attr('stroke-width', 2).attr('fill', '#666').attr('stroke', '#666'); - /** - * @param {any} face - */ + /** @param {any} face */ function smile(face) { var arc = (0,d3__WEBPACK_IMPORTED_MODULE_0__.arc)().startAngle(Math.PI / 2).endAngle(3 * (Math.PI / 2)).innerRadius(radius / 2).outerRadius(radius / 2.2); //mouth face.append('path').attr('class', 'mouth').attr('d', arc).attr('transform', 'translate(' + faceData.cx + ',' + (faceData.cy + 2) + ')'); } - /** - * @param {any} face - */ + /** @param {any} face */ function sad(face) { @@ -25147,9 +25027,7 @@ var drawFace = function drawFace(element, faceData) { face.append('path').attr('class', 'mouth').attr('d', arc).attr('transform', 'translate(' + faceData.cx + ',' + (faceData.cy + 7) + ')'); } - /** - * @param {any} face - */ + /** @param {any} face */ function ambivalent(face) { @@ -25452,9 +25330,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3 */ "d3"); /* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(d3__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./logger */ "./src/logger.js"); -/** - * Created by knut on 14-12-11. - */ +/** Created by knut on 14-12-11. */ var conf = {}; @@ -25623,23 +25499,25 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _mermaidAPI__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./mermaidAPI */ "./src/mermaidAPI.js"); /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utils */ "./src/utils.js"); /** - * Web page integration module for the mermaid framework. It uses the mermaidAPI for mermaid functionality and to render - * the diagrams to svg code. + * Web page integration module for the mermaid framework. It uses the mermaidAPI for mermaid + * functionality and to render the diagrams to svg code. */ /** * ## init + * * Function that goes through the document to find the chart definitions in there and render them. * - * The function tags the processed attributes with the attribute data-processed and ignores found elements with the - * attribute already set. This way the init function can be triggered several times. + * The function tags the processed attributes with the attribute data-processed and ignores found + * elements with the 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` + * + * - A DOM Node + * - An array of DOM nodes (as would come from a jQuery selector) + * - A W3C selector, a la `.mermaid` * * ```mermaid * graph LR; @@ -25647,8 +25525,8 @@ __webpack_require__.r(__webpack_exports__); * b-->|Yes|c(Leave element) * b-->|No |d(Transform) * ``` - * Renders the mermaid diagrams * + * Renders the mermaid diagrams */ var init = function init() { @@ -25769,9 +25647,8 @@ var initialize = function initialize(config) { _mermaidAPI__WEBPACK_IMPORTED_MODULE_0__["default"].initialize(config); // mermaidAPI.reset(); }; /** - * ##contentLoaded - * Callback function that is called when page is loaded. This functions fetches configuration for mermaid rendering and - * calls init for rendering the mermaid diagrams on the page. + * ##contentLoaded Callback function that is called when page is loaded. This functions fetches + * configuration for mermaid rendering and calls init for rendering the mermaid diagrams on the page. */ @@ -25895,15 +25772,17 @@ __webpack_require__.r(__webpack_exports__); function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } /** - *Edit this Page[![N|Solid](img/GitHub-Mark-32px.png)](https://github.com/mermaid-js/mermaid/blob/develop/src/mermaidAPI.js) - * - *This is the API to be used when optionally handling the integration with the web page, instead of using the default integration provided by mermaid.js. + * Edit this + * Page[[N|Solid](img/GitHub-Mark-32px.png)](https://github.com/mermaid-js/mermaid/blob/develop/src/mermaidAPI.js) * + * This is the API to be used when optionally handling the integration with the web page, instead of + * using the default integration provided by mermaid.js. * * The core of this api is the [**render**](Setup.md?id=render) function which, given a graph * definition as text, renders the graph/diagram and returns an svg element for the graph. * - * It is is then up to the user of the API to make use of the svg, either insert it somewhere in the page or do something completely different. + * It is is then up to the user of the API to make use of the svg, either insert it somewhere in the + * page or do something completely different. * * In addition to the render function, a number of behavioral configuration options are available. * @@ -26107,23 +25986,23 @@ var decodeEntities = function decodeEntities(text) { * * ```js * mermaidAPI.initialize({ - * startOnLoad:true - * }); - * $(function(){ - * const graphDefinition = 'graph TB\na-->b'; - * const cb = function(svgGraph){ - * console.log(svgGraph); - * }; - * mermaidAPI.render('id1',graphDefinition,cb); - * }); - *``` + * startOnLoad: true, + * }); + * $(function () { + * const graphDefinition = 'graph TB\na-->b'; + * const cb = function (svgGraph) { + * console.log(svgGraph); + * }; + * mermaidAPI.render('id1', graphDefinition, cb); + * }); + * ``` * - * @param {any} id the id of the element to be rendered - * @param {any} _txt the graph definition - * @param {any} cb callback which is called after rendering is finished with the svg code as inparam. - * @param {any} container selector to element in which a div with the graph temporarily will be inserted. In one is - * provided a hidden div will be inserted in the body of the page instead. The element will be removed when rendering is - * completed. + * @param {any} id The id of the element to be rendered + * @param {any} _txt The graph definition + * @param {any} cb Callback which is called after rendering is finished with the svg code as inparam. + * @param {any} container Selector to element in which a div with the graph temporarily will be + * inserted. In one is provided a hidden div will be inserted in the body of the page instead. The + * element will be removed when rendering is completed. * @returns {any} */ @@ -26439,9 +26318,7 @@ var handleDirective = function handleDirective(p, directive, type) { break; } }; -/** - * @param {any} conf - */ +/** @param {any} conf */ function updateRendererConfigs(conf) { @@ -26466,10 +26343,6 @@ function updateRendererConfigs(conf) { _diagrams_requirement_requirementRenderer__WEBPACK_IMPORTED_MODULE_42__["default"].setConf(conf.requirement); _errorRenderer__WEBPACK_IMPORTED_MODULE_43__["default"].setConf(conf.class); } -/** - * - */ - function reinitialize() {// `mermaidAPI.reinitialize: v${pkg.version}`, // JSON.stringify(options), @@ -26484,9 +26357,7 @@ function reinitialize() {// `mermaidAPI.reinitialize: v${pkg.version}`, // setLogLevel(config.logLevel); // log.debug('mermaidAPI.reinitialize: ', config); } -/** - * @param {any} options - */ +/** @param {any} options */ function initialize(options) { @@ -26551,58 +26422,58 @@ _config__WEBPACK_IMPORTED_MODULE_2__.reset(_config__WEBPACK_IMPORTED_MODULE_2__. * ```html * @@ -26747,7 +26618,10 @@ var Theme = /*#__PURE__*/function () { /** # Base variables */ - /** * background - used to know what the background color is of the diagram. This is used for deducing colors for istance line color. Defaulr value is #f4f4f4. */ + /** + * - Background - used to know what the background color is of the diagram. This is used for + * deducing colors for istance line color. Defaulr value is #f4f4f4. + */ this.background = '#f4f4f4'; this.darkMode = false; // this.background = '#0c0c0c'; // this.darkMode = true; @@ -28198,34 +28072,36 @@ var directive = /[%]{2}[{]\s*(?:(?:(\w+)\s*:|(\w+))\s*(?:(?:(\w+))|((?:(?![}][%] var directiveWithoutOpen = /\s*(?:(?:(\w+)(?=:):|(\w+))\s*(?:(?:(\w+))|((?:(?![}][%]{2}).|\r?\n)*))?\s*)(?:[}][%]{2})?/gi; var anyComment = /\s*%%.*\n/gm; /** - * @function detectInit - * Detects the init config object from the text - * ```mermaid - * %%{init: {"theme": "debug", "logLevel": 1 }}%% - * graph LR - * a-->b - * b-->c - * c-->d - * d-->e - * e-->f - * f-->g - * g-->h + * @function detectInit Detects the init config object from the text + * + * ```mermaid + * %%{init: {"theme": "debug", "logLevel": 1 }}%% + * graph LR + * a-->b + * b-->c + * c-->d + * d-->e + * e-->f + * f-->g + * g-->h * ``` - * or - * ```mermaid - * %%{initialize: {"theme": "dark", logLevel: "debug" }}%% - * graph LR - * a-->b - * b-->c - * c-->d - * d-->e - * e-->f - * f-->g - * g-->h + * + * Or + * + * ```mermaid + * %%{initialize: {"theme": "dark", logLevel: "debug" }}%% + * graph LR + * a-->b + * b-->c + * c-->d + * d-->e + * e-->f + * f-->g + * g-->h * ``` * @param {string} text The text defining the graph * @param {any} cnf - * @returns {object} the json object representing the init passed to mermaid.initialize() + * @returns {object} The json object representing the init passed to mermaid.initialize() */ var detectInit = function detectInit(text, cnf) { @@ -28260,24 +28136,25 @@ var detectInit = function detectInit(text, cnf) { return results; }; /** - * @function detectDirective - * Detects the directive from the text. Text can be single line or multiline. If type is null or omitted - * the first directive encountered in text will be returned - * ```mermaid - * graph LR - * %%{somedirective}%% - * a-->b - * b-->c - * c-->d - * d-->e - * e-->f - * f-->g - * g-->h + * @function detectDirective Detects the directive from the text. Text can be single line or + * multiline. If type is null or omitted the first directive encountered in text will be returned + * + * ```mermaid + * graph LR + * %%{somedirective}%% + * a-->b + * b-->c + * c-->d + * d-->e + * e-->f + * f-->g + * g-->h * ``` * @param {string} text The text defining the graph - * @param {string|RegExp} type The directive to return (default: null) - * @returns {object | Array} An object or Array representing the directive(s): { type: string, args: object|null } matched by the input type - * if a single directive was found, that directive object will be returned. + * @param {string | RegExp} type The directive to return (default: null) + * @returns {object | Array} An object or Array representing the directive(s): { type: string, args: + * object|null } matched by the input type if a single directive was found, that directive object + * will be returned. */ var detectDirective = function detectDirective(text) { @@ -28324,19 +28201,19 @@ var detectDirective = function detectDirective(text) { } }; /** - * @function detectType - * Detects the type of the graph text. Takes into consideration the possible existence of an %%init - * directive - * ```mermaid - * %%{initialize: {"startOnLoad": true, logLevel: "fatal" }}%% - * graph LR - * a-->b - * b-->c - * c-->d - * d-->e - * e-->f - * f-->g - * g-->h + * @function detectType Detects the type of the graph text. Takes into consideration the possible + * existence of an %%init directive + * + * ```mermaid + * %%{initialize: {"startOnLoad": true, logLevel: "fatal" }}%% + * graph LR + * a-->b + * b-->c + * c-->d + * d-->e + * e-->f + * f-->g + * g-->h * ``` * @param {string} text The text defining the graph * @param {any} cnf @@ -28423,11 +28300,10 @@ var memoize = function memoize(fn, resolver) { }; }; /** - * @function isSubstringInArray - * Detects whether a substring in present in a given array + * @function isSubstringInArray Detects whether a substring in present in a given array * @param {string} str The substring to detect * @param {Array} arr The array to search - * @returns {number} the array index containing the substring or -1 if not present + * @returns {number} The array index containing the substring or -1 if not present */ @@ -28586,7 +28462,7 @@ var calcCardinalityPosition = function calcCardinalityPosition(isRelationTypePre return cardinalityPosition; }; /** - * position ['start_left', 'start_right', 'end_left', 'end_right'] + * Position ['start_left', 'start_right', 'end_left', 'end_right'] * * @param {any} terminalMarkerSize * @param {any} position @@ -28719,30 +28595,27 @@ var random = function random(options) { return makeid(options.length); }; /** - * @function assignWithDepth - * Extends the functionality of {@link ObjectConstructor.assign} with the ability to merge arbitrary-depth objects - * For each key in src with path `k` (recursively) performs an Object.assign(dst[`k`], src[`k`]) with - * a slight change from the typical handling of undefined for dst[`k`]: instead of raising an error, - * dst[`k`] is auto-initialized to {} and effectively merged with src[`k`] - *

- * Additionally, dissimilar types will not clobber unless the config.clobber parameter === true. Example: - * ``` - * let config_0 = { foo: { bar: 'bar' }, bar: 'foo' }; - * let config_1 = { foo: 'foo', bar: 'bar' }; - * let result = assignWithDepth(config_0, config_1); - * console.log(result); - * //-> result: { foo: { bar: 'bar' }, bar: 'bar' } - * ``` - *

- * Traditional Object.assign would have clobbered foo in config_0 with foo in config_1. - *

- * If src is a destructured array of objects and dst is not an array, assignWithDepth will apply each element of src to dst - * in order. - * @param {any} dst - the destination of the merge - * @param {any} src - the source object(s) to merge into destination - * @param {{ depth: number, clobber: boolean }} config - depth: depth to traverse within src and dst for merging - - * clobber: should dissimilar types clobber (default: { depth: 2, clobber: false }) - * @returns {*} + * @function assignWithDepth Extends the functionality of {@link ObjectConstructor.assign} with the + * ability to merge arbitrary-depth objects For each key in src with path `k` (recursively) + * performs an Object.assign(dst[`k`], src[`k`]) with a slight change from the typical handling of + * undefined for dst[`k`]: instead of raising an error, dst[`k`] is auto-initialized to {} and + * effectively merged with src[`k`]

Additionally, dissimilar types will not clobber unless the + * config.clobber parameter === true. Example: + * + * let config_0 = { foo: { bar: 'bar' }, bar: 'foo' }; + * let config_1 = { foo: 'foo', bar: 'bar' }; + * let result = assignWithDepth(config_0, config_1); + * console.log(result); + * //-> result: { foo: { bar: 'bar' }, bar: 'bar' }

+ * + * Traditional Object.assign would have clobbered foo in config_0 with foo in config_1.

If src is + * a destructured array of objects and dst is not an array, assignWithDepth will apply each + * element of src to dst in order. + * @param {any} dst - The destination of the merge + * @param {any} src - The source object(s) to merge into destination + * @param {{ depth: number; clobber: boolean }} config - Depth: depth to traverse within src and dst + * for merging - clobber: should dissimilar types clobber (default: { depth: 2, clobber: false }) + * @returns {any} */ var assignWithDepth = function assignWithDepth(dst, src, config) { @@ -28917,14 +28790,13 @@ var breakString = memoize(function (word, maxWidth) { return "".concat(word, "-").concat(maxWidth, "-").concat(hyphenCharacter, "-").concat(config.fontSize, "-").concat(config.fontWeight, "-").concat(config.fontFamily); }); /** - * This calculates the text's height, taking into account the wrap breaks and - * both the statically configured height, width, and the length of the text (in pixels). + * This calculates the text's height, taking into account the wrap breaks and both the statically + * configured height, width, and the length of the text (in pixels). * - * If the wrapped text text has greater height, we extend the height, so it's - * value won't overflow. + * If the wrapped text text has greater height, we extend the height, so it's value won't overflow. * - * @param {any} text the text to measure - * @param {any} config - the config for fontSize, fontFamily, and fontWeight all impacting the resulting size + * @param {any} text The text to measure + * @param {any} config - The config for fontSize, fontFamily, and fontWeight all impacting the resulting size * @returns {any} - The height for the given text */ @@ -28941,7 +28813,7 @@ var calculateTextHeight = function calculateTextHeight(text, config) { * This calculates the width of the given text, font size and family. * * @param {any} text - The text to calculate the width of - * @param {any} config - the config for fontSize, fontFamily, and fontWeight all impacting the resulting size + * @param {any} config - The config for fontSize, fontFamily, and fontWeight all impacting the resulting size * @returns {any} - The width for the given text */ @@ -28957,7 +28829,8 @@ var calculateTextWidth = function calculateTextWidth(text, config) { * This calculates the dimensions of the given text, font size, font family, font weight, and margins. * * @param {any} text - The text to calculate the width of - * @param {any} config - the config for fontSize, fontFamily, fontWeight, and margin all impacting the resulting size + * @param {any} config - The config for fontSize, fontFamily, fontWeight, and margin all impacting + * the resulting size * @returns - The width for the given text */ @@ -29938,7 +29811,7 @@ module.exports = require("stylis"); /***/ ((module) => { "use strict"; -module.exports = JSON.parse('{"name":"mermaid","version":"8.13.3","description":"Markdownish syntax for generating flowcharts, sequence diagrams, class diagrams, gantt charts and git graphs.","main":"dist/mermaid.core.js","module":"dist/mermaid.esm.min.mjs","exports":{".":{"require":"./dist/mermaid.core.js","import":"./dist/mermaid.esm.min.mjs"},"./*":"./*"},"keywords":["diagram","markdown","flowchart","sequence diagram","gantt","class diagram","git graph"],"scripts":{"build:development":"webpack --progress --color","build:production":"yarn build:development --mode production --config webpack.config.prod.babel.js","build":"concurrently \\"yarn build:development\\" \\"yarn build:production\\"","postbuild":"documentation build src/mermaidAPI.js src/config.js src/defaultConfig.js --shallow -f md --markdown-toc false > docs/Setup.md","build:watch":"yarn build:development --watch","release":"yarn build","lint":"eslint src","lint:fix":"yarn lint --fix","e2e:depr":"yarn lint && jest e2e --config e2e/jest.config.js","cypress":"percy exec -- cypress run","e2e":"start-server-and-test dev http://localhost:9000/ cypress","e2e-upd":"yarn lint && jest e2e -u --config e2e/jest.config.js","dev":"webpack serve --config webpack.config.e2e.js","test":"yarn lint && jest src/.*","test:watch":"jest --watch src","prepublishOnly":"yarn build && yarn test","prepare":"yarn build"},"repository":{"type":"git","url":"https://github.com/knsv/mermaid"},"author":"Knut Sveidqvist","license":"MIT","standard":{"ignore":["**/parser/*.js","dist/**/*.js","cypress/**/*.js"],"globals":["page"]},"dependencies":{"@braintree/sanitize-url":"^3.1.0","d3":"^7.0.0","dagre":"^0.8.5","dagre-d3":"^0.6.4","dompurify":"2.3.3","graphlib":"^2.1.8","khroma":"^1.4.1","moment-mini":"^2.24.0","stylis":"^4.0.10"},"devDependencies":{"@babel/core":"^7.14.6","@babel/eslint-parser":"^7.14.7","@babel/preset-env":"^7.14.7","@babel/register":"^7.14.5","@percy/cli":"^1.0.0-beta.58","@percy/cypress":"^3.1.0","@percy/migrate":"^0.11.0","babel-jest":"^27.0.6","babel-loader":"^8.2.2","concurrently":"^6.2.2","coveralls":"^3.0.2","css-to-string-loader":"^0.1.3","cypress":"8.7.0","documentation":"13.2.0","eslint":"^8.0.0","eslint-config-prettier":"^8.3.0","eslint-plugin-jsdoc":"^37.0.3","eslint-plugin-prettier":"^4.0.0","husky":"^7.0.1","identity-obj-proxy":"^3.0.0","jest":"^27.0.6","jison":"^0.4.18","js-base64":"3.7.2","moment":"^2.23.0","path-browserify":"^1.0.1","prettier":"^2.3.2","start-server-and-test":"^1.12.6","terser-webpack-plugin":"^5.2.4","webpack":"^5.53.0","webpack-cli":"^4.7.2","webpack-dev-server":"^4.3.0","webpack-node-externals":"^3.0.0"},"files":["dist"],"sideEffects":["**/*.css","**/*.scss"],"husky":{"hooks":{"pre-push":"yarn test"}}}'); +module.exports = JSON.parse('{"name":"mermaid","version":"8.13.3","description":"Markdownish syntax for generating flowcharts, sequence diagrams, class diagrams, gantt charts and git graphs.","main":"dist/mermaid.core.js","module":"dist/mermaid.esm.min.mjs","exports":{".":{"require":"./dist/mermaid.core.js","import":"./dist/mermaid.esm.min.mjs"},"./*":"./*"},"keywords":["diagram","markdown","flowchart","sequence diagram","gantt","class diagram","git graph"],"scripts":{"build:development":"webpack --progress --color","build:production":"yarn build:development --mode production --config webpack.config.prod.babel.js","build":"concurrently \\"yarn build:development\\" \\"yarn build:production\\"","postbuild":"documentation build src/mermaidAPI.js src/config.js src/defaultConfig.js --shallow -f md --markdown-toc false > docs/Setup.md","build:watch":"yarn build:development --watch","release":"yarn build","lint":"eslint src","lint:fix":"yarn lint --fix","e2e:depr":"yarn lint && jest e2e --config e2e/jest.config.js","cypress":"percy exec -- cypress run","e2e":"start-server-and-test dev http://localhost:9000/ cypress","e2e-upd":"yarn lint && jest e2e -u --config e2e/jest.config.js","dev":"webpack serve --config webpack.config.e2e.js","test":"yarn lint && jest src/.*","test:watch":"jest --watch src","prepublishOnly":"yarn build && yarn test","prepare":"yarn build"},"repository":{"type":"git","url":"https://github.com/knsv/mermaid"},"author":"Knut Sveidqvist","license":"MIT","standard":{"ignore":["**/parser/*.js","dist/**/*.js","cypress/**/*.js"],"globals":["page"]},"dependencies":{"@braintree/sanitize-url":"^3.1.0","d3":"^7.0.0","dagre":"^0.8.5","dagre-d3":"^0.6.4","dompurify":"2.3.3","graphlib":"^2.1.8","khroma":"^1.4.1","moment-mini":"^2.24.0","stylis":"^4.0.10"},"devDependencies":{"@babel/core":"^7.14.6","@babel/eslint-parser":"^7.14.7","@babel/preset-env":"^7.14.7","@babel/register":"^7.14.5","@percy/cli":"^1.0.0-beta.58","@percy/cypress":"^3.1.0","@percy/migrate":"^0.11.0","babel-jest":"^27.0.6","babel-loader":"^8.2.2","concurrently":"^6.2.2","coveralls":"^3.0.2","css-to-string-loader":"^0.1.3","cypress":"8.7.0","documentation":"13.2.0","eslint":"^8.0.0","eslint-config-prettier":"^8.3.0","eslint-plugin-jsdoc":"^37.0.3","eslint-plugin-prettier":"^4.0.0","husky":"^7.0.1","identity-obj-proxy":"^3.0.0","jest":"^27.0.6","jison":"^0.4.18","js-base64":"3.7.2","moment":"^2.23.0","path-browserify":"^1.0.1","prettier":"^2.3.2","prettier-plugin-jsdoc":"^0.3.30","start-server-and-test":"^1.12.6","terser-webpack-plugin":"^5.2.4","webpack":"^5.53.0","webpack-cli":"^4.7.2","webpack-dev-server":"^4.3.0","webpack-node-externals":"^3.0.0"},"files":["dist"],"sideEffects":["**/*.css","**/*.scss"],"husky":{"hooks":{"pre-push":"yarn test"}}}'); /***/ }) diff --git a/dist/mermaid.core.js.map b/dist/mermaid.core.js.map index d67083f1f..6e0a00608 100644 --- a/dist/mermaid.core.js.map +++ b/dist/mermaid.core.js.map @@ -1 +1 @@ -{"version":3,"file":"mermaid.core.js","mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;;;;;;;;;;ACVA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oJAAoJ;AACpJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,4BAA4B;AAC1C,MAAM;AACN,WAAW,4uCAA4uC;AACvvC,aAAa,yvBAAyvB;AACtwB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA,iDAAiD,wBAAwB;AACzE;AACA;AACA,sBAAsB,mCAAmC;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA,kCAAkC;AAClC;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB,qCAAqC;AACvD;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB,+BAA+B;AACjD;AACA;AACA,kBAAkB,uCAAuC;AACzD;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB,+CAA+C;AACjE;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,SAAS,kEAAkE,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,mEAAmE,EAAE,QAAQ,sDAAsD,gBAAgB,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,uBAAuB,oBAAoB,sMAAsM,EAAE,UAAU,EAAE,gBAAgB,EAAE,UAAU,EAAE,UAAU,EAAE,oBAAoB,eAAe,UAAU,kHAAkH,gFAAgF,GAAG,8CAA8C,8BAA8B,2BAA2B,EAAE,8CAA8C,EAAE,8CAA8C,EAAE,8CAA8C,EAAE,UAAU,eAAe,wDAAwD,gBAAgB,UAAU,mHAAmH,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,gNAAgN,gBAAgB,wDAAwD,EAAE,4DAA4D,gBAAgB,oBAAoB,eAAe,kCAAkC,oGAAoG,oBAAoB,GAAG,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,oBAAoB,EAAE,2BAA2B,4CAA4C,UAAU,EAAE,UAAU,gBAAgB,8CAA8C,EAAE,wDAAwD,eAAe,kCAAkC,iBAAiB,2BAA2B,EAAE,aAAa,EAAE,8CAA8C,eAAe,UAAU,gBAAgB,oBAAoB,gBAAgB,oBAAoB,gBAAgB,sBAAsB,2DAA2D,+CAA+C,6BAA6B,WAAW,GAAG,WAAW,EAAE,wBAAwB,yDAAyD,WAAW,8BAA8B,WAAW,8BAA8B,WAAW,iBAAiB,cAAc,gBAAgB,UAAU,4CAA4C,WAAW;AACh1F,iBAAiB,8FAA8F;AAC/G;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,kCAAkC;AAClC,sBAAsB;AACtB;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL,sDAAsD;AACtD;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,WAAW;AACX;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA,yBAAyB,6BAA6B;AACtD;AACA,yBAAyB,iBAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,iCAAiC;AAChE;AACA;AACA;AACA;AACA;AACA,wCAAwC,mBAAmB;AAC3D;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,iBAAiB,yIAAyI,8BAA8B,mBAAmB,yBAAyB,gIAAgI,oBAAoB,WAAW,yBAAyB,0fAA0f,EAAE,MAAM,YAAY,EAAE;AAC56B,aAAa,iBAAiB,gCAAgC,mBAAmB,gCAAgC,mBAAmB,8BAA8B,kBAAkB,kCAAkC,kBAAkB,qCAAqC,SAAS,kCAAkC,WAAW,2CAA2C,YAAY,kCAAkC,aAAa,kCAAkC,WAAW,kCAAkC,YAAY;AACpgB,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAgE;AACpE,cAAc;AACd,cAAc;AACd,aAAa,iBAAiB;AAC9B,YAAY;AACZ;AACA;AACA;AACA;AACA,iBAAiB,qDAA0B,CAAC,sFAAyB;AACrE;AACA;AACA,IAAI,KAA6B,IAAI,4CAAY;AACjD;AACA;AACA;;;;;;;;;;;ACt3BA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oJAAoJ;AACpJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,4BAA4B;AAC1C,MAAM;AACN,WAAW,kqBAAkqB;AAC7qB,aAAa,oWAAoW;AACjX;AACA;AACA;;AAEA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uEAAuE;AACvE;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,mCAAmC;AACrD;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,YAAY;AACZ;AACA;AACA,YAAY;AACZ;AACA;AACA,YAAY;AACZ;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB,kEAAkE;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA,qBAAqB;AACrB;AACA;AACA,CAAC;AACD,SAAS,0BAA0B,EAAE,MAAM,cAAc,IAAI,GAAG,0BAA0B,EAAE,cAAc,EAAE,UAAU,EAAE,qEAAqE,EAAE,QAAQ,EAAE,uBAAuB,gCAAgC,QAAQ,gBAAgB,oCAAoC,uDAAuD,kDAAkD,8CAA8C,UAAU,EAAE,gBAAgB,EAAE,UAAU,eAAe,aAAa,EAAE,mCAAmC,EAAE,0BAA0B,uEAAuE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,gBAAgB,mCAAmC,EAAE,gBAAgB,EAAE,UAAU,EAAE,kCAAkC,8BAA8B,UAAU,EAAE,0BAA0B,gBAAgB,UAAU,eAAe,0BAA0B,2BAA2B,UAAU,uEAAuE,UAAU;AAClkC,iBAAiB,mEAAmE;AACpF;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,kCAAkC;AAClC,sBAAsB;AACtB;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL,sDAAsD;AACtD;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AACA;AACA;AACA,sCAAsC;AACtC;AACA,sCAAsC;AACtC;AACA,yBAAyB,6BAA6B;AACtD;AACA,yBAAyB,iBAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,iBAAiB,kBAAkB,gCAAgC,oBAAoB,yBAAyB,oBAAoB,gGAAgG,2GAA2G,mCAAmC,cAAc,uCAAuC,aAAa;AACpb,aAAa,kBAAkB,8BAA8B,mBAAmB,gCAAgC,kBAAkB,gCAAgC,UAAU,iDAAiD,YAAY;AACzO,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAgE;AACpE,cAAc;AACd,cAAc;AACd,aAAa,iBAAiB;AAC9B,YAAY;AACZ;AACA;AACA;AACA;AACA,iBAAiB,qDAA0B,CAAC,sFAAyB;AACrE;AACA;AACA,IAAI,KAA6B,IAAI,4CAAY;AACjD;AACA;AACA;;;;;;;;;;;ACjwBA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oJAAoJ;AACpJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,4BAA4B;AAC1C,MAAM;AACN,WAAW,qzDAAqzD;AACh0D,aAAa,wkCAAwkC;AACrlC;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA,2BAA2B;AAC3B;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,8CAA8C,WAAW;AACtG;AACA;AACA,+CAA+C,gDAAgD,WAAW;AAC1G;AACA;AACA,iCAAiC,aAAa;AAC9C;AACA;AACA,gCAAgC,aAAa;AAC7C;AACA;AACA,iCAAiC;AACjC;AACA;AACA,mCAAmC,qDAAqD;AACxF;AACA;AACA,oBAAoB;AACpB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA;AACA,uBAAuB;AACvB;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,6CAA6C,UAAU;AACvD;AACA;AACA,kCAAkC,UAAU;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB,qCAAqC;AACvD;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB,+CAA+C;AACjE;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB,+BAA+B;AACjD;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB,uCAAuC;AACzD;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB,8CAA8C;AAChE;AACA;AACA,kBAAkB,4CAA4C;AAC9D;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACt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AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,kCAAkC;AAClC,sBAAsB;AACtB;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL,sDAAsD;AACtD;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,WAAW;AACX;AACA;AACA;AACA,sCAAsC;AACtC;AACA,sCAAsC;AACtC;AACA,yBAAyB,6BAA6B;AACtD;AACA,yBAAyB,iBAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,qBAAqB;AACrD;AACA,gCAAgC,qBAAqB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,iBAAiB,iBAAiB,8BAA8B,mBAAmB,yBAAyB,mBAAmB,0xBAA0xB,mzJAAmzJ,UAAU;AACttL,aAAa,mBAAmB,6BAA6B,kBAAkB,gCAAgC,mBAAmB,gCAAgC,mBAAmB,8BAA8B,iBAAiB,kCAAkC,iBAAiB,qCAAqC,SAAS,kCAAkC,UAAU,kCAAkC,WAAW,6BAA6B,QAAQ,6DAA6D,WAAW,gCAAgC,YAAY;AACvjB,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAgE;AACpE,cAAc;AACd,cAAc;AACd,aAAa,iBAAiB;AAC9B,YAAY;AACZ;AACA;AACA;AACA;AACA,iBAAiB,qDAA0B,CAAC,sFAAyB;AACrE;AACA;AACA,IAAI,KAA6B,IAAI,4CAAY;AACjD;AACA;AACA;;;;;;;;;;;AC7/BA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oJAAoJ;AACpJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,4BAA4B;AAC1C,MAAM;AACN,WAAW,6iBAA6iB;AACxjB,aAAa,kWAAkW;AAC/W;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA,6BAA6B;AAC7B;AACA;AACA,aAAa;AACb;AACA;AACA,oCAAoC;AACpC;AACA;AACA,iCAAiC;AACjC;AACA;AACA,iCAAiC;AACjC;AACA;AACA,qCAAqC;AACrC;AACA;AACA,8BAA8B;AAC9B;AACA;AACA,gCAAgC;AAChC;AACA;AACA,4BAA4B;AAC5B;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB,2CAA2C;AAC7D;AACA;AACA,kBAAkB,+CAA+C;AACjE;AACA;AACA,kBAAkB,yCAAyC;AAC3D;AACA;AACA,kBAAkB,6CAA6C;AAC/D;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA,qBAAqB;AACrB;AACA;AACA,CAAC;AACD,SAAS,0BAA0B,EAAE,MAAM,EAAE,0BAA0B,cAAc,IAAI,GAAG,cAAc,EAAE,UAAU,EAAE,QAAQ,EAAE,2IAA2I,EAAE,uBAAuB,gCAAgC,QAAQ,gBAAgB,0GAA0G,uKAAuK,UAAU,gBAAgB,oBAAoB,EAAE,UAAU,EAAE,gBAAgB,EAAE,UAAU,0CAA0C,oBAAoB,gBAAgB,UAAU,iBAAiB,aAAa,EAAE,UAAU,eAAe,UAAU,8BAA8B,UAAU,GAAG,UAAU;AACv5B,iBAAiB,qCAAqC;AACtD;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,kCAAkC;AAClC,sBAAsB;AACtB;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL,sDAAsD;AACtD;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AACA;AACA;AACA,sCAAsC;AACtC;AACA,sCAAsC;AACtC;AACA,yBAAyB,6BAA6B;AACtD;AACA,yBAAyB,iBAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,iBAAiB,kBAAkB,gCAAgC,oBAAoB,0BAA0B,qBAAqB,8TAA8T,2EAA2E,2BAA2B,2BAA2B,6BAA6B,qDAAqD,2BAA2B,kBAAkB,kBAAkB;AACttB,aAAa,mBAAmB,6BAA6B,kBAAkB,gCAAgC,mBAAmB,gCAAgC,mBAAmB,8BAA8B,iBAAiB,kCAAkC,iBAAiB,qCAAqC,SAAS,kCAAkC,UAAU,kCAAkC,YAAY;AAC/Z,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAgE;AACpE,cAAc;AACd,cAAc;AACd,aAAa,iBAAiB;AAC9B,YAAY;AACZ;AACA;AACA;AACA;AACA,iBAAiB,qDAA0B,CAAC,sFAAyB;AACrE;AACA;AACA,IAAI,KAA6B,IAAI,4CAAY;AACjD;AACA;AACA;;;;;;;;;;;AC7vBA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oJAAoJ;AACpJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,4BAA4B;AAC1C,MAAM;AACN,WAAW,uSAAuS;AAClT,aAAa,0JAA0J;AACvK;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,SAAS,YAAY,EAAE,MAAM,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,QAAQ,EAAE,QAAQ,cAAc,gBAAgB,gBAAgB,sBAAsB,EAAE,QAAQ,EAAE,gFAAgF,eAAe,SAAS,eAAe,UAAU,gBAAgB,0BAA0B,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,0BAA0B,EAAE,QAAQ,eAAe,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,UAAU,EAAE,oBAAoB,EAAE,UAAU,EAAE,UAAU;AAC1lB,iBAAiB,2GAA2G;AAC5H;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,kCAAkC;AAClC,sBAAsB;AACtB;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL,sDAAsD;AACtD;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,aAAa,WAAW,kCAAkC,WAAW,kCAAkC,YAAY;AACnH,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAgE;AACpE,cAAc;AACd,cAAc;AACd,aAAa,iBAAiB;AAC9B,YAAY;AACZ;AACA;AACA;AACA;AACA,iBAAiB,qDAA0B,CAAC,sFAAyB;AACrE;AACA;AACA,IAAI,KAA6B,IAAI,4CAAY;AACjD;AACA;AACA;;;;;;;;;;;ACvrBA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oJAAoJ;AACpJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,4BAA4B;AAC1C,MAAM;AACN,WAAW,mHAAmH;AAC9H,aAAa,gDAAgD;AAC7D;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,SAAS,YAAY,EAAE,MAAM,cAAc,IAAI,GAAG,iCAAiC,EAAE,QAAQ;AAC7F,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,kCAAkC;AAClC,sBAAsB;AACtB;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL,sDAAsD;AACtD;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,aAAa,WAAW;AACxB,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAgE;AACpE,cAAc;AACd,cAAc;AACd,aAAa,iBAAiB;AAC9B,YAAY;AACZ;AACA;AACA;AACA;AACA,iBAAiB,qDAA0B,CAAC,sFAAyB;AACrE;AACA;AACA,IAAI,KAA6B,IAAI,4CAAY;AACjD;AACA;AACA;;;;;;;;;;;AC7mBA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oJAAoJ;AACpJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,4BAA4B;AAC1C,MAAM;AACN,WAAW,sPAAsP,mHAAmH;AACpX,aAAa,wGAAwG,2FAA2F;AAChN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA,qBAAqB;AACrB;AACA;AACA,CAAC;AACD,SAAS,mDAAmD,EAAE,MAAM,EAAE,oDAAoD,EAAE,oDAAoD,YAAY,cAAc,6CAA6C,gBAAgB,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,YAAY,kDAAkD,aAAa,KAAK,GAAG,uBAAuB,iCAAiC,0BAA0B,EAAE,UAAU,EAAE,UAAU,0BAA0B,kDAAkD,iBAAiB,gBAAgB,wDAAwD,aAAa,EAAE,UAAU;AAClqB,iBAAiB,qCAAqC;AACtD;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,kCAAkC;AAClC,sBAAsB;AACtB;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL,sDAAsD;AACtD;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AACA;AACA;AACA,sCAAsC;AACtC;AACA,sCAAsC;AACtC;AACA,yBAAyB,6BAA6B;AACtD;AACA,yBAAyB,iBAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA,4BAA4B,kBAAkB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,iBAAiB,kBAAkB,gCAAgC,oBAAoB,0BAA0B,oBAAoB;AACrI,aAAa,mBAAmB,6BAA6B,kBAAkB,gCAAgC,mBAAmB,gCAAgC,mBAAmB,8BAA8B,UAAU,+BAA+B,WAAW,kCAAkC,YAAY;AACrT,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAgE;AACpE,cAAc;AACd,cAAc;AACd,aAAa,iBAAiB;AAC9B,YAAY;AACZ;AACA;AACA;AACA;AACA,iBAAiB,qDAA0B,CAAC,sFAAyB;AACrE;AACA;AACA,IAAI,KAA6B,IAAI,4CAAY;AACjD;AACA;AACA;;;;;;;;;;;ACppBA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oJAAoJ;AACpJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,4BAA4B;AAC1C,MAAM;AACN,WAAW,6iCAA6iC;AACxjC,aAAa,yrBAAyrB;AACtsB;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,SAAS,yBAAyB,EAAE,MAAM,EAAE,iCAAiC,EAAE,QAAQ,EAAE,eAAe,EAAE,SAAS,EAAE,0BAA0B,EAAE,QAAQ,EAAE,8HAA8H,EAAE,uBAAuB,mBAAmB,QAAQ,EAAE,SAAS,EAAE,8HAA8H,EAAE,8HAA8H,EAAE,8HAA8H,EAAE,8HAA8H,EAAE,8HAA8H,EAAE,0BAA0B,EAAE,0BAA0B,EAAE,oBAAoB,+HAA+H,gBAAgB,eAAe,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,uDAAuD,EAAE,uDAAuD,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,oGAAoG,UAAU,eAAe,+CAA+C,EAAE,iCAAiC,EAAE,oBAAoB,EAAE,oBAAoB,gBAAgB,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,+CAA+C,8BAA8B,UAAU,EAAE,UAAU,EAAE,iCAAiC,4CAA4C,oBAAoB,EAAE,0BAA0B,EAAE,oCAAoC,EAAE,8CAA8C,gBAAgB,4BAA4B,EAAE,6BAA6B,gBAAgB,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,gDAAgD,EAAE,gDAAgD,EAAE,gDAAgD,EAAE,gDAAgD,EAAE,kCAAkC,EAAE,kCAAkC;AAC5qF,iBAAiB,2QAA2Q;AAC5R;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,kCAAkC;AAClC,sBAAsB;AACtB;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL,sDAAsD;AACtD;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AACA;AACA;AACA,sCAAsC;AACtC;AACA,sCAAsC;AACtC;AACA,yBAAyB,6BAA6B;AACtD;AACA,yBAAyB,iBAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA,CAAC;AACD,iBAAiB,kBAAkB,gCAAgC,oBAAoB,yHAAyH,WAAW,qoBAAqoB;AACh2B,aAAa,mBAAmB,6BAA6B,kBAAkB,gCAAgC,mBAAmB,gCAAgC,mBAAmB,8BAA8B,cAAc,6BAA6B,UAAU,6BAA6B,WAAW,kCAAkC,YAAY;AAC9V,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAgE;AACpE,cAAc;AACd,cAAc;AACd,aAAa,iBAAiB;AAC9B,YAAY;AACZ;AACA;AACA;AACA;AACA,iBAAiB,qDAA0B,CAAC,sFAAyB;AACrE;AACA;AACA,IAAI,KAA6B,IAAI,4CAAY;AACjD;AACA;AACA;;;;;;;;;;;AC/xBA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oJAAoJ;AACpJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,4BAA4B;AAC1C,MAAM;AACN,WAAW,m/BAAm/B;AAC9/B,aAAa,kmBAAkmB;AAC/mB;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,gDAAgD;AAC/E;AACA;AACA,+BAA+B;AAC/B;AACA;AACA,yBAAyB,gDAAgD;AACzE;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,QAAQ;AACR;AACA;AACA,SAAS,+BAA+B;AACxC;AACA;AACA;AACA,oBAAoB,0FAA0F;AAC9G,iBAAiB,qEAAqE;AACtF;AACA;AACA;AACA;AACA,oBAAoB,wFAAwF;AAC5G,iBAAiB,oFAAoF;AACrG;AACA;AACA;AACA;AACA,oBAAoB,uFAAuF;AAC3G,iBAAiB,mFAAmF;AACpG;AACA;AACA;AACA;AACA;AACA,oBAAoB,uFAAuF;AAC3G;AACA;AACA,iBAAiB,gDAAgD;AACjE;AACA;AACA;AACA;AACA;AACA,oBAAoB,uFAAuF;AAC3G;AACA;AACA,iBAAiB,gDAAgD;AACjE;AACA;AACA;AACA,4BAA4B,gFAAgF;AAC5G;AACA;AACA,4BAA4B,kFAAkF;AAC9G;AACA;AACA;AACA,uBAAuB,sEAAsE;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,qFAAqF;AAC5G;AACA;AACA;AACA,uBAAuB,mDAAmD;AAC1E;AACA;AACA;AACA;AACA,uBAAuB,mDAAmD;AAC1E;AACA;AACA;AACA;AACA,uBAAuB,wDAAwD;AAC/E;AACA;AACA;AACA;AACA,uBAAuB,qDAAqD;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,4FAA4F;AAC1H,gBAAgB;AAChB;AACA;AACA;AACA,8BAA8B,4FAA4F;AAC1H,eAAe;AACf;AACA;AACA;AACA,8BAA8B,4FAA4F;AAC1H;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA,qBAAqB;AACrB;AACA;AACA,CAAC;AACD,SAAS,sCAAsC,EAAE,MAAM,EAAE,sCAAsC,EAAE,sCAAsC,EAAE,uCAAuC,sEAAsE,KAAK,GAAG,gBAAgB,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,iNAAiN,EAAE,uBAAuB,iCAAiC,wLAAwL,4BAA4B,aAAa,EAAE,aAAa,EAAE,SAAS,gBAAgB,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,gBAAgB,sFAAsF,EAAE,oCAAoC,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,iDAAiD,SAAS,EAAE,gBAAgB,EAAE,SAAS,eAAe,mBAAmB,EAAE,mBAAmB,gBAAgB,SAAS,EAAE,SAAS,wEAAwE,SAAS,EAAE,SAAS,YAAY,KAAK,aAAa,KAAK,aAAa,KAAK,aAAa,WAAW,aAAa,WAAW,GAAG,kCAAkC,kHAAkH,cAAc,EAAE,qBAAqB,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,gBAAgB,cAAc,EAAE,UAAU,EAAE,WAAW,gBAAgB,WAAW,0DAA0D,oNAAoN,EAAE,oNAAoN,EAAE,oNAAoN,EAAE,WAAW,EAAE,8NAA8N,EAAE,WAAW,EAAE,8NAA8N,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,qBAAqB,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,0DAA0D,WAAW,gBAAgB,WAAW,EAAE,cAAc,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,sDAAsD,YAAY,aAAa,YAAY,GAAG,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AACjiH,iBAAiB,wNAAwN;AACzO;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,kCAAkC;AAClC,sBAAsB;AACtB;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL,sDAAsD;AACtD;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AACA;AACA;AACA,sCAAsC;AACtC;AACA,sCAAsC;AACtC;AACA,yBAAyB,6BAA6B;AACtD;AACA,yBAAyB,iBAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA,2BAA2B;AAC3B;AACA,yCAAyC,qBAAqB;AAC9D;AACA,0BAA0B,iBAAiB,oBAAoB;AAC/D;AACA,0BAA0B,iBAAiB;AAC3C;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,iBAAiB,kBAAkB,gCAAgC,oBAAoB,uFAAuF,oBAAoB,kEAAkE,iCAAiC,sKAAsK,oRAAoR,qBAAqB,yCAAyC,4IAA4I;AACz6B,aAAa,kBAAkB,gCAAgC,mBAAmB,kCAAkC,kBAAkB,kCAAkC,OAAO,mCAAmC,UAAU,sCAAsC,SAAS,mCAAmC,YAAY;AAC1T,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAgE;AACpE,cAAc;AACd,cAAc;AACd,aAAa,iBAAiB;AAC9B,YAAY;AACZ;AACA;AACA;AACA;AACA,iBAAiB,qDAA0B,CAAC,sFAAyB;AACrE;AACA;AACA,IAAI,KAA6B,IAAI,4CAAY;AACjD;AACA;AACA;;;;;;;;;;;ACt3BA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oJAAoJ;AACpJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,4BAA4B;AAC1C,MAAM;AACN,WAAW,khBAAkhB,qJAAqJ;AAClrB,aAAa,iVAAiV,6HAA6H;AAC3d;AACA;AACA;;AAEA;AACA;AACA;AACA,yCAAyC,yBAAyB;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,WAAW;AACvD;AACA;AACA,6DAA6D,WAAW;AACxE;AACA;AACA;AACA,2CAA2C,iCAAiC;AAC5E,iBAAiB,4BAA4B,+DAA+D,WAAW;AACvH;AACA;AACA;AACA;AACA,sEAAsE;AACtE,iBAAiB,4BAA4B,+DAA+D,WAAW,8DAA8D;AACrL;AACA;AACA;AACA;AACA,2EAA2E;AAC3E,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,2GAA2G;AAC3G,kBAAkB;AAClB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,6GAA6G;AAC7G,iBAAiB,0CAA0C;AAC3D;AACA;AACA;AACA,uBAAuB,QAAQ;AAC/B;AACA;AACA,uBAAuB,QAAQ;AAC/B;AACA;AACA,wBAAwB,QAAQ;AAChC;AACA;AACA,uBAAuB,QAAQ;AAC/B;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA,qBAAqB;AACrB;AACA;AACA,CAAC;AACD,SAAS,sCAAsC,EAAE,MAAM,EAAE,sCAAsC,EAAE,sCAAsC,EAAE,uCAAuC,gEAAgE,KAAK,GAAG,gBAAgB,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,qKAAqK,EAAE,uBAAuB,iCAAiC,4IAA4I,yCAAyC,oBAAoB,iBAAiB,UAAU,eAAe,UAAU,GAAG,UAAU,0DAA0D,oCAAoC,gIAAgI,gBAAgB,2CAA2C,oBAAoB,0BAA0B,KAAK,GAAG,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,eAAe,UAAU,GAAG,uKAAuK,eAAe,UAAU,GAAG,UAAU,EAAE,UAAU,sDAAsD,KAAK,+BAA+B,uKAAuK;AACvrD,iBAAiB,gEAAgE;AACjF;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,kCAAkC;AAClC,sBAAsB;AACtB;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL,sDAAsD;AACtD;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA,sCAAsC;AACtC;AACA,yBAAyB,6BAA6B;AACtD;AACA,yBAAyB,iBAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA,6BAA6B,kCAAkC;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,wCAAwC;AAC1E;AACA;AACA;AACA;AACA;AACA,gEAAgE;AAChE;AACA,wBAAwB,0CAA0C,yCAAyC;AAC3G;AACA,wBAAwB,yCAAyC,yCAAyC;AAC1G;AACA,wBAAwB,0CAA0C,yCAAyC;AAC3G;AACA,wBAAwB,yCAAyC,yCAAyC;AAC1G;AACA,wBAAwB,yCAAyC,yCAAyC;AAC1G;AACA,wBAAwB,0CAA0C,yCAAyC;AAC3G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD;AACA,wBAAwB,2BAA2B;AACnD;AACA,wBAAwB,uCAAuC;AAC/D;AACA;AACA;AACA,wDAAwD;AACxD;AACA,oDAAoD;AACpD;AACA;AACA;AACA,wBAAwB,0BAA0B,0CAA0C;AAC5F;AACA,wCAAwC,oBAAoB;AAC5D;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,yBAAyB,0BAA0B;AACnD;AACA,yBAAyB,0BAA0B;AACnD;AACA,yBAAyB;AACzB;AACA,wBAAwB,mCAAmC;AAC3D;AACA;AACA;AACA,2DAA2D;AAC3D;AACA,wBAAwB,8CAA8C;AACtE;AACA,yBAAyB,4BAA4B,6CAA6C;AAClG;AACA,yBAAyB,mDAAmD,2CAA2C;AACvH;AACA,yBAAyB,mDAAmD,6CAA6C;AACzH;AACA,4DAA4D;AAC5D;AACA,4DAA4D;AAC5D;AACA,qDAAqD;AACrD;AACA,iDAAiD;AACjD;AACA,2CAA2C;AAC3C;AACA,yCAAyC,sCAAsC;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,6IAA6I,kBAAkB,gCAAgC,oBAAoB,0BAA0B,oBAAoB,ocAAoc,6CAA6C,wBAAwB,WAAW,gLAAgL,oJAAoJ,qBAAqB;AAC9mC,aAAa,QAAQ,kCAAkC,oBAAoB,kCAAkC,kBAAkB,sCAAsC,mBAAmB,sCAAsC,mBAAmB,oCAAoC,WAAW,yEAAyE,qBAAqB,+BAA+B,kBAAkB,qCAAqC,cAAc,kCAAkC,YAAY,+BAA+B,SAAS,qCAAqC,UAAU,kCAAkC,UAAU,6BAA6B,aAAa,+BAA+B,iBAAiB,kCAAkC,eAAe,6BAA6B,UAAU,mEAAmE,OAAO,kCAAkC,YAAY;AAC77B,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAgE;AACpE,cAAc;AACd,cAAc;AACd,aAAa,iBAAiB;AAC9B,YAAY;AACZ;AACA;AACA;AACA;AACA,iBAAiB,qDAA0B,CAAC,sFAAyB;AACrE;AACA;AACA,IAAI,KAA6B,IAAI,4CAAY;AACjD;AACA;AACA;;;;;;;;;;;ACp0BA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oJAAoJ;AACpJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,4BAA4B;AAC1C,MAAM;AACN,WAAW,8VAA8V;AACzW,aAAa,gMAAgM;AAC7M;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA,gCAAgC;AAChC;AACA;AACA,6BAA6B;AAC7B;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA,qBAAqB;AACrB;AACA;AACA,CAAC;AACD,SAAS,0BAA0B,EAAE,MAAM,cAAc,IAAI,GAAG,0BAA0B,EAAE,cAAc,EAAE,UAAU,EAAE,6EAA6E,EAAE,QAAQ,EAAE,uBAAuB,gCAAgC,QAAQ,gBAAgB,4CAA4C,wDAAwD,UAAU,gBAAgB,UAAU,EAAE,gBAAgB,EAAE,UAAU,0CAA0C,aAAa,EAAE,UAAU,EAAE,UAAU;AACrhB,iBAAiB,qCAAqC;AACtD;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,kCAAkC;AAClC,sBAAsB;AACtB;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL,sDAAsD;AACtD;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AACA;AACA;AACA,sCAAsC;AACtC;AACA,sCAAsC;AACtC;AACA,yBAAyB,6BAA6B;AACtD;AACA,yBAAyB,iBAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,iBAAiB,kBAAkB,gCAAgC,oBAAoB,yBAAyB,o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A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACEoZ,EAAAA,QAAQ,EAAE,CA7CG;;AA+Cb;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACEC,EAAAA,aAAa,EAAE,QA1DF;;AA4Db;AACF;AACA;AACA;AACA;AACA;AACA;AACEC,EAAAA,WAAW,EAAE,IAnEA;;AAqEb;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACElO,EAAAA,mBAAmB,EAAE,KAjFR;;AAmFb;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACE3L,EAAAA,MAAM,EAAE,CAAC,QAAD,EAAW,eAAX,EAA4B,aAA5B,EAA2C,aAA3C,CA7FK;;AA+Fb;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACE8Z,EAAAA,gBAAgB,EAAE,KAzGL;;AA2Gb;AACF;AACA;AACA;AACEC,EAAAA,mBAAmB,EAAEnY,SA/GR;;AAiHb;AACF;AACA;AACEG,EAAAA,SAAS,EAAE;AACT;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIiY,IAAAA,cAAc,EAAE,CAZP;;AAcT;AACJ;AACA;AACA;AACA;AACA;AACA;AACIhY,IAAAA,UAAU,EAAE,IArBH;;AAuBT;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIiY,IAAAA,WAAW,EAAE,EAlCJ;;AAoCT;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,WAAW,EAAE,EA/CJ;;AAiDT;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI/O,IAAAA,KAAK,EAAE,OA1DE;AA2DT;AACA;AACA5I,IAAAA,OAAO,EAAE,EA7DA;;AA+DT;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI4X,IAAAA,WAAW,EAAE,IA3EJ;;AA6ET;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,eAAe,EAAE;AA1FR,GApHE;;AAiNb;AACF;AACA;AACEC,EAAAA,QAAQ,EAAE;AACR;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,eAAe,EAAE,EATT;;AAWR;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,cAAc,EAAE,EAlBR;;AAoBR;AACJ;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,cAAc,EAAE,EA3BR;;AA6BR;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,WAAW,EAAE,EArCL;;AAuCR;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACIpY,IAAAA,KAAK,EAAE,GA/CC;;AAiDR;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,MAAM,EAAE,EAzDA;;AA2DR;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACIoY,IAAAA,SAAS,EAAE,EAnEH;;AAqER;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,aAAa,EAAE,CA7EP;;AA+ER;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,UAAU,EAAE,EAvFJ;;AAyFR;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,aAAa,EAAE,EAjGP;;AAmGR;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,YAAY,EAAE,QA3GN;;AA6GR;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,YAAY,EAAE,IArHN;;AAuHR;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,UAAU,EAAE,KAhIJ;;AAkIR;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,eAAe,EAAE,CA7IT;;AA+IR;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACId,IAAAA,WAAW,EAAE,IA1JL;;AA4JR;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA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A;AACA;AACI9C,IAAAA,WAAW,EAAE,IAhIR;;AAkIL;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI+C,IAAAA,OAAO,EAAE,KA5IJ;AA8ILC,IAAAA,QAAQ,EAAEvb;AA9IL,GA/hBM;;AAgrBb;AACF;AACA;AACEwb,EAAAA,OAAO,EAAE;AACP;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACI7C,IAAAA,cAAc,EAAE,EATT;;AAWP;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,cAAc,EAAE,EAnBT;;AAqBP;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACI6C,IAAAA,UAAU,EAAE,GA7BL;;AA+BP;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACIhb,IAAAA,KAAK,EAAE,GAvCA;;AAyCP;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,MAAM,EAAE,EAjDD;;AAmDP;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACIoY,IAAAA,SAAS,EAAE,EA3DJ;;AA6DP;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,aAAa,EAAE,CArER;;AAuEP;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,UAAU,EAAE,EA/EL;;AAiFP;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,aAAa,EAAE,EA5FR;;AA8FP;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,YAAY,EAAE,QAtGP;;AAwGP;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIG,IAAAA,eAAe,EAAE,CAnHV;;AAqHP;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACId,IAAAA,WAAW,EAAE,IAjIN;;AAmIP;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIe,IAAAA,WAAW,EAAE,KA9IN;AA+IPoC,IAAAA,YAAY,EAAE,EA/IP;AAgJPC,IAAAA,cAAc,EAAE,2BAhJT;AAiJPC,IAAAA,UAAU,EAAE,EAjJL;AAkJP;AACAlD,IAAAA,eAAe,EAAE,EAnJV;AAqJP;AACAmD,IAAAA,aAAa,EAAE,IAtJR;AAuJPC,IAAAA,YAAY,EAAE,CAAC,SAAD,EAAY,SAAZ,EAAuB,SAAvB,EAAkC,SAAlC,EAA6C,SAA7C,EAAwD,SAAxD,CAvJP;AAyJPC,IAAAA,YAAY,EAAE,CAAC,SAAD,EAAY,SAAZ,EAAuB,SAAvB,EAAkC,SAAlC,EAA6C,SAA7C,EAAwD,SAAxD,EAAmE,SAAnE,CAzJP;AA0JPC,IAAAA,cAAc,EAAE,CAAC,MAAD;AA1JT,GAnrBI;AA+0Bbtc,EAAAA,KAAK,EAAE;AACLqK,IAAAA,mBAAmB,EAAE,KADhB;;AAGL;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIwO,IAAAA,WAAW,EAAE,IAfR;;AAgBL;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,eAAe,EAAE;AA7BZ,GA/0BM;AA82BbyD,EAAAA,GAAG,EAAE;AACHlS,IAAAA,mBAAmB,EAAE,KADlB;AAGHwR,IAAAA,QAAQ,EAAEvb,SAHP;;AAKH;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIuY,IAAAA,WAAW,EAAE;AAjBV,GA92BQ;AAi4BbzO,EAAAA,KAAK,EAAE;AACLoS,IAAAA,aAAa,EAAE,EADV;AAELC,IAAAA,QAAQ,EAAE,CAFL;AAGLxb,IAAAA,OAAO,EAAE,CAHJ;AAILyb,IAAAA,UAAU,EAAE,EAJP;AAKLC,IAAAA,UAAU,EAAE,CAAC,EALR;AAMLrD,IAAAA,UAAU,EAAE,EANP;AAOLsD,IAAAA,SAAS,EAAE,EAPN;AAQLC,IAAAA,UAAU,EAAE,CARP;AASL;AACAC,IAAAA,WAAW,EAAE,CAVR;AAWL;AACA;AACAC,IAAAA,cAAc,EAAE,IAbX;AAcLlC,IAAAA,QAAQ,EAAE,EAdL;AAeLmC,IAAAA,WAAW,EAAE,EAfR;AAgBLC,IAAAA,gBAAgB,EAAE,IAhBb;AAiBLC,IAAAA,iBAAiB,EAAE,EAjBd;AAkBLC,IAAAA,MAAM,EAAE,CAlBH;;AAmBL;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACItE,IAAAA,WAAW,EAAE,IA/BR;;AAgCL;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,eAAe,EAAE;AA7CZ,GAj4BM;;AAi7Bb;AACF;AACA;AACEsE,EAAAA,EAAE,EAAE;AACF;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI1E,IAAAA,cAAc,EAAE,EAZd;;AAcF;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI2E,IAAAA,eAAe,EAAE,IA3Bf;;AA6BF;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,cAAc,EAAE,GAtCd;;AAwCF;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,eAAe,EAAE,EAjDf;;AAmDF;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,aAAa,EAAE,EA9Db;;AAgEF;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,MAAM,EAAE,MAxEN;;AA0EF;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACIC,IAAAA,IAAI,EAAE,UAlFJ;;AAoFF;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI7C,IAAAA,QAAQ,EAAE,EA9FR;;AAgGF;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIhC,IAAAA,WAAW,EAAE;AA7GX,GAp7BS;;AAoiCb;AACF;AACA;AACE8E,EAAAA,GAAG,EAAE;AACH9B,IAAAA,QAAQ,EAAEvb,SADP;;AAGH;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIuY,IAAAA,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ACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,uCAAuC,8BAA8B;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,oBAAoB,sBAAsB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,WAAW,yBAAyB;AACpC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,qBAAqB;AAChC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA,YAAY;AACZ;AACA,sCAAsC;AACtC;AACA;AACA,UAAU;AACV;AACA;AACA,iDAAiD;AACjD;AACA,YAAY;AACZ;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,4CAA4C,cAAc;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,QAAQ;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gCAAgC,QAAQ;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,gDAAgD;AAChD;AACA,MAAM;AACN,gCAAgC,QAAQ;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,QAAQ;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,WAAW,YAAY;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,oFAAoF;AACpF;AACA,MAAM;AACN;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;;AAEA,8DAA8D;;AAE9D;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;;;;;;;;;;;AChhBA;;;;;;;;;;;ACAA;;;;;;;;;;;ACAA;;;;;;;;;;;ACAA;;;;;;;;;;;ACAA;;;;;;;;;;;ACAA;;;;;;;;;;;ACAA;;;;;;;;;;;ACAA;;;;;;;;;;;ACAA;;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;UCAA;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;UAEA;UACA;;;;;WC5BA;WACA;WACA;WACA;WACA;WACA,iCAAiC,WAAW;WAC5C;WACA;;;;;WCPA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA;;;;;WCPA;;;;;WCAA;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D;;;;;WCNA;WACA;WACA;WACA;WACA;;;;;UEJA;UACA;UACA;UACA","sources":["webpack://mermaid/webpack/universalModuleDefinition","webpack://mermaid/./src/diagrams/class/parser/classDiagram.jison","webpack://mermaid/./src/diagrams/er/parser/erDiagram.jison","webpack://mermaid/./src/diagrams/flowchart/parser/flow.jison","webpack://mermaid/./src/diagrams/gantt/parser/gantt.jison","webpack://mermaid/./src/diagrams/git/parser/gitGraph.jison","webpack://mermaid/./src/diagrams/info/parser/info.jison","webpack://mermaid/./src/diagrams/pie/parser/pie.jison","webpack://mermaid/./src/diagrams/requirement/parser/requirementDiagram.jison","webpack://mermaid/./src/diagrams/sequence/parser/sequenceDiagram.jison","webpack://mermaid/./src/diagrams/state/parser/stateDiagram.jison","webpack://mermaid/./src/diagrams/user-journey/parser/journey.jison","webpack://mermaid/./src/config.js","webpack://mermaid/./src/dagre-wrapper/clusters.js","webpack://mermaid/./src/dagre-wrapper/createLabel.js","webpack://mermaid/./src/dagre-wrapper/edges.js","webpack://mermaid/./src/dagre-wrapper/index.js","webpack://mermaid/./src/dagre-wrapper/intersect/index.js","webpack://mermaid/./src/dagre-wrapper/intersect/intersect-circle.js","webpack://mermaid/./src/dagre-wrapper/intersect/intersect-ellipse.js","webpack://mermaid/./src/dagre-wrapper/intersect/intersect-line.js","webpack://mermaid/./src/dagre-wrapper/intersect/intersect-node.js","webpack://mermaid/./src/dagre-wrapper/intersect/intersect-polygon.js","webpack://mermaid/./src/dagre-wrapper/intersect/intersect-rect.js","webpack://mermaid/./src/dagre-wrapper/markers.js","webpack://mermaid/./src/dagre-wrapper/mermaid-graphlib.js","webpack://mermaid/./src/dagre-wrapper/nodes.js","webpack://mermaid/./src/dagre-wrapper/shapes/note.js","webpack://mermaid/./src/dagre-wrapper/shapes/util.js","webpack://mermaid/./src/defaultConfig.js","webpack://mermaid/./src/diagrams/class/classDb.js","webpack://mermaid/./src/diagrams/class/classRenderer-v2.js","webpack://mermaid/./src/diagrams/class/classRenderer.js","webpack://mermaid/./src/diagrams/class/styles.js","webpack://mermaid/./src/diagrams/class/svgDraw.js","webpack://mermaid/./src/diagrams/common/common.js","webpack://mermaid/./src/diagrams/er/erDb.js","webpack://mermaid/./src/diagrams/er/erMarkers.js","webpack://mermaid/./src/diagrams/er/erRenderer.js","webpack://mermaid/./src/diagrams/er/styles.js","webpack://mermaid/./src/diagrams/flowchart/flowChartShapes.js","webpack://mermaid/./src/diagrams/flowchart/flowDb.js","webpack://mermaid/./src/diagrams/flowchart/flowRenderer-v2.js","webpack://mermaid/./src/diagrams/flowchart/flowRenderer.js","webpack://mermaid/./src/diagrams/flowchart/styles.js","webpack://mermaid/./src/diagrams/gantt/ganttDb.js","webpack://mermaid/./src/diagrams/gantt/ganttRenderer.js","webpack://mermaid/./src/diagrams/gantt/styles.js","webpack://mermaid/./src/diagrams/git/gitGraphAst.js","webpack://mermaid/./src/diagrams/git/gitGraphRenderer.js","webpack://mermaid/./src/diagrams/git/styles.js","webpack://mermaid/./src/diagrams/info/infoDb.js","webpack://mermaid/./src/diagrams/info/infoRenderer.js","webpack://mermaid/./src/diagrams/info/styles.js","webpack://mermaid/./src/diagrams/pie/pieDb.js","webpack://mermaid/./src/diagrams/pie/pieRenderer.js","webpack://mermaid/./src/diagrams/pie/styles.js","webpack://mermaid/./src/diagrams/requirement/requirementDb.js","webpack://mermaid/./src/diagrams/requirement/requirementMarkers.js","webpack://mermaid/./src/diagrams/requirement/requirementRenderer.js","webpack://mermaid/./src/diagrams/requirement/styles.js","webpack://mermaid/./src/diagrams/sequence/sequenceDb.js","webpack://mermaid/./src/diagrams/sequence/sequenceRenderer.js","webpack://mermaid/./src/diagrams/sequence/styles.js","webpack://mermaid/./src/diagrams/sequence/svgDraw.js","webpack://mermaid/./src/diagrams/state/id-cache.js","webpack://mermaid/./src/diagrams/state/shapes.js","webpack://mermaid/./src/diagrams/state/stateDb.js","webpack://mermaid/./src/diagrams/state/stateRenderer-v2.js","webpack://mermaid/./src/diagrams/state/stateRenderer.js","webpack://mermaid/./src/diagrams/state/styles.js","webpack://mermaid/./src/diagrams/user-journey/journeyDb.js","webpack://mermaid/./src/diagrams/user-journey/journeyRenderer.js","webpack://mermaid/./src/diagrams/user-journey/styles.js","webpack://mermaid/./src/diagrams/user-journey/svgDraw.js","webpack://mermaid/./src/errorRenderer.js","webpack://mermaid/./src/interactionDb.js","webpack://mermaid/./src/logger.js","webpack://mermaid/./src/mermaid.js","webpack://mermaid/./src/mermaidAPI.js","webpack://mermaid/./src/styles.js","webpack://mermaid/./src/themes/index.js","webpack://mermaid/./src/themes/theme-base.js","webpack://mermaid/./src/themes/theme-dark.js","webpack://mermaid/./src/themes/theme-default.js","webpack://mermaid/./src/themes/theme-forest.js","webpack://mermaid/./src/themes/theme-helpers.js","webpack://mermaid/./src/themes/theme-neutral.js","webpack://mermaid/./src/utils.js","webpack://mermaid/./node_modules/path-browserify/index.js","webpack://mermaid/external commonjs \"@braintree/sanitize-url\"","webpack://mermaid/external commonjs \"d3\"","webpack://mermaid/external commonjs \"dagre\"","webpack://mermaid/external commonjs \"dagre-d3\"","webpack://mermaid/external commonjs \"dagre-d3/lib/label/add-html-label.js\"","webpack://mermaid/external commonjs \"dompurify\"","webpack://mermaid/external commonjs \"graphlib\"","webpack://mermaid/external commonjs \"khroma\"","webpack://mermaid/external commonjs \"moment-mini\"","webpack://mermaid/external commonjs \"stylis\"","webpack://mermaid/ignored|C:\\ProgramJava\\github_projects\\mermaid\\src\\diagrams\\class\\parser|fs","webpack://mermaid/ignored|C:\\ProgramJava\\github_projects\\mermaid\\src\\diagrams\\er\\parser|fs","webpack://mermaid/ignored|C:\\ProgramJava\\github_projects\\mermaid\\src\\diagrams\\flowchart\\parser|fs","webpack://mermaid/ignored|C:\\ProgramJava\\github_projects\\mermaid\\src\\diagrams\\gantt\\parser|fs","webpack://mermaid/ignored|C:\\ProgramJava\\github_projects\\mermaid\\src\\diagrams\\git\\parser|fs","webpack://mermaid/ignored|C:\\ProgramJava\\github_projects\\mermaid\\src\\diagrams\\info\\parser|fs","webpack://mermaid/ignored|C:\\ProgramJava\\github_projects\\mermaid\\src\\diagrams\\pie\\parser|fs","webpack://mermaid/ignored|C:\\ProgramJava\\github_projects\\mermaid\\src\\diagrams\\requirement\\parser|fs","webpack://mermaid/ignored|C:\\ProgramJava\\github_projects\\mermaid\\src\\diagrams\\sequence\\parser|fs","webpack://mermaid/ignored|C:\\ProgramJava\\github_projects\\mermaid\\src\\diagrams\\state\\parser|fs","webpack://mermaid/ignored|C:\\ProgramJava\\github_projects\\mermaid\\src\\diagrams\\user-journey\\parser|fs","webpack://mermaid/webpack/bootstrap","webpack://mermaid/webpack/runtime/compat get default export","webpack://mermaid/webpack/runtime/define property getters","webpack://mermaid/webpack/runtime/hasOwnProperty shorthand","webpack://mermaid/webpack/runtime/make namespace object","webpack://mermaid/webpack/runtime/node module decorator","webpack://mermaid/webpack/before-startup","webpack://mermaid/webpack/startup","webpack://mermaid/webpack/after-startup"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"mermaid\"] = factory();\n\telse\n\t\troot[\"mermaid\"] = factory();\n})(typeof self !== \"undefined\" ? self : this, function() {\nreturn ","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,6],$V1=[1,7],$V2=[1,8],$V3=[1,9],$V4=[1,12],$V5=[1,11],$V6=[1,15,24],$V7=[1,19],$V8=[1,31],$V9=[1,34],$Va=[1,32],$Vb=[1,33],$Vc=[1,35],$Vd=[1,36],$Ve=[1,37],$Vf=[1,38],$Vg=[1,41],$Vh=[1,42],$Vi=[1,43],$Vj=[1,44],$Vk=[15,24],$Vl=[1,56],$Vm=[1,57],$Vn=[1,58],$Vo=[1,59],$Vp=[1,60],$Vq=[1,61],$Vr=[15,24,31,38,39,47,50,51,52,53,54,55,60,62],$Vs=[15,24,29,31,38,39,43,47,50,51,52,53,54,55,60,62,77,78,79,80],$Vt=[7,8,9,10,15,18,22,24],$Vu=[47,77,78,79,80],$Vv=[47,54,55,77,78,79,80],$Vw=[47,50,51,52,53,77,78,79,80],$Vx=[15,24,31],$Vy=[1,93];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"mermaidDoc\":4,\"direction\":5,\"directive\":6,\"direction_tb\":7,\"direction_bt\":8,\"direction_rl\":9,\"direction_lr\":10,\"graphConfig\":11,\"openDirective\":12,\"typeDirective\":13,\"closeDirective\":14,\"NEWLINE\":15,\":\":16,\"argDirective\":17,\"open_directive\":18,\"type_directive\":19,\"arg_directive\":20,\"close_directive\":21,\"CLASS_DIAGRAM\":22,\"statements\":23,\"EOF\":24,\"statement\":25,\"className\":26,\"alphaNumToken\":27,\"classLiteralName\":28,\"GENERICTYPE\":29,\"relationStatement\":30,\"LABEL\":31,\"classStatement\":32,\"methodStatement\":33,\"annotationStatement\":34,\"clickStatement\":35,\"cssClassStatement\":36,\"CLASS\":37,\"STYLE_SEPARATOR\":38,\"STRUCT_START\":39,\"members\":40,\"STRUCT_STOP\":41,\"ANNOTATION_START\":42,\"ANNOTATION_END\":43,\"MEMBER\":44,\"SEPARATOR\":45,\"relation\":46,\"STR\":47,\"relationType\":48,\"lineType\":49,\"AGGREGATION\":50,\"EXTENSION\":51,\"COMPOSITION\":52,\"DEPENDENCY\":53,\"LINE\":54,\"DOTTED_LINE\":55,\"CALLBACK\":56,\"LINK\":57,\"LINK_TARGET\":58,\"CLICK\":59,\"CALLBACK_NAME\":60,\"CALLBACK_ARGS\":61,\"HREF\":62,\"CSSCLASS\":63,\"commentToken\":64,\"textToken\":65,\"graphCodeTokens\":66,\"textNoTagsToken\":67,\"TAGSTART\":68,\"TAGEND\":69,\"==\":70,\"--\":71,\"PCT\":72,\"DEFAULT\":73,\"SPACE\":74,\"MINUS\":75,\"keywords\":76,\"UNICODE_TEXT\":77,\"NUM\":78,\"ALPHA\":79,\"BQUOTE_STR\":80,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",7:\"direction_tb\",8:\"direction_bt\",9:\"direction_rl\",10:\"direction_lr\",15:\"NEWLINE\",16:\":\",18:\"open_directive\",19:\"type_directive\",20:\"arg_directive\",21:\"close_directive\",22:\"CLASS_DIAGRAM\",24:\"EOF\",29:\"GENERICTYPE\",31:\"LABEL\",37:\"CLASS\",38:\"STYLE_SEPARATOR\",39:\"STRUCT_START\",41:\"STRUCT_STOP\",42:\"ANNOTATION_START\",43:\"ANNOTATION_END\",44:\"MEMBER\",45:\"SEPARATOR\",47:\"STR\",50:\"AGGREGATION\",51:\"EXTENSION\",52:\"COMPOSITION\",53:\"DEPENDENCY\",54:\"LINE\",55:\"DOTTED_LINE\",56:\"CALLBACK\",57:\"LINK\",58:\"LINK_TARGET\",59:\"CLICK\",60:\"CALLBACK_NAME\",61:\"CALLBACK_ARGS\",62:\"HREF\",63:\"CSSCLASS\",66:\"graphCodeTokens\",68:\"TAGSTART\",69:\"TAGEND\",70:\"==\",71:\"--\",72:\"PCT\",73:\"DEFAULT\",74:\"SPACE\",75:\"MINUS\",76:\"keywords\",77:\"UNICODE_TEXT\",78:\"NUM\",79:\"ALPHA\",80:\"BQUOTE_STR\"},\nproductions_: [0,[3,1],[3,1],[3,2],[5,1],[5,1],[5,1],[5,1],[4,1],[6,4],[6,6],[12,1],[13,1],[17,1],[14,1],[11,4],[23,1],[23,2],[23,3],[26,1],[26,1],[26,2],[26,2],[26,2],[25,1],[25,2],[25,1],[25,1],[25,1],[25,1],[25,1],[25,1],[25,1],[32,2],[32,4],[32,5],[32,7],[34,4],[40,1],[40,2],[33,1],[33,2],[33,1],[33,1],[30,3],[30,4],[30,4],[30,5],[46,3],[46,2],[46,2],[46,1],[48,1],[48,1],[48,1],[48,1],[49,1],[49,1],[35,3],[35,4],[35,3],[35,4],[35,4],[35,5],[35,3],[35,4],[35,4],[35,5],[35,3],[35,4],[35,4],[35,5],[36,3],[64,1],[64,1],[65,1],[65,1],[65,1],[65,1],[65,1],[65,1],[65,1],[67,1],[67,1],[67,1],[67,1],[27,1],[27,1],[27,1],[28,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 4:\n yy.setDirection('TB');\nbreak;\ncase 5:\n yy.setDirection('BT');\nbreak;\ncase 6:\n yy.setDirection('RL');\nbreak;\ncase 7:\n yy.setDirection('LR');\nbreak;\ncase 11:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 12:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 13:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 14:\n yy.parseDirective('}%%', 'close_directive', 'class'); \nbreak;\ncase 19: case 20:\n this.$=$$[$0]; \nbreak;\ncase 21:\n this.$=$$[$0-1]+$$[$0]; \nbreak;\ncase 22: case 23:\n this.$=$$[$0-1]+'~'+$$[$0]; \nbreak;\ncase 24:\n yy.addRelation($$[$0]); \nbreak;\ncase 25:\n $$[$0-1].title = yy.cleanupLabel($$[$0]); yy.addRelation($$[$0-1]); \nbreak;\ncase 33:\nyy.addClass($$[$0]);\nbreak;\ncase 34:\nyy.addClass($$[$0-2]);yy.setCssClass($$[$0-2], $$[$0]);\nbreak;\ncase 35:\n/*console.log($$[$0-3],JSON.stringify($$[$0-1]));*/yy.addClass($$[$0-3]);yy.addMembers($$[$0-3],$$[$0-1]);\nbreak;\ncase 36:\nyy.addClass($$[$0-5]);yy.setCssClass($$[$0-5], $$[$0-3]);yy.addMembers($$[$0-5],$$[$0-1]);\nbreak;\ncase 37:\n yy.addAnnotation($$[$0],$$[$0-2]); \nbreak;\ncase 38:\n this.$ = [$$[$0]]; \nbreak;\ncase 39:\n $$[$0].push($$[$0-1]);this.$=$$[$0];\nbreak;\ncase 40:\n/*console.log('Rel found',$$[$0]);*/\nbreak;\ncase 41:\nyy.addMember($$[$0-1],yy.cleanupLabel($$[$0]));\nbreak;\ncase 42:\n/*console.warn('Member',$$[$0]);*/\nbreak;\ncase 43:\n/*console.log('sep found',$$[$0]);*/\nbreak;\ncase 44:\n this.$ = {'id1':$$[$0-2],'id2':$$[$0], relation:$$[$0-1], relationTitle1:'none', relationTitle2:'none'}; \nbreak;\ncase 45:\n this.$ = {id1:$$[$0-3], id2:$$[$0], relation:$$[$0-1], relationTitle1:$$[$0-2], relationTitle2:'none'}\nbreak;\ncase 46:\n this.$ = {id1:$$[$0-3], id2:$$[$0], relation:$$[$0-2], relationTitle1:'none', relationTitle2:$$[$0-1]}; \nbreak;\ncase 47:\n this.$ = {id1:$$[$0-4], id2:$$[$0], relation:$$[$0-2], relationTitle1:$$[$0-3], relationTitle2:$$[$0-1]} \nbreak;\ncase 48:\n this.$={type1:$$[$0-2],type2:$$[$0],lineType:$$[$0-1]}; \nbreak;\ncase 49:\n this.$={type1:'none',type2:$$[$0],lineType:$$[$0-1]}; \nbreak;\ncase 50:\n this.$={type1:$$[$0-1],type2:'none',lineType:$$[$0]}; \nbreak;\ncase 51:\n this.$={type1:'none',type2:'none',lineType:$$[$0]}; \nbreak;\ncase 52:\n this.$=yy.relationType.AGGREGATION;\nbreak;\ncase 53:\n this.$=yy.relationType.EXTENSION;\nbreak;\ncase 54:\n this.$=yy.relationType.COMPOSITION;\nbreak;\ncase 55:\n this.$=yy.relationType.DEPENDENCY;\nbreak;\ncase 56:\nthis.$=yy.lineType.LINE;\nbreak;\ncase 57:\nthis.$=yy.lineType.DOTTED_LINE;\nbreak;\ncase 58: case 64:\nthis.$ = $$[$0-2];yy.setClickEvent($$[$0-1], $$[$0]);\nbreak;\ncase 59: case 65:\nthis.$ = $$[$0-3];yy.setClickEvent($$[$0-2], $$[$0-1]);yy.setTooltip($$[$0-2], $$[$0]);\nbreak;\ncase 60: case 68:\nthis.$ = $$[$0-2];yy.setLink($$[$0-1], $$[$0]);\nbreak;\ncase 61:\nthis.$ = $$[$0-3];yy.setLink($$[$0-2], $$[$0-1],$$[$0]);\nbreak;\ncase 62: case 70:\nthis.$ = $$[$0-3];yy.setLink($$[$0-2], $$[$0-1]);yy.setTooltip($$[$0-2], $$[$0]);\nbreak;\ncase 63: case 71:\nthis.$ = $$[$0-4];yy.setLink($$[$0-3], $$[$0-2], $$[$0]);yy.setTooltip($$[$0-3], $$[$0-1]);\nbreak;\ncase 66:\nthis.$ = $$[$0-3];yy.setClickEvent($$[$0-2], $$[$0-1], $$[$0]);\nbreak;\ncase 67:\nthis.$ = $$[$0-4];yy.setClickEvent($$[$0-3], $$[$0-2], $$[$0-1]);yy.setTooltip($$[$0-3], $$[$0]);\nbreak;\ncase 69:\nthis.$ = $$[$0-3];yy.setLink($$[$0-2], $$[$0-1], $$[$0]);\nbreak;\ncase 72:\nyy.setCssClass($$[$0-1], $$[$0]);\nbreak;\n}\n},\ntable: [{3:1,4:2,5:3,6:4,7:$V0,8:$V1,9:$V2,10:$V3,11:5,12:10,18:$V4,22:$V5},{1:[3]},{1:[2,1]},{1:[2,2]},{3:13,4:2,5:3,6:4,7:$V0,8:$V1,9:$V2,10:$V3,11:5,12:10,18:$V4,22:$V5},{1:[2,8]},o($V6,[2,4]),o($V6,[2,5]),o($V6,[2,6]),o($V6,[2,7]),{13:14,19:[1,15]},{15:[1,16]},{19:[2,11]},{1:[2,3]},{14:17,16:[1,18],21:$V7},o([16,21],[2,12]),{5:29,6:28,7:$V0,8:$V1,9:$V2,10:$V3,12:10,18:$V4,23:20,25:21,26:30,27:39,28:40,30:22,32:23,33:24,34:25,35:26,36:27,37:$V8,42:$V9,44:$Va,45:$Vb,56:$Vc,57:$Vd,59:$Ve,63:$Vf,77:$Vg,78:$Vh,79:$Vi,80:$Vj},{15:[1,45]},{17:46,20:[1,47]},{15:[2,14]},{24:[1,48]},{15:[1,49],24:[2,16]},o($Vk,[2,24],{31:[1,50]}),o($Vk,[2,26]),o($Vk,[2,27]),o($Vk,[2,28]),o($Vk,[2,29]),o($Vk,[2,30]),o($Vk,[2,31]),o($Vk,[2,32]),o($Vk,[2,40],{46:51,48:54,49:55,31:[1,53],47:[1,52],50:$Vl,51:$Vm,52:$Vn,53:$Vo,54:$Vp,55:$Vq}),{26:62,27:39,28:40,77:$Vg,78:$Vh,79:$Vi,80:$Vj},o($Vk,[2,42]),o($Vk,[2,43]),{27:63,77:$Vg,78:$Vh,79:$Vi},{26:64,27:39,28:40,77:$Vg,78:$Vh,79:$Vi,80:$Vj},{26:65,27:39,28:40,77:$Vg,78:$Vh,79:$Vi,80:$Vj},{26:66,27:39,28:40,77:$Vg,78:$Vh,79:$Vi,80:$Vj},{47:[1,67]},o($Vr,[2,19],{27:39,28:40,26:68,29:[1,69],77:$Vg,78:$Vh,79:$Vi,80:$Vj}),o($Vr,[2,20],{29:[1,70]}),o($Vs,[2,86]),o($Vs,[2,87]),o($Vs,[2,88]),o([15,24,29,31,38,39,47,50,51,52,53,54,55,60,62],[2,89]),o($Vt,[2,9]),{14:71,21:$V7},{21:[2,13]},{1:[2,15]},{5:29,6:28,7:$V0,8:$V1,9:$V2,10:$V3,12:10,18:$V4,23:72,24:[2,17],25:21,26:30,27:39,28:40,30:22,32:23,33:24,34:25,35:26,36:27,37:$V8,42:$V9,44:$Va,45:$Vb,56:$Vc,57:$Vd,59:$Ve,63:$Vf,77:$Vg,78:$Vh,79:$Vi,80:$Vj},o($Vk,[2,25]),{26:73,27:39,28:40,47:[1,74],77:$Vg,78:$Vh,79:$Vi,80:$Vj},{46:75,48:54,49:55,50:$Vl,51:$Vm,52:$Vn,53:$Vo,54:$Vp,55:$Vq},o($Vk,[2,41]),{49:76,54:$Vp,55:$Vq},o($Vu,[2,51],{48:77,50:$Vl,51:$Vm,52:$Vn,53:$Vo}),o($Vv,[2,52]),o($Vv,[2,53]),o($Vv,[2,54]),o($Vv,[2,55]),o($Vw,[2,56]),o($Vw,[2,57]),o($Vk,[2,33],{38:[1,78],39:[1,79]}),{43:[1,80]},{47:[1,81]},{47:[1,82]},{60:[1,83],62:[1,84]},{27:85,77:$Vg,78:$Vh,79:$Vi},o($Vr,[2,21]),o($Vr,[2,22]),o($Vr,[2,23]),{15:[1,86]},{24:[2,18]},o($Vx,[2,44]),{26:87,27:39,28:40,77:$Vg,78:$Vh,79:$Vi,80:$Vj},{26:88,27:39,28:40,47:[1,89],77:$Vg,78:$Vh,79:$Vi,80:$Vj},o($Vu,[2,50],{48:90,50:$Vl,51:$Vm,52:$Vn,53:$Vo}),o($Vu,[2,49]),{27:91,77:$Vg,78:$Vh,79:$Vi},{40:92,44:$Vy},{26:94,27:39,28:40,77:$Vg,78:$Vh,79:$Vi,80:$Vj},o($Vk,[2,58],{47:[1,95]}),o($Vk,[2,60],{47:[1,97],58:[1,96]}),o($Vk,[2,64],{47:[1,98],61:[1,99]}),o($Vk,[2,68],{47:[1,101],58:[1,100]}),o($Vk,[2,72]),o($Vt,[2,10]),o($Vx,[2,46]),o($Vx,[2,45]),{26:102,27:39,28:40,77:$Vg,78:$Vh,79:$Vi,80:$Vj},o($Vu,[2,48]),o($Vk,[2,34],{39:[1,103]}),{41:[1,104]},{40:105,41:[2,38],44:$Vy},o($Vk,[2,37]),o($Vk,[2,59]),o($Vk,[2,61]),o($Vk,[2,62],{58:[1,106]}),o($Vk,[2,65]),o($Vk,[2,66],{47:[1,107]}),o($Vk,[2,69]),o($Vk,[2,70],{58:[1,108]}),o($Vx,[2,47]),{40:109,44:$Vy},o($Vk,[2,35]),{41:[2,39]},o($Vk,[2,63]),o($Vk,[2,67]),o($Vk,[2,71]),{41:[1,110]},o($Vk,[2,36])],\ndefaultActions: {2:[2,1],3:[2,2],5:[2,8],12:[2,11],13:[2,3],19:[2,14],47:[2,13],48:[2,15],72:[2,18],105:[2,39]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\r\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0: this.begin('open_directive'); return 18; \nbreak;\ncase 1:return 7;\nbreak;\ncase 2:return 8;\nbreak;\ncase 3:return 9;\nbreak;\ncase 4:return 10;\nbreak;\ncase 5: this.begin('type_directive'); return 19; \nbreak;\ncase 6: this.popState(); this.begin('arg_directive'); return 16; \nbreak;\ncase 7: this.popState(); this.popState(); return 21; \nbreak;\ncase 8:return 20;\nbreak;\ncase 9:/* skip comments */\nbreak;\ncase 10:/* skip comments */\nbreak;\ncase 11:return 15;\nbreak;\ncase 12:/* skip whitespace */\nbreak;\ncase 13:return 22;\nbreak;\ncase 14:return 22;\nbreak;\ncase 15: this.begin(\"struct\"); /*console.log('Starting struct');*/ return 39;\nbreak;\ncase 16:return \"EOF_IN_STRUCT\";\nbreak;\ncase 17:return \"OPEN_IN_STRUCT\";\nbreak;\ncase 18: /*console.log('Ending struct');*/this.popState(); return 41;\nbreak;\ncase 19:/* nothing */\nbreak;\ncase 20: /*console.log('lex-member: ' + yy_.yytext);*/ return \"MEMBER\";\nbreak;\ncase 21:return 37;\nbreak;\ncase 22:return 63;\nbreak;\ncase 23:return 56;\nbreak;\ncase 24:return 57;\nbreak;\ncase 25:return 59;\nbreak;\ncase 26:return 42;\nbreak;\ncase 27:return 43;\nbreak;\ncase 28:this.begin(\"generic\");\nbreak;\ncase 29:this.popState();\nbreak;\ncase 30:return \"GENERICTYPE\";\nbreak;\ncase 31:this.begin(\"string\");\nbreak;\ncase 32:this.popState();\nbreak;\ncase 33:return \"STR\";\nbreak;\ncase 34:this.begin(\"bqstring\");\nbreak;\ncase 35:this.popState();\nbreak;\ncase 36:return \"BQUOTE_STR\";\nbreak;\ncase 37:this.begin(\"href\");\nbreak;\ncase 38:this.popState();\nbreak;\ncase 39:return 62;\nbreak;\ncase 40:this.begin(\"callback_name\");\nbreak;\ncase 41:this.popState();\nbreak;\ncase 42:this.popState(); this.begin(\"callback_args\");\nbreak;\ncase 43:return 60;\nbreak;\ncase 44:this.popState();\nbreak;\ncase 45:return 61;\nbreak;\ncase 46:return 58;\nbreak;\ncase 47:return 58;\nbreak;\ncase 48:return 58;\nbreak;\ncase 49:return 58;\nbreak;\ncase 50:return 51;\nbreak;\ncase 51:return 51;\nbreak;\ncase 52:return 53;\nbreak;\ncase 53:return 53;\nbreak;\ncase 54:return 52;\nbreak;\ncase 55:return 50;\nbreak;\ncase 56:return 54;\nbreak;\ncase 57:return 55;\nbreak;\ncase 58:return 31;\nbreak;\ncase 59:return 38;\nbreak;\ncase 60:return 75;\nbreak;\ncase 61:return 'DOT';\nbreak;\ncase 62:return 'PLUS';\nbreak;\ncase 63:return 72;\nbreak;\ncase 64:return 'EQUALS';\nbreak;\ncase 65:return 'EQUALS';\nbreak;\ncase 66:return 79;\nbreak;\ncase 67:return 'PUNCTUATION';\nbreak;\ncase 68:return 78;\nbreak;\ncase 69:return 77;\nbreak;\ncase 70:return 74;\nbreak;\ncase 71:return 24;\nbreak;\n}\n},\nrules: [/^(?:%%\\{)/,/^(?:.*direction\\s+TB[^\\n]*)/,/^(?:.*direction\\s+BT[^\\n]*)/,/^(?:.*direction\\s+RL[^\\n]*)/,/^(?:.*direction\\s+LR[^\\n]*)/,/^(?:((?:(?!\\}%%)[^:.])*))/,/^(?::)/,/^(?:\\}%%)/,/^(?:((?:(?!\\}%%).|\\n)*))/,/^(?:%%(?!\\{)*[^\\n]*(\\r?\\n?)+)/,/^(?:%%[^\\n]*(\\r?\\n)*)/,/^(?:\\s*(\\r?\\n)+)/,/^(?:\\s+)/,/^(?:classDiagram-v2\\b)/,/^(?:classDiagram\\b)/,/^(?:[{])/,/^(?:$)/,/^(?:[{])/,/^(?:[}])/,/^(?:[\\n])/,/^(?:[^{}\\n]*)/,/^(?:class\\b)/,/^(?:cssClass\\b)/,/^(?:callback\\b)/,/^(?:link\\b)/,/^(?:click\\b)/,/^(?:<<)/,/^(?:>>)/,/^(?:[~])/,/^(?:[~])/,/^(?:[^~]*)/,/^(?:[\"])/,/^(?:[\"])/,/^(?:[^\"]*)/,/^(?:[`])/,/^(?:[`])/,/^(?:[^`]+)/,/^(?:href[\\s]+[\"])/,/^(?:[\"])/,/^(?:[^\"]*)/,/^(?:call[\\s]+)/,/^(?:\\([\\s]*\\))/,/^(?:\\()/,/^(?:[^(]*)/,/^(?:\\))/,/^(?:[^)]*)/,/^(?:_self\\b)/,/^(?:_blank\\b)/,/^(?:_parent\\b)/,/^(?:_top\\b)/,/^(?:\\s*<\\|)/,/^(?:\\s*\\|>)/,/^(?:\\s*>)/,/^(?:\\s*<)/,/^(?:\\s*\\*)/,/^(?:\\s*o\\b)/,/^(?:--)/,/^(?:\\.\\.)/,/^(?::{1}[^:\\n;]+)/,/^(?::{3})/,/^(?:-)/,/^(?:\\.)/,/^(?:\\+)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:\\w+)/,/^(?:[!\"#$%&'*+,-.`?\\\\/])/,/^(?:[0-9]+)/,/^(?:[\\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])/,/^(?:\\s)/,/^(?:$)/],\nconditions: {\"arg_directive\":{\"rules\":[7,8],\"inclusive\":false},\"type_directive\":{\"rules\":[6,7],\"inclusive\":false},\"open_directive\":{\"rules\":[5],\"inclusive\":false},\"callback_args\":{\"rules\":[44,45],\"inclusive\":false},\"callback_name\":{\"rules\":[41,42,43],\"inclusive\":false},\"href\":{\"rules\":[38,39],\"inclusive\":false},\"struct\":{\"rules\":[16,17,18,19,20],\"inclusive\":false},\"generic\":{\"rules\":[29,30],\"inclusive\":false},\"bqstring\":{\"rules\":[35,36],\"inclusive\":false},\"string\":{\"rules\":[32,33],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,1,2,3,4,9,10,11,12,13,14,15,21,22,23,24,25,26,27,28,31,34,37,40,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,2],$V1=[1,5],$V2=[6,9,11,23,40],$V3=[1,17],$V4=[1,20],$V5=[1,25],$V6=[1,26],$V7=[1,27],$V8=[1,28],$V9=[1,37],$Va=[23,37,38],$Vb=[4,6,9,11,23,40],$Vc=[33,34,35,36],$Vd=[22,29];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"ER_DIAGRAM\":4,\"document\":5,\"EOF\":6,\"directive\":7,\"line\":8,\"SPACE\":9,\"statement\":10,\"NEWLINE\":11,\"openDirective\":12,\"typeDirective\":13,\"closeDirective\":14,\":\":15,\"argDirective\":16,\"entityName\":17,\"relSpec\":18,\"role\":19,\"BLOCK_START\":20,\"attributes\":21,\"BLOCK_STOP\":22,\"ALPHANUM\":23,\"attribute\":24,\"attributeType\":25,\"attributeName\":26,\"attributeKeyType\":27,\"COMMENT\":28,\"ATTRIBUTE_WORD\":29,\"ATTRIBUTE_KEY\":30,\"cardinality\":31,\"relType\":32,\"ZERO_OR_ONE\":33,\"ZERO_OR_MORE\":34,\"ONE_OR_MORE\":35,\"ONLY_ONE\":36,\"NON_IDENTIFYING\":37,\"IDENTIFYING\":38,\"WORD\":39,\"open_directive\":40,\"type_directive\":41,\"arg_directive\":42,\"close_directive\":43,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"ER_DIAGRAM\",6:\"EOF\",9:\"SPACE\",11:\"NEWLINE\",15:\":\",20:\"BLOCK_START\",22:\"BLOCK_STOP\",23:\"ALPHANUM\",28:\"COMMENT\",29:\"ATTRIBUTE_WORD\",30:\"ATTRIBUTE_KEY\",33:\"ZERO_OR_ONE\",34:\"ZERO_OR_MORE\",35:\"ONE_OR_MORE\",36:\"ONLY_ONE\",37:\"NON_IDENTIFYING\",38:\"IDENTIFYING\",39:\"WORD\",40:\"open_directive\",41:\"type_directive\",42:\"arg_directive\",43:\"close_directive\"},\nproductions_: [0,[3,3],[3,2],[5,0],[5,2],[8,2],[8,1],[8,1],[8,1],[7,4],[7,6],[10,1],[10,5],[10,4],[10,3],[10,1],[17,1],[21,1],[21,2],[24,2],[24,3],[24,3],[24,4],[25,1],[26,1],[27,1],[18,3],[31,1],[31,1],[31,1],[31,1],[32,1],[32,1],[19,1],[19,1],[12,1],[13,1],[16,1],[14,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 1:\n /*console.log('finished parsing');*/ \nbreak;\ncase 3:\n this.$ = [] \nbreak;\ncase 4:\n$$[$0-1].push($$[$0]);this.$ = $$[$0-1]\nbreak;\ncase 5: case 6:\n this.$ = $$[$0] \nbreak;\ncase 7: case 8:\n this.$=[];\nbreak;\ncase 12:\n\r\n yy.addEntity($$[$0-4]);\r\n yy.addEntity($$[$0-2]);\r\n yy.addRelationship($$[$0-4], $$[$0], $$[$0-2], $$[$0-3]);\r\n /*console.log($$[$0-4] + $$[$0-3] + $$[$0-2] + ':' + $$[$0]);*/\r\n \nbreak;\ncase 13:\n\r\n /* console.log('detected block'); */\r\n yy.addEntity($$[$0-3]);\r\n yy.addAttributes($$[$0-3], $$[$0-1]);\r\n /* console.log('handled block'); */\r\n \nbreak;\ncase 14:\n yy.addEntity($$[$0-2]); \nbreak;\ncase 15:\n yy.addEntity($$[$0]); \nbreak;\ncase 16:\n this.$ = $$[$0]; /*console.log('Entity: ' + $$[$0]);*/ \nbreak;\ncase 17:\n this.$ = [$$[$0]]; \nbreak;\ncase 18:\n $$[$0].push($$[$0-1]); this.$=$$[$0]; \nbreak;\ncase 19:\n this.$ = { attributeType: $$[$0-1], attributeName: $$[$0] }; \nbreak;\ncase 20:\n this.$ = { attributeType: $$[$0-2], attributeName: $$[$0-1], attributeKeyType: $$[$0] }; \nbreak;\ncase 21:\n this.$ = { attributeType: $$[$0-2], attributeName: $$[$0-1], attributeComment: $$[$0] }; \nbreak;\ncase 22:\n this.$ = { attributeType: $$[$0-3], attributeName: $$[$0-2], attributeKeyType: $$[$0-1], attributeComment: $$[$0] }; \nbreak;\ncase 23: case 24: case 25:\n this.$=$$[$0]; \nbreak;\ncase 26:\n\r\n this.$ = { cardA: $$[$0], relType: $$[$0-1], cardB: $$[$0-2] };\r\n /*console.log('relSpec: ' + $$[$0] + $$[$0-1] + $$[$0-2]);*/\r\n \nbreak;\ncase 27:\n this.$ = yy.Cardinality.ZERO_OR_ONE; \nbreak;\ncase 28:\n this.$ = yy.Cardinality.ZERO_OR_MORE; \nbreak;\ncase 29:\n this.$ = yy.Cardinality.ONE_OR_MORE; \nbreak;\ncase 30:\n this.$ = yy.Cardinality.ONLY_ONE; \nbreak;\ncase 31:\n this.$ = yy.Identification.NON_IDENTIFYING; \nbreak;\ncase 32:\n this.$ = yy.Identification.IDENTIFYING; \nbreak;\ncase 33:\n this.$ = $$[$0].replace(/\"/g, ''); \nbreak;\ncase 34:\n this.$ = $$[$0]; \nbreak;\ncase 35:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 36:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 37:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 38:\n yy.parseDirective('}%%', 'close_directive', 'er'); \nbreak;\n}\n},\ntable: [{3:1,4:$V0,7:3,12:4,40:$V1},{1:[3]},o($V2,[2,3],{5:6}),{3:7,4:$V0,7:3,12:4,40:$V1},{13:8,41:[1,9]},{41:[2,35]},{6:[1,10],7:15,8:11,9:[1,12],10:13,11:[1,14],12:4,17:16,23:$V3,40:$V1},{1:[2,2]},{14:18,15:[1,19],43:$V4},o([15,43],[2,36]),o($V2,[2,8],{1:[2,1]}),o($V2,[2,4]),{7:15,10:21,12:4,17:16,23:$V3,40:$V1},o($V2,[2,6]),o($V2,[2,7]),o($V2,[2,11]),o($V2,[2,15],{18:22,31:24,20:[1,23],33:$V5,34:$V6,35:$V7,36:$V8}),o([6,9,11,15,20,23,33,34,35,36,40],[2,16]),{11:[1,29]},{16:30,42:[1,31]},{11:[2,38]},o($V2,[2,5]),{17:32,23:$V3},{21:33,22:[1,34],24:35,25:36,29:$V9},{32:38,37:[1,39],38:[1,40]},o($Va,[2,27]),o($Va,[2,28]),o($Va,[2,29]),o($Va,[2,30]),o($Vb,[2,9]),{14:41,43:$V4},{43:[2,37]},{15:[1,42]},{22:[1,43]},o($V2,[2,14]),{21:44,22:[2,17],24:35,25:36,29:$V9},{26:45,29:[1,46]},{29:[2,23]},{31:47,33:$V5,34:$V6,35:$V7,36:$V8},o($Vc,[2,31]),o($Vc,[2,32]),{11:[1,48]},{19:49,23:[1,51],39:[1,50]},o($V2,[2,13]),{22:[2,18]},o($Vd,[2,19],{27:52,28:[1,53],30:[1,54]}),o([22,28,29,30],[2,24]),{23:[2,26]},o($Vb,[2,10]),o($V2,[2,12]),o($V2,[2,33]),o($V2,[2,34]),o($Vd,[2,20],{28:[1,55]}),o($Vd,[2,21]),o([22,28,29],[2,25]),o($Vd,[2,22])],\ndefaultActions: {5:[2,35],7:[2,2],20:[2,38],31:[2,37],37:[2,23],44:[2,18],47:[2,26]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\r\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0: this.begin('open_directive'); return 40; \nbreak;\ncase 1: this.begin('type_directive'); return 41; \nbreak;\ncase 2: this.popState(); this.begin('arg_directive'); return 15; \nbreak;\ncase 3: this.popState(); this.popState(); return 43; \nbreak;\ncase 4:return 42;\nbreak;\ncase 5:/* skip comments */\nbreak;\ncase 6:/* skip comments */\nbreak;\ncase 7:return 11;\nbreak;\ncase 8:/* skip whitespace */\nbreak;\ncase 9:return 9;\nbreak;\ncase 10:return 39;\nbreak;\ncase 11:return 4;\nbreak;\ncase 12: this.begin(\"block\"); return 20; \nbreak;\ncase 13:/* skip whitespace in block */\nbreak;\ncase 14:return 30\nbreak;\ncase 15:return 29\nbreak;\ncase 16:return 28;\nbreak;\ncase 17:/* nothing */\nbreak;\ncase 18: this.popState(); return 22; \nbreak;\ncase 19:return yy_.yytext[0];\nbreak;\ncase 20:return 33;\nbreak;\ncase 21:return 34;\nbreak;\ncase 22:return 35;\nbreak;\ncase 23:return 36;\nbreak;\ncase 24:return 33;\nbreak;\ncase 25:return 34;\nbreak;\ncase 26:return 35;\nbreak;\ncase 27:return 37;\nbreak;\ncase 28:return 38;\nbreak;\ncase 29:return 37;\nbreak;\ncase 30:return 37;\nbreak;\ncase 31:return 23;\nbreak;\ncase 32:return yy_.yytext[0];\nbreak;\ncase 33:return 6;\nbreak;\n}\n},\nrules: [/^(?:%%\\{)/i,/^(?:((?:(?!\\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\\}%%)/i,/^(?:((?:(?!\\}%%).|\\n)*))/i,/^(?:%(?!\\{)[^\\n]*)/i,/^(?:[^\\}]%%[^\\n]*)/i,/^(?:[\\n]+)/i,/^(?:\\s+)/i,/^(?:[\\s]+)/i,/^(?:\"[^\"]*\")/i,/^(?:erDiagram\\b)/i,/^(?:\\{)/i,/^(?:\\s+)/i,/^(?:(?:PK)|(?:FK))/i,/^(?:[A-Za-z][A-Za-z0-9\\-_]*)/i,/^(?:\"[^\"]*\")/i,/^(?:[\\n]+)/i,/^(?:\\})/i,/^(?:.)/i,/^(?:\\|o\\b)/i,/^(?:\\}o\\b)/i,/^(?:\\}\\|)/i,/^(?:\\|\\|)/i,/^(?:o\\|)/i,/^(?:o\\{)/i,/^(?:\\|\\{)/i,/^(?:\\.\\.)/i,/^(?:--)/i,/^(?:\\.-)/i,/^(?:-\\.)/i,/^(?:[A-Za-z][A-Za-z0-9\\-_]*)/i,/^(?:.)/i,/^(?:$)/i],\nconditions: {\"open_directive\":{\"rules\":[1],\"inclusive\":false},\"type_directive\":{\"rules\":[2,3],\"inclusive\":false},\"arg_directive\":{\"rules\":[3,4],\"inclusive\":false},\"block\":{\"rules\":[13,14,15,16,17,18,19],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,5,6,7,8,9,10,11,12,20,21,22,23,24,25,26,27,28,29,30,31,32,33],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,9],$V1=[1,7],$V2=[1,6],$V3=[1,8],$V4=[1,20,21,22,23,38,47,76,77,78,79,80,81,95,96,99,100,101,103,104,110,111,112,113,114,115,116,117,118,119],$V5=[2,10],$V6=[1,20],$V7=[1,21],$V8=[1,22],$V9=[1,23],$Va=[1,30],$Vb=[1,59],$Vc=[1,33],$Vd=[1,34],$Ve=[1,35],$Vf=[1,36],$Vg=[1,37],$Vh=[1,53],$Vi=[1,48],$Vj=[1,50],$Vk=[1,45],$Vl=[1,49],$Vm=[1,52],$Vn=[1,56],$Vo=[1,57],$Vp=[1,38],$Vq=[1,39],$Vr=[1,40],$Vs=[1,41],$Vt=[1,58],$Vu=[1,47],$Vv=[1,51],$Vw=[1,54],$Vx=[1,55],$Vy=[1,46],$Vz=[1,62],$VA=[1,67],$VB=[1,20,21,22,23,38,42,47,76,77,78,79,80,81,95,96,99,100,101,103,104,110,111,112,113,114,115,116,117,118,119],$VC=[1,71],$VD=[1,70],$VE=[1,72],$VF=[20,21,23,70,71],$VG=[1,93],$VH=[1,98],$VI=[1,95],$VJ=[1,100],$VK=[1,103],$VL=[1,101],$VM=[1,102],$VN=[1,96],$VO=[1,108],$VP=[1,107],$VQ=[1,97],$VR=[1,99],$VS=[1,104],$VT=[1,105],$VU=[1,106],$VV=[1,109],$VW=[20,21,22,23,70,71],$VX=[20,21,22,23,48,70,71],$VY=[20,21,22,23,40,47,48,50,52,54,56,58,60,62,63,65,70,71,81,95,96,99,100,101,103,104,114,115,116,117,118,119],$VZ=[20,21,23],$V_=[20,21,23,47,70,71,81,95,96,99,100,101,103,104,114,115,116,117,118,119],$V$=[1,12,20,21,22,23,24,38,42,47,76,77,78,79,80,81,95,96,99,100,101,103,104,110,111,112,113,114,115,116,117,118,119],$V01=[47,81,95,96,99,100,101,103,104,114,115,116,117,118,119],$V11=[1,141],$V21=[1,149],$V31=[1,150],$V41=[1,151],$V51=[1,152],$V61=[1,136],$V71=[1,137],$V81=[1,133],$V91=[1,144],$Va1=[1,145],$Vb1=[1,146],$Vc1=[1,147],$Vd1=[1,148],$Ve1=[1,153],$Vf1=[1,154],$Vg1=[1,139],$Vh1=[1,142],$Vi1=[1,138],$Vj1=[1,135],$Vk1=[20,21,22,23,38,42,47,76,77,78,79,80,81,95,96,99,100,101,103,104,110,111,112,113,114,115,116,117,118,119],$Vl1=[1,157],$Vm1=[20,21,22,23,26,47,81,95,96,99,100,101,103,104,114,115,116,117,118,119],$Vn1=[20,21,22,23,24,26,38,40,41,42,47,51,53,55,57,59,61,62,64,66,70,71,72,76,77,78,79,80,81,82,85,95,96,99,100,101,103,104,105,106,114,115,116,117,118,119],$Vo1=[12,21,22,24],$Vp1=[22,96],$Vq1=[1,238],$Vr1=[1,242],$Vs1=[1,239],$Vt1=[1,236],$Vu1=[1,233],$Vv1=[1,234],$Vw1=[1,235],$Vx1=[1,237],$Vy1=[1,240],$Vz1=[1,241],$VA1=[1,243],$VB1=[1,260],$VC1=[20,21,23,96],$VD1=[20,21,22,23,76,92,95,96,99,100,101,102,103,104,105];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"mermaidDoc\":4,\"directive\":5,\"openDirective\":6,\"typeDirective\":7,\"closeDirective\":8,\"separator\":9,\":\":10,\"argDirective\":11,\"open_directive\":12,\"type_directive\":13,\"arg_directive\":14,\"close_directive\":15,\"graphConfig\":16,\"document\":17,\"line\":18,\"statement\":19,\"SEMI\":20,\"NEWLINE\":21,\"SPACE\":22,\"EOF\":23,\"GRAPH\":24,\"NODIR\":25,\"DIR\":26,\"FirstStmtSeperator\":27,\"ending\":28,\"endToken\":29,\"spaceList\":30,\"spaceListNewline\":31,\"verticeStatement\":32,\"styleStatement\":33,\"linkStyleStatement\":34,\"classDefStatement\":35,\"classStatement\":36,\"clickStatement\":37,\"subgraph\":38,\"text\":39,\"SQS\":40,\"SQE\":41,\"end\":42,\"direction\":43,\"link\":44,\"node\":45,\"vertex\":46,\"AMP\":47,\"STYLE_SEPARATOR\":48,\"idString\":49,\"PS\":50,\"PE\":51,\"(-\":52,\"-)\":53,\"STADIUMSTART\":54,\"STADIUMEND\":55,\"SUBROUTINESTART\":56,\"SUBROUTINEEND\":57,\"CYLINDERSTART\":58,\"CYLINDEREND\":59,\"DIAMOND_START\":60,\"DIAMOND_STOP\":61,\"TAGEND\":62,\"TRAPSTART\":63,\"TRAPEND\":64,\"INVTRAPSTART\":65,\"INVTRAPEND\":66,\"linkStatement\":67,\"arrowText\":68,\"TESTSTR\":69,\"START_LINK\":70,\"LINK\":71,\"PIPE\":72,\"textToken\":73,\"STR\":74,\"keywords\":75,\"STYLE\":76,\"LINKSTYLE\":77,\"CLASSDEF\":78,\"CLASS\":79,\"CLICK\":80,\"DOWN\":81,\"UP\":82,\"textNoTags\":83,\"textNoTagsToken\":84,\"DEFAULT\":85,\"stylesOpt\":86,\"alphaNum\":87,\"CALLBACKNAME\":88,\"CALLBACKARGS\":89,\"HREF\":90,\"LINK_TARGET\":91,\"HEX\":92,\"numList\":93,\"INTERPOLATE\":94,\"NUM\":95,\"COMMA\":96,\"style\":97,\"styleComponent\":98,\"ALPHA\":99,\"COLON\":100,\"MINUS\":101,\"UNIT\":102,\"BRKT\":103,\"DOT\":104,\"PCT\":105,\"TAGSTART\":106,\"alphaNumToken\":107,\"idStringToken\":108,\"alphaNumStatement\":109,\"direction_tb\":110,\"direction_bt\":111,\"direction_rl\":112,\"direction_lr\":113,\"PUNCTUATION\":114,\"UNICODE_TEXT\":115,\"PLUS\":116,\"EQUALS\":117,\"MULT\":118,\"UNDERSCORE\":119,\"graphCodeTokens\":120,\"ARROW_CROSS\":121,\"ARROW_POINT\":122,\"ARROW_CIRCLE\":123,\"ARROW_OPEN\":124,\"QUOTE\":125,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",10:\":\",12:\"open_directive\",13:\"type_directive\",14:\"arg_directive\",15:\"close_directive\",20:\"SEMI\",21:\"NEWLINE\",22:\"SPACE\",23:\"EOF\",24:\"GRAPH\",25:\"NODIR\",26:\"DIR\",38:\"subgraph\",40:\"SQS\",41:\"SQE\",42:\"end\",47:\"AMP\",48:\"STYLE_SEPARATOR\",50:\"PS\",51:\"PE\",52:\"(-\",53:\"-)\",54:\"STADIUMSTART\",55:\"STADIUMEND\",56:\"SUBROUTINESTART\",57:\"SUBROUTINEEND\",58:\"CYLINDERSTART\",59:\"CYLINDEREND\",60:\"DIAMOND_START\",61:\"DIAMOND_STOP\",62:\"TAGEND\",63:\"TRAPSTART\",64:\"TRAPEND\",65:\"INVTRAPSTART\",66:\"INVTRAPEND\",69:\"TESTSTR\",70:\"START_LINK\",71:\"LINK\",72:\"PIPE\",74:\"STR\",76:\"STYLE\",77:\"LINKSTYLE\",78:\"CLASSDEF\",79:\"CLASS\",80:\"CLICK\",81:\"DOWN\",82:\"UP\",85:\"DEFAULT\",88:\"CALLBACKNAME\",89:\"CALLBACKARGS\",90:\"HREF\",91:\"LINK_TARGET\",92:\"HEX\",94:\"INTERPOLATE\",95:\"NUM\",96:\"COMMA\",99:\"ALPHA\",100:\"COLON\",101:\"MINUS\",102:\"UNIT\",103:\"BRKT\",104:\"DOT\",105:\"PCT\",106:\"TAGSTART\",110:\"direction_tb\",111:\"direction_bt\",112:\"direction_rl\",113:\"direction_lr\",114:\"PUNCTUATION\",115:\"UNICODE_TEXT\",116:\"PLUS\",117:\"EQUALS\",118:\"MULT\",119:\"UNDERSCORE\",121:\"ARROW_CROSS\",122:\"ARROW_POINT\",123:\"ARROW_CIRCLE\",124:\"ARROW_OPEN\",125:\"QUOTE\"},\nproductions_: [0,[3,1],[3,2],[5,4],[5,6],[6,1],[7,1],[11,1],[8,1],[4,2],[17,0],[17,2],[18,1],[18,1],[18,1],[18,1],[18,1],[16,2],[16,2],[16,2],[16,3],[28,2],[28,1],[29,1],[29,1],[29,1],[27,1],[27,1],[27,2],[31,2],[31,2],[31,1],[31,1],[30,2],[30,1],[19,2],[19,2],[19,2],[19,2],[19,2],[19,2],[19,9],[19,6],[19,4],[19,1],[9,1],[9,1],[9,1],[32,3],[32,4],[32,2],[32,1],[45,1],[45,5],[45,3],[46,4],[46,6],[46,4],[46,4],[46,4],[46,4],[46,4],[46,4],[46,6],[46,4],[46,4],[46,4],[46,4],[46,4],[46,1],[44,2],[44,3],[44,3],[44,1],[44,3],[67,1],[68,3],[39,1],[39,2],[39,1],[75,1],[75,1],[75,1],[75,1],[75,1],[75,1],[75,1],[75,1],[75,1],[75,1],[75,1],[83,1],[83,2],[35,5],[35,5],[36,5],[37,2],[37,4],[37,3],[37,5],[37,2],[37,4],[37,4],[37,6],[37,2],[37,4],[37,2],[37,4],[37,4],[37,6],[33,5],[33,5],[34,5],[34,5],[34,9],[34,9],[34,7],[34,7],[93,1],[93,3],[86,1],[86,3],[97,1],[97,2],[98,1],[98,1],[98,1],[98,1],[98,1],[98,1],[98,1],[98,1],[98,1],[98,1],[98,1],[73,1],[73,1],[73,1],[73,1],[73,1],[73,1],[84,1],[84,1],[84,1],[84,1],[49,1],[49,2],[87,1],[87,2],[109,1],[109,1],[109,1],[109,1],[43,1],[43,1],[43,1],[43,1],[107,1],[107,1],[107,1],[107,1],[107,1],[107,1],[107,1],[107,1],[107,1],[107,1],[107,1],[107,1],[107,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 5:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 6:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 7:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 8:\n yy.parseDirective('}%%', 'close_directive', 'flowchart'); \nbreak;\ncase 10:\n this.$ = [];\nbreak;\ncase 11:\n\r\n\t if($$[$0] !== []){\r\n\t $$[$0-1].push($$[$0]);\r\n\t }\r\n\t this.$=$$[$0-1];\nbreak;\ncase 12: case 77: case 79: case 91: case 147: case 149: case 150:\nthis.$=$$[$0];\nbreak;\ncase 19:\n yy.setDirection('TB');this.$ = 'TB';\nbreak;\ncase 20:\n yy.setDirection($$[$0-1]);this.$ = $$[$0-1];\nbreak;\ncase 35:\n /* console.warn('finat vs', $$[$0-1].nodes); */ this.$=$$[$0-1].nodes\nbreak;\ncase 36: case 37: case 38: case 39: case 40:\nthis.$=[];\nbreak;\ncase 41:\nthis.$=yy.addSubGraph($$[$0-6],$$[$0-1],$$[$0-4]);\nbreak;\ncase 42:\nthis.$=yy.addSubGraph($$[$0-3],$$[$0-1],$$[$0-3]);\nbreak;\ncase 43:\nthis.$=yy.addSubGraph(undefined,$$[$0-1],undefined);\nbreak;\ncase 48:\n /* console.warn('vs',$$[$0-2].stmt,$$[$0]); */ yy.addLink($$[$0-2].stmt,$$[$0],$$[$0-1]); this.$ = { stmt: $$[$0], nodes: $$[$0].concat($$[$0-2].nodes) } \nbreak;\ncase 49:\n /* console.warn('vs',$$[$0-3].stmt,$$[$0-1]); */ yy.addLink($$[$0-3].stmt,$$[$0-1],$$[$0-2]); this.$ = { stmt: $$[$0-1], nodes: $$[$0-1].concat($$[$0-3].nodes) } \nbreak;\ncase 50:\n/*console.warn('noda', $$[$0-1]);*/ this.$ = {stmt: $$[$0-1], nodes:$$[$0-1] }\nbreak;\ncase 51:\n /*console.warn('noda', $$[$0]);*/ this.$ = {stmt: $$[$0], nodes:$$[$0] }\nbreak;\ncase 52:\n /* console.warn('nod', $$[$0]); */ this.$ = [$$[$0]];\nbreak;\ncase 53:\n this.$ = $$[$0-4].concat($$[$0]); /* console.warn('pip', $$[$0-4][0], $$[$0], this.$); */ \nbreak;\ncase 54:\nthis.$ = [$$[$0-2]];yy.setClass($$[$0-2],$$[$0])\nbreak;\ncase 55:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'square');\nbreak;\ncase 56:\nthis.$ = $$[$0-5];yy.addVertex($$[$0-5],$$[$0-2],'circle');\nbreak;\ncase 57:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'ellipse');\nbreak;\ncase 58:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'stadium');\nbreak;\ncase 59:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'subroutine');\nbreak;\ncase 60:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'cylinder');\nbreak;\ncase 61:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'round');\nbreak;\ncase 62:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'diamond');\nbreak;\ncase 63:\nthis.$ = $$[$0-5];yy.addVertex($$[$0-5],$$[$0-2],'hexagon');\nbreak;\ncase 64:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'odd');\nbreak;\ncase 65:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'trapezoid');\nbreak;\ncase 66:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'inv_trapezoid');\nbreak;\ncase 67:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'lean_right');\nbreak;\ncase 68:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'lean_left');\nbreak;\ncase 69:\n /*console.warn('h: ', $$[$0]);*/this.$ = $$[$0];yy.addVertex($$[$0]);\nbreak;\ncase 70:\n$$[$0-1].text = $$[$0];this.$ = $$[$0-1];\nbreak;\ncase 71: case 72:\n$$[$0-2].text = $$[$0-1];this.$ = $$[$0-2];\nbreak;\ncase 73:\nthis.$ = $$[$0];\nbreak;\ncase 74:\nvar inf = yy.destructLink($$[$0], $$[$0-2]); this.$ = {\"type\":inf.type,\"stroke\":inf.stroke,\"length\":inf.length,\"text\":$$[$0-1]};\nbreak;\ncase 75:\nvar inf = yy.destructLink($$[$0]);this.$ = {\"type\":inf.type,\"stroke\":inf.stroke,\"length\":inf.length};\nbreak;\ncase 76:\nthis.$ = $$[$0-1];\nbreak;\ncase 78: case 92: case 148:\nthis.$=$$[$0-1]+''+$$[$0];\nbreak;\ncase 93: case 94:\nthis.$ = $$[$0-4];yy.addClass($$[$0-2],$$[$0]);\nbreak;\ncase 95:\nthis.$ = $$[$0-4];yy.setClass($$[$0-2], $$[$0]);\nbreak;\ncase 96: case 104:\nthis.$ = $$[$0-1];yy.setClickEvent($$[$0-1], $$[$0]);\nbreak;\ncase 97: case 105:\nthis.$ = $$[$0-3];yy.setClickEvent($$[$0-3], $$[$0-2]);yy.setTooltip($$[$0-3], $$[$0]);\nbreak;\ncase 98:\nthis.$ = $$[$0-2];yy.setClickEvent($$[$0-2], $$[$0-1], $$[$0]);\nbreak;\ncase 99:\nthis.$ = $$[$0-4];yy.setClickEvent($$[$0-4], $$[$0-3], $$[$0-2]);yy.setTooltip($$[$0-4], $$[$0]);\nbreak;\ncase 100: case 106:\nthis.$ = $$[$0-1];yy.setLink($$[$0-1], $$[$0]);\nbreak;\ncase 101: case 107:\nthis.$ = $$[$0-3];yy.setLink($$[$0-3], $$[$0-2]);yy.setTooltip($$[$0-3], $$[$0]);\nbreak;\ncase 102: case 108:\nthis.$ = $$[$0-3];yy.setLink($$[$0-3], $$[$0-2], $$[$0]);\nbreak;\ncase 103: case 109:\nthis.$ = $$[$0-5];yy.setLink($$[$0-5], $$[$0-4], $$[$0]);yy.setTooltip($$[$0-5], $$[$0-2]);\nbreak;\ncase 110:\nthis.$ = $$[$0-4];yy.addVertex($$[$0-2],undefined,undefined,$$[$0]);\nbreak;\ncase 111: case 113:\nthis.$ = $$[$0-4];yy.updateLink($$[$0-2],$$[$0]);\nbreak;\ncase 112:\nthis.$ = $$[$0-4];yy.updateLink([$$[$0-2]],$$[$0]);\nbreak;\ncase 114:\nthis.$ = $$[$0-8];yy.updateLinkInterpolate([$$[$0-6]],$$[$0-2]);yy.updateLink([$$[$0-6]],$$[$0]);\nbreak;\ncase 115:\nthis.$ = $$[$0-8];yy.updateLinkInterpolate($$[$0-6],$$[$0-2]);yy.updateLink($$[$0-6],$$[$0]);\nbreak;\ncase 116:\nthis.$ = $$[$0-6];yy.updateLinkInterpolate([$$[$0-4]],$$[$0]);\nbreak;\ncase 117:\nthis.$ = $$[$0-6];yy.updateLinkInterpolate($$[$0-4],$$[$0]);\nbreak;\ncase 118: case 120:\nthis.$ = [$$[$0]]\nbreak;\ncase 119: case 121:\n$$[$0-2].push($$[$0]);this.$ = $$[$0-2];\nbreak;\ncase 123:\nthis.$ = $$[$0-1] + $$[$0];\nbreak;\ncase 145:\nthis.$=$$[$0]\nbreak;\ncase 146:\nthis.$=$$[$0-1]+''+$$[$0]\nbreak;\ncase 151:\nthis.$='v';\nbreak;\ncase 152:\nthis.$='-';\nbreak;\ncase 153:\n this.$={stmt:'dir', value:'TB'};\nbreak;\ncase 154:\n this.$={stmt:'dir', value:'BT'};\nbreak;\ncase 155:\n this.$={stmt:'dir', value:'RL'};\nbreak;\ncase 156:\n this.$={stmt:'dir', value:'LR'};\nbreak;\n}\n},\ntable: [{3:1,4:2,5:3,6:5,12:$V0,16:4,21:$V1,22:$V2,24:$V3},{1:[3]},{1:[2,1]},{3:10,4:2,5:3,6:5,12:$V0,16:4,21:$V1,22:$V2,24:$V3},o($V4,$V5,{17:11}),{7:12,13:[1,13]},{16:14,21:$V1,22:$V2,24:$V3},{16:15,21:$V1,22:$V2,24:$V3},{25:[1,16],26:[1,17]},{13:[2,5]},{1:[2,2]},{1:[2,9],18:18,19:19,20:$V6,21:$V7,22:$V8,23:$V9,32:24,33:25,34:26,35:27,36:28,37:29,38:$Va,43:31,45:32,46:42,47:$Vb,49:43,76:$Vc,77:$Vd,78:$Ve,79:$Vf,80:$Vg,81:$Vh,95:$Vi,96:$Vj,99:$Vk,100:$Vl,101:$Vm,103:$Vn,104:$Vo,108:44,110:$Vp,111:$Vq,112:$Vr,113:$Vs,114:$Vt,115:$Vu,116:$Vv,117:$Vw,118:$Vx,119:$Vy},{8:60,10:[1,61],15:$Vz},o([10,15],[2,6]),o($V4,[2,17]),o($V4,[2,18]),o($V4,[2,19]),{20:[1,64],21:[1,65],22:$VA,27:63,30:66},o($VB,[2,11]),o($VB,[2,12]),o($VB,[2,13]),o($VB,[2,14]),o($VB,[2,15]),o($VB,[2,16]),{9:68,20:$VC,21:$VD,23:$VE,44:69,67:73,70:[1,74],71:[1,75]},{9:76,20:$VC,21:$VD,23:$VE},{9:77,20:$VC,21:$VD,23:$VE},{9:78,20:$VC,21:$VD,23:$VE},{9:79,20:$VC,21:$VD,23:$VE},{9:80,20:$VC,21:$VD,23:$VE},{9:82,20:$VC,21:$VD,22:[1,81],23:$VE},o($VB,[2,44]),o($VF,[2,51],{30:83,22:$VA}),{22:[1,84]},{22:[1,85]},{22:[1,86]},{22:[1,87]},{26:$VG,47:$VH,74:[1,91],81:$VI,87:90,88:[1,88],90:[1,89],95:$VJ,96:$VK,99:$VL,100:$VM,101:$VN,103:$VO,104:$VP,107:94,109:92,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},o($VB,[2,153]),o($VB,[2,154]),o($VB,[2,155]),o($VB,[2,156]),o($VW,[2,52],{48:[1,110]}),o($VX,[2,69],{108:121,40:[1,111],47:$Vb,50:[1,112],52:[1,113],54:[1,114],56:[1,115],58:[1,116],60:[1,117],62:[1,118],63:[1,119],65:[1,120],81:$Vh,95:$Vi,96:$Vj,99:$Vk,100:$Vl,101:$Vm,103:$Vn,104:$Vo,114:$Vt,115:$Vu,116:$Vv,117:$Vw,118:$Vx,119:$Vy}),o($VY,[2,145]),o($VY,[2,170]),o($VY,[2,171]),o($VY,[2,172]),o($VY,[2,173]),o($VY,[2,174]),o($VY,[2,175]),o($VY,[2,176]),o($VY,[2,177]),o($VY,[2,178]),o($VY,[2,179]),o($VY,[2,180]),o($VY,[2,181]),o($VY,[2,182]),o($VY,[2,183]),o($VY,[2,184]),{9:122,20:$VC,21:$VD,23:$VE},{11:123,14:[1,124]},o($VZ,[2,8]),o($V4,[2,20]),o($V4,[2,26]),o($V4,[2,27]),{21:[1,125]},o($V_,[2,34],{30:126,22:$VA}),o($VB,[2,35]),{45:127,46:42,47:$Vb,49:43,81:$Vh,95:$Vi,96:$Vj,99:$Vk,100:$Vl,101:$Vm,103:$Vn,104:$Vo,108:44,114:$Vt,115:$Vu,116:$Vv,117:$Vw,118:$Vx,119:$Vy},o($V$,[2,45]),o($V$,[2,46]),o($V$,[2,47]),o($V01,[2,73],{68:128,69:[1,129],72:[1,130]}),{22:$V11,24:$V21,26:$V31,38:$V41,39:131,42:$V51,47:$VH,62:$V61,70:$V71,73:132,74:$V81,75:143,76:$V91,77:$Va1,78:$Vb1,79:$Vc1,80:$Vd1,81:$Ve1,82:$Vf1,84:134,85:$Vg1,95:$VJ,96:$VK,99:$VL,100:$VM,101:$Vh1,103:$VO,104:$VP,105:$Vi1,106:$Vj1,107:140,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},o([47,69,72,81,95,96,99,100,101,103,104,114,115,116,117,118,119],[2,75]),o($VB,[2,36]),o($VB,[2,37]),o($VB,[2,38]),o($VB,[2,39]),o($VB,[2,40]),{22:$V11,24:$V21,26:$V31,38:$V41,39:155,42:$V51,47:$VH,62:$V61,70:$V71,73:132,74:$V81,75:143,76:$V91,77:$Va1,78:$Vb1,79:$Vc1,80:$Vd1,81:$Ve1,82:$Vf1,84:134,85:$Vg1,95:$VJ,96:$VK,99:$VL,100:$VM,101:$Vh1,103:$VO,104:$VP,105:$Vi1,106:$Vj1,107:140,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},o($Vk1,$V5,{17:156}),o($VF,[2,50],{47:$Vl1}),{26:$VG,47:$VH,81:$VI,87:158,92:[1,159],95:$VJ,96:$VK,99:$VL,100:$VM,101:$VN,103:$VO,104:$VP,107:94,109:92,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},{85:[1,160],93:161,95:[1,162]},{26:$VG,47:$VH,81:$VI,85:[1,163],87:164,95:$VJ,96:$VK,99:$VL,100:$VM,101:$VN,103:$VO,104:$VP,107:94,109:92,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},{26:$VG,47:$VH,81:$VI,87:165,95:$VJ,96:$VK,99:$VL,100:$VM,101:$VN,103:$VO,104:$VP,107:94,109:92,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},o($VZ,[2,96],{22:[1,166],89:[1,167]}),o($VZ,[2,100],{22:[1,168]}),o($VZ,[2,104],{107:94,109:170,22:[1,169],26:$VG,47:$VH,81:$VI,95:$VJ,96:$VK,99:$VL,100:$VM,101:$VN,103:$VO,104:$VP,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV}),o($VZ,[2,106],{22:[1,171]}),o($Vm1,[2,147]),o($Vm1,[2,149]),o($Vm1,[2,150]),o($Vm1,[2,151]),o($Vm1,[2,152]),o($Vn1,[2,157]),o($Vn1,[2,158]),o($Vn1,[2,159]),o($Vn1,[2,160]),o($Vn1,[2,161]),o($Vn1,[2,162]),o($Vn1,[2,163]),o($Vn1,[2,164]),o($Vn1,[2,165]),o($Vn1,[2,166]),o($Vn1,[2,167]),o($Vn1,[2,168]),o($Vn1,[2,169]),{47:$Vb,49:172,81:$Vh,95:$Vi,96:$Vj,99:$Vk,100:$Vl,101:$Vm,103:$Vn,104:$Vo,108:44,114:$Vt,115:$Vu,116:$Vv,117:$Vw,118:$Vx,119:$Vy},{22:$V11,24:$V21,26:$V31,38:$V41,39:173,42:$V51,47:$VH,62:$V61,70:$V71,73:132,74:$V81,75:143,76:$V91,77:$Va1,78:$Vb1,79:$Vc1,80:$Vd1,81:$Ve1,82:$Vf1,84:134,85:$Vg1,95:$VJ,96:$VK,99:$VL,100:$VM,101:$Vh1,103:$VO,104:$VP,105:$Vi1,106:$Vj1,107:140,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},{22:$V11,24:$V21,26:$V31,38:$V41,39:175,42:$V51,47:$VH,50:[1,174],62:$V61,70:$V71,73:132,74:$V81,75:143,76:$V91,77:$Va1,78:$Vb1,79:$Vc1,80:$Vd1,81:$Ve1,82:$Vf1,84:134,85:$Vg1,95:$VJ,96:$VK,99:$VL,100:$VM,101:$Vh1,103:$VO,104:$VP,105:$Vi1,106:$Vj1,107:140,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},{22:$V11,24:$V21,26:$V31,38:$V41,39:176,42:$V51,47:$VH,62:$V61,70:$V71,73:132,74:$V81,75:143,76:$V91,77:$Va1,78:$Vb1,79:$Vc1,80:$Vd1,81:$Ve1,82:$Vf1,84:134,85:$Vg1,95:$VJ,96:$VK,99:$VL,100:$VM,101:$Vh1,103:$VO,104:$VP,105:$Vi1,106:$Vj1,107:140,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},{22:$V11,24:$V21,26:$V31,38:$V41,39:177,42:$V51,47:$VH,62:$V61,70:$V71,73:132,74:$V81,75:143,76:$V91,77:$Va1,78:$Vb1,79:$Vc1,80:$Vd1,81:$Ve1,82:$Vf1,84:134,85:$Vg1,95:$VJ,96:$VK,99:$VL,100:$VM,101:$Vh1,103:$VO,104:$VP,105:$Vi1,106:$Vj1,107:140,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},{22:$V11,24:$V21,26:$V31,38:$V41,39:178,42:$V51,47:$VH,62:$V61,70:$V71,73:132,74:$V81,75:143,76:$V91,77:$Va1,78:$Vb1,79:$Vc1,80:$Vd1,81:$Ve1,82:$Vf1,84:134,85:$Vg1,95:$VJ,96:$VK,99:$VL,100:$VM,101:$Vh1,103:$VO,104:$VP,105:$Vi1,106:$Vj1,107:140,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},{22:$V11,24:$V21,26:$V31,38:$V41,39:179,42:$V51,47:$VH,62:$V61,70:$V71,73:132,74:$V81,75:143,76:$V91,77:$Va1,78:$Vb1,79:$Vc1,80:$Vd1,81:$Ve1,82:$Vf1,84:134,85:$Vg1,95:$VJ,96:$VK,99:$VL,100:$VM,101:$Vh1,103:$VO,104:$VP,105:$Vi1,106:$Vj1,107:140,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},{22:$V11,24:$V21,26:$V31,38:$V41,39:180,42:$V51,47:$VH,60:[1,181],62:$V61,70:$V71,73:132,74:$V81,75:143,76:$V91,77:$Va1,78:$Vb1,79:$Vc1,80:$Vd1,81:$Ve1,82:$Vf1,84:134,85:$Vg1,95:$VJ,96:$VK,99:$VL,100:$VM,101:$Vh1,103:$VO,104:$VP,105:$Vi1,106:$Vj1,107:140,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},{22:$V11,24:$V21,26:$V31,38:$V41,39:182,42:$V51,47:$VH,62:$V61,70:$V71,73:132,74:$V81,75:143,76:$V91,77:$Va1,78:$Vb1,79:$Vc1,80:$Vd1,81:$Ve1,82:$Vf1,84:134,85:$Vg1,95:$VJ,96:$VK,99:$VL,100:$VM,101:$Vh1,103:$VO,104:$VP,105:$Vi1,106:$Vj1,107:140,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},{22:$V11,24:$V21,26:$V31,38:$V41,39:183,42:$V51,47:$VH,62:$V61,70:$V71,73:132,74:$V81,75:143,76:$V91,77:$Va1,78:$Vb1,79:$Vc1,80:$Vd1,81:$Ve1,82:$Vf1,84:134,85:$Vg1,95:$VJ,96:$VK,99:$VL,100:$VM,101:$Vh1,103:$VO,104:$VP,105:$Vi1,106:$Vj1,107:140,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},{22:$V11,24:$V21,26:$V31,38:$V41,39:184,42:$V51,47:$VH,62:$V61,70:$V71,73:132,74:$V81,75:143,76:$V91,77:$Va1,78:$Vb1,79:$Vc1,80:$Vd1,81:$Ve1,82:$Vf1,84:134,85:$Vg1,95:$VJ,96:$VK,99:$VL,100:$VM,101:$Vh1,103:$VO,104:$VP,105:$Vi1,106:$Vj1,107:140,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},o($VY,[2,146]),o($Vo1,[2,3]),{8:185,15:$Vz},{15:[2,7]},o($V4,[2,28]),o($V_,[2,33]),o($VF,[2,48],{30:186,22:$VA}),o($V01,[2,70],{22:[1,187]}),{22:[1,188]},{22:$V11,24:$V21,26:$V31,38:$V41,39:189,42:$V51,47:$VH,62:$V61,70:$V71,73:132,74:$V81,75:143,76:$V91,77:$Va1,78:$Vb1,79:$Vc1,80:$Vd1,81:$Ve1,82:$Vf1,84:134,85:$Vg1,95:$VJ,96:$VK,99:$VL,100:$VM,101:$Vh1,103:$VO,104:$VP,105:$Vi1,106:$Vj1,107:140,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},{22:$V11,24:$V21,26:$V31,38:$V41,42:$V51,47:$VH,62:$V61,70:$V71,71:[1,190],73:191,75:143,76:$V91,77:$Va1,78:$Vb1,79:$Vc1,80:$Vd1,81:$Ve1,82:$Vf1,84:134,85:$Vg1,95:$VJ,96:$VK,99:$VL,100:$VM,101:$Vh1,103:$VO,104:$VP,105:$Vi1,106:$Vj1,107:140,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},o($Vn1,[2,77]),o($Vn1,[2,79]),o($Vn1,[2,135]),o($Vn1,[2,136]),o($Vn1,[2,137]),o($Vn1,[2,138]),o($Vn1,[2,139]),o($Vn1,[2,140]),o($Vn1,[2,141]),o($Vn1,[2,142]),o($Vn1,[2,143]),o($Vn1,[2,144]),o($Vn1,[2,80]),o($Vn1,[2,81]),o($Vn1,[2,82]),o($Vn1,[2,83]),o($Vn1,[2,84]),o($Vn1,[2,85]),o($Vn1,[2,86]),o($Vn1,[2,87]),o($Vn1,[2,88]),o($Vn1,[2,89]),o($Vn1,[2,90]),{9:193,20:$VC,21:$VD,22:$V11,23:$VE,24:$V21,26:$V31,38:$V41,40:[1,192],42:$V51,47:$VH,62:$V61,70:$V71,73:191,75:143,76:$V91,77:$Va1,78:$Vb1,79:$Vc1,80:$Vd1,81:$Ve1,82:$Vf1,84:134,85:$Vg1,95:$VJ,96:$VK,99:$VL,100:$VM,101:$Vh1,103:$VO,104:$VP,105:$Vi1,106:$Vj1,107:140,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},{18:18,19:19,20:$V6,21:$V7,22:$V8,23:$V9,32:24,33:25,34:26,35:27,36:28,37:29,38:$Va,42:[1,194],43:31,45:32,46:42,47:$Vb,49:43,76:$Vc,77:$Vd,78:$Ve,79:$Vf,80:$Vg,81:$Vh,95:$Vi,96:$Vj,99:$Vk,100:$Vl,101:$Vm,103:$Vn,104:$Vo,108:44,110:$Vp,111:$Vq,112:$Vr,113:$Vs,114:$Vt,115:$Vu,116:$Vv,117:$Vw,118:$Vx,119:$Vy},{22:$VA,30:195},{22:[1,196],26:$VG,47:$VH,81:$VI,95:$VJ,96:$VK,99:$VL,100:$VM,101:$VN,103:$VO,104:$VP,107:94,109:170,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},{22:[1,197]},{22:[1,198]},{22:[1,199],96:[1,200]},o($Vp1,[2,118]),{22:[1,201]},{22:[1,202],26:$VG,47:$VH,81:$VI,95:$VJ,96:$VK,99:$VL,100:$VM,101:$VN,103:$VO,104:$VP,107:94,109:170,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},{22:[1,203],26:$VG,47:$VH,81:$VI,95:$VJ,96:$VK,99:$VL,100:$VM,101:$VN,103:$VO,104:$VP,107:94,109:170,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},{74:[1,204]},o($VZ,[2,98],{22:[1,205]}),{74:[1,206],91:[1,207]},{74:[1,208]},o($Vm1,[2,148]),{74:[1,209],91:[1,210]},o($VW,[2,54],{108:121,47:$Vb,81:$Vh,95:$Vi,96:$Vj,99:$Vk,100:$Vl,101:$Vm,103:$Vn,104:$Vo,114:$Vt,115:$Vu,116:$Vv,117:$Vw,118:$Vx,119:$Vy}),{22:$V11,24:$V21,26:$V31,38:$V41,41:[1,211],42:$V51,47:$VH,62:$V61,70:$V71,73:191,75:143,76:$V91,77:$Va1,78:$Vb1,79:$Vc1,80:$Vd1,81:$Ve1,82:$Vf1,84:134,85:$Vg1,95:$VJ,96:$VK,99:$VL,100:$VM,101:$Vh1,103:$VO,104:$VP,105:$Vi1,106:$Vj1,107:140,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},{22:$V11,24:$V21,26:$V31,38:$V41,39:212,42:$V51,47:$VH,62:$V61,70:$V71,73:132,74:$V81,75:143,76:$V91,77:$Va1,78:$Vb1,79:$Vc1,80:$Vd1,81:$Ve1,82:$Vf1,84:134,85:$Vg1,95:$VJ,96:$VK,99:$VL,100:$VM,101:$Vh1,103:$VO,104:$VP,105:$Vi1,106:$Vj1,107:140,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},{22:$V11,24:$V21,26:$V31,38:$V41,42:$V51,47:$VH,51:[1,213],62:$V61,70:$V71,73:191,75:143,76:$V91,77:$Va1,78:$Vb1,79:$Vc1,80:$Vd1,81:$Ve1,82:$Vf1,84:134,85:$Vg1,95:$VJ,96:$VK,99:$VL,100:$VM,101:$Vh1,103:$VO,104:$VP,105:$Vi1,106:$Vj1,107:140,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},{22:$V11,24:$V21,26:$V31,38:$V41,42:$V51,47:$VH,53:[1,214],62:$V61,70:$V71,73:191,75:143,76:$V91,77:$Va1,78:$Vb1,79:$Vc1,80:$Vd1,81:$Ve1,82:$Vf1,84:134,85:$Vg1,95:$VJ,96:$VK,99:$VL,100:$VM,101:$Vh1,103:$VO,104:$VP,105:$Vi1,106:$Vj1,107:140,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},{22:$V11,24:$V21,26:$V31,38:$V41,42:$V51,47:$VH,55:[1,215],62:$V61,70:$V71,73:191,75:143,76:$V91,77:$Va1,78:$Vb1,79:$Vc1,80:$Vd1,81:$Ve1,82:$Vf1,84:134,85:$Vg1,95:$VJ,96:$VK,99:$VL,100:$VM,101:$Vh1,103:$VO,104:$VP,105:$Vi1,106:$Vj1,107:140,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},{22:$V11,24:$V21,26:$V31,38:$V41,42:$V51,47:$VH,57:[1,216],62:$V61,70:$V71,73:191,75:143,76:$V91,77:$Va1,78:$Vb1,79:$Vc1,80:$Vd1,81:$Ve1,82:$Vf1,84:134,85:$Vg1,95:$VJ,96:$VK,99:$VL,100:$VM,101:$Vh1,103:$VO,104:$VP,105:$Vi1,106:$Vj1,107:140,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},{22:$V11,24:$V21,26:$V31,38:$V41,42:$V51,47:$VH,59:[1,217],62:$V61,70:$V71,73:191,75:143,76:$V91,77:$Va1,78:$Vb1,79:$Vc1,80:$Vd1,81:$Ve1,82:$Vf1,84:134,85:$Vg1,95:$VJ,96:$VK,99:$VL,100:$VM,101:$Vh1,103:$VO,104:$VP,105:$Vi1,106:$Vj1,107:140,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},{22:$V11,24:$V21,26:$V31,38:$V41,42:$V51,47:$VH,61:[1,218],62:$V61,70:$V71,73:191,75:143,76:$V91,77:$Va1,78:$Vb1,79:$Vc1,80:$Vd1,81:$Ve1,82:$Vf1,84:134,85:$Vg1,95:$VJ,96:$VK,99:$VL,100:$VM,101:$Vh1,103:$VO,104:$VP,105:$Vi1,106:$Vj1,107:140,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},{22:$V11,24:$V21,26:$V31,38:$V41,39:219,42:$V51,47:$VH,62:$V61,70:$V71,73:132,74:$V81,75:143,76:$V91,77:$Va1,78:$Vb1,79:$Vc1,80:$Vd1,81:$Ve1,82:$Vf1,84:134,85:$Vg1,95:$VJ,96:$VK,99:$VL,100:$VM,101:$Vh1,103:$VO,104:$VP,105:$Vi1,106:$Vj1,107:140,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},{22:$V11,24:$V21,26:$V31,38:$V41,41:[1,220],42:$V51,47:$VH,62:$V61,70:$V71,73:191,75:143,76:$V91,77:$Va1,78:$Vb1,79:$Vc1,80:$Vd1,81:$Ve1,82:$Vf1,84:134,85:$Vg1,95:$VJ,96:$VK,99:$VL,100:$VM,101:$Vh1,103:$VO,104:$VP,105:$Vi1,106:$Vj1,107:140,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},{22:$V11,24:$V21,26:$V31,38:$V41,42:$V51,47:$VH,62:$V61,64:[1,221],66:[1,222],70:$V71,73:191,75:143,76:$V91,77:$Va1,78:$Vb1,79:$Vc1,80:$Vd1,81:$Ve1,82:$Vf1,84:134,85:$Vg1,95:$VJ,96:$VK,99:$VL,100:$VM,101:$Vh1,103:$VO,104:$VP,105:$Vi1,106:$Vj1,107:140,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},{22:$V11,24:$V21,26:$V31,38:$V41,42:$V51,47:$VH,62:$V61,64:[1,224],66:[1,223],70:$V71,73:191,75:143,76:$V91,77:$Va1,78:$Vb1,79:$Vc1,80:$Vd1,81:$Ve1,82:$Vf1,84:134,85:$Vg1,95:$VJ,96:$VK,99:$VL,100:$VM,101:$Vh1,103:$VO,104:$VP,105:$Vi1,106:$Vj1,107:140,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},{9:225,20:$VC,21:$VD,23:$VE},o($VF,[2,49],{47:$Vl1}),o($V01,[2,72]),o($V01,[2,71]),{22:$V11,24:$V21,26:$V31,38:$V41,42:$V51,47:$VH,62:$V61,70:$V71,72:[1,226],73:191,75:143,76:$V91,77:$Va1,78:$Vb1,79:$Vc1,80:$Vd1,81:$Ve1,82:$Vf1,84:134,85:$Vg1,95:$VJ,96:$VK,99:$VL,100:$VM,101:$Vh1,103:$VO,104:$VP,105:$Vi1,106:$Vj1,107:140,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},o($V01,[2,74]),o($Vn1,[2,78]),{22:$V11,24:$V21,26:$V31,38:$V41,39:227,42:$V51,47:$VH,62:$V61,70:$V71,73:132,74:$V81,75:143,76:$V91,77:$Va1,78:$Vb1,79:$Vc1,80:$Vd1,81:$Ve1,82:$Vf1,84:134,85:$Vg1,95:$VJ,96:$VK,99:$VL,100:$VM,101:$Vh1,103:$VO,104:$VP,105:$Vi1,106:$Vj1,107:140,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},o($Vk1,$V5,{17:228}),o($VB,[2,43]),{46:229,47:$Vb,49:43,81:$Vh,95:$Vi,96:$Vj,99:$Vk,100:$Vl,101:$Vm,103:$Vn,104:$Vo,108:44,114:$Vt,115:$Vu,116:$Vv,117:$Vw,118:$Vx,119:$Vy},{22:$Vq1,76:$Vr1,86:230,92:$Vs1,95:$Vt1,97:231,98:232,99:$Vu1,100:$Vv1,101:$Vw1,102:$Vx1,103:$Vy1,104:$Vz1,105:$VA1},{22:$Vq1,76:$Vr1,86:244,92:$Vs1,95:$Vt1,97:231,98:232,99:$Vu1,100:$Vv1,101:$Vw1,102:$Vx1,103:$Vy1,104:$Vz1,105:$VA1},{22:$Vq1,76:$Vr1,86:245,92:$Vs1,94:[1,246],95:$Vt1,97:231,98:232,99:$Vu1,100:$Vv1,101:$Vw1,102:$Vx1,103:$Vy1,104:$Vz1,105:$VA1},{22:$Vq1,76:$Vr1,86:247,92:$Vs1,94:[1,248],95:$Vt1,97:231,98:232,99:$Vu1,100:$Vv1,101:$Vw1,102:$Vx1,103:$Vy1,104:$Vz1,105:$VA1},{95:[1,249]},{22:$Vq1,76:$Vr1,86:250,92:$Vs1,95:$Vt1,97:231,98:232,99:$Vu1,100:$Vv1,101:$Vw1,102:$Vx1,103:$Vy1,104:$Vz1,105:$VA1},{22:$Vq1,76:$Vr1,86:251,92:$Vs1,95:$Vt1,97:231,98:232,99:$Vu1,100:$Vv1,101:$Vw1,102:$Vx1,103:$Vy1,104:$Vz1,105:$VA1},{26:$VG,47:$VH,81:$VI,87:252,95:$VJ,96:$VK,99:$VL,100:$VM,101:$VN,103:$VO,104:$VP,107:94,109:92,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},o($VZ,[2,97]),{74:[1,253]},o($VZ,[2,101],{22:[1,254]}),o($VZ,[2,102]),o($VZ,[2,105]),o($VZ,[2,107],{22:[1,255]}),o($VZ,[2,108]),o($VX,[2,55]),{22:$V11,24:$V21,26:$V31,38:$V41,42:$V51,47:$VH,51:[1,256],62:$V61,70:$V71,73:191,75:143,76:$V91,77:$Va1,78:$Vb1,79:$Vc1,80:$Vd1,81:$Ve1,82:$Vf1,84:134,85:$Vg1,95:$VJ,96:$VK,99:$VL,100:$VM,101:$Vh1,103:$VO,104:$VP,105:$Vi1,106:$Vj1,107:140,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},o($VX,[2,61]),o($VX,[2,57]),o($VX,[2,58]),o($VX,[2,59]),o($VX,[2,60]),o($VX,[2,62]),{22:$V11,24:$V21,26:$V31,38:$V41,42:$V51,47:$VH,61:[1,257],62:$V61,70:$V71,73:191,75:143,76:$V91,77:$Va1,78:$Vb1,79:$Vc1,80:$Vd1,81:$Ve1,82:$Vf1,84:134,85:$Vg1,95:$VJ,96:$VK,99:$VL,100:$VM,101:$Vh1,103:$VO,104:$VP,105:$Vi1,106:$Vj1,107:140,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},o($VX,[2,64]),o($VX,[2,65]),o($VX,[2,67]),o($VX,[2,66]),o($VX,[2,68]),o($Vo1,[2,4]),o([22,47,81,95,96,99,100,101,103,104,114,115,116,117,118,119],[2,76]),{22:$V11,24:$V21,26:$V31,38:$V41,41:[1,258],42:$V51,47:$VH,62:$V61,70:$V71,73:191,75:143,76:$V91,77:$Va1,78:$Vb1,79:$Vc1,80:$Vd1,81:$Ve1,82:$Vf1,84:134,85:$Vg1,95:$VJ,96:$VK,99:$VL,100:$VM,101:$Vh1,103:$VO,104:$VP,105:$Vi1,106:$Vj1,107:140,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},{18:18,19:19,20:$V6,21:$V7,22:$V8,23:$V9,32:24,33:25,34:26,35:27,36:28,37:29,38:$Va,42:[1,259],43:31,45:32,46:42,47:$Vb,49:43,76:$Vc,77:$Vd,78:$Ve,79:$Vf,80:$Vg,81:$Vh,95:$Vi,96:$Vj,99:$Vk,100:$Vl,101:$Vm,103:$Vn,104:$Vo,108:44,110:$Vp,111:$Vq,112:$Vr,113:$Vs,114:$Vt,115:$Vu,116:$Vv,117:$Vw,118:$Vx,119:$Vy},o($VW,[2,53]),o($VZ,[2,110],{96:$VB1}),o($VC1,[2,120],{98:261,22:$Vq1,76:$Vr1,92:$Vs1,95:$Vt1,99:$Vu1,100:$Vv1,101:$Vw1,102:$Vx1,103:$Vy1,104:$Vz1,105:$VA1}),o($VD1,[2,122]),o($VD1,[2,124]),o($VD1,[2,125]),o($VD1,[2,126]),o($VD1,[2,127]),o($VD1,[2,128]),o($VD1,[2,129]),o($VD1,[2,130]),o($VD1,[2,131]),o($VD1,[2,132]),o($VD1,[2,133]),o($VD1,[2,134]),o($VZ,[2,111],{96:$VB1}),o($VZ,[2,112],{96:$VB1}),{22:[1,262]},o($VZ,[2,113],{96:$VB1}),{22:[1,263]},o($Vp1,[2,119]),o($VZ,[2,93],{96:$VB1}),o($VZ,[2,94],{96:$VB1}),o($VZ,[2,95],{107:94,109:170,26:$VG,47:$VH,81:$VI,95:$VJ,96:$VK,99:$VL,100:$VM,101:$VN,103:$VO,104:$VP,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV}),o($VZ,[2,99]),{91:[1,264]},{91:[1,265]},{51:[1,266]},{61:[1,267]},{9:268,20:$VC,21:$VD,23:$VE},o($VB,[2,42]),{22:$Vq1,76:$Vr1,92:$Vs1,95:$Vt1,97:269,98:232,99:$Vu1,100:$Vv1,101:$Vw1,102:$Vx1,103:$Vy1,104:$Vz1,105:$VA1},o($VD1,[2,123]),{26:$VG,47:$VH,81:$VI,87:270,95:$VJ,96:$VK,99:$VL,100:$VM,101:$VN,103:$VO,104:$VP,107:94,109:92,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},{26:$VG,47:$VH,81:$VI,87:271,95:$VJ,96:$VK,99:$VL,100:$VM,101:$VN,103:$VO,104:$VP,107:94,109:92,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV},o($VZ,[2,103]),o($VZ,[2,109]),o($VX,[2,56]),o($VX,[2,63]),o($Vk1,$V5,{17:272}),o($VC1,[2,121],{98:261,22:$Vq1,76:$Vr1,92:$Vs1,95:$Vt1,99:$Vu1,100:$Vv1,101:$Vw1,102:$Vx1,103:$Vy1,104:$Vz1,105:$VA1}),o($VZ,[2,116],{107:94,109:170,22:[1,273],26:$VG,47:$VH,81:$VI,95:$VJ,96:$VK,99:$VL,100:$VM,101:$VN,103:$VO,104:$VP,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV}),o($VZ,[2,117],{107:94,109:170,22:[1,274],26:$VG,47:$VH,81:$VI,95:$VJ,96:$VK,99:$VL,100:$VM,101:$VN,103:$VO,104:$VP,114:$VQ,115:$VR,116:$VS,117:$VT,118:$VU,119:$VV}),{18:18,19:19,20:$V6,21:$V7,22:$V8,23:$V9,32:24,33:25,34:26,35:27,36:28,37:29,38:$Va,42:[1,275],43:31,45:32,46:42,47:$Vb,49:43,76:$Vc,77:$Vd,78:$Ve,79:$Vf,80:$Vg,81:$Vh,95:$Vi,96:$Vj,99:$Vk,100:$Vl,101:$Vm,103:$Vn,104:$Vo,108:44,110:$Vp,111:$Vq,112:$Vr,113:$Vs,114:$Vt,115:$Vu,116:$Vv,117:$Vw,118:$Vx,119:$Vy},{22:$Vq1,76:$Vr1,86:276,92:$Vs1,95:$Vt1,97:231,98:232,99:$Vu1,100:$Vv1,101:$Vw1,102:$Vx1,103:$Vy1,104:$Vz1,105:$VA1},{22:$Vq1,76:$Vr1,86:277,92:$Vs1,95:$Vt1,97:231,98:232,99:$Vu1,100:$Vv1,101:$Vw1,102:$Vx1,103:$Vy1,104:$Vz1,105:$VA1},o($VB,[2,41]),o($VZ,[2,114],{96:$VB1}),o($VZ,[2,115],{96:$VB1})],\ndefaultActions: {2:[2,1],9:[2,5],10:[2,2],124:[2,7]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\r\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0: this.begin('open_directive'); return 12; \nbreak;\ncase 1: this.begin('type_directive'); return 13; \nbreak;\ncase 2: this.popState(); this.begin('arg_directive'); return 10; \nbreak;\ncase 3: this.popState(); this.popState(); return 15; \nbreak;\ncase 4:return 14;\nbreak;\ncase 5:/* skip comments */\nbreak;\ncase 6:/* skip comments */\nbreak;\ncase 7:this.begin(\"string\");\nbreak;\ncase 8:this.popState();\nbreak;\ncase 9:return \"STR\";\nbreak;\ncase 10:return 76;\nbreak;\ncase 11:return 85;\nbreak;\ncase 12:return 77;\nbreak;\ncase 13:return 94;\nbreak;\ncase 14:return 78;\nbreak;\ncase 15:return 79;\nbreak;\ncase 16:this.begin(\"href\");\nbreak;\ncase 17:this.popState();\nbreak;\ncase 18:return 90;\nbreak;\ncase 19:this.begin(\"callbackname\");\nbreak;\ncase 20:this.popState();\nbreak;\ncase 21:this.popState(); this.begin(\"callbackargs\");\nbreak;\ncase 22:return 88;\nbreak;\ncase 23:this.popState();\nbreak;\ncase 24:return 89;\nbreak;\ncase 25:this.begin(\"click\");\nbreak;\ncase 26:this.popState();\nbreak;\ncase 27:return 80;\nbreak;\ncase 28:if(yy.lex.firstGraph()){this.begin(\"dir\");} return 24;\nbreak;\ncase 29:if(yy.lex.firstGraph()){this.begin(\"dir\");} return 24;\nbreak;\ncase 30:return 38;\nbreak;\ncase 31:return 42;\nbreak;\ncase 32:return 91;\nbreak;\ncase 33:return 91;\nbreak;\ncase 34:return 91;\nbreak;\ncase 35:return 91;\nbreak;\ncase 36: this.popState(); return 25; \nbreak;\ncase 37: this.popState(); return 26; \nbreak;\ncase 38: this.popState(); return 26; \nbreak;\ncase 39: this.popState(); return 26; \nbreak;\ncase 40: this.popState(); return 26; \nbreak;\ncase 41: this.popState(); return 26; \nbreak;\ncase 42: this.popState(); return 26; \nbreak;\ncase 43: this.popState(); return 26; \nbreak;\ncase 44: this.popState(); return 26; \nbreak;\ncase 45: this.popState(); return 26; \nbreak;\ncase 46: this.popState(); return 26; \nbreak;\ncase 47:return 110;\nbreak;\ncase 48:return 111;\nbreak;\ncase 49:return 112;\nbreak;\ncase 50:return 113;\nbreak;\ncase 51: return 95;\nbreak;\ncase 52:return 103;\nbreak;\ncase 53:return 48;\nbreak;\ncase 54:return 100;\nbreak;\ncase 55:return 47;\nbreak;\ncase 56:return 20;\nbreak;\ncase 57:return 96;\nbreak;\ncase 58:return 118;\nbreak;\ncase 59:return 71;\nbreak;\ncase 60:return 71;\nbreak;\ncase 61:return 71;\nbreak;\ncase 62:return 70;\nbreak;\ncase 63:return 70;\nbreak;\ncase 64:return 70;\nbreak;\ncase 65:return 52;\nbreak;\ncase 66:return 53;\nbreak;\ncase 67:return 54;\nbreak;\ncase 68:return 55;\nbreak;\ncase 69:return 56;\nbreak;\ncase 70:return 57;\nbreak;\ncase 71:return 58;\nbreak;\ncase 72:return 59;\nbreak;\ncase 73:return 101;\nbreak;\ncase 74:return 104;\nbreak;\ncase 75:return 119;\nbreak;\ncase 76:return 116;\nbreak;\ncase 77:return 105;\nbreak;\ncase 78:return 117;\nbreak;\ncase 79:return 117;\nbreak;\ncase 80:return 106;\nbreak;\ncase 81:return 62;\nbreak;\ncase 82:return 82;\nbreak;\ncase 83:return 'SEP';\nbreak;\ncase 84:return 81;\nbreak;\ncase 85:return 99;\nbreak;\ncase 86:return 64;\nbreak;\ncase 87:return 63;\nbreak;\ncase 88:return 66;\nbreak;\ncase 89:return 65;\nbreak;\ncase 90:return 114;\nbreak;\ncase 91:return 115;\nbreak;\ncase 92:return 72;\nbreak;\ncase 93:return 50;\nbreak;\ncase 94:return 51;\nbreak;\ncase 95:return 40;\nbreak;\ncase 96:return 41;\nbreak;\ncase 97:return 60\nbreak;\ncase 98:return 61\nbreak;\ncase 99:return 125;\nbreak;\ncase 100:return 21;\nbreak;\ncase 101:return 22;\nbreak;\ncase 102:return 23;\nbreak;\n}\n},\nrules: [/^(?:%%\\{)/,/^(?:((?:(?!\\}%%)[^:.])*))/,/^(?::)/,/^(?:\\}%%)/,/^(?:((?:(?!\\}%%).|\\n)*))/,/^(?:%%(?!\\{)[^\\n]*)/,/^(?:[^\\}]%%[^\\n]*)/,/^(?:[\"])/,/^(?:[\"])/,/^(?:[^\"]*)/,/^(?:style\\b)/,/^(?:default\\b)/,/^(?:linkStyle\\b)/,/^(?:interpolate\\b)/,/^(?:classDef\\b)/,/^(?:class\\b)/,/^(?:href[\\s]+[\"])/,/^(?:[\"])/,/^(?:[^\"]*)/,/^(?:call[\\s]+)/,/^(?:\\([\\s]*\\))/,/^(?:\\()/,/^(?:[^(]*)/,/^(?:\\))/,/^(?:[^)]*)/,/^(?:click[\\s]+)/,/^(?:[\\s\\n])/,/^(?:[^\\s\\n]*)/,/^(?:graph\\b)/,/^(?:flowchart\\b)/,/^(?:subgraph\\b)/,/^(?:end\\b\\s*)/,/^(?:_self\\b)/,/^(?:_blank\\b)/,/^(?:_parent\\b)/,/^(?:_top\\b)/,/^(?:(\\r?\\n)*\\s*\\n)/,/^(?:\\s*LR\\b)/,/^(?:\\s*RL\\b)/,/^(?:\\s*TB\\b)/,/^(?:\\s*BT\\b)/,/^(?:\\s*TD\\b)/,/^(?:\\s*BR\\b)/,/^(?:\\s*<)/,/^(?:\\s*>)/,/^(?:\\s*\\^)/,/^(?:\\s*v\\b)/,/^(?:.*direction\\s+TB[^\\n]*)/,/^(?:.*direction\\s+BT[^\\n]*)/,/^(?:.*direction\\s+RL[^\\n]*)/,/^(?:.*direction\\s+LR[^\\n]*)/,/^(?:[0-9]+)/,/^(?:#)/,/^(?::::)/,/^(?::)/,/^(?:&)/,/^(?:;)/,/^(?:,)/,/^(?:\\*)/,/^(?:\\s*[xo<]?--+[-xo>]\\s*)/,/^(?:\\s*[xo<]?==+[=xo>]\\s*)/,/^(?:\\s*[xo<]?-?\\.+-[xo>]?\\s*)/,/^(?:\\s*[xo<]?--\\s*)/,/^(?:\\s*[xo<]?==\\s*)/,/^(?:\\s*[xo<]?-\\.\\s*)/,/^(?:\\(-)/,/^(?:-\\))/,/^(?:\\(\\[)/,/^(?:\\]\\))/,/^(?:\\[\\[)/,/^(?:\\]\\])/,/^(?:\\[\\()/,/^(?:\\)\\])/,/^(?:-)/,/^(?:\\.)/,/^(?:[\\_])/,/^(?:\\+)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:<)/,/^(?:>)/,/^(?:\\^)/,/^(?:\\\\\\|)/,/^(?:v\\b)/,/^(?:[A-Za-z]+)/,/^(?:\\\\\\])/,/^(?:\\[\\/)/,/^(?:\\/\\])/,/^(?:\\[\\\\)/,/^(?:[!\"#$%&'*+,-.`?\\\\_/])/,/^(?:[\\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])/,/^(?:\\|)/,/^(?:\\()/,/^(?:\\))/,/^(?:\\[)/,/^(?:\\])/,/^(?:\\{)/,/^(?:\\})/,/^(?:\")/,/^(?:(\\r?\\n)+)/,/^(?:\\s)/,/^(?:$)/],\nconditions: {\"close_directive\":{\"rules\":[],\"inclusive\":false},\"arg_directive\":{\"rules\":[3,4],\"inclusive\":false},\"type_directive\":{\"rules\":[2,3],\"inclusive\":false},\"open_directive\":{\"rules\":[1],\"inclusive\":false},\"callbackargs\":{\"rules\":[23,24],\"inclusive\":false},\"callbackname\":{\"rules\":[20,21,22],\"inclusive\":false},\"href\":{\"rules\":[17,18],\"inclusive\":false},\"click\":{\"rules\":[26,27],\"inclusive\":false},\"vertex\":{\"rules\":[],\"inclusive\":false},\"dir\":{\"rules\":[36,37,38,39,40,41,42,43,44,45,46],\"inclusive\":false},\"string\":{\"rules\":[8,9],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,5,6,7,10,11,12,13,14,15,16,19,25,28,29,30,31,32,33,34,35,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,3],$V1=[1,5],$V2=[7,9,11,12,13,14,15,16,17,18,19,20,22,29,34],$V3=[1,15],$V4=[1,16],$V5=[1,17],$V6=[1,18],$V7=[1,19],$V8=[1,20],$V9=[1,21],$Va=[1,22],$Vb=[1,23],$Vc=[1,25],$Vd=[1,27],$Ve=[1,30],$Vf=[5,7,9,11,12,13,14,15,16,17,18,19,20,22,29,34];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"directive\":4,\"gantt\":5,\"document\":6,\"EOF\":7,\"line\":8,\"SPACE\":9,\"statement\":10,\"NL\":11,\"dateFormat\":12,\"inclusiveEndDates\":13,\"topAxis\":14,\"axisFormat\":15,\"excludes\":16,\"includes\":17,\"todayMarker\":18,\"title\":19,\"section\":20,\"clickStatement\":21,\"taskTxt\":22,\"taskData\":23,\"openDirective\":24,\"typeDirective\":25,\"closeDirective\":26,\":\":27,\"argDirective\":28,\"click\":29,\"callbackname\":30,\"callbackargs\":31,\"href\":32,\"clickStatementDebug\":33,\"open_directive\":34,\"type_directive\":35,\"arg_directive\":36,\"close_directive\":37,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",5:\"gantt\",7:\"EOF\",9:\"SPACE\",11:\"NL\",12:\"dateFormat\",13:\"inclusiveEndDates\",14:\"topAxis\",15:\"axisFormat\",16:\"excludes\",17:\"includes\",18:\"todayMarker\",19:\"title\",20:\"section\",22:\"taskTxt\",23:\"taskData\",27:\":\",29:\"click\",30:\"callbackname\",31:\"callbackargs\",32:\"href\",34:\"open_directive\",35:\"type_directive\",36:\"arg_directive\",37:\"close_directive\"},\nproductions_: [0,[3,2],[3,3],[6,0],[6,2],[8,2],[8,1],[8,1],[8,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,2],[10,1],[4,4],[4,6],[21,2],[21,3],[21,3],[21,4],[21,3],[21,4],[21,2],[33,2],[33,3],[33,3],[33,4],[33,3],[33,4],[33,2],[24,1],[25,1],[28,1],[26,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 2:\n return $$[$0-1]; \nbreak;\ncase 3:\n this.$ = [] \nbreak;\ncase 4:\n$$[$0-1].push($$[$0]);this.$ = $$[$0-1]\nbreak;\ncase 5: case 6:\n this.$ = $$[$0] \nbreak;\ncase 7: case 8:\n this.$=[];\nbreak;\ncase 9:\nyy.setDateFormat($$[$0].substr(11));this.$=$$[$0].substr(11);\nbreak;\ncase 10:\nyy.enableInclusiveEndDates();this.$=$$[$0].substr(18);\nbreak;\ncase 11:\nyy.TopAxis();this.$=$$[$0].substr(8);\nbreak;\ncase 12:\nyy.setAxisFormat($$[$0].substr(11));this.$=$$[$0].substr(11);\nbreak;\ncase 13:\nyy.setExcludes($$[$0].substr(9));this.$=$$[$0].substr(9);\nbreak;\ncase 14:\nyy.setIncludes($$[$0].substr(9));this.$=$$[$0].substr(9);\nbreak;\ncase 15:\nyy.setTodayMarker($$[$0].substr(12));this.$=$$[$0].substr(12);\nbreak;\ncase 16:\nyy.setTitle($$[$0].substr(6));this.$=$$[$0].substr(6);\nbreak;\ncase 17:\nyy.addSection($$[$0].substr(8));this.$=$$[$0].substr(8);\nbreak;\ncase 19:\nyy.addTask($$[$0-1],$$[$0]);this.$='task';\nbreak;\ncase 23:\nthis.$ = $$[$0-1];yy.setClickEvent($$[$0-1], $$[$0], null);\nbreak;\ncase 24:\nthis.$ = $$[$0-2];yy.setClickEvent($$[$0-2], $$[$0-1], $$[$0]);\nbreak;\ncase 25:\nthis.$ = $$[$0-2];yy.setClickEvent($$[$0-2], $$[$0-1], null);yy.setLink($$[$0-2],$$[$0]);\nbreak;\ncase 26:\nthis.$ = $$[$0-3];yy.setClickEvent($$[$0-3], $$[$0-2], $$[$0-1]);yy.setLink($$[$0-3],$$[$0]);\nbreak;\ncase 27:\nthis.$ = $$[$0-2];yy.setClickEvent($$[$0-2], $$[$0], null);yy.setLink($$[$0-2],$$[$0-1]);\nbreak;\ncase 28:\nthis.$ = $$[$0-3];yy.setClickEvent($$[$0-3], $$[$0-1], $$[$0]);yy.setLink($$[$0-3],$$[$0-2]);\nbreak;\ncase 29:\nthis.$ = $$[$0-1];yy.setLink($$[$0-1], $$[$0]);\nbreak;\ncase 30: case 36:\nthis.$=$$[$0-1] + ' ' + $$[$0];\nbreak;\ncase 31: case 32: case 34:\nthis.$=$$[$0-2] + ' ' + $$[$0-1] + ' ' + $$[$0];\nbreak;\ncase 33: case 35:\nthis.$=$$[$0-3] + ' ' + $$[$0-2] + ' ' + $$[$0-1] + ' ' + $$[$0];\nbreak;\ncase 37:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 38:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 39:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 40:\n yy.parseDirective('}%%', 'close_directive', 'gantt'); \nbreak;\n}\n},\ntable: [{3:1,4:2,5:$V0,24:4,34:$V1},{1:[3]},{3:6,4:2,5:$V0,24:4,34:$V1},o($V2,[2,3],{6:7}),{25:8,35:[1,9]},{35:[2,37]},{1:[2,1]},{4:26,7:[1,10],8:11,9:[1,12],10:13,11:[1,14],12:$V3,13:$V4,14:$V5,15:$V6,16:$V7,17:$V8,18:$V9,19:$Va,20:$Vb,21:24,22:$Vc,24:4,29:$Vd,34:$V1},{26:28,27:[1,29],37:$Ve},o([27,37],[2,38]),o($V2,[2,8],{1:[2,2]}),o($V2,[2,4]),{4:26,10:31,12:$V3,13:$V4,14:$V5,15:$V6,16:$V7,17:$V8,18:$V9,19:$Va,20:$Vb,21:24,22:$Vc,24:4,29:$Vd,34:$V1},o($V2,[2,6]),o($V2,[2,7]),o($V2,[2,9]),o($V2,[2,10]),o($V2,[2,11]),o($V2,[2,12]),o($V2,[2,13]),o($V2,[2,14]),o($V2,[2,15]),o($V2,[2,16]),o($V2,[2,17]),o($V2,[2,18]),{23:[1,32]},o($V2,[2,20]),{30:[1,33],32:[1,34]},{11:[1,35]},{28:36,36:[1,37]},{11:[2,40]},o($V2,[2,5]),o($V2,[2,19]),o($V2,[2,23],{31:[1,38],32:[1,39]}),o($V2,[2,29],{30:[1,40]}),o($Vf,[2,21]),{26:41,37:$Ve},{37:[2,39]},o($V2,[2,24],{32:[1,42]}),o($V2,[2,25]),o($V2,[2,27],{31:[1,43]}),{11:[1,44]},o($V2,[2,26]),o($V2,[2,28]),o($Vf,[2,22])],\ndefaultActions: {5:[2,37],6:[2,1],30:[2,40],37:[2,39]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\r\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0: this.begin('open_directive'); return 34; \nbreak;\ncase 1: this.begin('type_directive'); return 35; \nbreak;\ncase 2: this.popState(); this.begin('arg_directive'); return 27; \nbreak;\ncase 3: this.popState(); this.popState(); return 37; \nbreak;\ncase 4:return 36;\nbreak;\ncase 5:/* skip comments */\nbreak;\ncase 6:/* skip comments */\nbreak;\ncase 7:/* do nothing */\nbreak;\ncase 8:return 11;\nbreak;\ncase 9:/* skip whitespace */\nbreak;\ncase 10:/* skip comments */\nbreak;\ncase 11:/* skip comments */\nbreak;\ncase 12:this.begin(\"href\");\nbreak;\ncase 13:this.popState();\nbreak;\ncase 14:return 32;\nbreak;\ncase 15:this.begin(\"callbackname\");\nbreak;\ncase 16:this.popState();\nbreak;\ncase 17:this.popState(); this.begin(\"callbackargs\");\nbreak;\ncase 18:return 30;\nbreak;\ncase 19:this.popState();\nbreak;\ncase 20:return 31;\nbreak;\ncase 21:this.begin(\"click\");\nbreak;\ncase 22:this.popState();\nbreak;\ncase 23:return 29;\nbreak;\ncase 24:return 5;\nbreak;\ncase 25:return 12;\nbreak;\ncase 26:return 13;\nbreak;\ncase 27:return 14;\nbreak;\ncase 28:return 15;\nbreak;\ncase 29:return 17;\nbreak;\ncase 30:return 16;\nbreak;\ncase 31:return 18;\nbreak;\ncase 32:return 'date';\nbreak;\ncase 33:return 19;\nbreak;\ncase 34:return 20;\nbreak;\ncase 35:return 22;\nbreak;\ncase 36:return 23;\nbreak;\ncase 37:return 27;\nbreak;\ncase 38:return 7;\nbreak;\ncase 39:return 'INVALID';\nbreak;\n}\n},\nrules: [/^(?:%%\\{)/i,/^(?:((?:(?!\\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\\}%%)/i,/^(?:((?:(?!\\}%%).|\\n)*))/i,/^(?:%%(?!\\{)*[^\\n]*)/i,/^(?:[^\\}]%%*[^\\n]*)/i,/^(?:%%*[^\\n]*[\\n]*)/i,/^(?:[\\n]+)/i,/^(?:\\s+)/i,/^(?:#[^\\n]*)/i,/^(?:%[^\\n]*)/i,/^(?:href[\\s]+[\"])/i,/^(?:[\"])/i,/^(?:[^\"]*)/i,/^(?:call[\\s]+)/i,/^(?:\\([\\s]*\\))/i,/^(?:\\()/i,/^(?:[^(]*)/i,/^(?:\\))/i,/^(?:[^)]*)/i,/^(?:click[\\s]+)/i,/^(?:[\\s\\n])/i,/^(?:[^\\s\\n]*)/i,/^(?:gantt\\b)/i,/^(?:dateFormat\\s[^#\\n;]+)/i,/^(?:inclusiveEndDates\\b)/i,/^(?:topAxis\\b)/i,/^(?:axisFormat\\s[^#\\n;]+)/i,/^(?:includes\\s[^#\\n;]+)/i,/^(?:excludes\\s[^#\\n;]+)/i,/^(?:todayMarker\\s[^\\n;]+)/i,/^(?:\\d\\d\\d\\d-\\d\\d-\\d\\d\\b)/i,/^(?:title\\s[^#\\n;]+)/i,/^(?:section\\s[^#:\\n;]+)/i,/^(?:[^#:\\n;]+)/i,/^(?::[^#\\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],\nconditions: {\"close_directive\":{\"rules\":[],\"inclusive\":false},\"arg_directive\":{\"rules\":[3,4],\"inclusive\":false},\"type_directive\":{\"rules\":[2,3],\"inclusive\":false},\"open_directive\":{\"rules\":[1],\"inclusive\":false},\"callbackargs\":{\"rules\":[19,20],\"inclusive\":false},\"callbackname\":{\"rules\":[16,17,18],\"inclusive\":false},\"href\":{\"rules\":[13,14],\"inclusive\":false},\"click\":{\"rules\":[22,23],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,5,6,7,8,9,10,11,12,15,21,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[2,3],$V1=[1,7],$V2=[7,12,15,17,19,20,21],$V3=[7,11,12,15,17,19,20,21],$V4=[2,20],$V5=[1,32];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"GG\":4,\":\":5,\"document\":6,\"EOF\":7,\"DIR\":8,\"options\":9,\"body\":10,\"OPT\":11,\"NL\":12,\"line\":13,\"statement\":14,\"COMMIT\":15,\"commit_arg\":16,\"BRANCH\":17,\"ID\":18,\"CHECKOUT\":19,\"MERGE\":20,\"RESET\":21,\"reset_arg\":22,\"STR\":23,\"HEAD\":24,\"reset_parents\":25,\"CARET\":26,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"GG\",5:\":\",7:\"EOF\",8:\"DIR\",11:\"OPT\",12:\"NL\",15:\"COMMIT\",17:\"BRANCH\",18:\"ID\",19:\"CHECKOUT\",20:\"MERGE\",21:\"RESET\",23:\"STR\",24:\"HEAD\",26:\"CARET\"},\nproductions_: [0,[3,4],[3,5],[6,0],[6,2],[9,2],[9,1],[10,0],[10,2],[13,2],[13,1],[14,2],[14,2],[14,2],[14,2],[14,2],[16,0],[16,1],[22,2],[22,2],[25,0],[25,2]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 1:\n return $$[$0-1]; \nbreak;\ncase 2:\nyy.setDirection($$[$0-3]); return $$[$0-1];\nbreak;\ncase 4:\n yy.setOptions($$[$0-1]); this.$ = $$[$0]\nbreak;\ncase 5:\n$$[$0-1] +=$$[$0]; this.$=$$[$0-1]\nbreak;\ncase 7:\nthis.$ = []\nbreak;\ncase 8:\n$$[$0-1].push($$[$0]); this.$=$$[$0-1];\nbreak;\ncase 9:\nthis.$ =$$[$0-1]\nbreak;\ncase 11:\nyy.commit($$[$0])\nbreak;\ncase 12:\nyy.branch($$[$0])\nbreak;\ncase 13:\nyy.checkout($$[$0])\nbreak;\ncase 14:\nyy.merge($$[$0])\nbreak;\ncase 15:\nyy.reset($$[$0])\nbreak;\ncase 16:\nthis.$ = \"\"\nbreak;\ncase 17:\nthis.$=$$[$0]\nbreak;\ncase 18:\nthis.$ = $$[$0-1]+ \":\" + $$[$0] \nbreak;\ncase 19:\nthis.$ = $$[$0-1]+ \":\" + yy.count; yy.count = 0\nbreak;\ncase 20:\nyy.count = 0\nbreak;\ncase 21:\n yy.count += 1 \nbreak;\n}\n},\ntable: [{3:1,4:[1,2]},{1:[3]},{5:[1,3],8:[1,4]},{6:5,7:$V0,9:6,12:$V1},{5:[1,8]},{7:[1,9]},o($V2,[2,7],{10:10,11:[1,11]}),o($V3,[2,6]),{6:12,7:$V0,9:6,12:$V1},{1:[2,1]},{7:[2,4],12:[1,15],13:13,14:14,15:[1,16],17:[1,17],19:[1,18],20:[1,19],21:[1,20]},o($V3,[2,5]),{7:[1,21]},o($V2,[2,8]),{12:[1,22]},o($V2,[2,10]),{12:[2,16],16:23,23:[1,24]},{18:[1,25]},{18:[1,26]},{18:[1,27]},{18:[1,30],22:28,24:[1,29]},{1:[2,2]},o($V2,[2,9]),{12:[2,11]},{12:[2,17]},{12:[2,12]},{12:[2,13]},{12:[2,14]},{12:[2,15]},{12:$V4,25:31,26:$V5},{12:$V4,25:33,26:$V5},{12:[2,18]},{12:$V4,25:34,26:$V5},{12:[2,19]},{12:[2,21]}],\ndefaultActions: {9:[2,1],21:[2,2],23:[2,11],24:[2,17],25:[2,12],26:[2,13],27:[2,14],28:[2,15],31:[2,18],33:[2,19],34:[2,21]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0:return 12;\nbreak;\ncase 1:/* skip all whitespace */\nbreak;\ncase 2:/* skip comments */\nbreak;\ncase 3:/* skip comments */\nbreak;\ncase 4:return 4;\nbreak;\ncase 5:return 15;\nbreak;\ncase 6:return 17;\nbreak;\ncase 7:return 20;\nbreak;\ncase 8:return 21;\nbreak;\ncase 9:return 19;\nbreak;\ncase 10:return 8;\nbreak;\ncase 11:return 8;\nbreak;\ncase 12:return 5;\nbreak;\ncase 13:return 26\nbreak;\ncase 14:this.begin(\"options\");\nbreak;\ncase 15:this.popState();\nbreak;\ncase 16:return 11;\nbreak;\ncase 17:this.begin(\"string\");\nbreak;\ncase 18:this.popState();\nbreak;\ncase 19:return 23;\nbreak;\ncase 20:return 18;\nbreak;\ncase 21:return 7;\nbreak;\n}\n},\nrules: [/^(?:(\\r?\\n)+)/i,/^(?:\\s+)/i,/^(?:#[^\\n]*)/i,/^(?:%[^\\n]*)/i,/^(?:gitGraph\\b)/i,/^(?:commit\\b)/i,/^(?:branch\\b)/i,/^(?:merge\\b)/i,/^(?:reset\\b)/i,/^(?:checkout\\b)/i,/^(?:LR\\b)/i,/^(?:BT\\b)/i,/^(?::)/i,/^(?:\\^)/i,/^(?:options\\r?\\n)/i,/^(?:end\\r?\\n)/i,/^(?:[^\\n]+\\r?\\n)/i,/^(?:[\"])/i,/^(?:[\"])/i,/^(?:[^\"]*)/i,/^(?:[a-zA-Z][-_\\.a-zA-Z0-9]*[-_a-zA-Z0-9])/i,/^(?:$)/i],\nconditions: {\"options\":{\"rules\":[15,16],\"inclusive\":false},\"string\":{\"rules\":[18,19],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,17,20,21],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[6,9,10];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"info\":4,\"document\":5,\"EOF\":6,\"line\":7,\"statement\":8,\"NL\":9,\"showInfo\":10,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"info\",6:\"EOF\",9:\"NL\",10:\"showInfo\"},\nproductions_: [0,[3,3],[5,0],[5,2],[7,1],[7,1],[8,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 1:\n return yy; \nbreak;\ncase 4:\n \nbreak;\ncase 6:\n yy.setInfo(true); \nbreak;\n}\n},\ntable: [{3:1,4:[1,2]},{1:[3]},o($V0,[2,2],{5:3}),{6:[1,4],7:5,8:6,9:[1,7],10:[1,8]},{1:[2,1]},o($V0,[2,3]),o($V0,[2,4]),o($V0,[2,5]),o($V0,[2,6])],\ndefaultActions: {4:[2,1]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\r\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\r\n\t// Pre-lexer code can go here\r\n\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0:return 4 ;\nbreak;\ncase 1:return 9 ;\nbreak;\ncase 2:return 'space';\nbreak;\ncase 3:return 10;\nbreak;\ncase 4:return 6 ;\nbreak;\ncase 5:return 'TXT' ;\nbreak;\n}\n},\nrules: [/^(?:info\\b)/i,/^(?:[\\s\\n\\r]+)/i,/^(?:[\\s]+)/i,/^(?:showInfo\\b)/i,/^(?:$)/i,/^(?:.)/i],\nconditions: {\"INITIAL\":{\"rules\":[0,1,2,3,4,5],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,4],$V1=[1,5],$V2=[1,6],$V3=[1,7],$V4=[1,9],$V5=[1,11,13,20,21,22,23],$V6=[2,5],$V7=[1,6,11,13,20,21,22,23],$V8=[20,21,22],$V9=[2,8],$Va=[1,18],$Vb=[1,19],$Vc=[1,24],$Vd=[6,20,21,22,23];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"eol\":4,\"directive\":5,\"PIE\":6,\"document\":7,\"showData\":8,\"line\":9,\"statement\":10,\"txt\":11,\"value\":12,\"title\":13,\"title_value\":14,\"openDirective\":15,\"typeDirective\":16,\"closeDirective\":17,\":\":18,\"argDirective\":19,\"NEWLINE\":20,\";\":21,\"EOF\":22,\"open_directive\":23,\"type_directive\":24,\"arg_directive\":25,\"close_directive\":26,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",6:\"PIE\",8:\"showData\",11:\"txt\",12:\"value\",13:\"title\",14:\"title_value\",18:\":\",20:\"NEWLINE\",21:\";\",22:\"EOF\",23:\"open_directive\",24:\"type_directive\",25:\"arg_directive\",26:\"close_directive\"},\nproductions_: [0,[3,2],[3,2],[3,2],[3,3],[7,0],[7,2],[9,2],[10,0],[10,2],[10,2],[10,1],[5,3],[5,5],[4,1],[4,1],[4,1],[15,1],[16,1],[19,1],[17,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 4:\nyy.setShowData(true);\nbreak;\ncase 7:\n this.$ = $$[$0-1] \nbreak;\ncase 9:\n yy.addSection($$[$0-1],yy.cleanupValue($$[$0])); \nbreak;\ncase 10:\n this.$=$$[$0].trim();yy.setTitle(this.$); \nbreak;\ncase 17:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 18:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 19:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 20:\n yy.parseDirective('}%%', 'close_directive', 'pie'); \nbreak;\n}\n},\ntable: [{3:1,4:2,5:3,6:$V0,15:8,20:$V1,21:$V2,22:$V3,23:$V4},{1:[3]},{3:10,4:2,5:3,6:$V0,15:8,20:$V1,21:$V2,22:$V3,23:$V4},{3:11,4:2,5:3,6:$V0,15:8,20:$V1,21:$V2,22:$V3,23:$V4},o($V5,$V6,{7:12,8:[1,13]}),o($V7,[2,14]),o($V7,[2,15]),o($V7,[2,16]),{16:14,24:[1,15]},{24:[2,17]},{1:[2,1]},{1:[2,2]},o($V8,$V9,{15:8,9:16,10:17,5:20,1:[2,3],11:$Va,13:$Vb,23:$V4}),o($V5,$V6,{7:21}),{17:22,18:[1,23],26:$Vc},o([18,26],[2,18]),o($V5,[2,6]),{4:25,20:$V1,21:$V2,22:$V3},{12:[1,26]},{14:[1,27]},o($V8,[2,11]),o($V8,$V9,{15:8,9:16,10:17,5:20,1:[2,4],11:$Va,13:$Vb,23:$V4}),o($Vd,[2,12]),{19:28,25:[1,29]},o($Vd,[2,20]),o($V5,[2,7]),o($V8,[2,9]),o($V8,[2,10]),{17:30,26:$Vc},{26:[2,19]},o($Vd,[2,13])],\ndefaultActions: {9:[2,17],10:[2,1],11:[2,2],29:[2,19]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\r\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0: this.begin('open_directive'); return 23; \nbreak;\ncase 1: this.begin('type_directive'); return 24; \nbreak;\ncase 2: this.popState(); this.begin('arg_directive'); return 18; \nbreak;\ncase 3: this.popState(); this.popState(); return 26; \nbreak;\ncase 4:return 25;\nbreak;\ncase 5:/* skip comments */\nbreak;\ncase 6:/* skip comments */{ /*console.log('');*/ }\nbreak;\ncase 7:return 20;\nbreak;\ncase 8:/* do nothing */\nbreak;\ncase 9:/* ignore */\nbreak;\ncase 10: this.begin(\"title\");return 13; \nbreak;\ncase 11: this.popState(); return \"title_value\"; \nbreak;\ncase 12: this.begin(\"string\"); \nbreak;\ncase 13: this.popState(); \nbreak;\ncase 14: return \"txt\"; \nbreak;\ncase 15:return 6;\nbreak;\ncase 16:return 8;\nbreak;\ncase 17:return \"value\";\nbreak;\ncase 18:return 22;\nbreak;\n}\n},\nrules: [/^(?:%%\\{)/i,/^(?:((?:(?!\\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\\}%%)/i,/^(?:((?:(?!\\}%%).|\\n)*))/i,/^(?:%%(?!\\{)[^\\n]*)/i,/^(?:[^\\}]%%[^\\n]*)/i,/^(?:[\\n\\r]+)/i,/^(?:%%[^\\n]*)/i,/^(?:[\\s]+)/i,/^(?:title\\b)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:[\"])/i,/^(?:[\"])/i,/^(?:[^\"]*)/i,/^(?:pie\\b)/i,/^(?:showData\\b)/i,/^(?::[\\s]*[\\d]+(?:\\.[\\d]+)?)/i,/^(?:$)/i],\nconditions: {\"close_directive\":{\"rules\":[],\"inclusive\":false},\"arg_directive\":{\"rules\":[3,4],\"inclusive\":false},\"type_directive\":{\"rules\":[2,3],\"inclusive\":false},\"open_directive\":{\"rules\":[1],\"inclusive\":false},\"title\":{\"rules\":[11],\"inclusive\":false},\"string\":{\"rules\":[13,14],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,5,6,7,8,9,10,12,15,16,17,18],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,3],$V1=[1,5],$V2=[1,17],$V3=[2,10],$V4=[1,21],$V5=[1,22],$V6=[1,23],$V7=[1,24],$V8=[1,25],$V9=[1,26],$Va=[1,19],$Vb=[1,27],$Vc=[1,28],$Vd=[1,31],$Ve=[66,67],$Vf=[5,8,14,35,36,37,38,39,40,48,55,57,66,67],$Vg=[5,6,8,14,35,36,37,38,39,40,48,66,67],$Vh=[1,51],$Vi=[1,52],$Vj=[1,53],$Vk=[1,54],$Vl=[1,55],$Vm=[1,56],$Vn=[1,57],$Vo=[57,58],$Vp=[1,69],$Vq=[1,65],$Vr=[1,66],$Vs=[1,67],$Vt=[1,68],$Vu=[1,70],$Vv=[1,74],$Vw=[1,75],$Vx=[1,72],$Vy=[1,73],$Vz=[5,8,14,35,36,37,38,39,40,48,66,67];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"directive\":4,\"NEWLINE\":5,\"RD\":6,\"diagram\":7,\"EOF\":8,\"openDirective\":9,\"typeDirective\":10,\"closeDirective\":11,\":\":12,\"argDirective\":13,\"open_directive\":14,\"type_directive\":15,\"arg_directive\":16,\"close_directive\":17,\"requirementDef\":18,\"elementDef\":19,\"relationshipDef\":20,\"requirementType\":21,\"requirementName\":22,\"STRUCT_START\":23,\"requirementBody\":24,\"ID\":25,\"COLONSEP\":26,\"id\":27,\"TEXT\":28,\"text\":29,\"RISK\":30,\"riskLevel\":31,\"VERIFYMTHD\":32,\"verifyType\":33,\"STRUCT_STOP\":34,\"REQUIREMENT\":35,\"FUNCTIONAL_REQUIREMENT\":36,\"INTERFACE_REQUIREMENT\":37,\"PERFORMANCE_REQUIREMENT\":38,\"PHYSICAL_REQUIREMENT\":39,\"DESIGN_CONSTRAINT\":40,\"LOW_RISK\":41,\"MED_RISK\":42,\"HIGH_RISK\":43,\"VERIFY_ANALYSIS\":44,\"VERIFY_DEMONSTRATION\":45,\"VERIFY_INSPECTION\":46,\"VERIFY_TEST\":47,\"ELEMENT\":48,\"elementName\":49,\"elementBody\":50,\"TYPE\":51,\"type\":52,\"DOCREF\":53,\"ref\":54,\"END_ARROW_L\":55,\"relationship\":56,\"LINE\":57,\"END_ARROW_R\":58,\"CONTAINS\":59,\"COPIES\":60,\"DERIVES\":61,\"SATISFIES\":62,\"VERIFIES\":63,\"REFINES\":64,\"TRACES\":65,\"unqString\":66,\"qString\":67,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",5:\"NEWLINE\",6:\"RD\",8:\"EOF\",12:\":\",14:\"open_directive\",15:\"type_directive\",16:\"arg_directive\",17:\"close_directive\",23:\"STRUCT_START\",25:\"ID\",26:\"COLONSEP\",28:\"TEXT\",30:\"RISK\",32:\"VERIFYMTHD\",34:\"STRUCT_STOP\",35:\"REQUIREMENT\",36:\"FUNCTIONAL_REQUIREMENT\",37:\"INTERFACE_REQUIREMENT\",38:\"PERFORMANCE_REQUIREMENT\",39:\"PHYSICAL_REQUIREMENT\",40:\"DESIGN_CONSTRAINT\",41:\"LOW_RISK\",42:\"MED_RISK\",43:\"HIGH_RISK\",44:\"VERIFY_ANALYSIS\",45:\"VERIFY_DEMONSTRATION\",46:\"VERIFY_INSPECTION\",47:\"VERIFY_TEST\",48:\"ELEMENT\",51:\"TYPE\",53:\"DOCREF\",55:\"END_ARROW_L\",57:\"LINE\",58:\"END_ARROW_R\",59:\"CONTAINS\",60:\"COPIES\",61:\"DERIVES\",62:\"SATISFIES\",63:\"VERIFIES\",64:\"REFINES\",65:\"TRACES\",66:\"unqString\",67:\"qString\"},\nproductions_: [0,[3,3],[3,2],[3,4],[4,3],[4,5],[9,1],[10,1],[13,1],[11,1],[7,0],[7,2],[7,2],[7,2],[7,2],[7,2],[18,5],[24,5],[24,5],[24,5],[24,5],[24,2],[24,1],[21,1],[21,1],[21,1],[21,1],[21,1],[21,1],[31,1],[31,1],[31,1],[33,1],[33,1],[33,1],[33,1],[19,5],[50,5],[50,5],[50,2],[50,1],[20,5],[20,5],[56,1],[56,1],[56,1],[56,1],[56,1],[56,1],[56,1],[22,1],[22,1],[27,1],[27,1],[29,1],[29,1],[49,1],[49,1],[52,1],[52,1],[54,1],[54,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 6:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 7:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 8:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 9:\n yy.parseDirective('}%%', 'close_directive', 'pie'); \nbreak;\ncase 10:\n this.$ = [] \nbreak;\ncase 16:\n yy.addRequirement($$[$0-3], $$[$0-4]) \nbreak;\ncase 17:\n yy.setNewReqId($$[$0-2]); \nbreak;\ncase 18:\n yy.setNewReqText($$[$0-2]); \nbreak;\ncase 19:\n yy.setNewReqRisk($$[$0-2]); \nbreak;\ncase 20:\n yy.setNewReqVerifyMethod($$[$0-2]); \nbreak;\ncase 23:\n this.$=yy.RequirementType.REQUIREMENT;\nbreak;\ncase 24:\n this.$=yy.RequirementType.FUNCTIONAL_REQUIREMENT;\nbreak;\ncase 25:\n this.$=yy.RequirementType.INTERFACE_REQUIREMENT;\nbreak;\ncase 26:\n this.$=yy.RequirementType.PERFORMANCE_REQUIREMENT;\nbreak;\ncase 27:\n this.$=yy.RequirementType.PHYSICAL_REQUIREMENT;\nbreak;\ncase 28:\n this.$=yy.RequirementType.DESIGN_CONSTRAINT;\nbreak;\ncase 29:\n this.$=yy.RiskLevel.LOW_RISK;\nbreak;\ncase 30:\n this.$=yy.RiskLevel.MED_RISK;\nbreak;\ncase 31:\n this.$=yy.RiskLevel.HIGH_RISK;\nbreak;\ncase 32:\n this.$=yy.VerifyType.VERIFY_ANALYSIS;\nbreak;\ncase 33:\n this.$=yy.VerifyType.VERIFY_DEMONSTRATION;\nbreak;\ncase 34:\n this.$=yy.VerifyType.VERIFY_INSPECTION;\nbreak;\ncase 35:\n this.$=yy.VerifyType.VERIFY_TEST;\nbreak;\ncase 36:\n yy.addElement($$[$0-3]) \nbreak;\ncase 37:\n yy.setNewElementType($$[$0-2]); \nbreak;\ncase 38:\n yy.setNewElementDocRef($$[$0-2]); \nbreak;\ncase 41:\n yy.addRelationship($$[$0-2], $$[$0], $$[$0-4]) \nbreak;\ncase 42:\n yy.addRelationship($$[$0-2], $$[$0-4], $$[$0]) \nbreak;\ncase 43:\n this.$=yy.Relationships.CONTAINS;\nbreak;\ncase 44:\n this.$=yy.Relationships.COPIES;\nbreak;\ncase 45:\n this.$=yy.Relationships.DERIVES;\nbreak;\ncase 46:\n this.$=yy.Relationships.SATISFIES;\nbreak;\ncase 47:\n this.$=yy.Relationships.VERIFIES;\nbreak;\ncase 48:\n this.$=yy.Relationships.REFINES;\nbreak;\ncase 49:\n this.$=yy.Relationships.TRACES;\nbreak;\n}\n},\ntable: [{3:1,4:2,6:$V0,9:4,14:$V1},{1:[3]},{3:7,4:2,5:[1,6],6:$V0,9:4,14:$V1},{5:[1,8]},{10:9,15:[1,10]},{15:[2,6]},{3:11,4:2,6:$V0,9:4,14:$V1},{1:[2,2]},{4:16,5:$V2,7:12,8:$V3,9:4,14:$V1,18:13,19:14,20:15,21:18,27:20,35:$V4,36:$V5,37:$V6,38:$V7,39:$V8,40:$V9,48:$Va,66:$Vb,67:$Vc},{11:29,12:[1,30],17:$Vd},o([12,17],[2,7]),{1:[2,1]},{8:[1,32]},{4:16,5:$V2,7:33,8:$V3,9:4,14:$V1,18:13,19:14,20:15,21:18,27:20,35:$V4,36:$V5,37:$V6,38:$V7,39:$V8,40:$V9,48:$Va,66:$Vb,67:$Vc},{4:16,5:$V2,7:34,8:$V3,9:4,14:$V1,18:13,19:14,20:15,21:18,27:20,35:$V4,36:$V5,37:$V6,38:$V7,39:$V8,40:$V9,48:$Va,66:$Vb,67:$Vc},{4:16,5:$V2,7:35,8:$V3,9:4,14:$V1,18:13,19:14,20:15,21:18,27:20,35:$V4,36:$V5,37:$V6,38:$V7,39:$V8,40:$V9,48:$Va,66:$Vb,67:$Vc},{4:16,5:$V2,7:36,8:$V3,9:4,14:$V1,18:13,19:14,20:15,21:18,27:20,35:$V4,36:$V5,37:$V6,38:$V7,39:$V8,40:$V9,48:$Va,66:$Vb,67:$Vc},{4:16,5:$V2,7:37,8:$V3,9:4,14:$V1,18:13,19:14,20:15,21:18,27:20,35:$V4,36:$V5,37:$V6,38:$V7,39:$V8,40:$V9,48:$Va,66:$Vb,67:$Vc},{22:38,66:[1,39],67:[1,40]},{49:41,66:[1,42],67:[1,43]},{55:[1,44],57:[1,45]},o($Ve,[2,23]),o($Ve,[2,24]),o($Ve,[2,25]),o($Ve,[2,26]),o($Ve,[2,27]),o($Ve,[2,28]),o($Vf,[2,52]),o($Vf,[2,53]),o($Vg,[2,4]),{13:46,16:[1,47]},o($Vg,[2,9]),{1:[2,3]},{8:[2,11]},{8:[2,12]},{8:[2,13]},{8:[2,14]},{8:[2,15]},{23:[1,48]},{23:[2,50]},{23:[2,51]},{23:[1,49]},{23:[2,56]},{23:[2,57]},{56:50,59:$Vh,60:$Vi,61:$Vj,62:$Vk,63:$Vl,64:$Vm,65:$Vn},{56:58,59:$Vh,60:$Vi,61:$Vj,62:$Vk,63:$Vl,64:$Vm,65:$Vn},{11:59,17:$Vd},{17:[2,8]},{5:[1,60]},{5:[1,61]},{57:[1,62]},o($Vo,[2,43]),o($Vo,[2,44]),o($Vo,[2,45]),o($Vo,[2,46]),o($Vo,[2,47]),o($Vo,[2,48]),o($Vo,[2,49]),{58:[1,63]},o($Vg,[2,5]),{5:$Vp,24:64,25:$Vq,28:$Vr,30:$Vs,32:$Vt,34:$Vu},{5:$Vv,34:$Vw,50:71,51:$Vx,53:$Vy},{27:76,66:$Vb,67:$Vc},{27:77,66:$Vb,67:$Vc},o($Vz,[2,16]),{26:[1,78]},{26:[1,79]},{26:[1,80]},{26:[1,81]},{5:$Vp,24:82,25:$Vq,28:$Vr,30:$Vs,32:$Vt,34:$Vu},o($Vz,[2,22]),o($Vz,[2,36]),{26:[1,83]},{26:[1,84]},{5:$Vv,34:$Vw,50:85,51:$Vx,53:$Vy},o($Vz,[2,40]),o($Vz,[2,41]),o($Vz,[2,42]),{27:86,66:$Vb,67:$Vc},{29:87,66:[1,88],67:[1,89]},{31:90,41:[1,91],42:[1,92],43:[1,93]},{33:94,44:[1,95],45:[1,96],46:[1,97],47:[1,98]},o($Vz,[2,21]),{52:99,66:[1,100],67:[1,101]},{54:102,66:[1,103],67:[1,104]},o($Vz,[2,39]),{5:[1,105]},{5:[1,106]},{5:[2,54]},{5:[2,55]},{5:[1,107]},{5:[2,29]},{5:[2,30]},{5:[2,31]},{5:[1,108]},{5:[2,32]},{5:[2,33]},{5:[2,34]},{5:[2,35]},{5:[1,109]},{5:[2,58]},{5:[2,59]},{5:[1,110]},{5:[2,60]},{5:[2,61]},{5:$Vp,24:111,25:$Vq,28:$Vr,30:$Vs,32:$Vt,34:$Vu},{5:$Vp,24:112,25:$Vq,28:$Vr,30:$Vs,32:$Vt,34:$Vu},{5:$Vp,24:113,25:$Vq,28:$Vr,30:$Vs,32:$Vt,34:$Vu},{5:$Vp,24:114,25:$Vq,28:$Vr,30:$Vs,32:$Vt,34:$Vu},{5:$Vv,34:$Vw,50:115,51:$Vx,53:$Vy},{5:$Vv,34:$Vw,50:116,51:$Vx,53:$Vy},o($Vz,[2,17]),o($Vz,[2,18]),o($Vz,[2,19]),o($Vz,[2,20]),o($Vz,[2,37]),o($Vz,[2,38])],\ndefaultActions: {5:[2,6],7:[2,2],11:[2,1],32:[2,3],33:[2,11],34:[2,12],35:[2,13],36:[2,14],37:[2,15],39:[2,50],40:[2,51],42:[2,56],43:[2,57],47:[2,8],88:[2,54],89:[2,55],91:[2,29],92:[2,30],93:[2,31],95:[2,32],96:[2,33],97:[2,34],98:[2,35],100:[2,58],101:[2,59],103:[2,60],104:[2,61]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\r\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0: this.begin('open_directive'); return 14; \nbreak;\ncase 1: this.begin('type_directive'); return 15; \nbreak;\ncase 2: this.popState(); this.begin('arg_directive'); return 12; \nbreak;\ncase 3: this.popState(); this.popState(); return 17; \nbreak;\ncase 4:return 16;\nbreak;\ncase 5:return 5;\nbreak;\ncase 6:/* skip all whitespace */\nbreak;\ncase 7:/* skip comments */\nbreak;\ncase 8:/* skip comments */\nbreak;\ncase 9:return 8;\nbreak;\ncase 10:return 6;\nbreak;\ncase 11:return 23;\nbreak;\ncase 12:return 34;\nbreak;\ncase 13:return 26;\nbreak;\ncase 14:return 25;\nbreak;\ncase 15:return 28;\nbreak;\ncase 16:return 30;\nbreak;\ncase 17:return 32;\nbreak;\ncase 18:return 35;\nbreak;\ncase 19:return 36;\nbreak;\ncase 20:return 37;\nbreak;\ncase 21:return 38;\nbreak;\ncase 22:return 39;\nbreak;\ncase 23:return 40;\nbreak;\ncase 24:return 41;\nbreak;\ncase 25:return 42;\nbreak;\ncase 26:return 43;\nbreak;\ncase 27:return 44;\nbreak;\ncase 28:return 45;\nbreak;\ncase 29:return 46;\nbreak;\ncase 30:return 47;\nbreak;\ncase 31:return 48;\nbreak;\ncase 32:return 59;\nbreak;\ncase 33:return 60;\nbreak;\ncase 34:return 61;\nbreak;\ncase 35:return 62;\nbreak;\ncase 36:return 63;\nbreak;\ncase 37:return 64;\nbreak;\ncase 38:return 65;\nbreak;\ncase 39:return 51;\nbreak;\ncase 40:return 53;\nbreak;\ncase 41:return 55;\nbreak;\ncase 42:return 58;\nbreak;\ncase 43:return 57;\nbreak;\ncase 44: this.begin(\"string\"); \nbreak;\ncase 45: this.popState(); \nbreak;\ncase 46: return \"qString\"; \nbreak;\ncase 47: yy_.yytext = yy_.yytext.trim(); return 66;\nbreak;\n}\n},\nrules: [/^(?:%%\\{)/i,/^(?:((?:(?!\\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\\}%%)/i,/^(?:((?:(?!\\}%%).|\\n)*))/i,/^(?:(\\r?\\n)+)/i,/^(?:\\s+)/i,/^(?:#[^\\n]*)/i,/^(?:%[^\\n]*)/i,/^(?:$)/i,/^(?:requirementDiagram\\b)/i,/^(?:\\{)/i,/^(?:\\})/i,/^(?::)/i,/^(?:id\\b)/i,/^(?:text\\b)/i,/^(?:risk\\b)/i,/^(?:verifyMethod\\b)/i,/^(?:requirement\\b)/i,/^(?:functionalRequirement\\b)/i,/^(?:interfaceRequirement\\b)/i,/^(?:performanceRequirement\\b)/i,/^(?:physicalRequirement\\b)/i,/^(?:designConstraint\\b)/i,/^(?:low\\b)/i,/^(?:medium\\b)/i,/^(?:high\\b)/i,/^(?:analysis\\b)/i,/^(?:demonstration\\b)/i,/^(?:inspection\\b)/i,/^(?:test\\b)/i,/^(?:element\\b)/i,/^(?:contains\\b)/i,/^(?:copies\\b)/i,/^(?:derives\\b)/i,/^(?:satisfies\\b)/i,/^(?:verifies\\b)/i,/^(?:refines\\b)/i,/^(?:traces\\b)/i,/^(?:type\\b)/i,/^(?:docref\\b)/i,/^(?:<-)/i,/^(?:->)/i,/^(?:-)/i,/^(?:[\"])/i,/^(?:[\"])/i,/^(?:[^\"]*)/i,/^(?:[\\w][^\\r\\n\\{\\<\\>\\-\\=]*)/i],\nconditions: {\"close_directive\":{\"rules\":[],\"inclusive\":false},\"arg_directive\":{\"rules\":[3,4],\"inclusive\":false},\"type_directive\":{\"rules\":[2,3],\"inclusive\":false},\"open_directive\":{\"rules\":[1],\"inclusive\":false},\"unqString\":{\"rules\":[],\"inclusive\":false},\"token\":{\"rules\":[],\"inclusive\":false},\"string\":{\"rules\":[45,46],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,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,47],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,2],$V1=[1,3],$V2=[1,5],$V3=[1,7],$V4=[2,5],$V5=[1,15],$V6=[1,17],$V7=[1,18],$V8=[1,19],$V9=[1,21],$Va=[1,22],$Vb=[1,23],$Vc=[1,29],$Vd=[1,30],$Ve=[1,31],$Vf=[1,32],$Vg=[1,33],$Vh=[1,34],$Vi=[1,37],$Vj=[1,38],$Vk=[1,39],$Vl=[1,40],$Vm=[1,41],$Vn=[1,42],$Vo=[1,45],$Vp=[1,4,5,16,20,22,23,24,30,32,33,34,35,36,38,40,41,42,46,47,48,49,57,67],$Vq=[1,58],$Vr=[4,5,16,20,22,23,24,30,32,33,34,35,36,38,42,46,47,48,49,57,67],$Vs=[4,5,16,20,22,23,24,30,32,33,34,35,36,38,41,42,46,47,48,49,57,67],$Vt=[4,5,16,20,22,23,24,30,32,33,34,35,36,38,40,42,46,47,48,49,57,67],$Vu=[55,56,57],$Vv=[1,4,5,7,16,20,22,23,24,30,32,33,34,35,36,38,40,41,42,46,47,48,49,57,67];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"SPACE\":4,\"NEWLINE\":5,\"directive\":6,\"SD\":7,\"document\":8,\"line\":9,\"statement\":10,\"openDirective\":11,\"typeDirective\":12,\"closeDirective\":13,\":\":14,\"argDirective\":15,\"participant\":16,\"actor\":17,\"AS\":18,\"restOfLine\":19,\"participant_actor\":20,\"signal\":21,\"autonumber\":22,\"activate\":23,\"deactivate\":24,\"note_statement\":25,\"links_statement\":26,\"link_statement\":27,\"properties_statement\":28,\"details_statement\":29,\"title\":30,\"text2\":31,\"loop\":32,\"end\":33,\"rect\":34,\"opt\":35,\"alt\":36,\"else_sections\":37,\"par\":38,\"par_sections\":39,\"and\":40,\"else\":41,\"note\":42,\"placement\":43,\"over\":44,\"actor_pair\":45,\"links\":46,\"link\":47,\"properties\":48,\"details\":49,\"spaceList\":50,\",\":51,\"left_of\":52,\"right_of\":53,\"signaltype\":54,\"+\":55,\"-\":56,\"ACTOR\":57,\"SOLID_OPEN_ARROW\":58,\"DOTTED_OPEN_ARROW\":59,\"SOLID_ARROW\":60,\"DOTTED_ARROW\":61,\"SOLID_CROSS\":62,\"DOTTED_CROSS\":63,\"SOLID_POINT\":64,\"DOTTED_POINT\":65,\"TXT\":66,\"open_directive\":67,\"type_directive\":68,\"arg_directive\":69,\"close_directive\":70,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"SPACE\",5:\"NEWLINE\",7:\"SD\",14:\":\",16:\"participant\",18:\"AS\",19:\"restOfLine\",20:\"participant_actor\",22:\"autonumber\",23:\"activate\",24:\"deactivate\",30:\"title\",32:\"loop\",33:\"end\",34:\"rect\",35:\"opt\",36:\"alt\",38:\"par\",40:\"and\",41:\"else\",42:\"note\",44:\"over\",46:\"links\",47:\"link\",48:\"properties\",49:\"details\",51:\",\",52:\"left_of\",53:\"right_of\",55:\"+\",56:\"-\",57:\"ACTOR\",58:\"SOLID_OPEN_ARROW\",59:\"DOTTED_OPEN_ARROW\",60:\"SOLID_ARROW\",61:\"DOTTED_ARROW\",62:\"SOLID_CROSS\",63:\"DOTTED_CROSS\",64:\"SOLID_POINT\",65:\"DOTTED_POINT\",66:\"TXT\",67:\"open_directive\",68:\"type_directive\",69:\"arg_directive\",70:\"close_directive\"},\nproductions_: [0,[3,2],[3,2],[3,2],[3,2],[8,0],[8,2],[9,2],[9,1],[9,1],[6,4],[6,6],[10,5],[10,3],[10,5],[10,3],[10,2],[10,1],[10,3],[10,3],[10,2],[10,2],[10,2],[10,2],[10,2],[10,3],[10,4],[10,4],[10,4],[10,4],[10,4],[10,1],[39,1],[39,4],[37,1],[37,4],[25,4],[25,4],[26,3],[27,3],[28,3],[29,3],[50,2],[50,1],[45,3],[45,1],[43,1],[43,1],[21,5],[21,5],[21,4],[17,1],[54,1],[54,1],[54,1],[54,1],[54,1],[54,1],[54,1],[54,1],[31,1],[11,1],[12,1],[15,1],[13,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 4:\n yy.apply($$[$0]);return $$[$0]; \nbreak;\ncase 5:\n this.$ = [] \nbreak;\ncase 6:\n$$[$0-1].push($$[$0]);this.$ = $$[$0-1]\nbreak;\ncase 7: case 8:\n this.$ = $$[$0] \nbreak;\ncase 9:\n this.$=[]; \nbreak;\ncase 12:\n$$[$0-3].type='addParticipant';$$[$0-3].description=yy.parseMessage($$[$0-1]); this.$=$$[$0-3];\nbreak;\ncase 13:\n$$[$0-1].type='addParticipant';this.$=$$[$0-1];\nbreak;\ncase 14:\n$$[$0-3].type='addActor';$$[$0-3].description=yy.parseMessage($$[$0-1]); this.$=$$[$0-3];\nbreak;\ncase 15:\n$$[$0-1].type='addActor'; this.$=$$[$0-1];\nbreak;\ncase 17:\nyy.enableSequenceNumbers()\nbreak;\ncase 18:\nthis.$={type: 'activeStart', signalType: yy.LINETYPE.ACTIVE_START, actor: $$[$0-1]};\nbreak;\ncase 19:\nthis.$={type: 'activeEnd', signalType: yy.LINETYPE.ACTIVE_END, actor: $$[$0-1]};\nbreak;\ncase 25:\nthis.$=[{type:'setTitle', text:$$[$0-1]}]\nbreak;\ncase 26:\n\r\n\t\t$$[$0-1].unshift({type: 'loopStart', loopText:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.LOOP_START});\r\n\t\t$$[$0-1].push({type: 'loopEnd', loopText:$$[$0-2], signalType: yy.LINETYPE.LOOP_END});\r\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 27:\n\r\n\t\t$$[$0-1].unshift({type: 'rectStart', color:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.RECT_START });\r\n\t\t$$[$0-1].push({type: 'rectEnd', color:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.RECT_END });\r\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 28:\n\r\n\t\t$$[$0-1].unshift({type: 'optStart', optText:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.OPT_START});\r\n\t\t$$[$0-1].push({type: 'optEnd', optText:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.OPT_END});\r\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 29:\n\r\n\t\t// Alt start\r\n\t\t$$[$0-1].unshift({type: 'altStart', altText:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.ALT_START});\r\n\t\t// Content in alt is already in $$[$0-1]\r\n\t\t// End\r\n\t\t$$[$0-1].push({type: 'altEnd', signalType: yy.LINETYPE.ALT_END});\r\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 30:\n\r\n\t\t// Parallel start\r\n\t\t$$[$0-1].unshift({type: 'parStart', parText:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.PAR_START});\r\n\t\t// Content in par is already in $$[$0-1]\r\n\t\t// End\r\n\t\t$$[$0-1].push({type: 'parEnd', signalType: yy.LINETYPE.PAR_END});\r\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 33:\n this.$ = $$[$0-3].concat([{type: 'and', parText:yy.parseMessage($$[$0-1]), signalType: yy.LINETYPE.PAR_AND}, $$[$0]]); \nbreak;\ncase 35:\n this.$ = $$[$0-3].concat([{type: 'else', altText:yy.parseMessage($$[$0-1]), signalType: yy.LINETYPE.ALT_ELSE}, $$[$0]]); \nbreak;\ncase 36:\n\r\n\t\tthis.$ = [$$[$0-1], {type:'addNote', placement:$$[$0-2], actor:$$[$0-1].actor, text:$$[$0]}];\nbreak;\ncase 37:\n\r\n\t\t// Coerce actor_pair into a [to, from, ...] array\r\n\t\t$$[$0-2] = [].concat($$[$0-1], $$[$0-1]).slice(0, 2);\r\n\t\t$$[$0-2][0] = $$[$0-2][0].actor;\r\n\t\t$$[$0-2][1] = $$[$0-2][1].actor;\r\n\t\tthis.$ = [$$[$0-1], {type:'addNote', placement:yy.PLACEMENT.OVER, actor:$$[$0-2].slice(0, 2), text:$$[$0]}];\nbreak;\ncase 38:\n\r\n\t\tthis.$ = [$$[$0-1], {type:'addLinks', actor:$$[$0-1].actor, text:$$[$0]}];\r\n \nbreak;\ncase 39:\n\r\n\t\tthis.$ = [$$[$0-1], {type:'addALink', actor:$$[$0-1].actor, text:$$[$0]}];\r\n \nbreak;\ncase 40:\n\r\n\t\tthis.$ = [$$[$0-1], {type:'addProperties', actor:$$[$0-1].actor, text:$$[$0]}];\r\n \nbreak;\ncase 41:\n\r\n\t\tthis.$ = [$$[$0-1], {type:'addDetails', actor:$$[$0-1].actor, text:$$[$0]}];\r\n \nbreak;\ncase 44:\n this.$ = [$$[$0-2], $$[$0]]; \nbreak;\ncase 45:\n this.$ = $$[$0]; \nbreak;\ncase 46:\n this.$ = yy.PLACEMENT.LEFTOF; \nbreak;\ncase 47:\n this.$ = yy.PLACEMENT.RIGHTOF; \nbreak;\ncase 48:\n this.$ = [$$[$0-4],$$[$0-1],{type: 'addMessage', from:$$[$0-4].actor, to:$$[$0-1].actor, signalType:$$[$0-3], msg:$$[$0]},\r\n\t {type: 'activeStart', signalType: yy.LINETYPE.ACTIVE_START, actor: $$[$0-1]}\r\n\t ]\nbreak;\ncase 49:\n this.$ = [$$[$0-4],$$[$0-1],{type: 'addMessage', from:$$[$0-4].actor, to:$$[$0-1].actor, signalType:$$[$0-3], msg:$$[$0]},\r\n\t {type: 'activeEnd', signalType: yy.LINETYPE.ACTIVE_END, actor: $$[$0-4]}\r\n\t ]\nbreak;\ncase 50:\n this.$ = [$$[$0-3],$$[$0-1],{type: 'addMessage', from:$$[$0-3].actor, to:$$[$0-1].actor, signalType:$$[$0-2], msg:$$[$0]}]\nbreak;\ncase 51:\nthis.$={ type: 'addParticipant', actor:$$[$0]}\nbreak;\ncase 52:\n this.$ = yy.LINETYPE.SOLID_OPEN; \nbreak;\ncase 53:\n this.$ = yy.LINETYPE.DOTTED_OPEN; \nbreak;\ncase 54:\n this.$ = yy.LINETYPE.SOLID; \nbreak;\ncase 55:\n this.$ = yy.LINETYPE.DOTTED; \nbreak;\ncase 56:\n this.$ = yy.LINETYPE.SOLID_CROSS; \nbreak;\ncase 57:\n this.$ = yy.LINETYPE.DOTTED_CROSS; \nbreak;\ncase 58:\n this.$ = yy.LINETYPE.SOLID_POINT; \nbreak;\ncase 59:\n this.$ = yy.LINETYPE.DOTTED_POINT; \nbreak;\ncase 60:\nthis.$ = yy.parseMessage($$[$0].trim().substring(1)) \nbreak;\ncase 61:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 62:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 63:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 64:\n yy.parseDirective('}%%', 'close_directive', 'sequence'); \nbreak;\n}\n},\ntable: [{3:1,4:$V0,5:$V1,6:4,7:$V2,11:6,67:$V3},{1:[3]},{3:8,4:$V0,5:$V1,6:4,7:$V2,11:6,67:$V3},{3:9,4:$V0,5:$V1,6:4,7:$V2,11:6,67:$V3},{3:10,4:$V0,5:$V1,6:4,7:$V2,11:6,67:$V3},o([1,4,5,16,20,22,23,24,30,32,34,35,36,38,42,46,47,48,49,57,67],$V4,{8:11}),{12:12,68:[1,13]},{68:[2,61]},{1:[2,1]},{1:[2,2]},{1:[2,3]},{1:[2,4],4:$V5,5:$V6,6:35,9:14,10:16,11:6,16:$V7,17:36,20:$V8,21:20,22:$V9,23:$Va,24:$Vb,25:24,26:25,27:26,28:27,29:28,30:$Vc,32:$Vd,34:$Ve,35:$Vf,36:$Vg,38:$Vh,42:$Vi,46:$Vj,47:$Vk,48:$Vl,49:$Vm,57:$Vn,67:$V3},{13:43,14:[1,44],70:$Vo},o([14,70],[2,62]),o($Vp,[2,6]),{6:35,10:46,11:6,16:$V7,17:36,20:$V8,21:20,22:$V9,23:$Va,24:$Vb,25:24,26:25,27:26,28:27,29:28,30:$Vc,32:$Vd,34:$Ve,35:$Vf,36:$Vg,38:$Vh,42:$Vi,46:$Vj,47:$Vk,48:$Vl,49:$Vm,57:$Vn,67:$V3},o($Vp,[2,8]),o($Vp,[2,9]),{17:47,57:$Vn},{17:48,57:$Vn},{5:[1,49]},o($Vp,[2,17]),{17:50,57:$Vn},{17:51,57:$Vn},{5:[1,52]},{5:[1,53]},{5:[1,54]},{5:[1,55]},{5:[1,56]},{31:57,66:$Vq},{19:[1,59]},{19:[1,60]},{19:[1,61]},{19:[1,62]},{19:[1,63]},o($Vp,[2,31]),{54:64,58:[1,65],59:[1,66],60:[1,67],61:[1,68],62:[1,69],63:[1,70],64:[1,71],65:[1,72]},{43:73,44:[1,74],52:[1,75],53:[1,76]},{17:77,57:$Vn},{17:78,57:$Vn},{17:79,57:$Vn},{17:80,57:$Vn},o([5,18,51,58,59,60,61,62,63,64,65,66],[2,51]),{5:[1,81]},{15:82,69:[1,83]},{5:[2,64]},o($Vp,[2,7]),{5:[1,85],18:[1,84]},{5:[1,87],18:[1,86]},o($Vp,[2,16]),{5:[1,88]},{5:[1,89]},o($Vp,[2,20]),o($Vp,[2,21]),o($Vp,[2,22]),o($Vp,[2,23]),o($Vp,[2,24]),{5:[1,90]},{5:[2,60]},o($Vr,$V4,{8:91}),o($Vr,$V4,{8:92}),o($Vr,$V4,{8:93}),o($Vs,$V4,{37:94,8:95}),o($Vt,$V4,{39:96,8:97}),{17:100,55:[1,98],56:[1,99],57:$Vn},o($Vu,[2,52]),o($Vu,[2,53]),o($Vu,[2,54]),o($Vu,[2,55]),o($Vu,[2,56]),o($Vu,[2,57]),o($Vu,[2,58]),o($Vu,[2,59]),{17:101,57:$Vn},{17:103,45:102,57:$Vn},{57:[2,46]},{57:[2,47]},{31:104,66:$Vq},{31:105,66:$Vq},{31:106,66:$Vq},{31:107,66:$Vq},o($Vv,[2,10]),{13:108,70:$Vo},{70:[2,63]},{19:[1,109]},o($Vp,[2,13]),{19:[1,110]},o($Vp,[2,15]),o($Vp,[2,18]),o($Vp,[2,19]),o($Vp,[2,25]),{4:$V5,5:$V6,6:35,9:14,10:16,11:6,16:$V7,17:36,20:$V8,21:20,22:$V9,23:$Va,24:$Vb,25:24,26:25,27:26,28:27,29:28,30:$Vc,32:$Vd,33:[1,111],34:$Ve,35:$Vf,36:$Vg,38:$Vh,42:$Vi,46:$Vj,47:$Vk,48:$Vl,49:$Vm,57:$Vn,67:$V3},{4:$V5,5:$V6,6:35,9:14,10:16,11:6,16:$V7,17:36,20:$V8,21:20,22:$V9,23:$Va,24:$Vb,25:24,26:25,27:26,28:27,29:28,30:$Vc,32:$Vd,33:[1,112],34:$Ve,35:$Vf,36:$Vg,38:$Vh,42:$Vi,46:$Vj,47:$Vk,48:$Vl,49:$Vm,57:$Vn,67:$V3},{4:$V5,5:$V6,6:35,9:14,10:16,11:6,16:$V7,17:36,20:$V8,21:20,22:$V9,23:$Va,24:$Vb,25:24,26:25,27:26,28:27,29:28,30:$Vc,32:$Vd,33:[1,113],34:$Ve,35:$Vf,36:$Vg,38:$Vh,42:$Vi,46:$Vj,47:$Vk,48:$Vl,49:$Vm,57:$Vn,67:$V3},{33:[1,114]},{4:$V5,5:$V6,6:35,9:14,10:16,11:6,16:$V7,17:36,20:$V8,21:20,22:$V9,23:$Va,24:$Vb,25:24,26:25,27:26,28:27,29:28,30:$Vc,32:$Vd,33:[2,34],34:$Ve,35:$Vf,36:$Vg,38:$Vh,41:[1,115],42:$Vi,46:$Vj,47:$Vk,48:$Vl,49:$Vm,57:$Vn,67:$V3},{33:[1,116]},{4:$V5,5:$V6,6:35,9:14,10:16,11:6,16:$V7,17:36,20:$V8,21:20,22:$V9,23:$Va,24:$Vb,25:24,26:25,27:26,28:27,29:28,30:$Vc,32:$Vd,33:[2,32],34:$Ve,35:$Vf,36:$Vg,38:$Vh,40:[1,117],42:$Vi,46:$Vj,47:$Vk,48:$Vl,49:$Vm,57:$Vn,67:$V3},{17:118,57:$Vn},{17:119,57:$Vn},{31:120,66:$Vq},{31:121,66:$Vq},{31:122,66:$Vq},{51:[1,123],66:[2,45]},{5:[2,38]},{5:[2,39]},{5:[2,40]},{5:[2,41]},{5:[1,124]},{5:[1,125]},{5:[1,126]},o($Vp,[2,26]),o($Vp,[2,27]),o($Vp,[2,28]),o($Vp,[2,29]),{19:[1,127]},o($Vp,[2,30]),{19:[1,128]},{31:129,66:$Vq},{31:130,66:$Vq},{5:[2,50]},{5:[2,36]},{5:[2,37]},{17:131,57:$Vn},o($Vv,[2,11]),o($Vp,[2,12]),o($Vp,[2,14]),o($Vs,$V4,{8:95,37:132}),o($Vt,$V4,{8:97,39:133}),{5:[2,48]},{5:[2,49]},{66:[2,44]},{33:[2,35]},{33:[2,33]}],\ndefaultActions: {7:[2,61],8:[2,1],9:[2,2],10:[2,3],45:[2,64],58:[2,60],75:[2,46],76:[2,47],83:[2,63],104:[2,38],105:[2,39],106:[2,40],107:[2,41],120:[2,50],121:[2,36],122:[2,37],129:[2,48],130:[2,49],131:[2,44],132:[2,35],133:[2,33]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\r\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0: this.begin('open_directive'); return 67; \nbreak;\ncase 1: this.begin('type_directive'); return 68; \nbreak;\ncase 2: this.popState(); this.begin('arg_directive'); return 14; \nbreak;\ncase 3: this.popState(); this.popState(); return 70; \nbreak;\ncase 4:return 69;\nbreak;\ncase 5:return 5;\nbreak;\ncase 6:/* skip all whitespace */\nbreak;\ncase 7:/* skip same-line whitespace */\nbreak;\ncase 8:/* skip comments */\nbreak;\ncase 9:/* skip comments */\nbreak;\ncase 10:/* skip comments */\nbreak;\ncase 11: this.begin('ID'); return 16; \nbreak;\ncase 12: this.begin('ID'); return 20; \nbreak;\ncase 13: yy_.yytext = yy_.yytext.trim(); this.begin('ALIAS'); return 57; \nbreak;\ncase 14: this.popState(); this.popState(); this.begin('LINE'); return 18; \nbreak;\ncase 15: this.popState(); this.popState(); return 5; \nbreak;\ncase 16: this.begin('LINE'); return 32; \nbreak;\ncase 17: this.begin('LINE'); return 34; \nbreak;\ncase 18: this.begin('LINE'); return 35; \nbreak;\ncase 19: this.begin('LINE'); return 36; \nbreak;\ncase 20: this.begin('LINE'); return 41; \nbreak;\ncase 21: this.begin('LINE'); return 38; \nbreak;\ncase 22: this.begin('LINE'); return 40; \nbreak;\ncase 23: this.popState(); return 19; \nbreak;\ncase 24:return 33;\nbreak;\ncase 25:return 52;\nbreak;\ncase 26:return 53;\nbreak;\ncase 27:return 46;\nbreak;\ncase 28:return 47;\nbreak;\ncase 29:return 48;\nbreak;\ncase 30:return 49;\nbreak;\ncase 31:return 44;\nbreak;\ncase 32:return 42;\nbreak;\ncase 33: this.begin('ID'); return 23; \nbreak;\ncase 34: this.begin('ID'); return 24; \nbreak;\ncase 35:return 30;\nbreak;\ncase 36:return 7;\nbreak;\ncase 37:return 22;\nbreak;\ncase 38:return 51;\nbreak;\ncase 39:return 5;\nbreak;\ncase 40: yy_.yytext = yy_.yytext.trim(); return 57; \nbreak;\ncase 41:return 60;\nbreak;\ncase 42:return 61;\nbreak;\ncase 43:return 58;\nbreak;\ncase 44:return 59;\nbreak;\ncase 45:return 62;\nbreak;\ncase 46:return 63;\nbreak;\ncase 47:return 64;\nbreak;\ncase 48:return 65;\nbreak;\ncase 49:return 66;\nbreak;\ncase 50:return 55;\nbreak;\ncase 51:return 56;\nbreak;\ncase 52:return 5;\nbreak;\ncase 53:return 'INVALID';\nbreak;\n}\n},\nrules: [/^(?:%%\\{)/i,/^(?:((?:(?!\\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\\}%%)/i,/^(?:((?:(?!\\}%%).|\\n)*))/i,/^(?:[\\n]+)/i,/^(?:\\s+)/i,/^(?:((?!\\n)\\s)+)/i,/^(?:#[^\\n]*)/i,/^(?:%(?!\\{)[^\\n]*)/i,/^(?:[^\\}]%%[^\\n]*)/i,/^(?:participant\\b)/i,/^(?:actor\\b)/i,/^(?:[^\\->:\\n,;]+?(?=((?!\\n)\\s)+as(?!\\n)\\s|[#\\n;]|$))/i,/^(?:as\\b)/i,/^(?:(?:))/i,/^(?:loop\\b)/i,/^(?:rect\\b)/i,/^(?:opt\\b)/i,/^(?:alt\\b)/i,/^(?:else\\b)/i,/^(?:par\\b)/i,/^(?:and\\b)/i,/^(?:(?:[:]?(?:no)?wrap)?[^#\\n;]*)/i,/^(?:end\\b)/i,/^(?:left of\\b)/i,/^(?:right of\\b)/i,/^(?:links\\b)/i,/^(?:link\\b)/i,/^(?:properties\\b)/i,/^(?:details\\b)/i,/^(?:over\\b)/i,/^(?:note\\b)/i,/^(?:activate\\b)/i,/^(?:deactivate\\b)/i,/^(?:title\\b)/i,/^(?:sequenceDiagram\\b)/i,/^(?:autonumber\\b)/i,/^(?:,)/i,/^(?:;)/i,/^(?:[^\\+\\->:\\n,;]+((?!(-x|--x|-\\)|--\\)))[\\-]*[^\\+\\->:\\n,;]+)*)/i,/^(?:->>)/i,/^(?:-->>)/i,/^(?:->)/i,/^(?:-->)/i,/^(?:-[x])/i,/^(?:--[x])/i,/^(?:-[\\)])/i,/^(?:--[\\)])/i,/^(?::(?:(?:no)?wrap)?[^#\\n;]+)/i,/^(?:\\+)/i,/^(?:-)/i,/^(?:$)/i,/^(?:.)/i],\nconditions: {\"open_directive\":{\"rules\":[1,8],\"inclusive\":false},\"type_directive\":{\"rules\":[2,3,8],\"inclusive\":false},\"arg_directive\":{\"rules\":[3,4,8],\"inclusive\":false},\"ID\":{\"rules\":[7,8,13],\"inclusive\":false},\"ALIAS\":{\"rules\":[7,8,14,15],\"inclusive\":false},\"LINE\":{\"rules\":[7,8,23],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,5,6,8,9,10,11,12,16,17,18,19,20,21,22,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],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,2],$V1=[1,3],$V2=[1,5],$V3=[1,7],$V4=[2,5],$V5=[1,15],$V6=[1,17],$V7=[1,19],$V8=[1,20],$V9=[1,21],$Va=[1,22],$Vb=[1,30],$Vc=[1,23],$Vd=[1,24],$Ve=[1,25],$Vf=[1,26],$Vg=[1,27],$Vh=[1,32],$Vi=[1,33],$Vj=[1,34],$Vk=[1,35],$Vl=[1,31],$Vm=[1,38],$Vn=[1,4,5,14,15,17,19,20,22,23,24,25,26,27,36,37,38,39,42,45],$Vo=[1,4,5,12,13,14,15,17,19,20,22,23,24,25,26,27,36,37,38,39,42,45],$Vp=[1,4,5,7,14,15,17,19,20,22,23,24,25,26,27,36,37,38,39,42,45],$Vq=[4,5,14,15,17,19,20,22,23,24,25,26,27,36,37,38,39,42,45];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"SPACE\":4,\"NL\":5,\"directive\":6,\"SD\":7,\"document\":8,\"line\":9,\"statement\":10,\"idStatement\":11,\"DESCR\":12,\"-->\":13,\"HIDE_EMPTY\":14,\"scale\":15,\"WIDTH\":16,\"COMPOSIT_STATE\":17,\"STRUCT_START\":18,\"STRUCT_STOP\":19,\"STATE_DESCR\":20,\"AS\":21,\"ID\":22,\"FORK\":23,\"JOIN\":24,\"CHOICE\":25,\"CONCURRENT\":26,\"note\":27,\"notePosition\":28,\"NOTE_TEXT\":29,\"direction\":30,\"openDirective\":31,\"typeDirective\":32,\"closeDirective\":33,\":\":34,\"argDirective\":35,\"direction_tb\":36,\"direction_bt\":37,\"direction_rl\":38,\"direction_lr\":39,\"eol\":40,\";\":41,\"EDGE_STATE\":42,\"left_of\":43,\"right_of\":44,\"open_directive\":45,\"type_directive\":46,\"arg_directive\":47,\"close_directive\":48,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"SPACE\",5:\"NL\",7:\"SD\",12:\"DESCR\",13:\"-->\",14:\"HIDE_EMPTY\",15:\"scale\",16:\"WIDTH\",17:\"COMPOSIT_STATE\",18:\"STRUCT_START\",19:\"STRUCT_STOP\",20:\"STATE_DESCR\",21:\"AS\",22:\"ID\",23:\"FORK\",24:\"JOIN\",25:\"CHOICE\",26:\"CONCURRENT\",27:\"note\",29:\"NOTE_TEXT\",34:\":\",36:\"direction_tb\",37:\"direction_bt\",38:\"direction_rl\",39:\"direction_lr\",41:\";\",42:\"EDGE_STATE\",43:\"left_of\",44:\"right_of\",45:\"open_directive\",46:\"type_directive\",47:\"arg_directive\",48:\"close_directive\"},\nproductions_: [0,[3,2],[3,2],[3,2],[3,2],[8,0],[8,2],[9,2],[9,1],[9,1],[10,1],[10,2],[10,3],[10,4],[10,1],[10,2],[10,1],[10,4],[10,3],[10,6],[10,1],[10,1],[10,1],[10,1],[10,4],[10,4],[10,1],[10,1],[6,3],[6,5],[30,1],[30,1],[30,1],[30,1],[40,1],[40,1],[11,1],[11,1],[28,1],[28,1],[31,1],[32,1],[35,1],[33,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 4:\n /*console.warn('Root document', $$[$0]);*/ yy.setRootDoc($$[$0]);return $$[$0]; \nbreak;\ncase 5:\n this.$ = [] \nbreak;\ncase 6:\n\r\n if($$[$0]!='nl'){\r\n $$[$0-1].push($$[$0]);this.$ = $$[$0-1]\r\n }\r\n // console.warn('Got document',$$[$0-1], $$[$0]);\r\n \nbreak;\ncase 7: case 8:\n this.$ = $$[$0] \nbreak;\ncase 9:\n this.$='nl';\nbreak;\ncase 10:\n /*console.warn('got id and descr', $$[$0]);*/this.$={ stmt: 'state', id: $$[$0], type: 'default', description: ''};\nbreak;\ncase 11:\n /*console.warn('got id and descr', $$[$0-1], $$[$0].trim());*/this.$={ stmt: 'state', id: $$[$0-1], type: 'default', description: yy.trimColon($$[$0])};\nbreak;\ncase 12:\n\r\n /*console.warn('got id', $$[$0-2]);yy.addRelation($$[$0-2], $$[$0]);*/\r\n this.$={ stmt: 'relation', state1: { stmt: 'state', id: $$[$0-2], type: 'default', description: '' }, state2:{ stmt: 'state', id: $$[$0] ,type: 'default', description: ''}};\r\n \nbreak;\ncase 13:\n\r\n /*yy.addRelation($$[$0-3], $$[$0-1], $$[$0].substr(1).trim());*/\r\n this.$={ stmt: 'relation', state1: { stmt: 'state', id: $$[$0-3], type: 'default', description: '' }, state2:{ stmt: 'state', id: $$[$0-1] ,type: 'default', description: ''}, description: $$[$0].substr(1).trim()};\r\n \nbreak;\ncase 17:\n\r\n /* console.warn('Adding document for state without id ', $$[$0-3]);*/\r\n this.$={ stmt: 'state', id: $$[$0-3], type: 'default', description: '', doc: $$[$0-1] }\r\n \nbreak;\ncase 18:\n\r\n var id=$$[$0];\r\n var description = $$[$0-2].trim();\r\n if($$[$0].match(':')){\r\n var parts = $$[$0].split(':');\r\n id=parts[0];\r\n description = [description, parts[1]];\r\n }\r\n this.$={stmt: 'state', id: id, type: 'default', description: description};\r\n\r\n \nbreak;\ncase 19:\n\r\n // console.warn('Adding document for state with id zxzx', $$[$0-3], $$[$0-2], yy.getDirection()); yy.addDocument($$[$0-3]);\r\n this.$={ stmt: 'state', id: $$[$0-3], type: 'default', description: $$[$0-5], doc: $$[$0-1] }\r\n \nbreak;\ncase 20:\n\r\n this.$={ stmt: 'state', id: $$[$0], type: 'fork' }\r\n \nbreak;\ncase 21:\n\r\n this.$={ stmt: 'state', id: $$[$0], type: 'join' }\r\n \nbreak;\ncase 22:\n\r\n this.$={ stmt: 'state', id: $$[$0], type: 'choice' }\r\n \nbreak;\ncase 23:\n\r\n this.$={ stmt: 'state', id: yy.getDividerId(), type: 'divider' }\r\n \nbreak;\ncase 24:\n\r\n /* console.warn('got NOTE, position: ', $$[$0-2].trim(), 'id = ', $$[$0-1].trim(), 'note: ', $$[$0]);*/\r\n this.$={ stmt: 'state', id: $$[$0-1].trim(), note:{position: $$[$0-2].trim(), text: $$[$0].trim()}};\r\n \nbreak;\ncase 30:\n yy.setDirection('TB');this.$={stmt:'dir', value:'TB'};\nbreak;\ncase 31:\n yy.setDirection('BT');this.$={stmt:'dir', value:'BT'};\nbreak;\ncase 32:\n yy.setDirection('RL'); this.$={stmt:'dir', value:'RL'};\nbreak;\ncase 33:\n yy.setDirection('LR');this.$={stmt:'dir', value:'LR'};\nbreak;\ncase 36: case 37:\nthis.$=$$[$0];\nbreak;\ncase 40:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 41:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 42:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 43:\n yy.parseDirective('}%%', 'close_directive', 'state'); \nbreak;\n}\n},\ntable: [{3:1,4:$V0,5:$V1,6:4,7:$V2,31:6,45:$V3},{1:[3]},{3:8,4:$V0,5:$V1,6:4,7:$V2,31:6,45:$V3},{3:9,4:$V0,5:$V1,6:4,7:$V2,31:6,45:$V3},{3:10,4:$V0,5:$V1,6:4,7:$V2,31:6,45:$V3},o([1,4,5,14,15,17,20,22,23,24,25,26,27,36,37,38,39,42,45],$V4,{8:11}),{32:12,46:[1,13]},{46:[2,40]},{1:[2,1]},{1:[2,2]},{1:[2,3]},{1:[2,4],4:$V5,5:$V6,6:28,9:14,10:16,11:18,14:$V7,15:$V8,17:$V9,20:$Va,22:$Vb,23:$Vc,24:$Vd,25:$Ve,26:$Vf,27:$Vg,30:29,31:6,36:$Vh,37:$Vi,38:$Vj,39:$Vk,42:$Vl,45:$V3},{33:36,34:[1,37],48:$Vm},o([34,48],[2,41]),o($Vn,[2,6]),{6:28,10:39,11:18,14:$V7,15:$V8,17:$V9,20:$Va,22:$Vb,23:$Vc,24:$Vd,25:$Ve,26:$Vf,27:$Vg,30:29,31:6,36:$Vh,37:$Vi,38:$Vj,39:$Vk,42:$Vl,45:$V3},o($Vn,[2,8]),o($Vn,[2,9]),o($Vn,[2,10],{12:[1,40],13:[1,41]}),o($Vn,[2,14]),{16:[1,42]},o($Vn,[2,16],{18:[1,43]}),{21:[1,44]},o($Vn,[2,20]),o($Vn,[2,21]),o($Vn,[2,22]),o($Vn,[2,23]),{28:45,29:[1,46],43:[1,47],44:[1,48]},o($Vn,[2,26]),o($Vn,[2,27]),o($Vo,[2,36]),o($Vo,[2,37]),o($Vn,[2,30]),o($Vn,[2,31]),o($Vn,[2,32]),o($Vn,[2,33]),o($Vp,[2,28]),{35:49,47:[1,50]},o($Vp,[2,43]),o($Vn,[2,7]),o($Vn,[2,11]),{11:51,22:$Vb,42:$Vl},o($Vn,[2,15]),o($Vq,$V4,{8:52}),{22:[1,53]},{22:[1,54]},{21:[1,55]},{22:[2,38]},{22:[2,39]},{33:56,48:$Vm},{48:[2,42]},o($Vn,[2,12],{12:[1,57]}),{4:$V5,5:$V6,6:28,9:14,10:16,11:18,14:$V7,15:$V8,17:$V9,19:[1,58],20:$Va,22:$Vb,23:$Vc,24:$Vd,25:$Ve,26:$Vf,27:$Vg,30:29,31:6,36:$Vh,37:$Vi,38:$Vj,39:$Vk,42:$Vl,45:$V3},o($Vn,[2,18],{18:[1,59]}),{29:[1,60]},{22:[1,61]},o($Vp,[2,29]),o($Vn,[2,13]),o($Vn,[2,17]),o($Vq,$V4,{8:62}),o($Vn,[2,24]),o($Vn,[2,25]),{4:$V5,5:$V6,6:28,9:14,10:16,11:18,14:$V7,15:$V8,17:$V9,19:[1,63],20:$Va,22:$Vb,23:$Vc,24:$Vd,25:$Ve,26:$Vf,27:$Vg,30:29,31:6,36:$Vh,37:$Vi,38:$Vj,39:$Vk,42:$Vl,45:$V3},o($Vn,[2,19])],\ndefaultActions: {7:[2,40],8:[2,1],9:[2,2],10:[2,3],47:[2,38],48:[2,39],50:[2,42]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\r\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0:return 36;\nbreak;\ncase 1:return 37;\nbreak;\ncase 2:return 38;\nbreak;\ncase 3:return 39;\nbreak;\ncase 4: this.begin('open_directive'); return 45; \nbreak;\ncase 5: this.begin('type_directive'); return 46; \nbreak;\ncase 6: this.popState(); this.begin('arg_directive'); return 34; \nbreak;\ncase 7: this.popState(); this.popState(); return 48; \nbreak;\ncase 8:return 47;\nbreak;\ncase 9:/* skip comments */\nbreak;\ncase 10:/* skip comments */{ /*console.log('Crap after close');*/ }\nbreak;\ncase 11:return 5;\nbreak;\ncase 12:/* skip all whitespace */\nbreak;\ncase 13:/* skip same-line whitespace */\nbreak;\ncase 14:/* skip comments */\nbreak;\ncase 15:/* skip comments */\nbreak;\ncase 16: this.pushState('SCALE'); /* console.log('Got scale', yy_.yytext);*/ return 15; \nbreak;\ncase 17:return 16;\nbreak;\ncase 18:this.popState();\nbreak;\ncase 19: /*console.log('Starting STATE zxzx'+yy.getDirection());*/this.pushState('STATE'); \nbreak;\ncase 20:this.popState();yy_.yytext=yy_.yytext.slice(0,-8).trim(); /*console.warn('Fork Fork: ',yy_.yytext);*/return 23;\nbreak;\ncase 21:this.popState();yy_.yytext=yy_.yytext.slice(0,-8).trim();/*console.warn('Fork Join: ',yy_.yytext);*/return 24;\nbreak;\ncase 22:this.popState();yy_.yytext=yy_.yytext.slice(0,-10).trim();/*console.warn('Fork Join: ',yy_.yytext);*/return 25;\nbreak;\ncase 23:this.popState();yy_.yytext=yy_.yytext.slice(0,-8).trim();/*console.warn('Fork Fork: ',yy_.yytext);*/return 23;\nbreak;\ncase 24:this.popState();yy_.yytext=yy_.yytext.slice(0,-8).trim();/*console.warn('Fork Join: ',yy_.yytext);*/return 24;\nbreak;\ncase 25:this.popState();yy_.yytext=yy_.yytext.slice(0,-10).trim();/*console.warn('Fork Join: ',yy_.yytext);*/return 25;\nbreak;\ncase 26: return 36;\nbreak;\ncase 27: return 37;\nbreak;\ncase 28: return 38;\nbreak;\ncase 29: return 39;\nbreak;\ncase 30: /*console.log('Starting STATE_STRING zxzx');*/this.begin(\"STATE_STRING\");\nbreak;\ncase 31:this.popState();this.pushState('STATE_ID');return \"AS\";\nbreak;\ncase 32:this.popState();/* console.log('STATE_ID', yy_.yytext);*/return \"ID\";\nbreak;\ncase 33:this.popState();\nbreak;\ncase 34: /*console.log('Long description:', yy_.yytext);*/return \"STATE_DESCR\";\nbreak;\ncase 35:/*console.log('COMPOSIT_STATE', yy_.yytext);*/return 17;\nbreak;\ncase 36:this.popState();\nbreak;\ncase 37:this.popState();this.pushState('struct'); /*console.log('begin struct', yy_.yytext);*/return 18;\nbreak;\ncase 38: /*console.log('Ending struct');*/ this.popState(); return 19;\nbreak;\ncase 39:/* nothing */\nbreak;\ncase 40: this.begin('NOTE'); return 27; \nbreak;\ncase 41: this.popState();this.pushState('NOTE_ID');return 43;\nbreak;\ncase 42: this.popState();this.pushState('NOTE_ID');return 44;\nbreak;\ncase 43: this.popState();this.pushState('FLOATING_NOTE');\nbreak;\ncase 44:this.popState();this.pushState('FLOATING_NOTE_ID');return \"AS\";\nbreak;\ncase 45:/**/\nbreak;\ncase 46: /*console.log('Floating note text: ', yy_.yytext);*/return \"NOTE_TEXT\";\nbreak;\ncase 47:this.popState();/*console.log('Floating note ID', yy_.yytext);*/return \"ID\";\nbreak;\ncase 48: this.popState();this.pushState('NOTE_TEXT');/*console.log('Got ID for note', yy_.yytext);*/return 22;\nbreak;\ncase 49: this.popState();/*console.log('Got NOTE_TEXT for note',yy_.yytext);*/yy_.yytext = yy_.yytext.substr(2).trim();return 29;\nbreak;\ncase 50: this.popState();/*console.log('Got NOTE_TEXT for note',yy_.yytext);*/yy_.yytext = yy_.yytext.slice(0,-8).trim();return 29;\nbreak;\ncase 51: /*console.log('Got state diagram', yy_.yytext,'#');*/return 7; \nbreak;\ncase 52: /*console.log('Got state diagram', yy_.yytext,'#');*/return 7; \nbreak;\ncase 53: /*console.log('HIDE_EMPTY', yy_.yytext,'#');*/return 14; \nbreak;\ncase 54: /*console.log('EDGE_STATE=',yy_.yytext);*/ return 42;\nbreak;\ncase 55: /*console.log('=>ID=',yy_.yytext);*/ return 22;\nbreak;\ncase 56: yy_.yytext = yy_.yytext.trim(); /*console.log('Descr = ', yy_.yytext);*/ return 12; \nbreak;\ncase 57:return 13;\nbreak;\ncase 58:return 26;\nbreak;\ncase 59:return 5;\nbreak;\ncase 60:return 'INVALID';\nbreak;\n}\n},\nrules: [/^(?:.*direction\\s+TB[^\\n]*)/i,/^(?:.*direction\\s+BT[^\\n]*)/i,/^(?:.*direction\\s+RL[^\\n]*)/i,/^(?:.*direction\\s+LR[^\\n]*)/i,/^(?:%%\\{)/i,/^(?:((?:(?!\\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\\}%%)/i,/^(?:((?:(?!\\}%%).|\\n)*))/i,/^(?:%%(?!\\{)[^\\n]*)/i,/^(?:[^\\}]%%[^\\n]*)/i,/^(?:[\\n]+)/i,/^(?:[\\s]+)/i,/^(?:((?!\\n)\\s)+)/i,/^(?:#[^\\n]*)/i,/^(?:%[^\\n]*)/i,/^(?:scale\\s+)/i,/^(?:\\d+)/i,/^(?:\\s+width\\b)/i,/^(?:state\\s+)/i,/^(?:.*<>)/i,/^(?:.*<>)/i,/^(?:.*<>)/i,/^(?:.*\\[\\[fork\\]\\])/i,/^(?:.*\\[\\[join\\]\\])/i,/^(?:.*\\[\\[choice\\]\\])/i,/^(?:.*direction\\s+TB[^\\n]*)/i,/^(?:.*direction\\s+BT[^\\n]*)/i,/^(?:.*direction\\s+RL[^\\n]*)/i,/^(?:.*direction\\s+LR[^\\n]*)/i,/^(?:[\"])/i,/^(?:\\s*as\\s+)/i,/^(?:[^\\n\\{]*)/i,/^(?:[\"])/i,/^(?:[^\"]*)/i,/^(?:[^\\n\\s\\{]+)/i,/^(?:\\n)/i,/^(?:\\{)/i,/^(?:\\})/i,/^(?:[\\n])/i,/^(?:note\\s+)/i,/^(?:left of\\b)/i,/^(?:right of\\b)/i,/^(?:\")/i,/^(?:\\s*as\\s*)/i,/^(?:[\"])/i,/^(?:[^\"]*)/i,/^(?:[^\\n]*)/i,/^(?:\\s*[^:\\n\\s\\-]+)/i,/^(?:\\s*:[^:\\n;]+)/i,/^(?:[\\s\\S]*?end note\\b)/i,/^(?:stateDiagram\\s+)/i,/^(?:stateDiagram-v2\\s+)/i,/^(?:hide empty description\\b)/i,/^(?:\\[\\*\\])/i,/^(?:[^:\\n\\s\\-\\{]+)/i,/^(?:\\s*:[^:\\n;]+)/i,/^(?:-->)/i,/^(?:--)/i,/^(?:$)/i,/^(?:.)/i],\nconditions: {\"LINE\":{\"rules\":[13,14],\"inclusive\":false},\"close_directive\":{\"rules\":[13,14],\"inclusive\":false},\"arg_directive\":{\"rules\":[7,8,13,14],\"inclusive\":false},\"type_directive\":{\"rules\":[6,7,13,14],\"inclusive\":false},\"open_directive\":{\"rules\":[5,13,14],\"inclusive\":false},\"struct\":{\"rules\":[13,14,19,26,27,28,29,38,39,40,54,55,56,57,58],\"inclusive\":false},\"FLOATING_NOTE_ID\":{\"rules\":[47],\"inclusive\":false},\"FLOATING_NOTE\":{\"rules\":[44,45,46],\"inclusive\":false},\"NOTE_TEXT\":{\"rules\":[49,50],\"inclusive\":false},\"NOTE_ID\":{\"rules\":[48],\"inclusive\":false},\"NOTE\":{\"rules\":[41,42,43],\"inclusive\":false},\"SCALE\":{\"rules\":[17,18],\"inclusive\":false},\"ALIAS\":{\"rules\":[],\"inclusive\":false},\"STATE_ID\":{\"rules\":[32],\"inclusive\":false},\"STATE_STRING\":{\"rules\":[33,34],\"inclusive\":false},\"FORK_STATE\":{\"rules\":[],\"inclusive\":false},\"STATE\":{\"rules\":[13,14,20,21,22,23,24,25,30,31,35,36,37],\"inclusive\":false},\"ID\":{\"rules\":[13,14],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,1,2,3,4,9,10,11,12,14,15,16,19,37,40,51,52,53,54,55,56,57,59,60],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,2],$V1=[1,5],$V2=[6,9,11,17,18,19,21],$V3=[1,15],$V4=[1,16],$V5=[1,17],$V6=[1,21],$V7=[4,6,9,11,17,18,19,21];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"journey\":4,\"document\":5,\"EOF\":6,\"directive\":7,\"line\":8,\"SPACE\":9,\"statement\":10,\"NEWLINE\":11,\"openDirective\":12,\"typeDirective\":13,\"closeDirective\":14,\":\":15,\"argDirective\":16,\"title\":17,\"section\":18,\"taskName\":19,\"taskData\":20,\"open_directive\":21,\"type_directive\":22,\"arg_directive\":23,\"close_directive\":24,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"journey\",6:\"EOF\",9:\"SPACE\",11:\"NEWLINE\",15:\":\",17:\"title\",18:\"section\",19:\"taskName\",20:\"taskData\",21:\"open_directive\",22:\"type_directive\",23:\"arg_directive\",24:\"close_directive\"},\nproductions_: [0,[3,3],[3,2],[5,0],[5,2],[8,2],[8,1],[8,1],[8,1],[7,4],[7,6],[10,1],[10,1],[10,2],[10,1],[12,1],[13,1],[16,1],[14,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 1:\n return $$[$0-1]; \nbreak;\ncase 3:\n this.$ = [] \nbreak;\ncase 4:\n$$[$0-1].push($$[$0]);this.$ = $$[$0-1]\nbreak;\ncase 5: case 6:\n this.$ = $$[$0] \nbreak;\ncase 7: case 8:\n this.$=[];\nbreak;\ncase 11:\nyy.setTitle($$[$0].substr(6));this.$=$$[$0].substr(6);\nbreak;\ncase 12:\nyy.addSection($$[$0].substr(8));this.$=$$[$0].substr(8);\nbreak;\ncase 13:\nyy.addTask($$[$0-1], $$[$0]);this.$='task';\nbreak;\ncase 15:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 16:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 17:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 18:\n yy.parseDirective('}%%', 'close_directive', 'journey'); \nbreak;\n}\n},\ntable: [{3:1,4:$V0,7:3,12:4,21:$V1},{1:[3]},o($V2,[2,3],{5:6}),{3:7,4:$V0,7:3,12:4,21:$V1},{13:8,22:[1,9]},{22:[2,15]},{6:[1,10],7:18,8:11,9:[1,12],10:13,11:[1,14],12:4,17:$V3,18:$V4,19:$V5,21:$V1},{1:[2,2]},{14:19,15:[1,20],24:$V6},o([15,24],[2,16]),o($V2,[2,8],{1:[2,1]}),o($V2,[2,4]),{7:18,10:22,12:4,17:$V3,18:$V4,19:$V5,21:$V1},o($V2,[2,6]),o($V2,[2,7]),o($V2,[2,11]),o($V2,[2,12]),{20:[1,23]},o($V2,[2,14]),{11:[1,24]},{16:25,23:[1,26]},{11:[2,18]},o($V2,[2,5]),o($V2,[2,13]),o($V7,[2,9]),{14:27,24:$V6},{24:[2,17]},{11:[1,28]},o($V7,[2,10])],\ndefaultActions: {5:[2,15],7:[2,2],21:[2,18],26:[2,17]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\r\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0: this.begin('open_directive'); return 21; \nbreak;\ncase 1: this.begin('type_directive'); return 22; \nbreak;\ncase 2: this.popState(); this.begin('arg_directive'); return 15; \nbreak;\ncase 3: this.popState(); this.popState(); return 24; \nbreak;\ncase 4:return 23;\nbreak;\ncase 5:/* skip comments */\nbreak;\ncase 6:/* skip comments */\nbreak;\ncase 7:return 11;\nbreak;\ncase 8:/* skip whitespace */\nbreak;\ncase 9:/* skip comments */\nbreak;\ncase 10:return 4;\nbreak;\ncase 11:return 17;\nbreak;\ncase 12:return 18;\nbreak;\ncase 13:return 19;\nbreak;\ncase 14:return 20;\nbreak;\ncase 15:return 15;\nbreak;\ncase 16:return 6;\nbreak;\ncase 17:return 'INVALID';\nbreak;\n}\n},\nrules: [/^(?:%%\\{)/i,/^(?:((?:(?!\\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\\}%%)/i,/^(?:((?:(?!\\}%%).|\\n)*))/i,/^(?:%(?!\\{)[^\\n]*)/i,/^(?:[^\\}]%%[^\\n]*)/i,/^(?:[\\n]+)/i,/^(?:\\s+)/i,/^(?:#[^\\n]*)/i,/^(?:journey\\b)/i,/^(?:title\\s[^#\\n;]+)/i,/^(?:section\\s[^#:\\n;]+)/i,/^(?:[^#:\\n;]+)/i,/^(?::[^#\\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],\nconditions: {\"open_directive\":{\"rules\":[1],\"inclusive\":false},\"type_directive\":{\"rules\":[2,3],\"inclusive\":false},\"arg_directive\":{\"rules\":[3,4],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,5,6,7,8,9,10,11,12,13,14,15,16,17],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = require('fs').readFileSync(require('path').normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}","import { assignWithDepth } from './utils';\r\nimport { log } from './logger';\r\nimport theme from './themes';\r\nimport config from './defaultConfig';\r\n\r\n// debugger;\r\n\r\nexport const defaultConfig = Object.freeze(config);\r\n\r\nlet siteConfig = assignWithDepth({}, defaultConfig);\r\nlet configFromInitialize;\r\nlet directives = [];\r\nlet currentConfig = assignWithDepth({}, defaultConfig);\r\n\r\nexport const updateCurrentConfig = (siteCfg, _directives) => {\r\n // start with config beeing the siteConfig\r\n let cfg = assignWithDepth({}, siteCfg);\r\n // let sCfg = assignWithDepth(defaultConfig, siteConfigDelta);\r\n\r\n // Join directives\r\n let sumOfDirectives = {};\r\n for (let i = 0; i < _directives.length; i++) {\r\n const d = _directives[i];\r\n sanitize(d);\r\n\r\n // Apply the data from the directive where the the overrides the themeVaraibles\r\n sumOfDirectives = assignWithDepth(sumOfDirectives, d);\r\n }\r\n\r\n cfg = assignWithDepth(cfg, sumOfDirectives);\r\n\r\n if (sumOfDirectives.theme) {\r\n const tmpConfigFromInitialize = assignWithDepth({}, configFromInitialize);\r\n const themeVariables = assignWithDepth(\r\n tmpConfigFromInitialize.themeVariables || {},\r\n sumOfDirectives.themeVariables\r\n );\r\n cfg.themeVariables = theme[cfg.theme].getThemeVariables(themeVariables);\r\n }\r\n\r\n currentConfig = cfg;\r\n return cfg;\r\n};\r\n/**\r\n *## setSiteConfig\r\n *| Function | Description | Type | Values |\r\n *| --------- | ------------------- | ------- | ------------------ |\r\n *| setSiteConfig|Sets the siteConfig to desired values | Put Request | Any Values, except ones in secure array|\r\n ***Notes:**\r\n *Sets the siteConfig. The siteConfig is a protected configuration for repeat use. Calls to reset() will reset\r\n *the currentConfig to siteConfig. Calls to reset(configApi.defaultConfig) will reset siteConfig and currentConfig\r\n *to the defaultConfig\r\n *Note: currentConfig is set in this function\r\n *Default value: At default, will mirror Global Config\r\n *\r\n * @param {any} conf - the base currentConfig to use as siteConfig\r\n * @returns {*} - the siteConfig\r\n */\r\nexport const setSiteConfig = (conf) => {\r\n siteConfig = assignWithDepth({}, defaultConfig);\r\n siteConfig = assignWithDepth(siteConfig, conf);\r\n\r\n if (conf.theme) {\r\n siteConfig.themeVariables = theme[conf.theme].getThemeVariables(conf.themeVariables);\r\n }\r\n\r\n currentConfig = updateCurrentConfig(siteConfig, directives);\r\n return siteConfig;\r\n};\r\n\r\nexport const saveConfigFromInitilize = (conf) => {\r\n configFromInitialize = assignWithDepth({}, conf);\r\n};\r\n\r\nexport const updateSiteConfig = (conf) => {\r\n siteConfig = assignWithDepth(siteConfig, conf);\r\n updateCurrentConfig(siteConfig, directives);\r\n\r\n return siteConfig;\r\n};\r\n/**\r\n *## getSiteConfig\r\n *| Function | Description | Type | Values |\r\n *| --------- | ------------------- | ------- | ------------------ |\r\n *| setSiteConfig|Returns the current siteConfig base configuration | Get Request | Returns Any Values in siteConfig|\r\n ***Notes**:\r\n *Returns **any** values in siteConfig.\r\n *\r\n * @returns {*}\r\n */\r\nexport const getSiteConfig = () => {\r\n return assignWithDepth({}, siteConfig);\r\n};\r\n/**\r\n *## setConfig\r\n *| Function | Description | Type | Values |\r\n *| --------- | ------------------- | ------- | ------------------ |\r\n *| setSiteConfig|Sets the siteConfig to desired values | Put Request| Any Values, except ones in secure array|\r\n ***Notes**:\r\n *Sets the currentConfig. The parameter conf is sanitized based on the siteConfig.secure keys. Any\r\n *values found in conf with key found in siteConfig.secure will be replaced with the corresponding\r\n *siteConfig value.\r\n *\r\n * @param {any} conf - the potential currentConfig\r\n * @returns {*} - the currentConfig merged with the sanitized conf\r\n */\r\nexport const setConfig = (conf) => {\r\n // sanitize(conf);\r\n // Object.keys(conf).forEach(key => {\r\n // const manipulator = manipulators[key];\r\n // conf[key] = manipulator ? manipulator(conf[key]) : conf[key];\r\n // });\r\n\r\n assignWithDepth(currentConfig, conf);\r\n\r\n return getConfig();\r\n};\r\n\r\n/**\r\n * ## getConfig\r\n *| Function | Description | Type | Return Values |\r\n *| --------- | ------------------- | ------- | ------------------ |\r\n *| getConfig |Obtains the currentConfig | Get Request | Any Values from currentConfig|\r\n ***Notes**:\r\n *Returns **any** the currentConfig\r\n *\r\n * @returns {*} - the currentConfig\r\n */\r\nexport const getConfig = () => {\r\n return assignWithDepth({}, currentConfig);\r\n};\r\n/**\r\n *## sanitize\r\n *| Function | Description | Type | Values |\r\n *| --------- | ------------------- | ------- | ------------------ |\r\n *| sanitize |Sets the siteConfig to desired values. | Put Request |None|\r\n *Ensures options parameter does not attempt to override siteConfig secure keys\r\n ***Notes**:\r\n * modifies options in-place\r\n *\r\n * @param {any} options - the potential setConfig parameter\r\n */\r\nexport const sanitize = (options) => {\r\n // Checking that options are not in the list of excluded options\r\n Object.keys(siteConfig.secure).forEach((key) => {\r\n if (typeof options[siteConfig.secure[key]] !== 'undefined') {\r\n // DO NOT attempt to print options[siteConfig.secure[key]] within `${}` as a malicious script\r\n // can exploit the logger's attempt to stringify the value and execute arbitrary code\r\n log.debug(\r\n `Denied attempt to modify a secure key ${siteConfig.secure[key]}`,\r\n options[siteConfig.secure[key]]\r\n );\r\n delete options[siteConfig.secure[key]];\r\n }\r\n });\r\n\r\n // Check that there no attempts of prototype pollution\r\n Object.keys(options).forEach((key) => {\r\n if (key.indexOf('__') === 0) {\r\n delete options[key];\r\n }\r\n });\r\n // Check that there no attempts of xss, there should be no tags at all in the directive\r\n // blocking data urls as base64 urls can contain svgs with inline script tags\r\n Object.keys(options).forEach((key) => {\r\n if (typeof options[key] === 'string') {\r\n if (\r\n options[key].indexOf('<') > -1 ||\r\n options[key].indexOf('>') > -1 ||\r\n options[key].indexOf('url(data:') > -1\r\n ) {\r\n delete options[key];\r\n }\r\n }\r\n if (typeof options[key] === 'object') {\r\n sanitize(options[key]);\r\n }\r\n });\r\n};\r\n\r\nexport const addDirective = (directive) => {\r\n if (directive.fontFamily) {\r\n if (!directive.themeVariables) {\r\n directive.themeVariables = { fontFamily: directive.fontFamily };\r\n } else {\r\n if (!directive.themeVariables.fontFamily) {\r\n directive.themeVariables = { fontFamily: directive.fontFamily };\r\n }\r\n }\r\n }\r\n directives.push(directive);\r\n updateCurrentConfig(siteConfig, directives);\r\n};\r\n\r\n/**\r\n *## reset\r\n *| Function | Description | Type | Required | Values |\r\n *| --------- | ------------------- | ------- | -------- | ------------------ |\r\n *| reset|Resets currentConfig to conf| Put Request | Required | None|\r\n *\r\n *| Parameter | Description |Type | Required | Values|\r\n *| --- | --- | --- | --- | --- |\r\n *| conf| base set of values, which currentConfig coul be **reset** to.| Dictionary | Required | Any Values, with respect to the secure Array|\r\n *\r\n ***Notes**:\r\n * (default: current siteConfig ) (optional, default `getSiteConfig()`)\r\n *\r\n */\r\nexport const reset = () => {\r\n // Replace current config with siteConfig\r\n directives = [];\r\n updateCurrentConfig(siteConfig, directives);\r\n};\r\n","import intersectRect from './intersect/intersect-rect';\r\nimport { log } from '../logger';\r\nimport createLabel from './createLabel';\r\nimport { select } from 'd3';\r\nimport { getConfig } from '../config';\r\nimport { evaluate } from '../diagrams/common/common';\r\n\r\nconst rect = (parent, node) => {\r\n log.trace('Creating subgraph rect for ', node.id, node);\r\n\r\n // Add outer g element\r\n const shapeSvg = parent\r\n .insert('g')\r\n .attr('class', 'cluster' + (node.class ? ' ' + node.class : ''))\r\n .attr('id', node.id);\r\n\r\n // add the rect\r\n const rect = shapeSvg.insert('rect', ':first-child');\r\n\r\n // Create the label and insert it after the rect\r\n const label = shapeSvg.insert('g').attr('class', 'cluster-label');\r\n\r\n const text = label\r\n .node()\r\n .appendChild(createLabel(node.labelText, node.labelStyle, undefined, true));\r\n\r\n // Get the size of the label\r\n let bbox = text.getBBox();\r\n\r\n if (evaluate(getConfig().flowchart.htmlLabels)) {\r\n const div = text.children[0];\r\n const dv = select(text);\r\n bbox = div.getBoundingClientRect();\r\n dv.attr('width', bbox.width);\r\n dv.attr('height', bbox.height);\r\n }\r\n\r\n const padding = 0 * node.padding;\r\n const halfPadding = padding / 2;\r\n\r\n const width = node.width <= bbox.width + padding ? bbox.width + padding : node.width;\r\n if (node.width <= bbox.width + padding) {\r\n node.diff = (bbox.width - node.width) / 2;\r\n } else {\r\n node.diff = -node.padding / 2;\r\n }\r\n\r\n log.trace('Data ', node, JSON.stringify(node));\r\n // center the rect around its coordinate\r\n rect\r\n .attr('style', node.style)\r\n .attr('rx', node.rx)\r\n .attr('ry', node.ry)\r\n .attr('x', node.x - width / 2)\r\n .attr('y', node.y - node.height / 2 - halfPadding)\r\n .attr('width', width)\r\n .attr('height', node.height + padding);\r\n\r\n // Center the label\r\n label.attr(\r\n 'transform',\r\n 'translate(' +\r\n (node.x - bbox.width / 2) +\r\n ', ' +\r\n (node.y - node.height / 2 + node.padding / 3) +\r\n ')'\r\n );\r\n\r\n const rectBox = rect.node().getBBox();\r\n node.width = rectBox.width;\r\n node.height = rectBox.height;\r\n\r\n node.intersect = function (point) {\r\n return intersectRect(node, point);\r\n };\r\n\r\n return shapeSvg;\r\n};\r\n\r\n/**\r\n * Non visiable cluster where the note is group with its\r\n *\r\n * @param {any} parent\r\n * @param {any} node\r\n * @returns {*} shapeSvg\r\n */\r\nconst noteGroup = (parent, node) => {\r\n // Add outer g element\r\n const shapeSvg = parent.insert('g').attr('class', 'note-cluster').attr('id', node.id);\r\n\r\n // add the rect\r\n const rect = shapeSvg.insert('rect', ':first-child');\r\n\r\n const padding = 0 * node.padding;\r\n const halfPadding = padding / 2;\r\n\r\n // center the rect around its coordinate\r\n rect\r\n .attr('rx', node.rx)\r\n .attr('ry', node.ry)\r\n .attr('x', node.x - node.width / 2 - halfPadding)\r\n .attr('y', node.y - node.height / 2 - halfPadding)\r\n .attr('width', node.width + padding)\r\n .attr('height', node.height + padding)\r\n .attr('fill', 'none');\r\n\r\n const rectBox = rect.node().getBBox();\r\n node.width = rectBox.width;\r\n node.height = rectBox.height;\r\n\r\n node.intersect = function (point) {\r\n return intersectRect(node, point);\r\n };\r\n\r\n return shapeSvg;\r\n};\r\nconst roundedWithTitle = (parent, node) => {\r\n // Add outer g element\r\n const shapeSvg = parent.insert('g').attr('class', node.classes).attr('id', node.id);\r\n\r\n // add the rect\r\n const rect = shapeSvg.insert('rect', ':first-child');\r\n\r\n // Create the label and insert it after the rect\r\n const label = shapeSvg.insert('g').attr('class', 'cluster-label');\r\n const innerRect = shapeSvg.append('rect');\r\n\r\n const text = label\r\n .node()\r\n .appendChild(createLabel(node.labelText, node.labelStyle, undefined, true));\r\n\r\n // Get the size of the label\r\n let bbox = text.getBBox();\r\n if (evaluate(getConfig().flowchart.htmlLabels)) {\r\n const div = text.children[0];\r\n const dv = select(text);\r\n bbox = div.getBoundingClientRect();\r\n dv.attr('width', bbox.width);\r\n dv.attr('height', bbox.height);\r\n }\r\n bbox = text.getBBox();\r\n const padding = 0 * node.padding;\r\n const halfPadding = padding / 2;\r\n\r\n const width = node.width <= bbox.width + node.padding ? bbox.width + node.padding : node.width;\r\n if (node.width <= bbox.width + node.padding) {\r\n node.diff = (bbox.width + node.padding * 0 - node.width) / 2;\r\n } else {\r\n node.diff = -node.padding / 2;\r\n }\r\n\r\n // center the rect around its coordinate\r\n rect\r\n .attr('class', 'outer')\r\n .attr('x', node.x - width / 2 - halfPadding)\r\n .attr('y', node.y - node.height / 2 - halfPadding)\r\n .attr('width', width + padding)\r\n .attr('height', node.height + padding);\r\n innerRect\r\n .attr('class', 'inner')\r\n .attr('x', node.x - width / 2 - halfPadding)\r\n .attr('y', node.y - node.height / 2 - halfPadding + bbox.height - 1)\r\n .attr('width', width + padding)\r\n .attr('height', node.height + padding - bbox.height - 3);\r\n\r\n // Center the label\r\n label.attr(\r\n 'transform',\r\n 'translate(' +\r\n (node.x - bbox.width / 2) +\r\n ', ' +\r\n (node.y -\r\n node.height / 2 -\r\n node.padding / 3 +\r\n (evaluate(getConfig().flowchart.htmlLabels) ? 5 : 3)) +\r\n ')'\r\n );\r\n\r\n const rectBox = rect.node().getBBox();\r\n node.height = rectBox.height;\r\n\r\n node.intersect = function (point) {\r\n return intersectRect(node, point);\r\n };\r\n\r\n return shapeSvg;\r\n};\r\n\r\nconst divider = (parent, node) => {\r\n // Add outer g element\r\n const shapeSvg = parent.insert('g').attr('class', node.classes).attr('id', node.id);\r\n\r\n // add the rect\r\n const rect = shapeSvg.insert('rect', ':first-child');\r\n\r\n const padding = 0 * node.padding;\r\n const halfPadding = padding / 2;\r\n\r\n // center the rect around its coordinate\r\n rect\r\n .attr('class', 'divider')\r\n .attr('x', node.x - node.width / 2 - halfPadding)\r\n .attr('y', node.y - node.height / 2)\r\n .attr('width', node.width + padding)\r\n .attr('height', node.height + padding);\r\n\r\n const rectBox = rect.node().getBBox();\r\n node.width = rectBox.width;\r\n node.height = rectBox.height;\r\n node.diff = -node.padding / 2;\r\n node.intersect = function (point) {\r\n return intersectRect(node, point);\r\n };\r\n\r\n return shapeSvg;\r\n};\r\n\r\nconst shapes = { rect, roundedWithTitle, noteGroup, divider };\r\n\r\nlet clusterElems = {};\r\n\r\nexport const insertCluster = (elem, node) => {\r\n log.trace('Inserting cluster');\r\n const shape = node.shape || 'rect';\r\n clusterElems[node.id] = shapes[shape](elem, node);\r\n};\r\nexport const getClusterTitleWidth = (elem, node) => {\r\n const label = createLabel(node.labelText, node.labelStyle, undefined, true);\r\n elem.node().appendChild(label);\r\n const width = label.getBBox().width;\r\n elem.node().removeChild(label);\r\n return width;\r\n};\r\n\r\nexport const clear = () => {\r\n clusterElems = {};\r\n};\r\n\r\nexport const positionCluster = (node) => {\r\n log.info('Position cluster (' + node.id + ', ' + node.x + ', ' + node.y + ')');\r\n const el = clusterElems[node.id];\r\n\r\n el.attr('transform', 'translate(' + node.x + ', ' + node.y + ')');\r\n};\r\n","import { select } from 'd3';\r\nimport { log } from '../logger'; // eslint-disable-line\r\nimport { evaluate } from '../diagrams/common/common';\r\nimport { getConfig } from '../config';\r\n\r\n/**\r\n * @param dom\r\n * @param styleFn\r\n */\r\nfunction applyStyle(dom, styleFn) {\r\n if (styleFn) {\r\n dom.attr('style', styleFn);\r\n }\r\n}\r\n\r\n/**\r\n * @param {any} node\r\n * @returns {SVGForeignObjectElement} node\r\n */\r\nfunction addHtmlLabel(node) {\r\n const fo = select(document.createElementNS('http://www.w3.org/2000/svg', 'foreignObject'));\r\n const div = fo.append('xhtml:div');\r\n\r\n const label = node.label;\r\n const labelClass = node.isNode ? 'nodeLabel' : 'edgeLabel';\r\n div.html(\r\n '' +\r\n label +\r\n ''\r\n );\r\n\r\n applyStyle(div, node.labelStyle);\r\n div.style('display', 'inline-block');\r\n // Fix for firefox\r\n div.style('white-space', 'nowrap');\r\n div.attr('xmlns', 'http://www.w3.org/1999/xhtml');\r\n return fo.node();\r\n}\r\n\r\nconst createLabel = (_vertexText, style, isTitle, isNode) => {\r\n let vertexText = _vertexText || '';\r\n if (typeof vertexText === 'object') vertexText = vertexText[0];\r\n if (evaluate(getConfig().flowchart.htmlLabels)) {\r\n // TODO: addHtmlLabel accepts a labelStyle. Do we possibly have that?\r\n vertexText = vertexText.replace(/\\\\n|\\n/g, '
');\r\n log.info('vertexText' + vertexText);\r\n const node = {\r\n isNode,\r\n label: vertexText.replace(\r\n /fa[lrsb]?:fa-[\\w-]+/g,\r\n (s) => ``\r\n ),\r\n labelStyle: style.replace('fill:', 'color:'),\r\n };\r\n let vertexNode = addHtmlLabel(node);\r\n // vertexNode.parentNode.removeChild(vertexNode);\r\n return vertexNode;\r\n } else {\r\n const svgLabel = document.createElementNS('http://www.w3.org/2000/svg', 'text');\r\n svgLabel.setAttribute('style', style.replace('color:', 'fill:'));\r\n let rows = [];\r\n if (typeof vertexText === 'string') {\r\n rows = vertexText.split(/\\\\n|\\n|/gi);\r\n } else if (Array.isArray(vertexText)) {\r\n rows = vertexText;\r\n } else {\r\n rows = [];\r\n }\r\n\r\n for (let j = 0; j < rows.length; j++) {\r\n const tspan = document.createElementNS('http://www.w3.org/2000/svg', 'tspan');\r\n tspan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\r\n tspan.setAttribute('dy', '1em');\r\n tspan.setAttribute('x', '0');\r\n if (isTitle) {\r\n tspan.setAttribute('class', 'title-row');\r\n } else {\r\n tspan.setAttribute('class', 'row');\r\n }\r\n tspan.textContent = rows[j].trim();\r\n svgLabel.appendChild(tspan);\r\n }\r\n return svgLabel;\r\n }\r\n};\r\n\r\nexport default createLabel;\r\n","import { log } from '../logger'; // eslint-disable-line\r\nimport createLabel from './createLabel';\r\nimport { line, curveBasis, select } from 'd3';\r\nimport { getConfig } from '../config';\r\nimport utils from '../utils';\r\nimport { evaluate } from '../diagrams/common/common';\r\n\r\nlet edgeLabels = {};\r\nlet terminalLabels = {};\r\n\r\nexport const clear = () => {\r\n edgeLabels = {};\r\n terminalLabels = {};\r\n};\r\n\r\nexport const insertEdgeLabel = (elem, edge) => {\r\n // Create the actual text element\r\n const labelElement = createLabel(edge.label, edge.labelStyle);\r\n\r\n // Create outer g, edgeLabel, this will be positioned after graph layout\r\n const edgeLabel = elem.insert('g').attr('class', 'edgeLabel');\r\n\r\n // Create inner g, label, this will be positioned now for centering the text\r\n const label = edgeLabel.insert('g').attr('class', 'label');\r\n label.node().appendChild(labelElement);\r\n\r\n // Center the label\r\n let bbox = labelElement.getBBox();\r\n if (evaluate(getConfig().flowchart.htmlLabels)) {\r\n const div = labelElement.children[0];\r\n const dv = select(labelElement);\r\n bbox = div.getBoundingClientRect();\r\n dv.attr('width', bbox.width);\r\n dv.attr('height', bbox.height);\r\n }\r\n label.attr('transform', 'translate(' + -bbox.width / 2 + ', ' + -bbox.height / 2 + ')');\r\n\r\n // Make element accessible by id for positioning\r\n edgeLabels[edge.id] = edgeLabel;\r\n\r\n // Update the abstract data of the edge with the new information about its width and height\r\n edge.width = bbox.width;\r\n edge.height = bbox.height;\r\n\r\n let fo;\r\n if (edge.startLabelLeft) {\r\n // Create the actual text element\r\n const startLabelElement = createLabel(edge.startLabelLeft, edge.labelStyle);\r\n const startEdgeLabelLeft = elem.insert('g').attr('class', 'edgeTerminals');\r\n const inner = startEdgeLabelLeft.insert('g').attr('class', 'inner');\r\n fo = inner.node().appendChild(startLabelElement);\r\n const slBox = startLabelElement.getBBox();\r\n inner.attr('transform', 'translate(' + -slBox.width / 2 + ', ' + -slBox.height / 2 + ')');\r\n if (!terminalLabels[edge.id]) {\r\n terminalLabels[edge.id] = {};\r\n }\r\n terminalLabels[edge.id].startLeft = startEdgeLabelLeft;\r\n setTerminalWidth(fo, edge.startLabelLeft);\r\n }\r\n if (edge.startLabelRight) {\r\n // Create the actual text element\r\n const startLabelElement = createLabel(edge.startLabelRight, edge.labelStyle);\r\n const startEdgeLabelRight = elem.insert('g').attr('class', 'edgeTerminals');\r\n const inner = startEdgeLabelRight.insert('g').attr('class', 'inner');\r\n fo = startEdgeLabelRight.node().appendChild(startLabelElement);\r\n inner.node().appendChild(startLabelElement);\r\n const slBox = startLabelElement.getBBox();\r\n inner.attr('transform', 'translate(' + -slBox.width / 2 + ', ' + -slBox.height / 2 + ')');\r\n\r\n if (!terminalLabels[edge.id]) {\r\n terminalLabels[edge.id] = {};\r\n }\r\n terminalLabels[edge.id].startRight = startEdgeLabelRight;\r\n setTerminalWidth(fo, edge.startLabelRight);\r\n }\r\n if (edge.endLabelLeft) {\r\n // Create the actual text element\r\n const endLabelElement = createLabel(edge.endLabelLeft, edge.labelStyle);\r\n const endEdgeLabelLeft = elem.insert('g').attr('class', 'edgeTerminals');\r\n const inner = endEdgeLabelLeft.insert('g').attr('class', 'inner');\r\n fo = inner.node().appendChild(endLabelElement);\r\n const slBox = endLabelElement.getBBox();\r\n inner.attr('transform', 'translate(' + -slBox.width / 2 + ', ' + -slBox.height / 2 + ')');\r\n\r\n endEdgeLabelLeft.node().appendChild(endLabelElement);\r\n\r\n if (!terminalLabels[edge.id]) {\r\n terminalLabels[edge.id] = {};\r\n }\r\n terminalLabels[edge.id].endLeft = endEdgeLabelLeft;\r\n setTerminalWidth(fo, edge.endLabelLeft);\r\n }\r\n if (edge.endLabelRight) {\r\n // Create the actual text element\r\n const endLabelElement = createLabel(edge.endLabelRight, edge.labelStyle);\r\n const endEdgeLabelRight = elem.insert('g').attr('class', 'edgeTerminals');\r\n const inner = endEdgeLabelRight.insert('g').attr('class', 'inner');\r\n\r\n fo = inner.node().appendChild(endLabelElement);\r\n const slBox = endLabelElement.getBBox();\r\n inner.attr('transform', 'translate(' + -slBox.width / 2 + ', ' + -slBox.height / 2 + ')');\r\n\r\n endEdgeLabelRight.node().appendChild(endLabelElement);\r\n if (!terminalLabels[edge.id]) {\r\n terminalLabels[edge.id] = {};\r\n }\r\n terminalLabels[edge.id].endRight = endEdgeLabelRight;\r\n setTerminalWidth(fo, edge.endLabelRight);\r\n }\r\n};\r\n\r\n/**\r\n * @param {any} fo\r\n * @param {any} value\r\n */\r\nfunction setTerminalWidth(fo, value) {\r\n if (getConfig().flowchart.htmlLabels && fo) {\r\n fo.style.width = value.length * 9 + 'px';\r\n fo.style.height = '12px';\r\n }\r\n}\r\n\r\nexport const positionEdgeLabel = (edge, paths) => {\r\n log.info('Moving label abc78 ', edge.id, edge.label, edgeLabels[edge.id]);\r\n let path = paths.updatedPath ? paths.updatedPath : paths.originalPath;\r\n if (edge.label) {\r\n const el = edgeLabels[edge.id];\r\n let x = edge.x;\r\n let y = edge.y;\r\n if (path) {\r\n // // debugger;\r\n const pos = utils.calcLabelPosition(path);\r\n log.info('Moving label from (', x, ',', y, ') to (', pos.x, ',', pos.y, ') abc78');\r\n // x = pos.x;\r\n // y = pos.y;\r\n }\r\n el.attr('transform', 'translate(' + x + ', ' + y + ')');\r\n }\r\n\r\n //let path = paths.updatedPath ? paths.updatedPath : paths.originalPath;\r\n if (edge.startLabelLeft) {\r\n const el = terminalLabels[edge.id].startLeft;\r\n let x = edge.x;\r\n let y = edge.y;\r\n if (path) {\r\n // debugger;\r\n const pos = utils.calcTerminalLabelPosition(edge.arrowTypeStart ? 10 : 0, 'start_left', path);\r\n x = pos.x;\r\n y = pos.y;\r\n }\r\n el.attr('transform', 'translate(' + x + ', ' + y + ')');\r\n }\r\n if (edge.startLabelRight) {\r\n const el = terminalLabels[edge.id].startRight;\r\n let x = edge.x;\r\n let y = edge.y;\r\n if (path) {\r\n // debugger;\r\n const pos = utils.calcTerminalLabelPosition(\r\n edge.arrowTypeStart ? 10 : 0,\r\n 'start_right',\r\n path\r\n );\r\n x = pos.x;\r\n y = pos.y;\r\n }\r\n el.attr('transform', 'translate(' + x + ', ' + y + ')');\r\n }\r\n if (edge.endLabelLeft) {\r\n const el = terminalLabels[edge.id].endLeft;\r\n let x = edge.x;\r\n let y = edge.y;\r\n if (path) {\r\n // debugger;\r\n const pos = utils.calcTerminalLabelPosition(edge.arrowTypeEnd ? 10 : 0, 'end_left', path);\r\n x = pos.x;\r\n y = pos.y;\r\n }\r\n el.attr('transform', 'translate(' + x + ', ' + y + ')');\r\n }\r\n if (edge.endLabelRight) {\r\n const el = terminalLabels[edge.id].endRight;\r\n let x = edge.x;\r\n let y = edge.y;\r\n if (path) {\r\n // debugger;\r\n const pos = utils.calcTerminalLabelPosition(edge.arrowTypeEnd ? 10 : 0, 'end_right', path);\r\n x = pos.x;\r\n y = pos.y;\r\n }\r\n el.attr('transform', 'translate(' + x + ', ' + y + ')');\r\n }\r\n};\r\n\r\n// const getRelationType = function(type) {\r\n// switch (type) {\r\n// case stateDb.relationType.AGGREGATION:\r\n// return 'aggregation';\r\n// case stateDb.relationType.EXTENSION:\r\n// return 'extension';\r\n// case stateDb.relationType.COMPOSITION:\r\n// return 'composition';\r\n// case stateDb.relationType.DEPENDENCY:\r\n// return 'dependency';\r\n// }\r\n// };\r\n\r\nconst outsideNode = (node, point) => {\r\n // log.warn('Checking bounds ', node, point);\r\n const x = node.x;\r\n const y = node.y;\r\n const dx = Math.abs(point.x - x);\r\n const dy = Math.abs(point.y - y);\r\n const w = node.width / 2;\r\n const h = node.height / 2;\r\n if (dx >= w || dy >= h) {\r\n return true;\r\n }\r\n return false;\r\n};\r\n\r\nexport const intersection = (node, outsidePoint, insidePoint) => {\r\n log.warn(`intersection calc abc89:\r\n outsidePoint: ${JSON.stringify(outsidePoint)}\r\n insidePoint : ${JSON.stringify(insidePoint)}\r\n node : x:${node.x} y:${node.y} w:${node.width} h:${node.height}`);\r\n const x = node.x;\r\n const y = node.y;\r\n\r\n const dx = Math.abs(x - insidePoint.x);\r\n // const dy = Math.abs(y - insidePoint.y);\r\n const w = node.width / 2;\r\n let r = insidePoint.x < outsidePoint.x ? w - dx : w + dx;\r\n const h = node.height / 2;\r\n\r\n // const edges = {\r\n // x1: x - w,\r\n // x2: x + w,\r\n // y1: y - h,\r\n // y2: y + h\r\n // };\r\n\r\n // if (\r\n // outsidePoint.x === edges.x1 ||\r\n // outsidePoint.x === edges.x2 ||\r\n // outsidePoint.y === edges.y1 ||\r\n // outsidePoint.y === edges.y2\r\n // ) {\r\n // log.warn('abc89 calc equals on edge', outsidePoint, edges);\r\n // return outsidePoint;\r\n // }\r\n\r\n const Q = Math.abs(outsidePoint.y - insidePoint.y);\r\n const R = Math.abs(outsidePoint.x - insidePoint.x);\r\n // log.warn();\r\n if (Math.abs(y - outsidePoint.y) * w > Math.abs(x - outsidePoint.x) * h) { // eslint-disable-line\r\n // Intersection is top or bottom of rect.\r\n // let q = insidePoint.y < outsidePoint.y ? outsidePoint.y - h - y : y - h - outsidePoint.y;\r\n let q = insidePoint.y < outsidePoint.y ? outsidePoint.y - h - y : y - h - outsidePoint.y;\r\n r = (R * q) / Q;\r\n const res = {\r\n x: insidePoint.x < outsidePoint.x ? insidePoint.x + r : insidePoint.x - R + r,\r\n y: insidePoint.y < outsidePoint.y ? insidePoint.y + Q - q : insidePoint.y - Q + q,\r\n };\r\n\r\n if (r === 0) {\r\n res.x = outsidePoint.x;\r\n res.y = outsidePoint.y;\r\n }\r\n if (R === 0) {\r\n res.x = outsidePoint.x;\r\n }\r\n if (Q === 0) {\r\n res.y = outsidePoint.y;\r\n }\r\n\r\n log.warn(`abc89 topp/bott calc, Q ${Q}, q ${q}, R ${R}, r ${r}`, res);\r\n\r\n return res;\r\n } else {\r\n // Intersection onn sides of rect\r\n if (insidePoint.x < outsidePoint.x) {\r\n r = outsidePoint.x - w - x;\r\n } else {\r\n // r = outsidePoint.x - w - x;\r\n r = x - w - outsidePoint.x;\r\n }\r\n let q = (Q * r) / R;\r\n // OK let _x = insidePoint.x < outsidePoint.x ? insidePoint.x + R - r : insidePoint.x + dx - w;\r\n // OK let _x = insidePoint.x < outsidePoint.x ? insidePoint.x + R - r : outsidePoint.x + r;\r\n let _x = insidePoint.x < outsidePoint.x ? insidePoint.x + R - r : insidePoint.x - R + r;\r\n // let _x = insidePoint.x < outsidePoint.x ? insidePoint.x + R - r : outsidePoint.x + r;\r\n let _y = insidePoint.y < outsidePoint.y ? insidePoint.y + q : insidePoint.y - q;\r\n log.warn(`sides calc abc89, Q ${Q}, q ${q}, R ${R}, r ${r}`, { _x, _y });\r\n if (r === 0) {\r\n _x = outsidePoint.x;\r\n _y = outsidePoint.y;\r\n }\r\n if (R === 0) {\r\n _x = outsidePoint.x;\r\n }\r\n if (Q === 0) {\r\n _y = outsidePoint.y;\r\n }\r\n\r\n return { x: _x, y: _y };\r\n }\r\n};\r\n/**\r\n * This function will page a path and node where the last point(s) in the path is inside the node\r\n * and return an update path ending by the border of the node.\r\n *\r\n * @param {Array} _points\r\n * @param {*} boundryNode\r\n * @returns {Array} points\r\n */\r\nconst cutPathAtIntersect = (_points, boundryNode) => {\r\n log.warn('abc88 cutPathAtIntersect', _points, boundryNode);\r\n let points = [];\r\n let lastPointOutside = _points[0];\r\n let isInside = false;\r\n _points.forEach((point) => {\r\n // const node = clusterDb[edge.toCluster].node;\r\n log.info('abc88 checking point', point, boundryNode);\r\n\r\n // check if point is inside the boundry rect\r\n if (!outsideNode(boundryNode, point) && !isInside) {\r\n // First point inside the rect found\r\n // Calc the intersection coord between the point anf the last opint ouside the rect\r\n const inter = intersection(boundryNode, lastPointOutside, point);\r\n log.warn('abc88 inside', point, lastPointOutside, inter);\r\n log.warn('abc88 intersection', inter);\r\n\r\n // // Check case where the intersection is the same as the last point\r\n let pointPresent = false;\r\n points.forEach((p) => {\r\n pointPresent = pointPresent || (p.x === inter.x && p.y === inter.y);\r\n });\r\n // // if (!pointPresent) {\r\n if (!points.find((e) => e.x === inter.x && e.y === inter.y)) {\r\n points.push(inter);\r\n } else {\r\n log.warn('abc88 no intersect', inter, points);\r\n }\r\n // points.push(inter);\r\n isInside = true;\r\n } else {\r\n // Outside\r\n log.warn('abc88 outside', point, lastPointOutside);\r\n lastPointOutside = point;\r\n // points.push(point);\r\n if (!isInside) points.push(point);\r\n }\r\n });\r\n log.warn('abc88 returning points', points);\r\n return points;\r\n};\r\n\r\n//(edgePaths, e, edge, clusterDb, diagramtype, graph)\r\nexport const insertEdge = function (elem, e, edge, clusterDb, diagramType, graph) {\r\n let points = edge.points;\r\n let pointsHasChanged = false;\r\n const tail = graph.node(e.v);\r\n var head = graph.node(e.w);\r\n\r\n log.info('abc88 InsertEdge: ', edge);\r\n if (head.intersect && tail.intersect) {\r\n points = points.slice(1, edge.points.length - 1);\r\n points.unshift(tail.intersect(points[0]));\r\n log.info(\r\n 'Last point',\r\n points[points.length - 1],\r\n head,\r\n head.intersect(points[points.length - 1])\r\n );\r\n points.push(head.intersect(points[points.length - 1]));\r\n }\r\n if (edge.toCluster) {\r\n log.info('to cluster abc88', clusterDb[edge.toCluster]);\r\n points = cutPathAtIntersect(edge.points, clusterDb[edge.toCluster].node);\r\n // log.trace('edge', edge);\r\n // points = [];\r\n // let lastPointOutside; // = edge.points[0];\r\n // let isInside = false;\r\n // edge.points.forEach(point => {\r\n // const node = clusterDb[edge.toCluster].node;\r\n // log.warn('checking from', edge.fromCluster, point, node);\r\n\r\n // if (!outsideNode(node, point) && !isInside) {\r\n // log.trace('inside', edge.toCluster, point, lastPointOutside);\r\n\r\n // // First point inside the rect\r\n // const inter = intersection(node, lastPointOutside, point);\r\n\r\n // let pointPresent = false;\r\n // points.forEach(p => {\r\n // pointPresent = pointPresent || (p.x === inter.x && p.y === inter.y);\r\n // });\r\n // // if (!pointPresent) {\r\n // if (!points.find(e => e.x === inter.x && e.y === inter.y)) {\r\n // points.push(inter);\r\n // } else {\r\n // log.warn('no intersect', inter, points);\r\n // }\r\n // isInside = true;\r\n // } else {\r\n // // outtside\r\n // lastPointOutside = point;\r\n // if (!isInside) points.push(point);\r\n // }\r\n // });\r\n pointsHasChanged = true;\r\n }\r\n\r\n if (edge.fromCluster) {\r\n log.info('from cluster abc88', clusterDb[edge.fromCluster]);\r\n points = cutPathAtIntersect(points.reverse(), clusterDb[edge.fromCluster].node).reverse();\r\n // log.warn('edge', edge);\r\n // log.warn('from cluster', clusterDb[edge.fromCluster], points);\r\n // const updatedPoints = [];\r\n // let lastPointOutside = edge.points[edge.points.length - 1];\r\n // let isInside = false;\r\n // for (let i = points.length - 1; i >= 0; i--) {\r\n // const point = points[i];\r\n // const node = clusterDb[edge.fromCluster].node;\r\n // log.warn('checking to', edge.fromCluster, point, node);\r\n\r\n // if (!outsideNode(node, point) && !isInside) {\r\n // log.warn('inside', edge.fromCluster, point, node);\r\n\r\n // // First point inside the rect\r\n // const inter = intersection(node, lastPointOutside, point);\r\n // log.warn('intersect', intersection(node, lastPointOutside, point));\r\n // let pointPresent = false;\r\n // points.forEach(p => {\r\n // pointPresent = pointPresent || (p.x === inter.x && p.y === inter.y);\r\n // });\r\n // // if (!pointPresent) {\r\n // if (!points.find(e => e.x === inter.x && e.y === inter.y)) {\r\n // updatedPoints.unshift(inter);\r\n // log.warn('Adding point -updated = ', updatedPoints);\r\n // } else {\r\n // log.warn('no intersect', inter, points);\r\n // }\r\n // // points.push(insterection);\r\n // isInside = true;\r\n // } else {\r\n // // at the outside\r\n // // if (!isInside) updatedPoints.unshift(point);\r\n // updatedPoints.unshift(point);\r\n // log.warn('Outside point', point, updatedPoints);\r\n // }\r\n // lastPointOutside = point;\r\n // }\r\n // points = updatedPoints;\r\n // points = edge.points;\r\n pointsHasChanged = true;\r\n }\r\n\r\n // The data for our line\r\n const lineData = points.filter((p) => !Number.isNaN(p.y));\r\n\r\n // This is the accessor function we talked about above\r\n let curve;\r\n // Currently only flowcharts get the curve from the settings, perhaps this should\r\n // be expanded to a common setting? Restricting it for now in order not to cause side-effects that\r\n // have not been thought through\r\n if (diagramType === 'graph' || diagramType === 'flowchart') {\r\n curve = edge.curve || curveBasis;\r\n } else {\r\n curve = curveBasis;\r\n }\r\n // curve = curveLinear;\r\n const lineFunction = line()\r\n .x(function (d) {\r\n return d.x;\r\n })\r\n .y(function (d) {\r\n return d.y;\r\n })\r\n .curve(curve);\r\n\r\n // Contruct stroke classes based on properties\r\n let strokeClasses;\r\n switch (edge.thickness) {\r\n case 'normal':\r\n strokeClasses = 'edge-thickness-normal';\r\n break;\r\n case 'thick':\r\n strokeClasses = 'edge-thickness-thick';\r\n break;\r\n default:\r\n strokeClasses = '';\r\n }\r\n switch (edge.pattern) {\r\n case 'solid':\r\n strokeClasses += ' edge-pattern-solid';\r\n break;\r\n case 'dotted':\r\n strokeClasses += ' edge-pattern-dotted';\r\n break;\r\n case 'dashed':\r\n strokeClasses += ' edge-pattern-dashed';\r\n break;\r\n }\r\n\r\n const svgPath = elem\r\n .append('path')\r\n .attr('d', lineFunction(lineData))\r\n .attr('id', edge.id)\r\n .attr('class', ' ' + strokeClasses + (edge.classes ? ' ' + edge.classes : ''))\r\n .attr('style', edge.style);\r\n\r\n // DEBUG code, adds a red circle at each edge coordinate\r\n // edge.points.forEach(point => {\r\n // elem\r\n // .append('circle')\r\n // .style('stroke', 'red')\r\n // .style('fill', 'red')\r\n // .attr('r', 1)\r\n // .attr('cx', point.x)\r\n // .attr('cy', point.y);\r\n // });\r\n\r\n let url = '';\r\n if (getConfig().state.arrowMarkerAbsolute) {\r\n url =\r\n window.location.protocol +\r\n '//' +\r\n window.location.host +\r\n window.location.pathname +\r\n window.location.search;\r\n url = url.replace(/\\(/g, '\\\\(');\r\n url = url.replace(/\\)/g, '\\\\)');\r\n }\r\n log.info('arrowTypeStart', edge.arrowTypeStart);\r\n log.info('arrowTypeEnd', edge.arrowTypeEnd);\r\n\r\n switch (edge.arrowTypeStart) {\r\n case 'arrow_cross':\r\n svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-crossStart' + ')');\r\n break;\r\n case 'arrow_point':\r\n svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-pointStart' + ')');\r\n break;\r\n case 'arrow_barb':\r\n svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-barbStart' + ')');\r\n break;\r\n case 'arrow_circle':\r\n svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-circleStart' + ')');\r\n break;\r\n case 'aggregation':\r\n svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-aggregationStart' + ')');\r\n break;\r\n case 'extension':\r\n svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-extensionStart' + ')');\r\n break;\r\n case 'composition':\r\n svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-compositionStart' + ')');\r\n break;\r\n case 'dependency':\r\n svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-dependencyStart' + ')');\r\n break;\r\n default:\r\n }\r\n switch (edge.arrowTypeEnd) {\r\n case 'arrow_cross':\r\n svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-crossEnd' + ')');\r\n break;\r\n case 'arrow_point':\r\n svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-pointEnd' + ')');\r\n break;\r\n case 'arrow_barb':\r\n svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-barbEnd' + ')');\r\n break;\r\n case 'arrow_circle':\r\n svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-circleEnd' + ')');\r\n break;\r\n case 'aggregation':\r\n svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-aggregationEnd' + ')');\r\n break;\r\n case 'extension':\r\n svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-extensionEnd' + ')');\r\n break;\r\n case 'composition':\r\n svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-compositionEnd' + ')');\r\n break;\r\n case 'dependency':\r\n svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-dependencyEnd' + ')');\r\n break;\r\n default:\r\n }\r\n let paths = {};\r\n if (pointsHasChanged) {\r\n paths.updatedPath = points;\r\n }\r\n paths.originalPath = edge.points;\r\n return paths;\r\n};\r\n","import dagre from 'dagre';\r\nimport graphlib from 'graphlib';\r\nimport insertMarkers from './markers';\r\nimport { updateNodeBounds } from './shapes/util';\r\nimport {\r\n clear as clearGraphlib,\r\n clusterDb,\r\n adjustClustersAndEdges,\r\n findNonClusterChild,\r\n sortNodesByHierarchy,\r\n} from './mermaid-graphlib';\r\nimport { insertNode, positionNode, clear as clearNodes, setNodeElem } from './nodes';\r\nimport { insertCluster, clear as clearClusters } from './clusters';\r\nimport { insertEdgeLabel, positionEdgeLabel, insertEdge, clear as clearEdges } from './edges';\r\nimport { log } from '../logger';\r\n\r\nconst recursiveRender = (_elem, graph, diagramtype, parentCluster) => {\r\n log.info('Graph in recursive render: XXX', graphlib.json.write(graph), parentCluster);\r\n const dir = graph.graph().rankdir;\r\n log.trace('Dir in recursive render - dir:', dir);\r\n\r\n const elem = _elem.insert('g').attr('class', 'root'); // eslint-disable-line\r\n if (!graph.nodes()) {\r\n log.info('No nodes found for', graph);\r\n } else {\r\n log.info('Recursive render XXX', graph.nodes());\r\n }\r\n if (graph.edges().length > 0) {\r\n log.trace('Recursive edges', graph.edge(graph.edges()[0]));\r\n }\r\n const clusters = elem.insert('g').attr('class', 'clusters'); // eslint-disable-line\r\n const edgePaths = elem.insert('g').attr('class', 'edgePaths');\r\n const edgeLabels = elem.insert('g').attr('class', 'edgeLabels');\r\n const nodes = elem.insert('g').attr('class', 'nodes');\r\n\r\n // Insert nodes, this will insert them into the dom and each node will get a size. The size is updated\r\n // to the abstract node and is later used by dagre for the layout\r\n graph.nodes().forEach(function (v) {\r\n const node = graph.node(v);\r\n if (typeof parentCluster !== 'undefined') {\r\n const data = JSON.parse(JSON.stringify(parentCluster.clusterData));\r\n // data.clusterPositioning = true;\r\n log.info('Setting data for cluster XXX (', v, ') ', data, parentCluster);\r\n graph.setNode(parentCluster.id, data);\r\n if (!graph.parent(v)) {\r\n log.trace('Setting parent', v, parentCluster.id);\r\n graph.setParent(v, parentCluster.id, data);\r\n }\r\n }\r\n log.info('(Insert) Node XXX' + v + ': ' + JSON.stringify(graph.node(v)));\r\n if (node && node.clusterNode) {\r\n // const children = graph.children(v);\r\n log.info('Cluster identified', v, node.width, graph.node(v));\r\n const o = recursiveRender(nodes, node.graph, diagramtype, graph.node(v));\r\n const newEl = o.elem;\r\n updateNodeBounds(node, newEl);\r\n node.diff = o.diff || 0;\r\n log.info('Node bounds (abc123)', v, node, node.width, node.x, node.y);\r\n setNodeElem(newEl, node);\r\n\r\n log.warn('Recursive render complete ', newEl, node);\r\n } else {\r\n if (graph.children(v).length > 0) {\r\n // This is a cluster but not to be rendered recusively\r\n // Render as before\r\n log.info('Cluster - the non recursive path XXX', v, node.id, node, graph);\r\n log.info(findNonClusterChild(node.id, graph));\r\n clusterDb[node.id] = { id: findNonClusterChild(node.id, graph), node };\r\n // insertCluster(clusters, graph.node(v));\r\n } else {\r\n log.info('Node - the non recursive path', v, node.id, node);\r\n insertNode(nodes, graph.node(v), dir);\r\n }\r\n }\r\n });\r\n\r\n // Insert labels, this will insert them into the dom so that the width can be calculated\r\n // Also figure out which edges point to/from clusters and adjust them accordingly\r\n // Edges from/to clusters really points to the first child in the cluster.\r\n // TODO: pick optimal child in the cluster to us as link anchor\r\n graph.edges().forEach(function (e) {\r\n const edge = graph.edge(e.v, e.w, e.name);\r\n log.info('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(e));\r\n log.info('Edge ' + e.v + ' -> ' + e.w + ': ', e, ' ', JSON.stringify(graph.edge(e)));\r\n\r\n // Check if link is either from or to a cluster\r\n log.info('Fix', clusterDb, 'ids:', e.v, e.w, 'Translateing: ', clusterDb[e.v], clusterDb[e.w]);\r\n insertEdgeLabel(edgeLabels, edge);\r\n });\r\n\r\n graph.edges().forEach(function (e) {\r\n log.info('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(e));\r\n });\r\n log.info('#############################################');\r\n log.info('### Layout ###');\r\n log.info('#############################################');\r\n log.info(graph);\r\n dagre.layout(graph);\r\n log.info('Graph after layout:', graphlib.json.write(graph));\r\n // Move the nodes to the correct place\r\n let diff = 0;\r\n sortNodesByHierarchy(graph).forEach(function (v) {\r\n const node = graph.node(v);\r\n log.info('Position ' + v + ': ' + JSON.stringify(graph.node(v)));\r\n log.info(\r\n 'Position ' + v + ': (' + node.x,\r\n ',' + node.y,\r\n ') width: ',\r\n node.width,\r\n ' height: ',\r\n node.height\r\n );\r\n if (node && node.clusterNode) {\r\n // clusterDb[node.id].node = node;\r\n\r\n positionNode(node);\r\n } else {\r\n // Non cluster node\r\n if (graph.children(v).length > 0) {\r\n // A cluster in the non-recurive way\r\n // positionCluster(node);\r\n insertCluster(clusters, node);\r\n clusterDb[node.id].node = node;\r\n } else {\r\n positionNode(node);\r\n }\r\n }\r\n });\r\n\r\n // Move the edge labels to the correct place after layout\r\n graph.edges().forEach(function (e) {\r\n const edge = graph.edge(e);\r\n log.info('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(edge), edge);\r\n\r\n const paths = insertEdge(edgePaths, e, edge, clusterDb, diagramtype, graph);\r\n positionEdgeLabel(edge, paths);\r\n });\r\n\r\n graph.nodes().forEach(function (v) {\r\n const n = graph.node(v);\r\n log.info(v, n.type, n.diff);\r\n if (n.type === 'group') {\r\n diff = n.diff;\r\n }\r\n });\r\n return { elem, diff };\r\n};\r\n\r\nexport const render = (elem, graph, markers, diagramtype, id) => {\r\n insertMarkers(elem, markers, diagramtype, id);\r\n clearNodes();\r\n clearEdges();\r\n clearClusters();\r\n clearGraphlib();\r\n\r\n log.warn('Graph at first:', graphlib.json.write(graph));\r\n adjustClustersAndEdges(graph);\r\n log.warn('Graph after:', graphlib.json.write(graph));\r\n // log.warn('Graph ever after:', graphlib.json.write(graph.node('A').graph));\r\n recursiveRender(elem, graph, diagramtype);\r\n};\r\n\r\n// const shapeDefinitions = {};\r\n// export const addShape = ({ shapeType: fun }) => {\r\n// shapeDefinitions[shapeType] = fun;\r\n// };\r\n\r\n// const arrowDefinitions = {};\r\n// export const addArrow = ({ arrowType: fun }) => {\r\n// arrowDefinitions[arrowType] = fun;\r\n// };\r\n","/*\r\n * Borrowed with love from from dagrge-d3. Many thanks to cpettitt!\r\n */\r\n\r\nimport node from './intersect-node.js';\r\nimport circle from './intersect-circle.js';\r\nimport ellipse from './intersect-ellipse.js';\r\nimport polygon from './intersect-polygon.js';\r\nimport rect from './intersect-rect.js';\r\n\r\nexport default {\r\n node,\r\n circle,\r\n ellipse,\r\n polygon,\r\n rect,\r\n};\r\n","import intersectEllipse from './intersect-ellipse';\r\n\r\n/**\r\n * @param node\r\n * @param rx\r\n * @param point\r\n */\r\nfunction intersectCircle(node, rx, point) {\r\n return intersectEllipse(node, rx, rx, point);\r\n}\r\n\r\nexport default intersectCircle;\r\n","/**\r\n * @param node\r\n * @param rx\r\n * @param ry\r\n * @param point\r\n */\r\nfunction intersectEllipse(node, rx, ry, point) {\r\n // Formulae from: http://mathworld.wolfram.com/Ellipse-LineIntersection.html\r\n\r\n var cx = node.x;\r\n var cy = node.y;\r\n\r\n var px = cx - point.x;\r\n var py = cy - point.y;\r\n\r\n var det = Math.sqrt(rx * rx * py * py + ry * ry * px * px);\r\n\r\n var dx = Math.abs((rx * ry * px) / det);\r\n if (point.x < cx) {\r\n dx = -dx;\r\n }\r\n var dy = Math.abs((rx * ry * py) / det);\r\n if (point.y < cy) {\r\n dy = -dy;\r\n }\r\n\r\n return { x: cx + dx, y: cy + dy };\r\n}\r\n\r\nexport default intersectEllipse;\r\n","/**\r\n * Returns the point at which two lines, p and q, intersect or returns\r\n * undefined if they do not intersect.\r\n *\r\n *\r\n * @param p1\r\n * @param p2\r\n * @param q1\r\n * @param q2\r\n */\r\nfunction intersectLine(p1, p2, q1, q2) {\r\n // Algorithm from J. Avro, (ed.) Graphics Gems, No 2, Morgan Kaufmann, 1994,\r\n // p7 and p473.\r\n\r\n var a1, a2, b1, b2, c1, c2;\r\n var r1, r2, r3, r4;\r\n var denom, offset, num;\r\n var x, y;\r\n\r\n // Compute a1, b1, c1, where line joining points 1 and 2 is F(x,y) = a1 x +\r\n // b1 y + c1 = 0.\r\n a1 = p2.y - p1.y;\r\n b1 = p1.x - p2.x;\r\n c1 = p2.x * p1.y - p1.x * p2.y;\r\n\r\n // Compute r3 and r4.\r\n r3 = a1 * q1.x + b1 * q1.y + c1;\r\n r4 = a1 * q2.x + b1 * q2.y + c1;\r\n\r\n // Check signs of r3 and r4. If both point 3 and point 4 lie on\r\n // same side of line 1, the line segments do not intersect.\r\n if (r3 !== 0 && r4 !== 0 && sameSign(r3, r4)) {\r\n return /*DONT_INTERSECT*/;\r\n }\r\n\r\n // Compute a2, b2, c2 where line joining points 3 and 4 is G(x,y) = a2 x + b2 y + c2 = 0\r\n a2 = q2.y - q1.y;\r\n b2 = q1.x - q2.x;\r\n c2 = q2.x * q1.y - q1.x * q2.y;\r\n\r\n // Compute r1 and r2\r\n r1 = a2 * p1.x + b2 * p1.y + c2;\r\n r2 = a2 * p2.x + b2 * p2.y + c2;\r\n\r\n // Check signs of r1 and r2. If both point 1 and point 2 lie\r\n // on same side of second line segment, the line segments do\r\n // not intersect.\r\n if (r1 !== 0 && r2 !== 0 && sameSign(r1, r2)) {\r\n return /*DONT_INTERSECT*/;\r\n }\r\n\r\n // Line segments intersect: compute intersection point.\r\n denom = a1 * b2 - a2 * b1;\r\n if (denom === 0) {\r\n return /*COLLINEAR*/;\r\n }\r\n\r\n offset = Math.abs(denom / 2);\r\n\r\n // The denom/2 is to get rounding instead of truncating. It\r\n // is added or subtracted to the numerator, depending upon the\r\n // sign of the numerator.\r\n num = b1 * c2 - b2 * c1;\r\n x = num < 0 ? (num - offset) / denom : (num + offset) / denom;\r\n\r\n num = a2 * c1 - a1 * c2;\r\n y = num < 0 ? (num - offset) / denom : (num + offset) / denom;\r\n\r\n return { x: x, y: y };\r\n}\r\n\r\n/**\r\n * @param r1\r\n * @param r2\r\n */\r\nfunction sameSign(r1, r2) {\r\n return r1 * r2 > 0;\r\n}\r\n\r\nexport default intersectLine;\r\n","module.exports = intersectNode;\r\n\r\n/**\r\n * @param node\r\n * @param point\r\n */\r\nfunction intersectNode(node, point) {\r\n // console.info('Intersect Node');\r\n return node.intersect(point);\r\n}\r\n","/* eslint \"no-console\": off */\r\n\r\nimport intersectLine from './intersect-line';\r\n\r\nexport default intersectPolygon;\r\n\r\n/**\r\n * Returns the point ({x, y}) at which the point argument intersects with the\r\n * node argument assuming that it has the shape specified by polygon.\r\n *\r\n * @param node\r\n * @param polyPoints\r\n * @param point\r\n */\r\nfunction intersectPolygon(node, polyPoints, point) {\r\n var x1 = node.x;\r\n var y1 = node.y;\r\n\r\n var intersections = [];\r\n\r\n var minX = Number.POSITIVE_INFINITY;\r\n var minY = Number.POSITIVE_INFINITY;\r\n if (typeof polyPoints.forEach === 'function') {\r\n polyPoints.forEach(function (entry) {\r\n minX = Math.min(minX, entry.x);\r\n minY = Math.min(minY, entry.y);\r\n });\r\n } else {\r\n minX = Math.min(minX, polyPoints.x);\r\n minY = Math.min(minY, polyPoints.y);\r\n }\r\n\r\n var left = x1 - node.width / 2 - minX;\r\n var top = y1 - node.height / 2 - minY;\r\n\r\n for (var i = 0; i < polyPoints.length; i++) {\r\n var p1 = polyPoints[i];\r\n var p2 = polyPoints[i < polyPoints.length - 1 ? i + 1 : 0];\r\n var intersect = intersectLine(\r\n node,\r\n point,\r\n { x: left + p1.x, y: top + p1.y },\r\n { x: left + p2.x, y: top + p2.y }\r\n );\r\n if (intersect) {\r\n intersections.push(intersect);\r\n }\r\n }\r\n\r\n if (!intersections.length) {\r\n // console.log('NO INTERSECTION FOUND, RETURN NODE CENTER', node);\r\n return node;\r\n }\r\n\r\n if (intersections.length > 1) {\r\n // More intersections, find the one nearest to edge end point\r\n intersections.sort(function (p, q) {\r\n var pdx = p.x - point.x;\r\n var pdy = p.y - point.y;\r\n var distp = Math.sqrt(pdx * pdx + pdy * pdy);\r\n\r\n var qdx = q.x - point.x;\r\n var qdy = q.y - point.y;\r\n var distq = Math.sqrt(qdx * qdx + qdy * qdy);\r\n\r\n return distp < distq ? -1 : distp === distq ? 0 : 1;\r\n });\r\n }\r\n return intersections[0];\r\n}\r\n","const intersectRect = (node, point) => {\r\n var x = node.x;\r\n var y = node.y;\r\n\r\n // Rectangle intersection algorithm from:\r\n // http://math.stackexchange.com/questions/108113/find-edge-between-two-boxes\r\n var dx = point.x - x;\r\n var dy = point.y - y;\r\n var w = node.width / 2;\r\n var h = node.height / 2;\r\n\r\n var sx, sy;\r\n if (Math.abs(dy) * w > Math.abs(dx) * h) {\r\n // Intersection is top or bottom of rect.\r\n if (dy < 0) {\r\n h = -h;\r\n }\r\n sx = dy === 0 ? 0 : (h * dx) / dy;\r\n sy = h;\r\n } else {\r\n // Intersection is left or right of rect.\r\n if (dx < 0) {\r\n w = -w;\r\n }\r\n sx = w;\r\n sy = dx === 0 ? 0 : (w * dy) / dx;\r\n }\r\n\r\n return { x: x + sx, y: y + sy };\r\n};\r\n\r\nexport default intersectRect;\r\n","/**\r\n * Setup arrow head and define the marker. The result is appended to the svg.\r\n */\r\n\r\nimport { log } from '../logger';\r\n\r\n// Only add the number of markers that the diagram needs\r\nconst insertMarkers = (elem, markerArray, type, id) => {\r\n markerArray.forEach((markerName) => {\r\n markers[markerName](elem, type, id);\r\n });\r\n};\r\n\r\nconst extension = (elem, type, id) => {\r\n log.trace('Making markers for ', id);\r\n elem\r\n .append('defs')\r\n .append('marker')\r\n .attr('id', type + '-extensionStart')\r\n .attr('class', 'marker extension ' + type)\r\n .attr('refX', 0)\r\n .attr('refY', 7)\r\n .attr('markerWidth', 190)\r\n .attr('markerHeight', 240)\r\n .attr('orient', 'auto')\r\n .append('path')\r\n .attr('d', 'M 1,7 L18,13 V 1 Z');\r\n\r\n elem\r\n .append('defs')\r\n .append('marker')\r\n .attr('id', type + '-extensionEnd')\r\n .attr('class', 'marker extension ' + type)\r\n .attr('refX', 19)\r\n .attr('refY', 7)\r\n .attr('markerWidth', 20)\r\n .attr('markerHeight', 28)\r\n .attr('orient', 'auto')\r\n .append('path')\r\n .attr('d', 'M 1,1 V 13 L18,7 Z'); // this is actual shape for arrowhead\r\n};\r\n\r\nconst composition = (elem, type) => {\r\n elem\r\n .append('defs')\r\n .append('marker')\r\n .attr('id', type + '-compositionStart')\r\n .attr('class', 'marker composition ' + type)\r\n .attr('refX', 0)\r\n .attr('refY', 7)\r\n .attr('markerWidth', 190)\r\n .attr('markerHeight', 240)\r\n .attr('orient', 'auto')\r\n .append('path')\r\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\r\n\r\n elem\r\n .append('defs')\r\n .append('marker')\r\n .attr('id', type + '-compositionEnd')\r\n .attr('class', 'marker composition ' + type)\r\n .attr('refX', 19)\r\n .attr('refY', 7)\r\n .attr('markerWidth', 20)\r\n .attr('markerHeight', 28)\r\n .attr('orient', 'auto')\r\n .append('path')\r\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\r\n};\r\nconst aggregation = (elem, type) => {\r\n elem\r\n .append('defs')\r\n .append('marker')\r\n .attr('id', type + '-aggregationStart')\r\n .attr('class', 'marker aggregation ' + type)\r\n .attr('refX', 0)\r\n .attr('refY', 7)\r\n .attr('markerWidth', 190)\r\n .attr('markerHeight', 240)\r\n .attr('orient', 'auto')\r\n .append('path')\r\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\r\n\r\n elem\r\n .append('defs')\r\n .append('marker')\r\n .attr('id', type + '-aggregationEnd')\r\n .attr('class', 'marker aggregation ' + type)\r\n .attr('refX', 19)\r\n .attr('refY', 7)\r\n .attr('markerWidth', 20)\r\n .attr('markerHeight', 28)\r\n .attr('orient', 'auto')\r\n .append('path')\r\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\r\n};\r\nconst dependency = (elem, type) => {\r\n elem\r\n .append('defs')\r\n .append('marker')\r\n .attr('id', type + '-dependencyStart')\r\n .attr('class', 'marker dependency ' + type)\r\n .attr('refX', 0)\r\n .attr('refY', 7)\r\n .attr('markerWidth', 190)\r\n .attr('markerHeight', 240)\r\n .attr('orient', 'auto')\r\n .append('path')\r\n .attr('d', 'M 5,7 L9,13 L1,7 L9,1 Z');\r\n\r\n elem\r\n .append('defs')\r\n .append('marker')\r\n .attr('id', type + '-dependencyEnd')\r\n .attr('class', 'marker dependency ' + type)\r\n .attr('refX', 19)\r\n .attr('refY', 7)\r\n .attr('markerWidth', 20)\r\n .attr('markerHeight', 28)\r\n .attr('orient', 'auto')\r\n .append('path')\r\n .attr('d', 'M 18,7 L9,13 L14,7 L9,1 Z');\r\n};\r\nconst point = (elem, type) => {\r\n elem\r\n .append('marker')\r\n .attr('id', type + '-pointEnd')\r\n .attr('class', 'marker ' + type)\r\n .attr('viewBox', '0 0 10 10')\r\n .attr('refX', 9)\r\n .attr('refY', 5)\r\n .attr('markerUnits', 'userSpaceOnUse')\r\n .attr('markerWidth', 12)\r\n .attr('markerHeight', 12)\r\n .attr('orient', 'auto')\r\n .append('path')\r\n .attr('d', 'M 0 0 L 10 5 L 0 10 z')\r\n .attr('class', 'arrowMarkerPath')\r\n .style('stroke-width', 1)\r\n .style('stroke-dasharray', '1,0');\r\n elem\r\n .append('marker')\r\n .attr('id', type + '-pointStart')\r\n .attr('class', 'marker ' + type)\r\n .attr('viewBox', '0 0 10 10')\r\n .attr('refX', 0)\r\n .attr('refY', 5)\r\n .attr('markerUnits', 'userSpaceOnUse')\r\n .attr('markerWidth', 12)\r\n .attr('markerHeight', 12)\r\n .attr('orient', 'auto')\r\n .append('path')\r\n .attr('d', 'M 0 5 L 10 10 L 10 0 z')\r\n .attr('class', 'arrowMarkerPath')\r\n .style('stroke-width', 1)\r\n .style('stroke-dasharray', '1,0');\r\n};\r\nconst circle = (elem, type) => {\r\n elem\r\n .append('marker')\r\n .attr('id', type + '-circleEnd')\r\n .attr('class', 'marker ' + type)\r\n .attr('viewBox', '0 0 10 10')\r\n .attr('refX', 11)\r\n .attr('refY', 5)\r\n .attr('markerUnits', 'userSpaceOnUse')\r\n .attr('markerWidth', 11)\r\n .attr('markerHeight', 11)\r\n .attr('orient', 'auto')\r\n .append('circle')\r\n .attr('cx', '5')\r\n .attr('cy', '5')\r\n .attr('r', '5')\r\n .attr('class', 'arrowMarkerPath')\r\n .style('stroke-width', 1)\r\n .style('stroke-dasharray', '1,0');\r\n\r\n elem\r\n .append('marker')\r\n .attr('id', type + '-circleStart')\r\n .attr('class', 'marker ' + type)\r\n .attr('viewBox', '0 0 10 10')\r\n .attr('refX', -1)\r\n .attr('refY', 5)\r\n .attr('markerUnits', 'userSpaceOnUse')\r\n .attr('markerWidth', 11)\r\n .attr('markerHeight', 11)\r\n .attr('orient', 'auto')\r\n .append('circle')\r\n .attr('cx', '5')\r\n .attr('cy', '5')\r\n .attr('r', '5')\r\n .attr('class', 'arrowMarkerPath')\r\n .style('stroke-width', 1)\r\n .style('stroke-dasharray', '1,0');\r\n};\r\nconst cross = (elem, type) => {\r\n elem\r\n .append('marker')\r\n .attr('id', type + '-crossEnd')\r\n .attr('class', 'marker cross ' + type)\r\n .attr('viewBox', '0 0 11 11')\r\n .attr('refX', 12)\r\n .attr('refY', 5.2)\r\n .attr('markerUnits', 'userSpaceOnUse')\r\n .attr('markerWidth', 11)\r\n .attr('markerHeight', 11)\r\n .attr('orient', 'auto')\r\n .append('path')\r\n // .attr('stroke', 'black')\r\n .attr('d', 'M 1,1 l 9,9 M 10,1 l -9,9')\r\n .attr('class', 'arrowMarkerPath')\r\n .style('stroke-width', 2)\r\n .style('stroke-dasharray', '1,0');\r\n\r\n elem\r\n .append('marker')\r\n .attr('id', type + '-crossStart')\r\n .attr('class', 'marker cross ' + type)\r\n .attr('viewBox', '0 0 11 11')\r\n .attr('refX', -1)\r\n .attr('refY', 5.2)\r\n .attr('markerUnits', 'userSpaceOnUse')\r\n .attr('markerWidth', 11)\r\n .attr('markerHeight', 11)\r\n .attr('orient', 'auto')\r\n .append('path')\r\n // .attr('stroke', 'black')\r\n .attr('d', 'M 1,1 l 9,9 M 10,1 l -9,9')\r\n .attr('class', 'arrowMarkerPath')\r\n .style('stroke-width', 2)\r\n .style('stroke-dasharray', '1,0');\r\n};\r\nconst barb = (elem, type) => {\r\n elem\r\n .append('defs')\r\n .append('marker')\r\n .attr('id', type + '-barbEnd')\r\n .attr('refX', 19)\r\n .attr('refY', 7)\r\n .attr('markerWidth', 20)\r\n .attr('markerHeight', 14)\r\n .attr('markerUnits', 'strokeWidth')\r\n .attr('orient', 'auto')\r\n .append('path')\r\n .attr('d', 'M 19,7 L9,13 L14,7 L9,1 Z');\r\n};\r\n\r\n// TODO rename the class diagram markers to something shape descriptive and semanitc free\r\nconst markers = {\r\n extension,\r\n composition,\r\n aggregation,\r\n dependency,\r\n point,\r\n circle,\r\n cross,\r\n barb,\r\n};\r\nexport default insertMarkers;\r\n","/**\r\n * Decorates with functions required by mermaids dagre-wrapper.\r\n */\r\nimport { log } from '../logger';\r\nimport graphlib from 'graphlib';\r\n\r\nexport let clusterDb = {};\r\nlet decendants = {};\r\nlet parents = {};\r\n\r\nexport const clear = () => {\r\n decendants = {};\r\n parents = {};\r\n clusterDb = {};\r\n};\r\n\r\nconst isDecendant = (id, ancenstorId) => {\r\n // if (id === ancenstorId) return true;\r\n\r\n log.trace(\r\n 'In isDecendant',\r\n ancenstorId,\r\n ' ',\r\n id,\r\n ' = ',\r\n decendants[ancenstorId].indexOf(id) >= 0\r\n );\r\n if (decendants[ancenstorId].indexOf(id) >= 0) return true;\r\n\r\n return false;\r\n};\r\n\r\nconst edgeInCluster = (edge, clusterId) => {\r\n log.info('Decendants of ', clusterId, ' is ', decendants[clusterId]);\r\n log.info('Edge is ', edge);\r\n // Edges to/from the cluster is not in the cluster, they are in the parent\r\n if (edge.v === clusterId) return false;\r\n if (edge.w === clusterId) return false;\r\n\r\n if (!decendants[clusterId]) {\r\n log.debug('Tilt, ', clusterId, ',not in decendants');\r\n return false;\r\n }\r\n log.info('Here ');\r\n\r\n if (decendants[clusterId].indexOf(edge.v) >= 0) return true;\r\n if (isDecendant(edge.v, clusterId)) return true;\r\n if (isDecendant(edge.w, clusterId)) return true;\r\n if (decendants[clusterId].indexOf(edge.w) >= 0) return true;\r\n\r\n return false;\r\n};\r\n\r\nconst copy = (clusterId, graph, newGraph, rootId) => {\r\n log.warn(\r\n 'Copying children of ',\r\n clusterId,\r\n 'root',\r\n rootId,\r\n 'data',\r\n graph.node(clusterId),\r\n rootId\r\n );\r\n const nodes = graph.children(clusterId) || [];\r\n\r\n // Include cluster node if it is not the root\r\n if (clusterId !== rootId) {\r\n nodes.push(clusterId);\r\n }\r\n\r\n log.warn('Copying (nodes) clusterId', clusterId, 'nodes', nodes);\r\n\r\n nodes.forEach((node) => {\r\n if (graph.children(node).length > 0) {\r\n copy(node, graph, newGraph, rootId);\r\n } else {\r\n const data = graph.node(node);\r\n log.info('cp ', node, ' to ', rootId, ' with parent ', clusterId); //,node, data, ' parent is ', clusterId);\r\n newGraph.setNode(node, data);\r\n if (rootId !== graph.parent(node)) {\r\n log.warn('Setting parent', node, graph.parent(node));\r\n newGraph.setParent(node, graph.parent(node));\r\n }\r\n\r\n if (clusterId !== rootId && node !== clusterId) {\r\n log.debug('Setting parent', node, clusterId);\r\n newGraph.setParent(node, clusterId);\r\n } else {\r\n log.info('In copy ', clusterId, 'root', rootId, 'data', graph.node(clusterId), rootId);\r\n log.debug(\r\n 'Not Setting parent for node=',\r\n node,\r\n 'cluster!==rootId',\r\n clusterId !== rootId,\r\n 'node!==clusterId',\r\n node !== clusterId\r\n );\r\n }\r\n const edges = graph.edges(node);\r\n log.debug('Copying Edges', edges);\r\n edges.forEach((edge) => {\r\n log.info('Edge', edge);\r\n const data = graph.edge(edge.v, edge.w, edge.name);\r\n log.info('Edge data', data, rootId);\r\n try {\r\n // Do not copy edges in and out of the root cluster, they belong to the parent graph\r\n if (edgeInCluster(edge, rootId)) {\r\n log.info('Copying as ', edge.v, edge.w, data, edge.name);\r\n newGraph.setEdge(edge.v, edge.w, data, edge.name);\r\n log.info('newGraph edges ', newGraph.edges(), newGraph.edge(newGraph.edges()[0]));\r\n } else {\r\n log.info(\r\n 'Skipping copy of edge ',\r\n edge.v,\r\n '-->',\r\n edge.w,\r\n ' rootId: ',\r\n rootId,\r\n ' clusterId:',\r\n clusterId\r\n );\r\n }\r\n } catch (e) {\r\n log.error(e);\r\n }\r\n });\r\n }\r\n log.debug('Removing node', node);\r\n graph.removeNode(node);\r\n });\r\n};\r\nexport const extractDecendants = (id, graph) => {\r\n // log.debug('Extracting ', id);\r\n const children = graph.children(id);\r\n let res = [].concat(children);\r\n\r\n for (let i = 0; i < children.length; i++) {\r\n parents[children[i]] = id;\r\n res = res.concat(extractDecendants(children[i], graph));\r\n }\r\n\r\n return res;\r\n};\r\n\r\n/**\r\n * Validates the graph, checking that all parent child relation points to existing nodes and that\r\n * edges between nodes also ia correct. When not correct the function logs the discrepancies.\r\n *\r\n * @param graph\r\n */\r\nexport const validate = (graph) => {\r\n const edges = graph.edges();\r\n log.trace('Edges: ', edges);\r\n for (let i = 0; i < edges.length; i++) {\r\n if (graph.children(edges[i].v).length > 0) {\r\n log.trace('The node ', edges[i].v, ' is part of and edge even though it has children');\r\n return false;\r\n }\r\n if (graph.children(edges[i].w).length > 0) {\r\n log.trace('The node ', edges[i].w, ' is part of and edge even though it has children');\r\n return false;\r\n }\r\n }\r\n return true;\r\n};\r\n\r\n/**\r\n * Finds a child that is not a cluster. When faking a edge between a node and a cluster.\r\n *\r\n * @param {Finds a } id\r\n * @param {*} graph\r\n */\r\nexport const findNonClusterChild = (id, graph) => {\r\n // const node = graph.node(id);\r\n log.trace('Searching', id);\r\n // const children = graph.children(id).reverse();\r\n const children = graph.children(id); //.reverse();\r\n log.trace('Searching children of id ', id, children);\r\n if (children.length < 1) {\r\n log.trace('This is a valid node', id);\r\n return id;\r\n }\r\n for (let i = 0; i < children.length; i++) {\r\n const _id = findNonClusterChild(children[i], graph);\r\n if (_id) {\r\n log.trace('Found replacement for', id, ' => ', _id);\r\n return _id;\r\n }\r\n }\r\n};\r\n\r\nconst getAnchorId = (id) => {\r\n if (!clusterDb[id]) {\r\n return id;\r\n }\r\n // If the cluster has no external connections\r\n if (!clusterDb[id].externalConnections) {\r\n return id;\r\n }\r\n\r\n // Return the replacement node\r\n if (clusterDb[id]) {\r\n return clusterDb[id].id;\r\n }\r\n return id;\r\n};\r\n\r\nexport const adjustClustersAndEdges = (graph, depth) => {\r\n if (!graph || depth > 10) {\r\n log.debug('Opting out, no graph ');\r\n return;\r\n } else {\r\n log.debug('Opting in, graph ');\r\n }\r\n // Go through the nodes and for each cluster found, save a replacment node, this can be used when\r\n // faking a link to a cluster\r\n graph.nodes().forEach(function (id) {\r\n const children = graph.children(id);\r\n if (children.length > 0) {\r\n log.warn(\r\n 'Cluster identified',\r\n id,\r\n ' Replacement id in edges: ',\r\n findNonClusterChild(id, graph)\r\n );\r\n decendants[id] = extractDecendants(id, graph);\r\n clusterDb[id] = { id: findNonClusterChild(id, graph), clusterData: graph.node(id) };\r\n }\r\n });\r\n\r\n // Check incoming and outgoing edges for each cluster\r\n graph.nodes().forEach(function (id) {\r\n const children = graph.children(id);\r\n const edges = graph.edges();\r\n if (children.length > 0) {\r\n log.debug('Cluster identified', id, decendants);\r\n edges.forEach((edge) => {\r\n // log.debug('Edge, decendants: ', edge, decendants[id]);\r\n\r\n // Check if any edge leaves the cluster (not the actual cluster, thats a link from the box)\r\n if (edge.v !== id && edge.w !== id) {\r\n // Any edge where either the one of the nodes is decending to the cluster but not the other\r\n // if (decendants[id].indexOf(edge.v) < 0 && decendants[id].indexOf(edge.w) < 0) {\r\n\r\n const d1 = isDecendant(edge.v, id);\r\n const d2 = isDecendant(edge.w, id);\r\n\r\n // d1 xor d2 - if either d1 is true and d2 is false or the other way around\r\n if (d1 ^ d2) {\r\n log.warn('Edge: ', edge, ' leaves cluster ', id);\r\n log.warn('Decendants of XXX ', id, ': ', decendants[id]);\r\n clusterDb[id].externalConnections = true;\r\n }\r\n }\r\n });\r\n } else {\r\n log.debug('Not a cluster ', id, decendants);\r\n }\r\n });\r\n\r\n // For clusters with incoming and/or outgoing edges translate those edges to a real node\r\n // in the cluster inorder to fake the edge\r\n graph.edges().forEach(function (e) {\r\n const edge = graph.edge(e);\r\n log.warn('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(e));\r\n log.warn('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(graph.edge(e)));\r\n\r\n let v = e.v;\r\n let w = e.w;\r\n // Check if link is either from or to a cluster\r\n log.warn(\r\n 'Fix XXX',\r\n clusterDb,\r\n 'ids:',\r\n e.v,\r\n e.w,\r\n 'Translateing: ',\r\n clusterDb[e.v],\r\n ' --- ',\r\n clusterDb[e.w]\r\n );\r\n if (clusterDb[e.v] || clusterDb[e.w]) {\r\n log.warn('Fixing and trixing - removing XXX', e.v, e.w, e.name);\r\n v = getAnchorId(e.v);\r\n w = getAnchorId(e.w);\r\n graph.removeEdge(e.v, e.w, e.name);\r\n if (v !== e.v) edge.fromCluster = e.v;\r\n if (w !== e.w) edge.toCluster = e.w;\r\n log.warn('Fix Replacing with XXX', v, w, e.name);\r\n graph.setEdge(v, w, edge, e.name);\r\n }\r\n });\r\n log.warn('Adjusted Graph', graphlib.json.write(graph));\r\n extractor(graph, 0);\r\n\r\n log.trace(clusterDb);\r\n\r\n // Remove references to extracted cluster\r\n // graph.edges().forEach(edge => {\r\n // if (isDecendant(edge.v, clusterId) || isDecendant(edge.w, clusterId)) {\r\n // graph.removeEdge(edge);\r\n // }\r\n // });\r\n};\r\n\r\nexport const extractor = (graph, depth) => {\r\n log.warn('extractor - ', depth, graphlib.json.write(graph), graph.children('D'));\r\n if (depth > 10) {\r\n log.error('Bailing out');\r\n return;\r\n }\r\n // For clusters without incoming and/or outgoing edges, create a new cluster-node\r\n // containing the nodes and edges in the custer in a new graph\r\n // for (let i = 0;)\r\n let nodes = graph.nodes();\r\n let hasChildren = false;\r\n for (let i = 0; i < nodes.length; i++) {\r\n const node = nodes[i];\r\n const children = graph.children(node);\r\n hasChildren = hasChildren || children.length > 0;\r\n }\r\n\r\n if (!hasChildren) {\r\n log.debug('Done, no node has children', graph.nodes());\r\n return;\r\n }\r\n // const clusters = Object.keys(clusterDb);\r\n // clusters.forEach(clusterId => {\r\n log.debug('Nodes = ', nodes, depth);\r\n for (let i = 0; i < nodes.length; i++) {\r\n const node = nodes[i];\r\n\r\n log.debug(\r\n 'Extracting node',\r\n node,\r\n clusterDb,\r\n clusterDb[node] && !clusterDb[node].externalConnections,\r\n !graph.parent(node),\r\n graph.node(node),\r\n graph.children('D'),\r\n ' Depth ',\r\n depth\r\n );\r\n // Note that the node might have been removed after the Object.keys call so better check\r\n // that it still is in the game\r\n if (!clusterDb[node]) {\r\n // Skip if the node is not a cluster\r\n log.debug('Not a cluster', node, depth);\r\n // break;\r\n } else if (\r\n !clusterDb[node].externalConnections &&\r\n // !graph.parent(node) &&\r\n graph.children(node) &&\r\n graph.children(node).length > 0\r\n ) {\r\n log.warn(\r\n 'Cluster without external connections, without a parent and with children',\r\n node,\r\n depth\r\n );\r\n\r\n const graphSettings = graph.graph();\r\n let dir = graphSettings.rankdir === 'TB' ? 'LR' : 'TB';\r\n if (clusterDb[node]) {\r\n if (clusterDb[node].clusterData && clusterDb[node].clusterData.dir) {\r\n dir = clusterDb[node].clusterData.dir;\r\n log.warn('Fixing dir', clusterDb[node].clusterData.dir, dir);\r\n }\r\n }\r\n\r\n const clusterGraph = new graphlib.Graph({\r\n multigraph: true,\r\n compound: true,\r\n })\r\n .setGraph({\r\n rankdir: dir, // Todo: set proper spacing\r\n nodesep: 50,\r\n ranksep: 50,\r\n marginx: 8,\r\n marginy: 8,\r\n })\r\n .setDefaultEdgeLabel(function () {\r\n return {};\r\n });\r\n\r\n log.warn('Old graph before copy', graphlib.json.write(graph));\r\n copy(node, graph, clusterGraph, node);\r\n graph.setNode(node, {\r\n clusterNode: true,\r\n id: node,\r\n clusterData: clusterDb[node].clusterData,\r\n labelText: clusterDb[node].labelText,\r\n graph: clusterGraph,\r\n });\r\n log.warn('New graph after copy node: (', node, ')', graphlib.json.write(clusterGraph));\r\n log.debug('Old graph after copy', graphlib.json.write(graph));\r\n } else {\r\n log.warn(\r\n 'Cluster ** ',\r\n node,\r\n ' **not meeting the criteria !externalConnections:',\r\n !clusterDb[node].externalConnections,\r\n ' no parent: ',\r\n !graph.parent(node),\r\n ' children ',\r\n graph.children(node) && graph.children(node).length > 0,\r\n graph.children('D'),\r\n depth\r\n );\r\n log.debug(clusterDb);\r\n }\r\n }\r\n\r\n nodes = graph.nodes();\r\n log.warn('New list of nodes', nodes);\r\n for (let i = 0; i < nodes.length; i++) {\r\n const node = nodes[i];\r\n const data = graph.node(node);\r\n log.warn(' Now next level', node, data);\r\n if (data.clusterNode) {\r\n extractor(data.graph, depth + 1);\r\n }\r\n }\r\n};\r\n\r\nconst sorter = (graph, nodes) => {\r\n if (nodes.length === 0) return [];\r\n let result = Object.assign(nodes);\r\n nodes.forEach((node) => {\r\n const children = graph.children(node);\r\n const sorted = sorter(graph, children);\r\n result = result.concat(sorted);\r\n });\r\n\r\n return result;\r\n};\r\n\r\nexport const sortNodesByHierarchy = (graph) => sorter(graph, graph.children());\r\n","import { select } from 'd3';\r\nimport { log } from '../logger'; // eslint-disable-line\r\nimport { labelHelper, updateNodeBounds, insertPolygonShape } from './shapes/util';\r\nimport { getConfig } from '../config';\r\nimport intersect from './intersect/index.js';\r\nimport createLabel from './createLabel';\r\nimport note from './shapes/note';\r\nimport { parseMember } from '../diagrams/class/svgDraw';\r\nimport { evaluate } from '../diagrams/common/common';\r\n\r\nconst question = (parent, node) => {\r\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\r\n\r\n const w = bbox.width + node.padding;\r\n const h = bbox.height + node.padding;\r\n const s = w + h;\r\n const points = [\r\n { x: s / 2, y: 0 },\r\n { x: s, y: -s / 2 },\r\n { x: s / 2, y: -s },\r\n { x: 0, y: -s / 2 },\r\n ];\r\n\r\n log.info('Question main (Circle)');\r\n\r\n const questionElem = insertPolygonShape(shapeSvg, s, s, points);\r\n questionElem.attr('style', node.style);\r\n updateNodeBounds(node, questionElem);\r\n\r\n node.intersect = function (point) {\r\n log.warn('Intersect called');\r\n return intersect.polygon(node, points, point);\r\n };\r\n\r\n return shapeSvg;\r\n};\r\n\r\nconst choice = (parent, node) => {\r\n const shapeSvg = parent\r\n .insert('g')\r\n .attr('class', 'node default')\r\n .attr('id', node.domId || node.id);\r\n\r\n const s = 28;\r\n const points = [\r\n { x: 0, y: s / 2 },\r\n { x: s / 2, y: 0 },\r\n { x: 0, y: -s / 2 },\r\n { x: -s / 2, y: 0 },\r\n ];\r\n\r\n const choice = shapeSvg.insert('polygon', ':first-child').attr(\r\n 'points',\r\n points\r\n .map(function (d) {\r\n return d.x + ',' + d.y;\r\n })\r\n .join(' ')\r\n );\r\n // center the circle around its coordinate\r\n choice.attr('class', 'state-start').attr('r', 7).attr('width', 28).attr('height', 28);\r\n node.width = 28;\r\n node.height = 28;\r\n\r\n node.intersect = function (point) {\r\n return intersect.circle(node, 14, point);\r\n };\r\n\r\n return shapeSvg;\r\n};\r\n\r\nconst hexagon = (parent, node) => {\r\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\r\n\r\n const f = 4;\r\n const h = bbox.height + node.padding;\r\n const m = h / f;\r\n const w = bbox.width + 2 * m + node.padding;\r\n const points = [\r\n { x: m, y: 0 },\r\n { x: w - m, y: 0 },\r\n { x: w, y: -h / 2 },\r\n { x: w - m, y: -h },\r\n { x: m, y: -h },\r\n { x: 0, y: -h / 2 },\r\n ];\r\n\r\n const hex = insertPolygonShape(shapeSvg, w, h, points);\r\n hex.attr('style', node.style);\r\n updateNodeBounds(node, hex);\r\n\r\n node.intersect = function (point) {\r\n return intersect.polygon(node, points, point);\r\n };\r\n\r\n return shapeSvg;\r\n};\r\n\r\nconst rect_left_inv_arrow = (parent, node) => {\r\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\r\n\r\n const w = bbox.width + node.padding;\r\n const h = bbox.height + node.padding;\r\n const points = [\r\n { x: -h / 2, y: 0 },\r\n { x: w, y: 0 },\r\n { x: w, y: -h },\r\n { x: -h / 2, y: -h },\r\n { x: 0, y: -h / 2 },\r\n ];\r\n\r\n const el = insertPolygonShape(shapeSvg, w, h, points);\r\n el.attr('style', node.style);\r\n\r\n node.width = w + h;\r\n node.height = h;\r\n\r\n node.intersect = function (point) {\r\n return intersect.polygon(node, points, point);\r\n };\r\n\r\n return shapeSvg;\r\n};\r\n\r\nconst lean_right = (parent, node) => {\r\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\r\n\r\n const w = bbox.width + node.padding;\r\n const h = bbox.height + node.padding;\r\n const points = [\r\n { x: (-2 * h) / 6, y: 0 },\r\n { x: w - h / 6, y: 0 },\r\n { x: w + (2 * h) / 6, y: -h },\r\n { x: h / 6, y: -h },\r\n ];\r\n\r\n const el = insertPolygonShape(shapeSvg, w, h, points);\r\n el.attr('style', node.style);\r\n updateNodeBounds(node, el);\r\n\r\n node.intersect = function (point) {\r\n return intersect.polygon(node, points, point);\r\n };\r\n\r\n return shapeSvg;\r\n};\r\n\r\nconst lean_left = (parent, node) => {\r\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\r\n\r\n const w = bbox.width + node.padding;\r\n const h = bbox.height + node.padding;\r\n const points = [\r\n { x: (2 * h) / 6, y: 0 },\r\n { x: w + h / 6, y: 0 },\r\n { x: w - (2 * h) / 6, y: -h },\r\n { x: -h / 6, y: -h },\r\n ];\r\n\r\n const el = insertPolygonShape(shapeSvg, w, h, points);\r\n el.attr('style', node.style);\r\n updateNodeBounds(node, el);\r\n\r\n node.intersect = function (point) {\r\n return intersect.polygon(node, points, point);\r\n };\r\n\r\n return shapeSvg;\r\n};\r\n\r\nconst trapezoid = (parent, node) => {\r\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\r\n\r\n const w = bbox.width + node.padding;\r\n const h = bbox.height + node.padding;\r\n const points = [\r\n { x: (-2 * h) / 6, y: 0 },\r\n { x: w + (2 * h) / 6, y: 0 },\r\n { x: w - h / 6, y: -h },\r\n { x: h / 6, y: -h },\r\n ];\r\n\r\n const el = insertPolygonShape(shapeSvg, w, h, points);\r\n el.attr('style', node.style);\r\n updateNodeBounds(node, el);\r\n\r\n node.intersect = function (point) {\r\n return intersect.polygon(node, points, point);\r\n };\r\n\r\n return shapeSvg;\r\n};\r\n\r\nconst inv_trapezoid = (parent, node) => {\r\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\r\n\r\n const w = bbox.width + node.padding;\r\n const h = bbox.height + node.padding;\r\n const points = [\r\n { x: h / 6, y: 0 },\r\n { x: w - h / 6, y: 0 },\r\n { x: w + (2 * h) / 6, y: -h },\r\n { x: (-2 * h) / 6, y: -h },\r\n ];\r\n\r\n const el = insertPolygonShape(shapeSvg, w, h, points);\r\n el.attr('style', node.style);\r\n updateNodeBounds(node, el);\r\n\r\n node.intersect = function (point) {\r\n return intersect.polygon(node, points, point);\r\n };\r\n\r\n return shapeSvg;\r\n};\r\n\r\nconst rect_right_inv_arrow = (parent, node) => {\r\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\r\n\r\n const w = bbox.width + node.padding;\r\n const h = bbox.height + node.padding;\r\n const points = [\r\n { x: 0, y: 0 },\r\n { x: w + h / 2, y: 0 },\r\n { x: w, y: -h / 2 },\r\n { x: w + h / 2, y: -h },\r\n { x: 0, y: -h },\r\n ];\r\n\r\n const el = insertPolygonShape(shapeSvg, w, h, points);\r\n el.attr('style', node.style);\r\n updateNodeBounds(node, el);\r\n\r\n node.intersect = function (point) {\r\n return intersect.polygon(node, points, point);\r\n };\r\n\r\n return shapeSvg;\r\n};\r\n\r\nconst cylinder = (parent, node) => {\r\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\r\n\r\n const w = bbox.width + node.padding;\r\n const rx = w / 2;\r\n const ry = rx / (2.5 + w / 50);\r\n const h = bbox.height + ry + node.padding;\r\n\r\n const shape =\r\n 'M 0,' +\r\n ry +\r\n ' a ' +\r\n rx +\r\n ',' +\r\n ry +\r\n ' 0,0,0 ' +\r\n w +\r\n ' 0 a ' +\r\n rx +\r\n ',' +\r\n ry +\r\n ' 0,0,0 ' +\r\n -w +\r\n ' 0 l 0,' +\r\n h +\r\n ' a ' +\r\n rx +\r\n ',' +\r\n ry +\r\n ' 0,0,0 ' +\r\n w +\r\n ' 0 l 0,' +\r\n -h;\r\n\r\n const el = shapeSvg\r\n .attr('label-offset-y', ry)\r\n .insert('path', ':first-child')\r\n .attr('style', node.style)\r\n .attr('d', shape)\r\n .attr('transform', 'translate(' + -w / 2 + ',' + -(h / 2 + ry) + ')');\r\n\r\n updateNodeBounds(node, el);\r\n\r\n node.intersect = function (point) {\r\n const pos = intersect.rect(node, point);\r\n const x = pos.x - node.x;\r\n\r\n if (\r\n rx != 0 &&\r\n (Math.abs(x) < node.width / 2 ||\r\n (Math.abs(x) == node.width / 2 && Math.abs(pos.y - node.y) > node.height / 2 - ry))\r\n ) {\r\n // ellipsis equation: x*x / a*a + y*y / b*b = 1\r\n // solve for y to get adjustion value for pos.y\r\n let y = ry * ry * (1 - (x * x) / (rx * rx));\r\n if (y != 0) y = Math.sqrt(y);\r\n y = ry - y;\r\n if (point.y - node.y > 0) y = -y;\r\n\r\n pos.y += y;\r\n }\r\n\r\n return pos;\r\n };\r\n\r\n return shapeSvg;\r\n};\r\n\r\nconst rect = (parent, node) => {\r\n const { shapeSvg, bbox, halfPadding } = labelHelper(parent, node, 'node ' + node.classes, true);\r\n\r\n log.trace('Classes = ', node.classes);\r\n // add the rect\r\n const rect = shapeSvg.insert('rect', ':first-child');\r\n\r\n rect\r\n .attr('class', 'basic label-container')\r\n .attr('style', node.style)\r\n .attr('rx', node.rx)\r\n .attr('ry', node.ry)\r\n .attr('x', -bbox.width / 2 - halfPadding)\r\n .attr('y', -bbox.height / 2 - halfPadding)\r\n .attr('width', bbox.width + node.padding)\r\n .attr('height', bbox.height + node.padding);\r\n\r\n updateNodeBounds(node, rect);\r\n\r\n node.intersect = function (point) {\r\n return intersect.rect(node, point);\r\n };\r\n\r\n return shapeSvg;\r\n};\r\n\r\nconst rectWithTitle = (parent, node) => {\r\n // const { shapeSvg, bbox, halfPadding } = labelHelper(parent, node, 'node ' + node.classes);\r\n\r\n let classes;\r\n if (!node.classes) {\r\n classes = 'node default';\r\n } else {\r\n classes = 'node ' + node.classes;\r\n }\r\n // Add outer g element\r\n const shapeSvg = parent\r\n .insert('g')\r\n .attr('class', classes)\r\n .attr('id', node.domId || node.id);\r\n\r\n // Create the title label and insert it after the rect\r\n const rect = shapeSvg.insert('rect', ':first-child');\r\n // const innerRect = shapeSvg.insert('rect');\r\n const innerLine = shapeSvg.insert('line');\r\n\r\n const label = shapeSvg.insert('g').attr('class', 'label');\r\n\r\n const text2 = node.labelText.flat ? node.labelText.flat() : node.labelText;\r\n // const text2 = typeof text2prim === 'object' ? text2prim[0] : text2prim;\r\n\r\n let title = '';\r\n if (typeof text2 === 'object') {\r\n title = text2[0];\r\n } else {\r\n title = text2;\r\n }\r\n log.info('Label text abc79', title, text2, typeof text2 === 'object');\r\n\r\n const text = label.node().appendChild(createLabel(title, node.labelStyle, true, true));\r\n let bbox = { width: 0, height: 0 };\r\n if (evaluate(getConfig().flowchart.htmlLabels)) {\r\n const div = text.children[0];\r\n const dv = select(text);\r\n bbox = div.getBoundingClientRect();\r\n dv.attr('width', bbox.width);\r\n dv.attr('height', bbox.height);\r\n }\r\n log.info('Text 2', text2);\r\n const textRows = text2.slice(1, text2.length);\r\n let titleBox = text.getBBox();\r\n const descr = label\r\n .node()\r\n .appendChild(\r\n createLabel(textRows.join ? textRows.join('
') : textRows, node.labelStyle, true, true)\r\n );\r\n\r\n if (evaluate(getConfig().flowchart.htmlLabels)) {\r\n const div = descr.children[0];\r\n const dv = select(descr);\r\n bbox = div.getBoundingClientRect();\r\n dv.attr('width', bbox.width);\r\n dv.attr('height', bbox.height);\r\n }\r\n // bbox = label.getBBox();\r\n // log.info(descr);\r\n const halfPadding = node.padding / 2;\r\n select(descr).attr(\r\n 'transform',\r\n 'translate( ' +\r\n // (titleBox.width - bbox.width) / 2 +\r\n (bbox.width > titleBox.width ? 0 : (titleBox.width - bbox.width) / 2) +\r\n ', ' +\r\n (titleBox.height + halfPadding + 5) +\r\n ')'\r\n );\r\n select(text).attr(\r\n 'transform',\r\n 'translate( ' +\r\n // (titleBox.width - bbox.width) / 2 +\r\n (bbox.width < titleBox.width ? 0 : -(titleBox.width - bbox.width) / 2) +\r\n ', ' +\r\n 0 +\r\n ')'\r\n );\r\n // Get the size of the label\r\n\r\n // Bounding box for title and text\r\n bbox = label.node().getBBox();\r\n\r\n // Center the label\r\n label.attr(\r\n 'transform',\r\n 'translate(' + -bbox.width / 2 + ', ' + (-bbox.height / 2 - halfPadding + 3) + ')'\r\n );\r\n\r\n rect\r\n .attr('class', 'outer title-state')\r\n .attr('x', -bbox.width / 2 - halfPadding)\r\n .attr('y', -bbox.height / 2 - halfPadding)\r\n .attr('width', bbox.width + node.padding)\r\n .attr('height', bbox.height + node.padding);\r\n\r\n innerLine\r\n .attr('class', 'divider')\r\n .attr('x1', -bbox.width / 2 - halfPadding)\r\n .attr('x2', bbox.width / 2 + halfPadding)\r\n .attr('y1', -bbox.height / 2 - halfPadding + titleBox.height + halfPadding)\r\n .attr('y2', -bbox.height / 2 - halfPadding + titleBox.height + halfPadding);\r\n\r\n updateNodeBounds(node, rect);\r\n\r\n node.intersect = function (point) {\r\n return intersect.rect(node, point);\r\n };\r\n\r\n return shapeSvg;\r\n};\r\n\r\nconst stadium = (parent, node) => {\r\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\r\n\r\n const h = bbox.height + node.padding;\r\n const w = bbox.width + h / 4 + node.padding;\r\n\r\n // add the rect\r\n const rect = shapeSvg\r\n .insert('rect', ':first-child')\r\n .attr('style', node.style)\r\n .attr('rx', h / 2)\r\n .attr('ry', h / 2)\r\n .attr('x', -w / 2)\r\n .attr('y', -h / 2)\r\n .attr('width', w)\r\n .attr('height', h);\r\n\r\n updateNodeBounds(node, rect);\r\n\r\n node.intersect = function (point) {\r\n return intersect.rect(node, point);\r\n };\r\n\r\n return shapeSvg;\r\n};\r\n\r\nconst circle = (parent, node) => {\r\n const { shapeSvg, bbox, halfPadding } = labelHelper(parent, node, undefined, true);\r\n const circle = shapeSvg.insert('circle', ':first-child');\r\n\r\n // center the circle around its coordinate\r\n circle\r\n .attr('style', node.style)\r\n .attr('rx', node.rx)\r\n .attr('ry', node.ry)\r\n .attr('r', bbox.width / 2 + halfPadding)\r\n .attr('width', bbox.width + node.padding)\r\n .attr('height', bbox.height + node.padding);\r\n\r\n log.info('Circle main');\r\n\r\n updateNodeBounds(node, circle);\r\n\r\n node.intersect = function (point) {\r\n log.info('Circle intersect', node, bbox.width / 2 + halfPadding, point);\r\n return intersect.circle(node, bbox.width / 2 + halfPadding, point);\r\n };\r\n\r\n return shapeSvg;\r\n};\r\n\r\nconst subroutine = (parent, node) => {\r\n const { shapeSvg, bbox } = labelHelper(parent, node, undefined, true);\r\n\r\n const w = bbox.width + node.padding;\r\n const h = bbox.height + node.padding;\r\n const points = [\r\n { x: 0, y: 0 },\r\n { x: w, y: 0 },\r\n { x: w, y: -h },\r\n { x: 0, y: -h },\r\n { x: 0, y: 0 },\r\n { x: -8, y: 0 },\r\n { x: w + 8, y: 0 },\r\n { x: w + 8, y: -h },\r\n { x: -8, y: -h },\r\n { x: -8, y: 0 },\r\n ];\r\n\r\n const el = insertPolygonShape(shapeSvg, w, h, points);\r\n el.attr('style', node.style);\r\n updateNodeBounds(node, el);\r\n\r\n node.intersect = function (point) {\r\n return intersect.polygon(node, points, point);\r\n };\r\n\r\n return shapeSvg;\r\n};\r\n\r\nconst start = (parent, node) => {\r\n const shapeSvg = parent\r\n .insert('g')\r\n .attr('class', 'node default')\r\n .attr('id', node.domId || node.id);\r\n const circle = shapeSvg.insert('circle', ':first-child');\r\n\r\n // center the circle around its coordinate\r\n circle.attr('class', 'state-start').attr('r', 7).attr('width', 14).attr('height', 14);\r\n\r\n updateNodeBounds(node, circle);\r\n\r\n node.intersect = function (point) {\r\n return intersect.circle(node, 7, point);\r\n };\r\n\r\n return shapeSvg;\r\n};\r\n\r\nconst forkJoin = (parent, node, dir) => {\r\n const shapeSvg = parent\r\n .insert('g')\r\n .attr('class', 'node default')\r\n .attr('id', node.domId || node.id);\r\n\r\n let width = 70;\r\n let height = 10;\r\n\r\n if (dir === 'LR') {\r\n width = 10;\r\n height = 70;\r\n }\r\n\r\n const shape = shapeSvg\r\n .append('rect')\r\n .attr('x', (-1 * width) / 2)\r\n .attr('y', (-1 * height) / 2)\r\n .attr('width', width)\r\n .attr('height', height)\r\n .attr('class', 'fork-join');\r\n\r\n updateNodeBounds(node, shape);\r\n node.height = node.height + node.padding / 2;\r\n node.width = node.width + node.padding / 2;\r\n node.intersect = function (point) {\r\n return intersect.rect(node, point);\r\n };\r\n\r\n return shapeSvg;\r\n};\r\n\r\nconst end = (parent, node) => {\r\n const shapeSvg = parent\r\n .insert('g')\r\n .attr('class', 'node default')\r\n .attr('id', node.domId || node.id);\r\n const innerCircle = shapeSvg.insert('circle', ':first-child');\r\n const circle = shapeSvg.insert('circle', ':first-child');\r\n\r\n circle.attr('class', 'state-start').attr('r', 7).attr('width', 14).attr('height', 14);\r\n\r\n innerCircle.attr('class', 'state-end').attr('r', 5).attr('width', 10).attr('height', 10);\r\n\r\n updateNodeBounds(node, circle);\r\n\r\n node.intersect = function (point) {\r\n return intersect.circle(node, 7, point);\r\n };\r\n\r\n return shapeSvg;\r\n};\r\n\r\nconst class_box = (parent, node) => {\r\n const halfPadding = node.padding / 2;\r\n const rowPadding = 4;\r\n const lineHeight = 8;\r\n\r\n let classes;\r\n if (!node.classes) {\r\n classes = 'node default';\r\n } else {\r\n classes = 'node ' + node.classes;\r\n }\r\n // Add outer g element\r\n const shapeSvg = parent\r\n .insert('g')\r\n .attr('class', classes)\r\n .attr('id', node.domId || node.id);\r\n\r\n // Create the title label and insert it after the rect\r\n const rect = shapeSvg.insert('rect', ':first-child');\r\n const topLine = shapeSvg.insert('line');\r\n const bottomLine = shapeSvg.insert('line');\r\n let maxWidth = 0;\r\n let maxHeight = rowPadding;\r\n\r\n const labelContainer = shapeSvg.insert('g').attr('class', 'label');\r\n let verticalPos = 0;\r\n const hasInterface = node.classData.annotations && node.classData.annotations[0];\r\n\r\n // 1. Create the labels\r\n const interfaceLabelText = node.classData.annotations[0]\r\n ? '«' + node.classData.annotations[0] + '»'\r\n : '';\r\n const interfaceLabel = labelContainer\r\n .node()\r\n .appendChild(createLabel(interfaceLabelText, node.labelStyle, true, true));\r\n let interfaceBBox = interfaceLabel.getBBox();\r\n if (evaluate(getConfig().flowchart.htmlLabels)) {\r\n const div = interfaceLabel.children[0];\r\n const dv = select(interfaceLabel);\r\n interfaceBBox = div.getBoundingClientRect();\r\n dv.attr('width', interfaceBBox.width);\r\n dv.attr('height', interfaceBBox.height);\r\n }\r\n if (node.classData.annotations[0]) {\r\n maxHeight += interfaceBBox.height + rowPadding;\r\n maxWidth += interfaceBBox.width;\r\n }\r\n\r\n let classTitleString = node.classData.id;\r\n\r\n if (node.classData.type !== undefined && node.classData.type !== '') {\r\n if (getConfig().flowchart.htmlLabels) {\r\n classTitleString += '<' + node.classData.type + '>';\r\n } else {\r\n classTitleString += '<' + node.classData.type + '>';\r\n }\r\n }\r\n const classTitleLabel = labelContainer\r\n .node()\r\n .appendChild(createLabel(classTitleString, node.labelStyle, true, true));\r\n select(classTitleLabel).attr('class', 'classTitle');\r\n let classTitleBBox = classTitleLabel.getBBox();\r\n if (evaluate(getConfig().flowchart.htmlLabels)) {\r\n const div = classTitleLabel.children[0];\r\n const dv = select(classTitleLabel);\r\n classTitleBBox = div.getBoundingClientRect();\r\n dv.attr('width', classTitleBBox.width);\r\n dv.attr('height', classTitleBBox.height);\r\n }\r\n maxHeight += classTitleBBox.height + rowPadding;\r\n if (classTitleBBox.width > maxWidth) {\r\n maxWidth = classTitleBBox.width;\r\n }\r\n const classAttributes = [];\r\n node.classData.members.forEach((str) => {\r\n const parsedInfo = parseMember(str);\r\n let parsedText = parsedInfo.displayText;\r\n if (getConfig().flowchart.htmlLabels) {\r\n parsedText = parsedText.replace(//g, '>');\r\n }\r\n const lbl = labelContainer\r\n .node()\r\n .appendChild(\r\n createLabel(\r\n parsedText,\r\n parsedInfo.cssStyle ? parsedInfo.cssStyle : node.labelStyle,\r\n true,\r\n true\r\n )\r\n );\r\n let bbox = lbl.getBBox();\r\n if (evaluate(getConfig().flowchart.htmlLabels)) {\r\n const div = lbl.children[0];\r\n const dv = select(lbl);\r\n bbox = div.getBoundingClientRect();\r\n dv.attr('width', bbox.width);\r\n dv.attr('height', bbox.height);\r\n }\r\n if (bbox.width > maxWidth) {\r\n maxWidth = bbox.width;\r\n }\r\n maxHeight += bbox.height + rowPadding;\r\n classAttributes.push(lbl);\r\n });\r\n\r\n maxHeight += lineHeight;\r\n\r\n const classMethods = [];\r\n node.classData.methods.forEach((str) => {\r\n const parsedInfo = parseMember(str);\r\n let displayText = parsedInfo.displayText;\r\n if (getConfig().flowchart.htmlLabels) {\r\n displayText = displayText.replace(//g, '>');\r\n }\r\n const lbl = labelContainer\r\n .node()\r\n .appendChild(\r\n createLabel(\r\n displayText,\r\n parsedInfo.cssStyle ? parsedInfo.cssStyle : node.labelStyle,\r\n true,\r\n true\r\n )\r\n );\r\n let bbox = lbl.getBBox();\r\n if (evaluate(getConfig().flowchart.htmlLabels)) {\r\n const div = lbl.children[0];\r\n const dv = select(lbl);\r\n bbox = div.getBoundingClientRect();\r\n dv.attr('width', bbox.width);\r\n dv.attr('height', bbox.height);\r\n }\r\n if (bbox.width > maxWidth) {\r\n maxWidth = bbox.width;\r\n }\r\n maxHeight += bbox.height + rowPadding;\r\n\r\n classMethods.push(lbl);\r\n });\r\n\r\n maxHeight += lineHeight;\r\n\r\n // 2. Position the labels\r\n\r\n // position the interface label\r\n if (hasInterface) {\r\n let diffX = (maxWidth - interfaceBBox.width) / 2;\r\n select(interfaceLabel).attr(\r\n 'transform',\r\n 'translate( ' + ((-1 * maxWidth) / 2 + diffX) + ', ' + (-1 * maxHeight) / 2 + ')'\r\n );\r\n verticalPos = interfaceBBox.height + rowPadding;\r\n }\r\n // Positin the class title label\r\n let diffX = (maxWidth - classTitleBBox.width) / 2;\r\n select(classTitleLabel).attr(\r\n 'transform',\r\n 'translate( ' +\r\n ((-1 * maxWidth) / 2 + diffX) +\r\n ', ' +\r\n ((-1 * maxHeight) / 2 + verticalPos) +\r\n ')'\r\n );\r\n verticalPos += classTitleBBox.height + rowPadding;\r\n\r\n topLine\r\n .attr('class', 'divider')\r\n .attr('x1', -maxWidth / 2 - halfPadding)\r\n .attr('x2', maxWidth / 2 + halfPadding)\r\n .attr('y1', -maxHeight / 2 - halfPadding + lineHeight + verticalPos)\r\n .attr('y2', -maxHeight / 2 - halfPadding + lineHeight + verticalPos);\r\n\r\n verticalPos += lineHeight;\r\n\r\n classAttributes.forEach((lbl) => {\r\n select(lbl).attr(\r\n 'transform',\r\n 'translate( ' +\r\n -maxWidth / 2 +\r\n ', ' +\r\n ((-1 * maxHeight) / 2 + verticalPos + lineHeight / 2) +\r\n ')'\r\n );\r\n verticalPos += classTitleBBox.height + rowPadding;\r\n });\r\n\r\n verticalPos += lineHeight;\r\n bottomLine\r\n .attr('class', 'divider')\r\n .attr('x1', -maxWidth / 2 - halfPadding)\r\n .attr('x2', maxWidth / 2 + halfPadding)\r\n .attr('y1', -maxHeight / 2 - halfPadding + lineHeight + verticalPos)\r\n .attr('y2', -maxHeight / 2 - halfPadding + lineHeight + verticalPos);\r\n\r\n verticalPos += lineHeight;\r\n\r\n classMethods.forEach((lbl) => {\r\n select(lbl).attr(\r\n 'transform',\r\n 'translate( ' + -maxWidth / 2 + ', ' + ((-1 * maxHeight) / 2 + verticalPos) + ')'\r\n );\r\n verticalPos += classTitleBBox.height + rowPadding;\r\n });\r\n //\r\n // let bbox;\r\n // if (evaluate(getConfig().flowchart.htmlLabels)) {\r\n // const div = interfaceLabel.children[0];\r\n // const dv = select(interfaceLabel);\r\n // bbox = div.getBoundingClientRect();\r\n // dv.attr('width', bbox.width);\r\n // dv.attr('height', bbox.height);\r\n // }\r\n // bbox = labelContainer.getBBox();\r\n\r\n // log.info('Text 2', text2);\r\n // const textRows = text2.slice(1, text2.length);\r\n // let titleBox = text.getBBox();\r\n // const descr = label\r\n // .node()\r\n // .appendChild(createLabel(textRows.join('
'), node.labelStyle, true, true));\r\n\r\n // if (evaluate(getConfig().flowchart.htmlLabels)) {\r\n // const div = descr.children[0];\r\n // const dv = select(descr);\r\n // bbox = div.getBoundingClientRect();\r\n // dv.attr('width', bbox.width);\r\n // dv.attr('height', bbox.height);\r\n // }\r\n // // bbox = label.getBBox();\r\n // // log.info(descr);\r\n // select(descr).attr(\r\n // 'transform',\r\n // 'translate( ' +\r\n // // (titleBox.width - bbox.width) / 2 +\r\n // (bbox.width > titleBox.width ? 0 : (titleBox.width - bbox.width) / 2) +\r\n // ', ' +\r\n // (titleBox.height + halfPadding + 5) +\r\n // ')'\r\n // );\r\n // select(text).attr(\r\n // 'transform',\r\n // 'translate( ' +\r\n // // (titleBox.width - bbox.width) / 2 +\r\n // (bbox.width < titleBox.width ? 0 : -(titleBox.width - bbox.width) / 2) +\r\n // ', ' +\r\n // 0 +\r\n // ')'\r\n // );\r\n // // Get the size of the label\r\n\r\n // // Bounding box for title and text\r\n // bbox = label.node().getBBox();\r\n\r\n // // Center the label\r\n // label.attr(\r\n // 'transform',\r\n // 'translate(' + -bbox.width / 2 + ', ' + (-bbox.height / 2 - halfPadding + 3) + ')'\r\n // );\r\n\r\n rect\r\n .attr('class', 'outer title-state')\r\n .attr('x', -maxWidth / 2 - halfPadding)\r\n .attr('y', -(maxHeight / 2) - halfPadding)\r\n .attr('width', maxWidth + node.padding)\r\n .attr('height', maxHeight + node.padding);\r\n\r\n // innerLine\r\n // .attr('class', 'divider')\r\n // .attr('x1', -bbox.width / 2 - halfPadding)\r\n // .attr('x2', bbox.width / 2 + halfPadding)\r\n // .attr('y1', -bbox.height / 2 - halfPadding + titleBox.height + halfPadding)\r\n // .attr('y2', -bbox.height / 2 - halfPadding + titleBox.height + halfPadding);\r\n\r\n updateNodeBounds(node, rect);\r\n\r\n node.intersect = function (point) {\r\n return intersect.rect(node, point);\r\n };\r\n\r\n return shapeSvg;\r\n};\r\n\r\nconst shapes = {\r\n question,\r\n rect,\r\n rectWithTitle,\r\n choice,\r\n circle,\r\n stadium,\r\n hexagon,\r\n rect_left_inv_arrow,\r\n lean_right,\r\n lean_left,\r\n trapezoid,\r\n inv_trapezoid,\r\n rect_right_inv_arrow,\r\n cylinder,\r\n start,\r\n end,\r\n note,\r\n subroutine,\r\n fork: forkJoin,\r\n join: forkJoin,\r\n class_box,\r\n};\r\n\r\nlet nodeElems = {};\r\n\r\nexport const insertNode = (elem, node, dir) => {\r\n let newEl;\r\n let el;\r\n\r\n // Add link when appropriate\r\n if (node.link) {\r\n newEl = elem\r\n .insert('svg:a')\r\n .attr('xlink:href', node.link)\r\n .attr('target', node.linkTarget || '_blank');\r\n el = shapes[node.shape](newEl, node, dir);\r\n } else {\r\n el = shapes[node.shape](elem, node, dir);\r\n newEl = el;\r\n }\r\n if (node.tooltip) {\r\n el.attr('title', node.tooltip);\r\n }\r\n if (node.class) {\r\n el.attr('class', 'node default ' + node.class);\r\n }\r\n\r\n nodeElems[node.id] = newEl;\r\n\r\n if (node.haveCallback) {\r\n nodeElems[node.id].attr('class', nodeElems[node.id].attr('class') + ' clickable');\r\n }\r\n};\r\nexport const setNodeElem = (elem, node) => {\r\n nodeElems[node.id] = elem;\r\n};\r\nexport const clear = () => {\r\n nodeElems = {};\r\n};\r\n\r\nexport const positionNode = (node) => {\r\n const el = nodeElems[node.id];\r\n log.trace(\r\n 'Transforming node',\r\n node.diff,\r\n node,\r\n 'translate(' + (node.x - node.width / 2 - 5) + ', ' + node.width / 2 + ')'\r\n );\r\n const padding = 8;\r\n const diff = node.diff || 0;\r\n if (node.clusterNode) {\r\n el.attr(\r\n 'transform',\r\n 'translate(' +\r\n (node.x + diff - node.width / 2) +\r\n ', ' +\r\n (node.y - node.height / 2 - padding) +\r\n ')'\r\n );\r\n } else {\r\n el.attr('transform', 'translate(' + node.x + ', ' + node.y + ')');\r\n }\r\n return diff;\r\n};\r\n","import { updateNodeBounds, labelHelper } from './util';\r\nimport { log } from '../../logger'; // eslint-disable-line\r\nimport intersect from '../intersect/index.js';\r\n\r\nconst note = (parent, node) => {\r\n const { shapeSvg, bbox, halfPadding } = labelHelper(parent, node, 'node ' + node.classes, true);\r\n\r\n log.info('Classes = ', node.classes);\r\n // add the rect\r\n const rect = shapeSvg.insert('rect', ':first-child');\r\n\r\n rect\r\n .attr('rx', node.rx)\r\n .attr('ry', node.ry)\r\n .attr('x', -bbox.width / 2 - halfPadding)\r\n .attr('y', -bbox.height / 2 - halfPadding)\r\n .attr('width', bbox.width + node.padding)\r\n .attr('height', bbox.height + node.padding);\r\n\r\n updateNodeBounds(node, rect);\r\n\r\n node.intersect = function (point) {\r\n return intersect.rect(node, point);\r\n };\r\n\r\n return shapeSvg;\r\n};\r\n\r\nexport default note;\r\n","import createLabel from '../createLabel';\r\nimport { getConfig } from '../../config';\r\nimport { decodeEntities } from '../../mermaidAPI';\r\nimport { select } from 'd3';\r\nimport { evaluate, sanitizeText } from '../../diagrams/common/common';\r\nexport const labelHelper = (parent, node, _classes, isNode) => {\r\n let classes;\r\n if (!_classes) {\r\n classes = 'node default';\r\n } else {\r\n classes = _classes;\r\n }\r\n // Add outer g element\r\n const shapeSvg = parent\r\n .insert('g')\r\n .attr('class', classes)\r\n .attr('id', node.domId || node.id);\r\n\r\n // Create the label and insert it after the rect\r\n const label = shapeSvg.insert('g').attr('class', 'label').attr('style', node.labelStyle);\r\n\r\n const text = label\r\n .node()\r\n .appendChild(\r\n createLabel(\r\n sanitizeText(decodeEntities(node.labelText), getConfig()),\r\n node.labelStyle,\r\n false,\r\n isNode\r\n )\r\n );\r\n\r\n // Get the size of the label\r\n let bbox = text.getBBox();\r\n\r\n if (evaluate(getConfig().flowchart.htmlLabels)) {\r\n const div = text.children[0];\r\n const dv = select(text);\r\n bbox = div.getBoundingClientRect();\r\n dv.attr('width', bbox.width);\r\n dv.attr('height', bbox.height);\r\n }\r\n\r\n const halfPadding = node.padding / 2;\r\n\r\n // Center the label\r\n label.attr('transform', 'translate(' + -bbox.width / 2 + ', ' + -bbox.height / 2 + ')');\r\n\r\n return { shapeSvg, bbox, halfPadding, label };\r\n};\r\n\r\nexport const updateNodeBounds = (node, element) => {\r\n const bbox = element.node().getBBox();\r\n node.width = bbox.width;\r\n node.height = bbox.height;\r\n};\r\n\r\n/**\r\n * @param parent\r\n * @param w\r\n * @param h\r\n * @param points\r\n */\r\nexport function insertPolygonShape(parent, w, h, points) {\r\n return parent\r\n .insert('polygon', ':first-child')\r\n .attr(\r\n 'points',\r\n points\r\n .map(function (d) {\r\n return d.x + ',' + d.y;\r\n })\r\n .join(' ')\r\n )\r\n .attr('class', 'label-container')\r\n .attr('transform', 'translate(' + -w / 2 + ',' + h / 2 + ')');\r\n}\r\n","import theme from './themes';\r\n/**\r\n * **Configuration methods in Mermaid version 8.6.0 have been updated, to learn more[[click here](8.6.0_docs.md)].**\r\n *\r\n * ## **What follows are config instructions for older versions**\r\n *\r\n * These are the default options which can be overridden with the initialization call like so:\r\n *\r\n * **Example 1:**\r\n *

\r\n * mermaid.initialize({\r\n *   flowchart:{\r\n *     htmlLabels: false\r\n *   }\r\n * });\r\n * 
\r\n *\r\n * **Example 2:**\r\n *
\r\n * <script>\r\n *   var config = {\r\n *     startOnLoad:true,\r\n *     flowchart:{\r\n *       useMaxWidth:true,\r\n *       htmlLabels:true,\r\n *       curve:'cardinal',\r\n *     },\r\n *\r\n *     securityLevel:'loose',\r\n *   };\r\n *   mermaid.initialize(config);\r\n * </script>\r\n * 
\r\n * A summary of all options and their defaults is found [here](#mermaidapi-configuration-defaults). A description of each option follows below.\r\n *\r\n * @name Configuration\r\n */\r\nconst config = {\r\n /**\r\n * theme , the CSS style sheet\r\n *\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --- | --- | --- | --- | --- |\r\n * | theme | Built in Themes | string | Optional | 'default', 'forest', 'dark', 'neutral', 'null'|\r\n *\r\n * **Notes:** To disable any pre-defined mermaid theme, use \"null\".\r\n *\r\n *
\r\n   *  \"theme\": \"forest\",\r\n   *  \"themeCSS\": \".node rect { fill: red; }\"\r\n   * 
\r\n */\r\n theme: 'default',\r\n themeVariables: theme['default'].getThemeVariables(),\r\n themeCSS: undefined,\r\n /* **maxTextSize** - The maximum allowed size of the users text diamgram */\r\n maxTextSize: 50000,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --- | --- | --- | --- | --- |\r\n * | fontFamily | specifies the font to be used in the rendered diagrams| string | Required | Any Possible CSS FontFamily |\r\n *\r\n * **Notes:**\r\n * Default value: '\"trebuchet ms\", verdana, arial, sans-serif;'.\r\n */\r\n fontFamily: '\"trebuchet ms\", verdana, arial, sans-serif;',\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --- | --- | --- | --- | --- |\r\n * | logLevel |This option decides the amount of logging to be used.| string \\| number | Required | 1, 2, 3, 4, 5 |\r\n *\r\n *\r\n * **Notes:**\r\n *\r\n * - debug: 1\r\n * - info: 2\r\n * - warn: 3\r\n * - error: 4\r\n * - fatal: 5 (default)\r\n */\r\n logLevel: 5,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --- | --- | --- | --- | --- |\r\n * | securitylevel | Level of trust for parsed diagram|string | Required | 'strict', 'loose', 'antiscript' |\r\n *\r\n * **Notes**:\r\n *\r\n * - **strict**: (**default**) tags in text are encoded, click functionality is disabled\r\n * - **loose**: tags in text are allowed, click functionality is enabled\r\n * - **antiscript**: html tags in text are allowed, (only script element is removed), click functionality is enabled\r\n */\r\n securityLevel: 'strict',\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --- | --- | --- | --- | --- |\r\n * | startOnLoad | Dictates whether mermaid starts on Page load | boolean | Required | true, false |\r\n *\r\n * **Notes:** Default value: true\r\n */\r\n startOnLoad: true,\r\n\r\n /**\r\n * | Parameter | Description |Type | Required |Values|\r\n * | --- | --- | --- | --- | --- |\r\n * | arrowMarkerAbsolute | Controls whether or arrow markers in html code are absolute paths or anchors | boolean | Required | true, false |\r\n *\r\n *\r\n * **Notes**:\r\n *\r\n * This matters if you are using base tag settings.\r\n *\r\n * Default value: false\r\n */\r\n arrowMarkerAbsolute: false,\r\n\r\n /**\r\n * This option controls which currentConfig keys are considered _secure_ and can only be changed via\r\n * call to mermaidAPI.initialize. Calls to mermaidAPI.reinitialize cannot make changes to\r\n * the `secure` keys in the current currentConfig. This prevents malicious graph directives from\r\n * overriding a site's default security.\r\n *\r\n ***Notes**:\r\n *\r\n * Default value: ['secure', 'securityLevel', 'startOnLoad', 'maxTextSize']\r\n */\r\n secure: ['secure', 'securityLevel', 'startOnLoad', 'maxTextSize'],\r\n\r\n /**\r\n * This option controls if the generated ids of nodes in the SVG are generated randomly or based on a seed.\r\n * If set to false, the IDs are generated based on the current date and thus are not deterministic. This is the default behaviour.\r\n *\r\n * **Notes**:\r\n *\r\n * This matters if your files are checked into sourcecontrol e.g. git and should not change unless content is changed.\r\n *\r\n * Default value: false\r\n */\r\n deterministicIds: false,\r\n\r\n /**\r\n * This option is the optional seed for deterministic ids. if set to undefined but deterministicIds is true, a simple number iterator is used.\r\n * You can set this attribute to base the seed on a static string.\r\n */\r\n deterministicIDSeed: undefined,\r\n\r\n /**\r\n * The object containing configurations specific for flowcharts\r\n */\r\n flowchart: {\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --- | --- | --- | --- | --- |\r\n * | diagramPadding | Amount of padding around the diagram as a whole | Integer | Required | Any Positive Value |\r\n *\r\n * **Notes:**\r\n *\r\n * The amount of padding around the diagram as a whole so that embedded diagrams have margins, expressed in pixels\r\n *\r\n * Default value: 8\r\n */\r\n diagramPadding: 8,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --- | --- | --- | --- | --- |\r\n * | htmlLabels | Flag for setting whether or not a html tag should be used for rendering labels on the edges. | boolean| Required | true, false |\r\n *\r\n * **Notes:** Default value: true.\r\n */\r\n htmlLabels: true,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --- | --- | --- | --- | --- |\r\n * | nodeSpacing | Defines the spacing between nodes on the same level | Integer | Required | Any positive Number |\r\n *\r\n * **Notes:**\r\n *\r\n * Pertains to horizontal spacing for TB (top to bottom) or BT (bottom to top) graphs, and the vertical spacing for LR as well as RL graphs.**\r\n *\r\n * Default value: 50\r\n */\r\n nodeSpacing: 50,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --- | --- | --- | --- | --- |\r\n * | rankSpacing | Defines the spacing between nodes on different levels | Integer | Required | Any Positive Number |\r\n *\r\n * **Notes**:\r\n *\r\n * pertains to vertical spacing for TB (top to bottom) or BT (bottom to top), and the horizontal spacing for LR as well as RL graphs.\r\n *\r\n * Default value 50\r\n */\r\n rankSpacing: 50,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --- | --- | --- | --- | --- |\r\n * | curve | Defines how mermaid renders curves for flowcharts. | string | Required | 'basis', 'linear', 'cardinal'|\r\n *\r\n * **Notes:**\r\n *\r\n * Default Value: 'basis'\r\n */\r\n curve: 'basis',\r\n // Only used in new experimental rendering\r\n // represents the padding between the labels and the shape\r\n padding: 15,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values|\r\n * | --- | --- | --- | --- | --- |\r\n * | useMaxWidth | See notes | boolean | 4 | true, false |\r\n *\r\n * **Notes:**\r\n *\r\n * When this flag is set the height and width is set to 100% and is then scaling with the\r\n * available space if not the absolute space required is used.\r\n *\r\n * Default value: true\r\n */\r\n useMaxWidth: true,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values|\r\n * | --- | --- | --- | --- | --- |\r\n * | defaultRenderer | See notes | boolean | 4 | dagre-d3, dagre-wrapper |\r\n *\r\n * **Notes:**\r\n *\r\n * Decides which rendering engine that is to be used for the rendering. Legal values are:\r\n * dagre-d3\r\n * dagre-wrapper - wrapper for dagre implemented in mermaid\r\n *\r\n * Default value: 'dagre-d3'\r\n */\r\n defaultRenderer: 'dagre-d3',\r\n },\r\n\r\n /**\r\n * The object containing configurations specific for sequence diagrams\r\n */\r\n sequence: {\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --- | --- | --- | --- | --- |\r\n * | activationWidth | Width of the activation rect | Integer | Required | Any Positive Value |\r\n *\r\n *\r\n * **Notes:** Default value :10\r\n */\r\n activationWidth: 10,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --- | --- | --- | --- | --- |\r\n * | diagramMarginX | Margin to the right and left of the sequence diagram | Integer | Required | Any Positive Value |\r\n *\r\n * **Notes:** Default value: 50\r\n */\r\n diagramMarginX: 50,\r\n\r\n /**\r\n *| Parameter | Description | Type | Required | Values |\r\n *| --- | --- | --- | --- | --- |\r\n *| diagramMarginY | Margin to the over and under the sequence diagram | Integer | Required | Any Positive Value |\r\n *\r\n * **Notes:** Default value: 10\r\n */\r\n diagramMarginY: 10,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --- | --- | --- | --- | --- |\r\n * | actorMargin | Margin between actors | Integer | Required | Any Positive Value |\r\n *\r\n * **Notes:**\r\n * Default value: 50\r\n */\r\n actorMargin: 50,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --- | --- | --- | --- | --- |\r\n * | width | Width of actor boxes | Integer | Required | Any Positive Value |\r\n *\r\n * **Notes:**\r\n * Default value: 150\r\n */\r\n width: 150,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --- | --- | --- | --- | --- |\r\n * | height | Height of actor boxes | Integer | Required | Any Positive Value|\r\n *\r\n * **Notes:**\r\n * Default value: 65\r\n */\r\n height: 65,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --- | --- | --- | --- | --- |\r\n * | boxMargin | Margin around loop boxes | Integer | Required | Any Positive Value |\r\n *\r\n * **Notes:**\r\n * Default value: 10\r\n */\r\n boxMargin: 10,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --- | --- | --- | --- | --- |\r\n * | boxTextMargin | Margin around the text in loop/alt/opt boxes | Integer | Required | Any Positive Value |\r\n *\r\n * **Notes:**\r\n * Default value: 5\r\n */\r\n boxTextMargin: 5,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --- | --- | --- | --- | --- |\r\n * | noteMargin | margin around notes | Integer | Required | Any Positive Value |\r\n *\r\n * **Notes:**\r\n * Default value: 10\r\n */\r\n noteMargin: 10,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --- | --- | --- | --- | --- |\r\n * | messageMargin | Space between messages | Integer | Required | Any Positive Value |\r\n *\r\n * **Notes:**\r\n * Default value: 35\r\n */\r\n messageMargin: 35,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --- | --- | --- | --- | --- |\r\n * | messageAlign | Multiline message alignment | string | Required | 'left', 'center', 'right' |\r\n *\r\n * **Notes:**\r\n * Default value: 'center'\r\n */\r\n messageAlign: 'center',\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --- | --- | --- | --- | --- |\r\n * | mirrorActors | Mirror actors under diagram | boolean | Required | true, false |\r\n *\r\n * **Notes:**\r\n * Default value: true\r\n */\r\n mirrorActors: true,\r\n\r\n /**\r\n *| Parameter | Description |Type | Required | Values|\r\n *| --- | --- | --- | --- | --- |\r\n *| forceMenus | forces actor popup menus to always be visible (to support E2E testing). | Boolean| Required | True, False |\r\n *\r\n * **Notes:**\r\n *\r\n * Default value: false.\r\n */\r\n forceMenus: false,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --- | --- | --- | --- | --- |\r\n * | bottomMarginAdj | Prolongs the edge of the diagram downwards | Integer | Required | Any Positive Value |\r\n *\r\n * **Notes:**\r\n *\r\n * Depending on css styling this might need adjustment.\r\n *\r\n * Default value: 1\r\n */\r\n bottomMarginAdj: 1,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --- | --- | --- | --- | --- |\r\n * | useMaxWidth | See Notes | boolean | Required | true, false |\r\n *\r\n * **Notes:**\r\n * When this flag is set to true, the height and width is set to 100% and is then scaling with the\r\n * available space. If set to false, the absolute space required is used.\r\n *\r\n * Default value: true\r\n */\r\n useMaxWidth: true,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --- | --- | --- | --- | --- |\r\n * | rightAngles | display curve arrows as right angles | boolean | Required | true, false |\r\n *\r\n * **Notes:**\r\n *\r\n * This will display arrows that start and begin at the same node as right angles, rather than a curve\r\n *\r\n * Default value: false\r\n */\r\n rightAngles: false,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --- | --- | --- | --- | --- |\r\n * | showSequenceNumbers | This will show the node numbers | boolean | Required | true, false |\r\n *\r\n * **Notes:**\r\n * Default value: false\r\n */\r\n showSequenceNumbers: false,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --- | --- | --- | --- | --- |\r\n * | actorFontSize| This sets the font size of the actor's description | Integer | Require | Any Positive Value |\r\n *\r\n ***Notes:**\r\n ***Default value 14**..\r\n */\r\n actorFontSize: 14,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --- | --- | --- | --- | --- |\r\n * | actorFontFamily |This sets the font family of the actor's description | string | Required | Any Possible CSS FontFamily |\r\n *\r\n * **Notes:**\r\n * Default value: \"'Open-Sans\", \"sans-serif\"'\r\n */\r\n actorFontFamily: '\"Open-Sans\", \"sans-serif\"',\r\n\r\n /**\r\n * This sets the font weight of the actor's description\r\n *\r\n * **Notes:**\r\n * Default value: 400.\r\n */\r\n actorFontWeight: 400,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --- | --- | --- | --- | --- |\r\n * | noteFontSize | This sets the font size of actor-attached notes | Integer | Required | Any Positive Value |\r\n *\r\n * **Notes:**\r\n * Default value: 14\r\n */\r\n noteFontSize: 14,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --- | --- | --- | --- | --- |\r\n * | noteFontFamily| This sets the font family of actor-attached notes. | string | Required | Any Possible CSS FontFamily |\r\n *\r\n * **Notes:**\r\n * Default value: ''\"trebuchet ms\", verdana, arial, sans-serif'\r\n */\r\n noteFontFamily: '\"trebuchet ms\", verdana, arial, sans-serif',\r\n\r\n /**\r\n * This sets the font weight of the note's description\r\n *\r\n * **Notes:**\r\n * Default value: 400\r\n */\r\n noteFontWeight: 400,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --- | --- | --- | --- | --- |\r\n * | noteAlign | This sets the text alignment of actor-attached notes | string | required | 'left', 'center', 'right'|\r\n *\r\n * **Notes:**\r\n * Default value: 'center'\r\n */\r\n noteAlign: 'center',\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --- | --- | --- | --- | --- |\r\n * | messageFontSize | This sets the font size of actor messages | Integer | Required | Any Positive Number |\r\n *\r\n * **Notes:**\r\n * Default value: 16\r\n */\r\n messageFontSize: 16,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --- | --- | --- | --- | --- |\r\n * | messageFontFamily | This sets the font family of actor messages | string | Required | Any Possible CSS FontFamily |\r\n *\r\n * **Notes:**\r\n * Default value: '\"trebuchet ms\", verdana, arial, sans-serif'\r\n */\r\n messageFontFamily: '\"trebuchet ms\", verdana, arial, sans-serif',\r\n\r\n /**\r\n * This sets the font weight of the message's description\r\n *\r\n * **Notes:**\r\n * Default value: 400.\r\n */\r\n messageFontWeight: 400,\r\n\r\n /**\r\n * This sets the auto-wrap state for the diagram\r\n *\r\n * **Notes:**\r\n * Default value: false.\r\n */\r\n wrap: false,\r\n\r\n /**\r\n * This sets the auto-wrap padding for the diagram (sides only)\r\n *\r\n * **Notes:**\r\n * Default value: 0.\r\n */\r\n wrapPadding: 10,\r\n\r\n /**\r\n * This sets the width of the loop-box (loop, alt, opt, par)\r\n *\r\n * **Notes:**\r\n * Default value: 50.\r\n */\r\n labelBoxWidth: 50,\r\n\r\n /**\r\n * This sets the height of the loop-box (loop, alt, opt, par)\r\n *\r\n * **Notes:**\r\n * Default value: 20.\r\n */\r\n labelBoxHeight: 20,\r\n\r\n messageFont: function () {\r\n return {\r\n fontFamily: this.messageFontFamily,\r\n fontSize: this.messageFontSize,\r\n fontWeight: this.messageFontWeight,\r\n };\r\n },\r\n noteFont: function () {\r\n return {\r\n fontFamily: this.noteFontFamily,\r\n fontSize: this.noteFontSize,\r\n fontWeight: this.noteFontWeight,\r\n };\r\n },\r\n actorFont: function () {\r\n return {\r\n fontFamily: this.actorFontFamily,\r\n fontSize: this.actorFontSize,\r\n fontWeight: this.actorFontWeight,\r\n };\r\n },\r\n },\r\n\r\n /**\r\n * The object containing configurations specific for gantt diagrams\r\n */\r\n gantt: {\r\n /**\r\n * ### titleTopMargin\r\n *\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --- | --- | --- | --- | --- |\r\n * | titleTopMargin | Margin top for the text over the gantt diagram | Integer | Required | Any Positive Value |\r\n *\r\n * **Notes:**\r\n * Default value: 25\r\n */\r\n titleTopMargin: 25,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --- | --- | --- | --- | --- |\r\n * | barHeight | The height of the bars in the graph | Integer | Required | Any Positive Value |\r\n *\r\n * **Notes:**\r\n * Default value: 20\r\n */\r\n barHeight: 20,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --- | --- | --- | --- | --- |\r\n * | barGap | The margin between the different activities in the gantt diagram | Integer | Optional | Any Positive Value |\r\n *\r\n * **Notes:**\r\n * Default value: 4\r\n */\r\n barGap: 4,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values|\r\n * | --- | --- | --- | --- | --- |\r\n * | topPadding | Margin between title and gantt diagram and between axis and gantt diagram. | Integer | Required | Any Positive Value |\r\n *\r\n * **Notes:**\r\n * Default value: 50\r\n */\r\n topPadding: 50,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values|\r\n * | --- | --- | --- | --- | --- |\r\n * | rightPadding | The space allocated for the section name to the right of the activities | Integer | Required | Any Positive Value |\r\n *\r\n * **Notes:**\r\n * Default value: 75\r\n */\r\n rightPadding: 75,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values|\r\n * | --- | --- | --- | --- | --- |\r\n * | leftPadding | The space allocated for the section name to the left of the activities | Integer | Required | Any Positive Value |\r\n *\r\n * **Notes:**\r\n * Default value: 75\r\n */\r\n leftPadding: 75,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values|\r\n * | --- | --- | --- | --- | --- |\r\n * | gridLineStartPadding | Vertical starting position of the grid lines | Integer | Required | Any Positive Value |\r\n *\r\n * **Notes:**\r\n * Default value: 35\r\n */\r\n gridLineStartPadding: 35,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values|\r\n * | --- | --- | --- | --- | --- |\r\n * | fontSize | Font size | Integer | Required | Any Positive Value |\r\n *\r\n * **Notes:**\r\n * Default value: 11\r\n */\r\n fontSize: 11,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values|\r\n * | --- | --- | --- | --- | --- |\r\n * | sectionFontSize | Font size for sections| Integer | Required | Any Positive Value |\r\n *\r\n * **Notes:**\r\n * Default value: 11\r\n */\r\n sectionFontSize: 11,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values|\r\n * | --- | --- | --- | --- | --- |\r\n * | numberSectionStyles | The number of alternating section styles | Integer | 4 | Any Positive Value |\r\n *\r\n * **Notes:**\r\n * Default value: 4\r\n */\r\n numberSectionStyles: 4,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --- | --- | --- | --- | --- |\r\n * | axisFormat | Datetime format of the axis | 3 | Required | Date in yy-mm-dd |\r\n *\r\n * **Notes:**\r\n *\r\n * This might need adjustment to match your locale and preferences\r\n *\r\n * Default value: '%Y-%m-%d'.\r\n */\r\n axisFormat: '%Y-%m-%d',\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --- | --- | --- | --- | --- |\r\n * | useMaxWidth | See notes | boolean | 4 | true, false |\r\n *\r\n * **Notes:**\r\n *\r\n * When this flag is set the height and width is set to 100% and is then scaling with the\r\n * available space if not the absolute space required is used.\r\n *\r\n * Default value: true\r\n */\r\n useMaxWidth: true,\r\n\r\n /**\r\n *| Parameter | Description |Type | Required | Values|\r\n *| --- | --- | --- | --- | --- |\r\n *| topAxis | See notes | Boolean | 4 | True, False |\r\n *\r\n ***Notes:** when this flag is set date labels will be added to the\r\ntop of the chart\r\n *\r\n ***Default value false**.\r\n */\r\n topAxis: false,\r\n\r\n useWidth: undefined,\r\n },\r\n\r\n /**\r\n * The object containing configurations specific for journey diagrams\r\n */\r\n journey: {\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --- | --- | --- | --- | --- |\r\n * | diagramMarginX | Margin to the right and left of the sequence diagram | Integer | Required | Any Positive Value |\r\n *\r\n * **Notes:**\r\n * Default value: 50\r\n */\r\n diagramMarginX: 50,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --- | --- | --- | --- | --- |\r\n * | diagramMarginY | Margin to the over and under the sequence diagram. | Integer | Required | Any Positive Value |\r\n *\r\n * **Notes:**\r\n * Default value: 10\r\n */\r\n diagramMarginY: 10,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --- | --- | --- | --- | --- |\r\n * | actorMargin | Margin between actors | Integer | Required | Any Positive Value |\r\n *\r\n * **Notes:**\r\n * Default value: 50\r\n */\r\n leftMargin: 150,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --- | --- | --- | --- | --- |\r\n * | width | Width of actor boxes | Integer | Required | Any Positive Value |\r\n *\r\n * **Notes:**\r\n * Default value: 150\r\n */\r\n width: 150,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --- | --- | --- | --- | --- |\r\n * | height | Height of actor boxes | Integer | Required | Any Positive Value |\r\n *\r\n * **Notes:**\r\n * Default value: 65\r\n */\r\n height: 50,\r\n\r\n /**\r\n *| Parameter | Description |Type | Required | Values|\r\n *| --- | --- | --- | --- | --- |\r\n *| boxMargin | Margin around loop boxes | Integer | Required | Any Positive Value |\r\n *\r\n * **Notes:**\r\n * Default value: 10\r\n */\r\n boxMargin: 10,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --- | --- | --- | --- | --- |\r\n * | boxTextMargin | Margin around the text in loop/alt/opt boxes | Integer | Required | Any Positive Value |\r\n *\r\n * **Notes:**\r\n * Default value: 5\r\n */\r\n boxTextMargin: 5,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --- | --- | --- | --- | --- |\r\n * | noteMargin | Margin around notes | Integer | Required | Any Positive Value |\r\n *\r\n * **Notes:**\r\n * Default value: 10\r\n */\r\n noteMargin: 10,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --- | --- | --- | --- | --- |\r\n * | messageMargin |Space between messages. | Integer | Required | Any Positive Value |\r\n *\r\n * **Notes:**\r\n *\r\n * Space between messages.\r\n *\r\n * Default value: 35\r\n */\r\n messageMargin: 35,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --- | --- | --- | --- | --- |\r\n * | messageAlign | Multiline message alignment | 3 | 4 | 'left', 'center', 'right' |\r\n *\r\n * **Notes:**\r\n * Default value: 'center'\r\n */\r\n messageAlign: 'center',\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --- | --- | --- | --- | --- |\r\n * | bottomMarginAdj | Prolongs the edge of the diagram downwards | Integer | 4 | Any Positive Value |\r\n *\r\n * **Notes:**\r\n *\r\n * Depending on css styling this might need adjustment.\r\n *\r\n * Default value: 1\r\n */\r\n bottomMarginAdj: 1,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --- | --- | --- | --- | --- |\r\n * | useMaxWidth | See notes | boolean | 4 | true, false |\r\n *\r\n * **Notes:**\r\n *\r\n * When this flag is set the height and width is set to 100% and is then scaling with the\r\n * available space if not the absolute space required is used.\r\n *\r\n * Default value: true\r\n */\r\n useMaxWidth: true,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --- | --- | --- | --- | --- |\r\n * | rightAngles | Curved Arrows become Right Angles | 3 | 4 | true, false |\r\n *\r\n * **Notes:**\r\n *\r\n * This will display arrows that start and begin at the same node as right angles, rather than a curves\r\n *\r\n * Default value: false\r\n */\r\n rightAngles: false,\r\n taskFontSize: 14,\r\n taskFontFamily: '\"Open-Sans\", \"sans-serif\"',\r\n taskMargin: 50,\r\n // width of activation box\r\n activationWidth: 10,\r\n\r\n // text placement as: tspan | fo | old only text as before\r\n textPlacement: 'fo',\r\n actorColours: ['#8FBC8F', '#7CFC00', '#00FFFF', '#20B2AA', '#B0E0E6', '#FFFFE0'],\r\n\r\n sectionFills: ['#191970', '#8B008B', '#4B0082', '#2F4F4F', '#800000', '#8B4513', '#00008B'],\r\n sectionColours: ['#fff'],\r\n },\r\n class: {\r\n arrowMarkerAbsolute: false,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --- | --- | --- | --- | --- |\r\n * | useMaxWidth | See notes | boolean | 4 | true, false |\r\n *\r\n * **Notes:**\r\n *\r\n * When this flag is set the height and width is set to 100% and is then scaling with the\r\n * available space if not the absolute space required is used.\r\n *\r\n * Default value: true\r\n */\r\n useMaxWidth: true,\r\n /**\r\n * | Parameter | Description | Type | Required | Values|\r\n * | --- | --- | --- | --- | --- |\r\n * | defaultRenderer | See notes | boolean | 4 | dagre-d3, dagre-wrapper |\r\n *\r\n ***Notes**:\r\n *\r\n * Decides which rendering engine that is to be used for the rendering. Legal values are:\r\n * dagre-d3\r\n * dagre-wrapper - wrapper for dagre implemented in mermaid\r\n *\r\n * Default value: 'dagre-d3'\r\n */\r\n defaultRenderer: 'dagre-wrapper',\r\n },\r\n git: {\r\n arrowMarkerAbsolute: false,\r\n\r\n useWidth: undefined,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --- | --- | --- | --- | --- |\r\n * | useMaxWidth | See notes | boolean | 4 | true, false |\r\n *\r\n * **Notes:**\r\n *\r\n * When this flag is set the height and width is set to 100% and is then scaling with the\r\n * available space if not the absolute space required is used.\r\n *\r\n * Default value: true\r\n */\r\n useMaxWidth: true,\r\n },\r\n state: {\r\n dividerMargin: 10,\r\n sizeUnit: 5,\r\n padding: 8,\r\n textHeight: 10,\r\n titleShift: -15,\r\n noteMargin: 10,\r\n forkWidth: 70,\r\n forkHeight: 7,\r\n // Used\r\n miniPadding: 2,\r\n // Font size factor, this is used to guess the width of the edges labels before rendering by dagre\r\n // layout. This might need updating if/when switching font\r\n fontSizeFactor: 5.02,\r\n fontSize: 24,\r\n labelHeight: 16,\r\n edgeLengthFactor: '20',\r\n compositTitleSize: 35,\r\n radius: 5,\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --- | --- | --- | --- | --- |\r\n * | useMaxWidth | See notes | boolean | 4 | true, false |\r\n *\r\n * **Notes:**\r\n *\r\n * When this flag is set the height and width is set to 100% and is then scaling with the\r\n * available space if not the absolute space required is used.\r\n *\r\n * Default value: true\r\n */\r\n useMaxWidth: true,\r\n /**\r\n * | Parameter | Description | Type | Required | Values|\r\n * | --- | --- | --- | --- | --- |\r\n * | defaultRenderer | See notes | boolean | 4 | dagre-d3, dagre-wrapper |\r\n *\r\n * **Notes:**\r\n *\r\n * Decides which rendering engine that is to be used for the rendering. Legal values are:\r\n * dagre-d3\r\n * dagre-wrapper - wrapper for dagre implemented in mermaid\r\n *\r\n * Default value: 'dagre-d3'\r\n */\r\n defaultRenderer: 'dagre-wrapper',\r\n },\r\n\r\n /**\r\n * The object containing configurations specific for entity relationship diagrams\r\n */\r\n er: {\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --- | --- | --- | --- | --- |\r\n * | diagramPadding | Amount of padding around the diagram as a whole | Integer | Required | Any Positive Value |\r\n *\r\n * **Notes:**\r\n *\r\n * The amount of padding around the diagram as a whole so that embedded diagrams have margins, expressed in pixels\r\n *\r\n * Default value: 20\r\n */\r\n diagramPadding: 20,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --- | --- | --- | --- | --- |\r\n * | layoutDirection | Directional bias for layout of entities. | string | Required | \"TB\", \"BT\", \"LR\", \"RL\" |\r\n *\r\n * **Notes:**\r\n *\r\n * 'TB' for Top-Bottom, 'BT'for Bottom-Top, 'LR' for Left-Right, or 'RL' for Right to Left.\r\n *\r\n * T = top, B = bottom, L = left, and R = right.\r\n *\r\n * Default value: 'TB'\r\n */\r\n layoutDirection: 'TB',\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --- | --- | --- | --- | --- |\r\n * | minEntityWidth | The minimum width of an entity box | Integer | Required | Any Positive Value |\r\n *\r\n * **Notes:**\r\n * Expressed in pixels.\r\n * Default value: 100\r\n */\r\n minEntityWidth: 100,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --- | --- | --- | --- | --- |\r\n * | minEntityHeight| The minimum height of an entity box | Integer | 4 | Any Positive Value |\r\n *\r\n * **Notes:**\r\n * Expressed in pixels\r\n * Default value: 75\r\n */\r\n minEntityHeight: 75,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --- | --- | --- | --- | --- |\r\n * | entityPadding | Minimum internal padding betweentext in box and box borders | Integer | 4 | Any Positive Value |\r\n *\r\n * **Notes:**\r\n *\r\n * The minimum internal padding betweentext in an entity box and the enclosing box borders, expressed in pixels.\r\n *\r\n * Default value: 15\r\n */\r\n entityPadding: 15,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --- | --- | --- | --- | --- |\r\n * | stroke | Stroke color of box edges and lines | string | 4 | Any recognized color |\r\n *\r\n * **Notes:**\r\n * Default value: 'gray'\r\n */\r\n stroke: 'gray',\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --- | --- | --- | --- | --- |\r\n * | fill | Fill color of entity boxes | string | 4 | Any recognized color |\r\n *\r\n * **Notes:**\r\n * Default value: 'honeydew'\r\n */\r\n fill: 'honeydew',\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --- | --- | --- | --- | --- |\r\n * | fontSize | Font Size in pixels | Integer | | Any Positive Value |\r\n *\r\n * **Notes:**\r\n *\r\n * Font size (expressed as an integer representing a number of pixels)\r\n * Default value: 12\r\n */\r\n fontSize: 12,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --- | --- | --- | --- | --- |\r\n * | useMaxWidth | See Notes | boolean | Required | true, false |\r\n *\r\n * **Notes:**\r\n *\r\n * When this flag is set to true, the diagram width is locked to 100% and\r\n * scaled based on available space. If set to false, the diagram reserves its\r\n * absolute width.\r\n *\r\n * Default value: true\r\n */\r\n useMaxWidth: true,\r\n },\r\n\r\n /**\r\n * The object containing configurations specific for pie diagrams\r\n */\r\n pie: {\r\n useWidth: undefined,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --- | --- | --- | --- | --- |\r\n * | useMaxWidth | See Notes | boolean | Required | true, false |\r\n *\r\n * **Notes:**\r\n *\r\n * When this flag is set to true, the diagram width is locked to 100% and\r\n * scaled based on available space. If set to false, the diagram reserves its\r\n * absolute width.\r\n *\r\n * Default value: true\r\n */\r\n useMaxWidth: true,\r\n },\r\n\r\n /**\r\n * The object containing configurations specific for req diagrams\r\n */\r\n requirement: {\r\n useWidth: undefined,\r\n\r\n /**\r\n * | Parameter | Description | Type | Required | Values |\r\n * | --- | --- | --- | --- | --- |\r\n * | useMaxWidth | See Notes | boolean | Required | true, false |\r\n *\r\n * **Notes:**\r\n *\r\n * When this flag is set to true, the diagram width is locked to 100% and\r\n * scaled based on available space. If set to false, the diagram reserves its\r\n * absolute width.\r\n *\r\n * Default value: true\r\n */\r\n useMaxWidth: true,\r\n\r\n rect_fill: '#f9f9f9',\r\n text_color: '#333',\r\n rect_border_size: '0.5px',\r\n rect_border_color: '#bbb',\r\n rect_min_width: 200,\r\n rect_min_height: 200,\r\n fontSize: 14,\r\n rect_padding: 10,\r\n line_height: 20,\r\n },\r\n};\r\n\r\nconfig.class.arrowMarkerAbsolute = config.arrowMarkerAbsolute;\r\nconfig.git.arrowMarkerAbsolute = config.arrowMarkerAbsolute;\r\n\r\nconst keyify = (obj, prefix = '') =>\r\n Object.keys(obj).reduce((res, el) => {\r\n if (Array.isArray(obj[el])) {\r\n return res;\r\n } else if (typeof obj[el] === 'object' && obj[el] !== null) {\r\n return [...res, prefix + el, ...keyify(obj[el], '')];\r\n }\r\n return [...res, prefix + el];\r\n }, []);\r\n\r\nexport const configKeys = keyify(config, '');\r\nexport default config;\r\n","import { select } from 'd3';\r\nimport { log } from '../../logger';\r\nimport * as configApi from '../../config';\r\nimport common from '../common/common';\r\nimport utils from '../../utils';\r\nimport mermaidAPI from '../../mermaidAPI';\r\n\r\nconst MERMAID_DOM_ID_PREFIX = 'classid-';\r\n\r\nlet relations = [];\r\nlet classes = {};\r\nlet classCounter = 0;\r\n\r\nlet funs = [];\r\n\r\nexport const parseDirective = function (statement, context, type) {\r\n mermaidAPI.parseDirective(this, statement, context, type);\r\n};\r\n\r\nconst splitClassNameAndType = function (id) {\r\n let genericType = '';\r\n let className = id;\r\n\r\n if (id.indexOf('~') > 0) {\r\n let split = id.split('~');\r\n className = split[0];\r\n\r\n genericType = split[1];\r\n }\r\n\r\n return { className: className, type: genericType };\r\n};\r\n\r\n/**\r\n * Function called by parser when a node definition has been found.\r\n *\r\n * @param id\r\n * @public\r\n */\r\nexport const addClass = function (id) {\r\n let classId = splitClassNameAndType(id);\r\n // Only add class if not exists\r\n if (typeof classes[classId.className] !== 'undefined') return;\r\n\r\n classes[classId.className] = {\r\n id: classId.className,\r\n type: classId.type,\r\n cssClasses: [],\r\n methods: [],\r\n members: [],\r\n annotations: [],\r\n domId: MERMAID_DOM_ID_PREFIX + classId.className + '-' + classCounter,\r\n };\r\n\r\n classCounter++;\r\n};\r\n\r\n/**\r\n * Function to lookup domId from id in the graph definition.\r\n *\r\n * @param id\r\n * @public\r\n */\r\nexport const lookUpDomId = function (id) {\r\n const classKeys = Object.keys(classes);\r\n for (let i = 0; i < classKeys.length; i++) {\r\n if (classes[classKeys[i]].id === id) {\r\n return classes[classKeys[i]].domId;\r\n }\r\n }\r\n};\r\n\r\nexport const clear = function () {\r\n relations = [];\r\n classes = {};\r\n funs = [];\r\n funs.push(setupToolTips);\r\n};\r\n\r\nexport const getClass = function (id) {\r\n return classes[id];\r\n};\r\nexport const getClasses = function () {\r\n return classes;\r\n};\r\n\r\nexport const getRelations = function () {\r\n return relations;\r\n};\r\n\r\nexport const addRelation = function (relation) {\r\n log.debug('Adding relation: ' + JSON.stringify(relation));\r\n addClass(relation.id1);\r\n addClass(relation.id2);\r\n\r\n relation.id1 = splitClassNameAndType(relation.id1).className;\r\n relation.id2 = splitClassNameAndType(relation.id2).className;\r\n\r\n relations.push(relation);\r\n};\r\n\r\n/**\r\n * Adds an annotation to the specified class\r\n * Annotations mark special properties of the given type (like 'interface' or 'service')\r\n *\r\n * @param className The class name\r\n * @param annotation The name of the annotation without any brackets\r\n * @public\r\n */\r\nexport const addAnnotation = function (className, annotation) {\r\n const validatedClassName = splitClassNameAndType(className).className;\r\n classes[validatedClassName].annotations.push(annotation);\r\n};\r\n\r\n/**\r\n * Adds a member to the specified class\r\n *\r\n * @param className The class name\r\n * @param member The full name of the member.\r\n * If the member is enclosed in <> it is treated as an annotation\r\n * If the member is ending with a closing bracket ) it is treated as a method\r\n * Otherwise the member will be treated as a normal property\r\n * @public\r\n */\r\nexport const addMember = function (className, member) {\r\n const validatedClassName = splitClassNameAndType(className).className;\r\n const theClass = classes[validatedClassName];\r\n\r\n if (typeof member === 'string') {\r\n // Member can contain white spaces, we trim them out\r\n const memberString = member.trim();\r\n\r\n if (memberString.startsWith('<<') && memberString.endsWith('>>')) {\r\n // Remove leading and trailing brackets\r\n theClass.annotations.push(memberString.substring(2, memberString.length - 2));\r\n } else if (memberString.indexOf(')') > 0) {\r\n theClass.methods.push(memberString);\r\n } else if (memberString) {\r\n theClass.members.push(memberString);\r\n }\r\n }\r\n};\r\n\r\nexport const addMembers = function (className, members) {\r\n if (Array.isArray(members)) {\r\n members.reverse();\r\n members.forEach((member) => addMember(className, member));\r\n }\r\n};\r\n\r\nexport const cleanupLabel = function (label) {\r\n if (label.substring(0, 1) === ':') {\r\n return label.substr(1).trim();\r\n } else {\r\n return label.trim();\r\n }\r\n};\r\n\r\n/**\r\n * Called by parser when a special node is found, e.g. a clickable element.\r\n *\r\n * @param ids Comma separated list of ids\r\n * @param className Class to add\r\n */\r\nexport const setCssClass = function (ids, className) {\r\n ids.split(',').forEach(function (_id) {\r\n let id = _id;\r\n if (_id[0].match(/\\d/)) id = MERMAID_DOM_ID_PREFIX + id;\r\n if (typeof classes[id] !== 'undefined') {\r\n classes[id].cssClasses.push(className);\r\n }\r\n });\r\n};\r\n\r\n/**\r\n * Called by parser when a tooltip is found, e.g. a clickable element.\r\n *\r\n * @param ids Comma separated list of ids\r\n * @param tooltip Tooltip to add\r\n */\r\nconst setTooltip = function (ids, tooltip) {\r\n const config = configApi.getConfig();\r\n ids.split(',').forEach(function (id) {\r\n if (typeof tooltip !== 'undefined') {\r\n classes[id].tooltip = common.sanitizeText(tooltip, config);\r\n }\r\n });\r\n};\r\n\r\n/**\r\n * Called by parser when a link is found. Adds the URL to the vertex data.\r\n *\r\n * @param ids Comma separated list of ids\r\n * @param linkStr URL to create a link for\r\n * @param target Target of the link, _blank by default as originally defined in the svgDraw.js file\r\n */\r\nexport const setLink = function (ids, linkStr, target) {\r\n const config = configApi.getConfig();\r\n ids.split(',').forEach(function (_id) {\r\n let id = _id;\r\n if (_id[0].match(/\\d/)) id = MERMAID_DOM_ID_PREFIX + id;\r\n if (typeof classes[id] !== 'undefined') {\r\n classes[id].link = utils.formatUrl(linkStr, config);\r\n if (typeof target === 'string') {\r\n classes[id].linkTarget = target;\r\n } else {\r\n classes[id].linkTarget = '_blank';\r\n }\r\n }\r\n });\r\n setCssClass(ids, 'clickable');\r\n};\r\n\r\n/**\r\n * Called by parser when a click definition is found. Registers an event handler.\r\n *\r\n * @param ids Comma separated list of ids\r\n * @param functionName Function to be called on click\r\n * @param functionArgs Function args the function should be called with\r\n */\r\nexport const setClickEvent = function (ids, functionName, functionArgs) {\r\n ids.split(',').forEach(function (id) {\r\n setClickFunc(id, functionName, functionArgs);\r\n classes[id].haveCallback = true;\r\n });\r\n setCssClass(ids, 'clickable');\r\n};\r\n\r\nconst setClickFunc = function (domId, functionName, functionArgs) {\r\n const config = configApi.getConfig();\r\n let id = domId;\r\n let elemId = lookUpDomId(id);\r\n\r\n if (config.securityLevel !== 'loose') {\r\n return;\r\n }\r\n if (typeof functionName === 'undefined') {\r\n return;\r\n }\r\n if (typeof classes[id] !== 'undefined') {\r\n let argList = [];\r\n if (typeof functionArgs === 'string') {\r\n /* Splits functionArgs by ',', ignoring all ',' in double quoted strings */\r\n argList = functionArgs.split(/,(?=(?:(?:[^\"]*\"){2})*[^\"]*$)/);\r\n for (let i = 0; i < argList.length; i++) {\r\n let item = argList[i].trim();\r\n /* Removes all double quotes at the start and end of an argument */\r\n /* This preserves all starting and ending whitespace inside */\r\n if (item.charAt(0) === '\"' && item.charAt(item.length - 1) === '\"') {\r\n item = item.substr(1, item.length - 2);\r\n }\r\n argList[i] = item;\r\n }\r\n }\r\n\r\n /* if no arguments passed into callback, default to passing in id */\r\n if (argList.length === 0) {\r\n argList.push(elemId);\r\n }\r\n\r\n funs.push(function () {\r\n const elem = document.querySelector(`[id=\"${elemId}\"]`);\r\n if (elem !== null) {\r\n elem.addEventListener(\r\n 'click',\r\n function () {\r\n utils.runFunc(functionName, ...argList);\r\n },\r\n false\r\n );\r\n }\r\n });\r\n }\r\n};\r\n\r\nexport const bindFunctions = function (element) {\r\n funs.forEach(function (fun) {\r\n fun(element);\r\n });\r\n};\r\n\r\nexport const lineType = {\r\n LINE: 0,\r\n DOTTED_LINE: 1,\r\n};\r\n\r\nexport const relationType = {\r\n AGGREGATION: 0,\r\n EXTENSION: 1,\r\n COMPOSITION: 2,\r\n DEPENDENCY: 3,\r\n};\r\n\r\nconst setupToolTips = function (element) {\r\n let tooltipElem = select('.mermaidTooltip');\r\n if ((tooltipElem._groups || tooltipElem)[0][0] === null) {\r\n tooltipElem = select('body').append('div').attr('class', 'mermaidTooltip').style('opacity', 0);\r\n }\r\n\r\n const svg = select(element).select('svg');\r\n\r\n const nodes = svg.selectAll('g.node');\r\n nodes\r\n .on('mouseover', function () {\r\n const el = select(this);\r\n const title = el.attr('title');\r\n // Dont try to draw a tooltip if no data is provided\r\n if (title === null) {\r\n return;\r\n }\r\n const rect = this.getBoundingClientRect();\r\n\r\n tooltipElem.transition().duration(200).style('opacity', '.9');\r\n tooltipElem\r\n .html(el.attr('title'))\r\n .style('left', window.scrollX + rect.left + (rect.right - rect.left) / 2 + 'px')\r\n .style('top', window.scrollY + rect.top - 14 + document.body.scrollTop + 'px');\r\n el.classed('hover', true);\r\n })\r\n .on('mouseout', function () {\r\n tooltipElem.transition().duration(500).style('opacity', 0);\r\n const el = select(this);\r\n el.classed('hover', false);\r\n });\r\n};\r\nfuns.push(setupToolTips);\r\n\r\nlet direction = 'TB';\r\nconst getDirection = () => direction;\r\nconst setDirection = (dir) => {\r\n direction = dir;\r\n};\r\n\r\nexport default {\r\n parseDirective,\r\n getConfig: () => configApi.getConfig().class,\r\n addClass,\r\n bindFunctions,\r\n clear,\r\n getClass,\r\n getClasses,\r\n addAnnotation,\r\n getRelations,\r\n addRelation,\r\n getDirection,\r\n setDirection,\r\n addMember,\r\n addMembers,\r\n cleanupLabel,\r\n lineType,\r\n relationType,\r\n setClickEvent,\r\n setCssClass,\r\n setLink,\r\n setTooltip,\r\n lookUpDomId,\r\n};\r\n","import { select } from 'd3';\r\nimport dagre from 'dagre';\r\nimport graphlib from 'graphlib';\r\nimport { log } from '../../logger';\r\nimport classDb, { lookUpDomId } from './classDb';\r\nimport { parser } from './parser/classDiagram';\r\nimport svgDraw from './svgDraw';\r\nimport { getConfig } from '../../config';\r\nimport { render } from '../../dagre-wrapper/index.js';\r\n// import addHtmlLabel from 'dagre-d3/lib/label/add-html-label.js';\r\nimport { curveLinear } from 'd3';\r\nimport { interpolateToCurve, getStylesFromArray, configureSvgSize } from '../../utils';\r\nimport common from '../common/common';\r\n\r\nparser.yy = classDb;\r\n\r\nlet idCache = {};\r\nconst padding = 20;\r\n\r\nconst conf = {\r\n dividerMargin: 10,\r\n padding: 5,\r\n textHeight: 10,\r\n};\r\n\r\n/**\r\n * Function that adds the vertices found during parsing to the graph to be rendered.\r\n *\r\n * @param classes\r\n * @param g The graph that is to be drawn.\r\n */\r\nexport const addClasses = function (classes, g) {\r\n // const svg = select(`[id=\"${svgId}\"]`);\r\n const keys = Object.keys(classes);\r\n log.info('keys:', keys);\r\n log.info(classes);\r\n\r\n // Iterate through each item in the vertex object (containing all the vertices found) in the graph definition\r\n keys.forEach(function (id) {\r\n const vertex = classes[id];\r\n\r\n /**\r\n * Variable for storing the classes for the vertex\r\n *\r\n * @type {string}\r\n */\r\n let cssClassStr = '';\r\n if (vertex.cssClasses.length > 0) {\r\n cssClassStr = cssClassStr + ' ' + vertex.cssClasses.join(' ');\r\n }\r\n // if (vertex.classes.length > 0) {\r\n // classStr = vertex.classes.join(' ');\r\n // }\r\n\r\n const styles = { labelStyle: '' }; //getStylesFromArray(vertex.styles);\r\n\r\n // Use vertex id as text in the box if no text is provided by the graph definition\r\n let vertexText = vertex.text !== undefined ? vertex.text : vertex.id;\r\n\r\n // We create a SVG label, either by delegating to addHtmlLabel or manually\r\n // let vertexNode;\r\n // if (evaluate(getConfig().flowchart.htmlLabels)) {\r\n // const node = {\r\n // label: vertexText.replace(\r\n // /fa[lrsb]?:fa-[\\w-]+/g,\r\n // s => ``\r\n // )\r\n // };\r\n // vertexNode = addHtmlLabel(svg, node).node();\r\n // vertexNode.parentNode.removeChild(vertexNode);\r\n // } else {\r\n // const svgLabel = document.createElementNS('http://www.w3.org/2000/svg', 'text');\r\n // svgLabel.setAttribute('style', styles.labelStyle.replace('color:', 'fill:'));\r\n\r\n // const rows = vertexText.split(common.lineBreakRegex);\r\n\r\n // for (let j = 0; j < rows.length; j++) {\r\n // const tspan = document.createElementNS('http://www.w3.org/2000/svg', 'tspan');\r\n // tspan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\r\n // tspan.setAttribute('dy', '1em');\r\n // tspan.setAttribute('x', '1');\r\n // tspan.textContent = rows[j];\r\n // svgLabel.appendChild(tspan);\r\n // }\r\n // vertexNode = svgLabel;\r\n // }\r\n\r\n let radious = 0;\r\n let _shape = '';\r\n // Set the shape based parameters\r\n switch (vertex.type) {\r\n case 'class':\r\n _shape = 'class_box';\r\n break;\r\n default:\r\n _shape = 'class_box';\r\n }\r\n // Add the node\r\n g.setNode(vertex.id, {\r\n labelStyle: styles.labelStyle,\r\n shape: _shape,\r\n labelText: vertexText,\r\n classData: vertex,\r\n rx: radious,\r\n ry: radious,\r\n class: cssClassStr,\r\n style: styles.style,\r\n id: vertex.id,\r\n domId: vertex.domId,\r\n haveCallback: vertex.haveCallback,\r\n link: vertex.link,\r\n width: vertex.type === 'group' ? 500 : undefined,\r\n type: vertex.type,\r\n padding: getConfig().flowchart.padding,\r\n });\r\n\r\n log.info('setNode', {\r\n labelStyle: styles.labelStyle,\r\n shape: _shape,\r\n labelText: vertexText,\r\n rx: radious,\r\n ry: radious,\r\n class: cssClassStr,\r\n style: styles.style,\r\n id: vertex.id,\r\n width: vertex.type === 'group' ? 500 : undefined,\r\n type: vertex.type,\r\n padding: getConfig().flowchart.padding,\r\n });\r\n });\r\n};\r\n\r\n/**\r\n * Add edges to graph based on parsed graph defninition\r\n *\r\n * @param relations\r\n * @param {object} g The graph object\r\n */\r\nexport const addRelations = function (relations, g) {\r\n let cnt = 0;\r\n\r\n let defaultStyle;\r\n let defaultLabelStyle;\r\n\r\n // if (typeof relations.defaultStyle !== 'undefined') {\r\n // const defaultStyles = getStylesFromArray(relations.defaultStyle);\r\n // defaultStyle = defaultStyles.style;\r\n // defaultLabelStyle = defaultStyles.labelStyle;\r\n // }\r\n\r\n relations.forEach(function (edge) {\r\n cnt++;\r\n const edgeData = {};\r\n //Set relationship style and line type\r\n edgeData.classes = 'relation';\r\n edgeData.pattern = edge.relation.lineType == 1 ? 'dashed' : 'solid';\r\n\r\n edgeData.id = 'id' + cnt;\r\n // Set link type for rendering\r\n if (edge.type === 'arrow_open') {\r\n edgeData.arrowhead = 'none';\r\n } else {\r\n edgeData.arrowhead = 'normal';\r\n }\r\n\r\n log.info(edgeData, edge);\r\n //Set edge extra labels\r\n //edgeData.startLabelLeft = edge.relationTitle1;\r\n edgeData.startLabelRight = edge.relationTitle1 === 'none' ? '' : edge.relationTitle1;\r\n edgeData.endLabelLeft = edge.relationTitle2 === 'none' ? '' : edge.relationTitle2;\r\n //edgeData.endLabelRight = edge.relationTitle2;\r\n\r\n //Set relation arrow types\r\n edgeData.arrowTypeStart = getArrowMarker(edge.relation.type1);\r\n edgeData.arrowTypeEnd = getArrowMarker(edge.relation.type2);\r\n let style = '';\r\n let labelStyle = '';\r\n\r\n if (typeof edge.style !== 'undefined') {\r\n const styles = getStylesFromArray(edge.style);\r\n style = styles.style;\r\n labelStyle = styles.labelStyle;\r\n } else {\r\n style = 'fill:none';\r\n if (typeof defaultStyle !== 'undefined') {\r\n style = defaultStyle;\r\n }\r\n if (typeof defaultLabelStyle !== 'undefined') {\r\n labelStyle = defaultLabelStyle;\r\n }\r\n }\r\n\r\n edgeData.style = style;\r\n edgeData.labelStyle = labelStyle;\r\n\r\n if (typeof edge.interpolate !== 'undefined') {\r\n edgeData.curve = interpolateToCurve(edge.interpolate, curveLinear);\r\n } else if (typeof relations.defaultInterpolate !== 'undefined') {\r\n edgeData.curve = interpolateToCurve(relations.defaultInterpolate, curveLinear);\r\n } else {\r\n edgeData.curve = interpolateToCurve(conf.curve, curveLinear);\r\n }\r\n\r\n edge.text = edge.title;\r\n if (typeof edge.text === 'undefined') {\r\n if (typeof edge.style !== 'undefined') {\r\n edgeData.arrowheadStyle = 'fill: #333';\r\n }\r\n } else {\r\n edgeData.arrowheadStyle = 'fill: #333';\r\n edgeData.labelpos = 'c';\r\n\r\n if (getConfig().flowchart.htmlLabels) { // eslint-disable-line\r\n edgeData.labelType = 'html';\r\n edgeData.label = '' + edge.text + '';\r\n } else {\r\n edgeData.labelType = 'text';\r\n edgeData.label = edge.text.replace(common.lineBreakRegex, '\\n');\r\n\r\n if (typeof edge.style === 'undefined') {\r\n edgeData.style = edgeData.style || 'stroke: #333; stroke-width: 1.5px;fill:none';\r\n }\r\n\r\n edgeData.labelStyle = edgeData.labelStyle.replace('color:', 'fill:');\r\n }\r\n }\r\n // Add the edge to the graph\r\n g.setEdge(edge.id1, edge.id2, edgeData, cnt);\r\n });\r\n};\r\n\r\n// Todo optimize\r\nconst getGraphId = function (label) {\r\n const keys = Object.keys(idCache);\r\n\r\n for (let i = 0; i < keys.length; i++) {\r\n if (idCache[keys[i]].label === label) {\r\n return keys[i];\r\n }\r\n }\r\n\r\n return undefined;\r\n};\r\n\r\nexport const setConf = function (cnf) {\r\n const keys = Object.keys(cnf);\r\n\r\n keys.forEach(function (key) {\r\n conf[key] = cnf[key];\r\n });\r\n};\r\n\r\n/**\r\n * Draws a flowchart in the tag with id: id based on the graph definition in text.\r\n *\r\n * @param text\r\n * @param id\r\n */\r\nexport const drawOld = function (text, id) {\r\n idCache = {};\r\n parser.yy.clear();\r\n parser.parse(text);\r\n\r\n log.info('Rendering diagram ' + text);\r\n\r\n // Fetch the default direction, use TD if none was found\r\n const diagram = select(`[id='${id}']`);\r\n // insertMarkers(diagram);\r\n\r\n // Layout graph, Create a new directed graph\r\n const g = new graphlib.Graph({\r\n multigraph: true,\r\n });\r\n\r\n // Set an object for the graph label\r\n g.setGraph({\r\n isMultiGraph: true,\r\n });\r\n\r\n // Default to assigning a new object as a label for each new edge.\r\n g.setDefaultEdgeLabel(function () {\r\n return {};\r\n });\r\n\r\n const classes = classDb.getClasses();\r\n log.info('classes:');\r\n log.info(classes);\r\n const keys = Object.keys(classes);\r\n for (let i = 0; i < keys.length; i++) {\r\n const classDef = classes[keys[i]];\r\n const node = svgDraw.drawClass(diagram, classDef, conf);\r\n idCache[node.id] = node;\r\n\r\n // Add nodes to the graph. The first argument is the node id. The second is\r\n // metadata about the node. In this case we're going to add labels to each of\r\n // our nodes.\r\n g.setNode(node.id, node);\r\n\r\n log.info('Org height: ' + node.height);\r\n }\r\n\r\n const relations = classDb.getRelations();\r\n log.info('relations:', relations);\r\n relations.forEach(function (relation) {\r\n log.info(\r\n 'tjoho' + getGraphId(relation.id1) + getGraphId(relation.id2) + JSON.stringify(relation)\r\n );\r\n g.setEdge(\r\n getGraphId(relation.id1),\r\n getGraphId(relation.id2),\r\n {\r\n relation: relation,\r\n },\r\n relation.title || 'DEFAULT'\r\n );\r\n });\r\n\r\n dagre.layout(g);\r\n g.nodes().forEach(function (v) {\r\n if (typeof v !== 'undefined' && typeof g.node(v) !== 'undefined') {\r\n log.debug('Node ' + v + ': ' + JSON.stringify(g.node(v)));\r\n select('#' + lookUpDomId(v)).attr(\r\n 'transform',\r\n 'translate(' +\r\n (g.node(v).x - g.node(v).width / 2) +\r\n ',' +\r\n (g.node(v).y - g.node(v).height / 2) +\r\n ' )'\r\n );\r\n }\r\n });\r\n\r\n g.edges().forEach(function (e) {\r\n if (typeof e !== 'undefined' && typeof g.edge(e) !== 'undefined') {\r\n log.debug('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(g.edge(e)));\r\n svgDraw.drawEdge(diagram, g.edge(e), g.edge(e).relation, conf);\r\n }\r\n });\r\n\r\n const svgBounds = diagram.node().getBBox();\r\n const width = svgBounds.width + padding * 2;\r\n const height = svgBounds.height + padding * 2;\r\n\r\n configureSvgSize(diagram, height, width, conf.useMaxWidth);\r\n\r\n // Ensure the viewBox includes the whole svgBounds area with extra space for padding\r\n const vBox = `${svgBounds.x - padding} ${svgBounds.y - padding} ${width} ${height}`;\r\n log.debug(`viewBox ${vBox}`);\r\n diagram.attr('viewBox', vBox);\r\n};\r\n\r\nexport const draw = function (text, id) {\r\n log.info('Drawing class');\r\n classDb.clear();\r\n // const parser = classDb.parser;\r\n // parser.yy = classDb;\r\n\r\n // Parse the graph definition\r\n // try {\r\n parser.parse(text);\r\n // } catch (err) {\r\n // log.debug('Parsing failed');\r\n // }\r\n\r\n // Fetch the default direction, use TD if none was found\r\n //let dir = 'TD';\r\n\r\n const conf = getConfig().flowchart;\r\n log.info('config:', conf);\r\n const nodeSpacing = conf.nodeSpacing || 50;\r\n const rankSpacing = conf.rankSpacing || 50;\r\n\r\n // Create the input mermaid.graph\r\n const g = new graphlib.Graph({\r\n multigraph: true,\r\n compound: true,\r\n })\r\n .setGraph({\r\n rankdir: classDb.getDirection(),\r\n nodesep: nodeSpacing,\r\n ranksep: rankSpacing,\r\n marginx: 8,\r\n marginy: 8,\r\n })\r\n .setDefaultEdgeLabel(function () {\r\n return {};\r\n });\r\n\r\n // let subG;\r\n // const subGraphs = flowDb.getSubGraphs();\r\n // log.info('Subgraphs - ', subGraphs);\r\n // for (let i = subGraphs.length - 1; i >= 0; i--) {\r\n // subG = subGraphs[i];\r\n // log.info('Subgraph - ', subG);\r\n // flowDb.addVertex(subG.id, subG.title, 'group', undefined, subG.classes);\r\n // }\r\n\r\n // Fetch the verices/nodes and edges/links from the parsed graph definition\r\n const classes = classDb.getClasses();\r\n const relations = classDb.getRelations();\r\n\r\n log.info(relations);\r\n // let i = 0;\r\n // for (i = subGraphs.length - 1; i >= 0; i--) {\r\n // subG = subGraphs[i];\r\n\r\n // selectAll('cluster').append('text');\r\n\r\n // for (let j = 0; j < subG.nodes.length; j++) {\r\n // g.setParent(subG.nodes[j], subG.id);\r\n // }\r\n // }\r\n addClasses(classes, g, id);\r\n addRelations(relations, g);\r\n\r\n // Add custom shapes\r\n // flowChartShapes.addToRenderV2(addShape);\r\n\r\n // Set up an SVG group so that we can translate the final graph.\r\n const svg = select(`[id=\"${id}\"]`);\r\n svg.attr('xmlns:xlink', 'http://www.w3.org/1999/xlink');\r\n\r\n // Run the renderer. This is what draws the final graph.\r\n const element = select('#' + id + ' g');\r\n render(element, g, ['aggregation', 'extension', 'composition', 'dependency'], 'classDiagram', id);\r\n\r\n // element.selectAll('g.node').attr('title', function() {\r\n // return flowDb.getTooltip(this.id);\r\n // });\r\n\r\n const padding = 8;\r\n const svgBounds = svg.node().getBBox();\r\n const width = svgBounds.width + padding * 2;\r\n const height = svgBounds.height + padding * 2;\r\n log.debug(\r\n `new ViewBox 0 0 ${width} ${height}`,\r\n `translate(${padding - g._label.marginx}, ${padding - g._label.marginy})`\r\n );\r\n\r\n configureSvgSize(svg, height, width, conf.useMaxWidth);\r\n\r\n svg.attr('viewBox', `0 0 ${width} ${height}`);\r\n svg\r\n .select('g')\r\n .attr('transform', `translate(${padding - g._label.marginx}, ${padding - svgBounds.y})`);\r\n\r\n // Index nodes\r\n // flowDb.indexNodes('subGraph' + i);\r\n\r\n // Add label rects for non html labels\r\n if (!conf.htmlLabels) {\r\n const labels = document.querySelectorAll('[id=\"' + id + '\"] .edgeLabel .label');\r\n for (let k = 0; k < labels.length; k++) {\r\n const label = labels[k];\r\n\r\n // Get dimensions of label\r\n const dim = label.getBBox();\r\n\r\n const rect = document.createElementNS('http://www.w3.org/2000/svg', 'rect');\r\n rect.setAttribute('rx', 0);\r\n rect.setAttribute('ry', 0);\r\n rect.setAttribute('width', dim.width);\r\n rect.setAttribute('height', dim.height);\r\n // rect.setAttribute('style', 'fill:#e8e8e8;');\r\n\r\n label.insertBefore(rect, label.firstChild);\r\n }\r\n }\r\n\r\n // If node has a link, wrap it in an anchor SVG object.\r\n // const keys = Object.keys(classes);\r\n // keys.forEach(function(key) {\r\n // const vertex = classes[key];\r\n\r\n // if (vertex.link) {\r\n // const node = select('#' + id + ' [id=\"' + key + '\"]');\r\n // if (node) {\r\n // const link = document.createElementNS('http://www.w3.org/2000/svg', 'a');\r\n // link.setAttributeNS('http://www.w3.org/2000/svg', 'class', vertex.classes.join(' '));\r\n // link.setAttributeNS('http://www.w3.org/2000/svg', 'href', vertex.link);\r\n // link.setAttributeNS('http://www.w3.org/2000/svg', 'rel', 'noopener');\r\n\r\n // const linkNode = node.insert(function() {\r\n // return link;\r\n // }, ':first-child');\r\n\r\n // const shape = node.select('.label-container');\r\n // if (shape) {\r\n // linkNode.append(function() {\r\n // return shape.node();\r\n // });\r\n // }\r\n\r\n // const label = node.select('.label');\r\n // if (label) {\r\n // linkNode.append(function() {\r\n // return label.node();\r\n // });\r\n // }\r\n // }\r\n // }\r\n // });\r\n};\r\n\r\nexport default {\r\n setConf,\r\n draw,\r\n};\r\n/**\r\n * @param type\r\n */\r\nfunction getArrowMarker(type) {\r\n let marker;\r\n switch (type) {\r\n case 0:\r\n marker = 'aggregation';\r\n break;\r\n case 1:\r\n marker = 'extension';\r\n break;\r\n case 2:\r\n marker = 'composition';\r\n break;\r\n case 3:\r\n marker = 'dependency';\r\n break;\r\n default:\r\n marker = 'none';\r\n }\r\n return marker;\r\n}\r\n","import { select } from 'd3';\r\nimport dagre from 'dagre';\r\nimport graphlib from 'graphlib';\r\nimport { log } from '../../logger';\r\nimport classDb, { lookUpDomId } from './classDb';\r\nimport { parser } from './parser/classDiagram';\r\nimport svgDraw from './svgDraw';\r\nimport { configureSvgSize } from '../../utils';\r\n\r\nparser.yy = classDb;\r\n\r\nlet idCache = {};\r\nconst padding = 20;\r\n\r\nconst conf = {\r\n dividerMargin: 10,\r\n padding: 5,\r\n textHeight: 10,\r\n};\r\n\r\n// Todo optimize\r\nconst getGraphId = function (label) {\r\n const keys = Object.keys(idCache);\r\n\r\n for (let i = 0; i < keys.length; i++) {\r\n if (idCache[keys[i]].label === label) {\r\n return keys[i];\r\n }\r\n }\r\n\r\n return undefined;\r\n};\r\n\r\n/**\r\n * Setup arrow head and define the marker. The result is appended to the svg.\r\n *\r\n * @param elem\r\n */\r\nconst insertMarkers = function (elem) {\r\n elem\r\n .append('defs')\r\n .append('marker')\r\n .attr('id', 'extensionStart')\r\n .attr('class', 'extension')\r\n .attr('refX', 0)\r\n .attr('refY', 7)\r\n .attr('markerWidth', 190)\r\n .attr('markerHeight', 240)\r\n .attr('orient', 'auto')\r\n .append('path')\r\n .attr('d', 'M 1,7 L18,13 V 1 Z');\r\n\r\n elem\r\n .append('defs')\r\n .append('marker')\r\n .attr('id', 'extensionEnd')\r\n .attr('refX', 19)\r\n .attr('refY', 7)\r\n .attr('markerWidth', 20)\r\n .attr('markerHeight', 28)\r\n .attr('orient', 'auto')\r\n .append('path')\r\n .attr('d', 'M 1,1 V 13 L18,7 Z'); // this is actual shape for arrowhead\r\n\r\n elem\r\n .append('defs')\r\n .append('marker')\r\n .attr('id', 'compositionStart')\r\n .attr('class', 'extension')\r\n .attr('refX', 0)\r\n .attr('refY', 7)\r\n .attr('markerWidth', 190)\r\n .attr('markerHeight', 240)\r\n .attr('orient', 'auto')\r\n .append('path')\r\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\r\n\r\n elem\r\n .append('defs')\r\n .append('marker')\r\n .attr('id', 'compositionEnd')\r\n .attr('refX', 19)\r\n .attr('refY', 7)\r\n .attr('markerWidth', 20)\r\n .attr('markerHeight', 28)\r\n .attr('orient', 'auto')\r\n .append('path')\r\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\r\n\r\n elem\r\n .append('defs')\r\n .append('marker')\r\n .attr('id', 'aggregationStart')\r\n .attr('class', 'extension')\r\n .attr('refX', 0)\r\n .attr('refY', 7)\r\n .attr('markerWidth', 190)\r\n .attr('markerHeight', 240)\r\n .attr('orient', 'auto')\r\n .append('path')\r\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\r\n\r\n elem\r\n .append('defs')\r\n .append('marker')\r\n .attr('id', 'aggregationEnd')\r\n .attr('refX', 19)\r\n .attr('refY', 7)\r\n .attr('markerWidth', 20)\r\n .attr('markerHeight', 28)\r\n .attr('orient', 'auto')\r\n .append('path')\r\n .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\r\n\r\n elem\r\n .append('defs')\r\n .append('marker')\r\n .attr('id', 'dependencyStart')\r\n .attr('class', 'extension')\r\n .attr('refX', 0)\r\n .attr('refY', 7)\r\n .attr('markerWidth', 190)\r\n .attr('markerHeight', 240)\r\n .attr('orient', 'auto')\r\n .append('path')\r\n .attr('d', 'M 5,7 L9,13 L1,7 L9,1 Z');\r\n\r\n elem\r\n .append('defs')\r\n .append('marker')\r\n .attr('id', 'dependencyEnd')\r\n .attr('refX', 19)\r\n .attr('refY', 7)\r\n .attr('markerWidth', 20)\r\n .attr('markerHeight', 28)\r\n .attr('orient', 'auto')\r\n .append('path')\r\n .attr('d', 'M 18,7 L9,13 L14,7 L9,1 Z');\r\n};\r\n\r\nexport const setConf = function (cnf) {\r\n const keys = Object.keys(cnf);\r\n\r\n keys.forEach(function (key) {\r\n conf[key] = cnf[key];\r\n });\r\n};\r\n\r\n/**\r\n * Draws a flowchart in the tag with id: id based on the graph definition in text.\r\n *\r\n * @param text\r\n * @param id\r\n */\r\nexport const draw = function (text, id) {\r\n idCache = {};\r\n parser.yy.clear();\r\n parser.parse(text);\r\n\r\n log.info('Rendering diagram ' + text);\r\n\r\n // Fetch the default direction, use TD if none was found\r\n const diagram = select(`[id='${id}']`);\r\n diagram.attr('xmlns:xlink', 'http://www.w3.org/1999/xlink');\r\n insertMarkers(diagram);\r\n\r\n // Layout graph, Create a new directed graph\r\n const g = new graphlib.Graph({\r\n multigraph: true,\r\n });\r\n\r\n // Set an object for the graph label\r\n g.setGraph({\r\n isMultiGraph: true,\r\n });\r\n\r\n // Default to assigning a new object as a label for each new edge.\r\n g.setDefaultEdgeLabel(function () {\r\n return {};\r\n });\r\n\r\n const classes = classDb.getClasses();\r\n const keys = Object.keys(classes);\r\n\r\n for (let i = 0; i < keys.length; i++) {\r\n const classDef = classes[keys[i]];\r\n const node = svgDraw.drawClass(diagram, classDef, conf);\r\n idCache[node.id] = node;\r\n\r\n // Add nodes to the graph. The first argument is the node id. The second is\r\n // metadata about the node. In this case we're going to add labels to each of\r\n // our nodes.\r\n g.setNode(node.id, node);\r\n\r\n log.info('Org height: ' + node.height);\r\n }\r\n\r\n const relations = classDb.getRelations();\r\n relations.forEach(function (relation) {\r\n log.info(\r\n 'tjoho' + getGraphId(relation.id1) + getGraphId(relation.id2) + JSON.stringify(relation)\r\n );\r\n g.setEdge(\r\n getGraphId(relation.id1),\r\n getGraphId(relation.id2),\r\n {\r\n relation: relation,\r\n },\r\n relation.title || 'DEFAULT'\r\n );\r\n });\r\n\r\n dagre.layout(g);\r\n g.nodes().forEach(function (v) {\r\n if (typeof v !== 'undefined' && typeof g.node(v) !== 'undefined') {\r\n log.debug('Node ' + v + ': ' + JSON.stringify(g.node(v)));\r\n select('#' + lookUpDomId(v)).attr(\r\n 'transform',\r\n 'translate(' +\r\n (g.node(v).x - g.node(v).width / 2) +\r\n ',' +\r\n (g.node(v).y - g.node(v).height / 2) +\r\n ' )'\r\n );\r\n }\r\n });\r\n\r\n g.edges().forEach(function (e) {\r\n if (typeof e !== 'undefined' && typeof g.edge(e) !== 'undefined') {\r\n log.debug('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(g.edge(e)));\r\n svgDraw.drawEdge(diagram, g.edge(e), g.edge(e).relation, conf);\r\n }\r\n });\r\n\r\n const svgBounds = diagram.node().getBBox();\r\n const width = svgBounds.width + padding * 2;\r\n const height = svgBounds.height + padding * 2;\r\n\r\n configureSvgSize(diagram, height, width, conf.useMaxWidth);\r\n\r\n // Ensure the viewBox includes the whole svgBounds area with extra space for padding\r\n const vBox = `${svgBounds.x - padding} ${svgBounds.y - padding} ${width} ${height}`;\r\n log.debug(`viewBox ${vBox}`);\r\n diagram.attr('viewBox', vBox);\r\n};\r\n\r\nexport default {\r\n setConf,\r\n draw,\r\n};\r\n","const getStyles = (options) =>\r\n `g.classGroup text {\r\n fill: ${options.nodeBorder};\r\n fill: ${options.classText};\r\n stroke: none;\r\n font-family: ${options.fontFamily};\r\n font-size: 10px;\r\n\r\n .title {\r\n font-weight: bolder;\r\n }\r\n\r\n}\r\n\r\n.nodeLabel, .edgeLabel {\r\n color: ${options.classText};\r\n}\r\n.edgeLabel .label rect {\r\n fill: ${options.mainBkg};\r\n}\r\n.label text {\r\n fill: ${options.classText};\r\n}\r\n.edgeLabel .label span {\r\n background: ${options.mainBkg};\r\n}\r\n\r\n.classTitle {\r\n font-weight: bolder;\r\n}\r\n.node rect,\r\n .node circle,\r\n .node ellipse,\r\n .node polygon,\r\n .node path {\r\n fill: ${options.mainBkg};\r\n stroke: ${options.nodeBorder};\r\n stroke-width: 1px;\r\n }\r\n\r\n\r\n.divider {\r\n stroke: ${options.nodeBorder};\r\n stroke: 1;\r\n}\r\n\r\ng.clickable {\r\n cursor: pointer;\r\n}\r\n\r\ng.classGroup rect {\r\n fill: ${options.mainBkg};\r\n stroke: ${options.nodeBorder};\r\n}\r\n\r\ng.classGroup line {\r\n stroke: ${options.nodeBorder};\r\n stroke-width: 1;\r\n}\r\n\r\n.classLabel .box {\r\n stroke: none;\r\n stroke-width: 0;\r\n fill: ${options.mainBkg};\r\n opacity: 0.5;\r\n}\r\n\r\n.classLabel .label {\r\n fill: ${options.nodeBorder};\r\n font-size: 10px;\r\n}\r\n\r\n.relation {\r\n stroke: ${options.lineColor};\r\n stroke-width: 1;\r\n fill: none;\r\n}\r\n\r\n.dashed-line{\r\n stroke-dasharray: 3;\r\n}\r\n\r\n#compositionStart, .composition {\r\n fill: ${options.lineColor} !important;\r\n stroke: ${options.lineColor} !important;\r\n stroke-width: 1;\r\n}\r\n\r\n#compositionEnd, .composition {\r\n fill: ${options.lineColor} !important;\r\n stroke: ${options.lineColor} !important;\r\n stroke-width: 1;\r\n}\r\n\r\n#dependencyStart, .dependency {\r\n fill: ${options.lineColor} !important;\r\n stroke: ${options.lineColor} !important;\r\n stroke-width: 1;\r\n}\r\n\r\n#dependencyStart, .dependency {\r\n fill: ${options.lineColor} !important;\r\n stroke: ${options.lineColor} !important;\r\n stroke-width: 1;\r\n}\r\n\r\n#extensionStart, .extension {\r\n fill: ${options.lineColor} !important;\r\n stroke: ${options.lineColor} !important;\r\n stroke-width: 1;\r\n}\r\n\r\n#extensionEnd, .extension {\r\n fill: ${options.lineColor} !important;\r\n stroke: ${options.lineColor} !important;\r\n stroke-width: 1;\r\n}\r\n\r\n#aggregationStart, .aggregation {\r\n fill: ${options.mainBkg} !important;\r\n stroke: ${options.lineColor} !important;\r\n stroke-width: 1;\r\n}\r\n\r\n#aggregationEnd, .aggregation {\r\n fill: ${options.mainBkg} !important;\r\n stroke: ${options.lineColor} !important;\r\n stroke-width: 1;\r\n}\r\n\r\n.edgeTerminals {\r\n font-size: 11px;\r\n}\r\n\r\n`;\r\n\r\nexport default getStyles;\r\n","import { line, curveBasis } from 'd3';\r\nimport { lookUpDomId, relationType } from './classDb';\r\nimport utils from '../../utils';\r\nimport { log } from '../../logger';\r\n\r\nlet edgeCount = 0;\r\nexport const drawEdge = function (elem, path, relation, conf) {\r\n const getRelationType = function (type) {\r\n switch (type) {\r\n case relationType.AGGREGATION:\r\n return 'aggregation';\r\n case relationType.EXTENSION:\r\n return 'extension';\r\n case relationType.COMPOSITION:\r\n return 'composition';\r\n case relationType.DEPENDENCY:\r\n return 'dependency';\r\n }\r\n };\r\n\r\n path.points = path.points.filter((p) => !Number.isNaN(p.y));\r\n\r\n // The data for our line\r\n const lineData = path.points;\r\n\r\n // This is the accessor function we talked about above\r\n const lineFunction = line()\r\n .x(function (d) {\r\n return d.x;\r\n })\r\n .y(function (d) {\r\n return d.y;\r\n })\r\n .curve(curveBasis);\r\n\r\n const svgPath = elem\r\n .append('path')\r\n .attr('d', lineFunction(lineData))\r\n .attr('id', 'edge' + edgeCount)\r\n .attr('class', 'relation');\r\n let url = '';\r\n if (conf.arrowMarkerAbsolute) {\r\n url =\r\n window.location.protocol +\r\n '//' +\r\n window.location.host +\r\n window.location.pathname +\r\n window.location.search;\r\n url = url.replace(/\\(/g, '\\\\(');\r\n url = url.replace(/\\)/g, '\\\\)');\r\n }\r\n\r\n if (relation.relation.lineType == 1) {\r\n svgPath.attr('class', 'relation dashed-line');\r\n }\r\n if (relation.relation.type1 !== 'none') {\r\n svgPath.attr(\r\n 'marker-start',\r\n 'url(' + url + '#' + getRelationType(relation.relation.type1) + 'Start' + ')'\r\n );\r\n }\r\n if (relation.relation.type2 !== 'none') {\r\n svgPath.attr(\r\n 'marker-end',\r\n 'url(' + url + '#' + getRelationType(relation.relation.type2) + 'End' + ')'\r\n );\r\n }\r\n\r\n let x, y;\r\n const l = path.points.length;\r\n // Calculate Label position\r\n let labelPosition = utils.calcLabelPosition(path.points);\r\n x = labelPosition.x;\r\n y = labelPosition.y;\r\n\r\n let p1_card_x, p1_card_y;\r\n let p2_card_x, p2_card_y;\r\n\r\n if (l % 2 !== 0 && l > 1) {\r\n let cardinality_1_point = utils.calcCardinalityPosition(\r\n relation.relation.type1 !== 'none',\r\n path.points,\r\n path.points[0]\r\n );\r\n let cardinality_2_point = utils.calcCardinalityPosition(\r\n relation.relation.type2 !== 'none',\r\n path.points,\r\n path.points[l - 1]\r\n );\r\n\r\n log.debug('cardinality_1_point ' + JSON.stringify(cardinality_1_point));\r\n log.debug('cardinality_2_point ' + JSON.stringify(cardinality_2_point));\r\n\r\n p1_card_x = cardinality_1_point.x;\r\n p1_card_y = cardinality_1_point.y;\r\n p2_card_x = cardinality_2_point.x;\r\n p2_card_y = cardinality_2_point.y;\r\n }\r\n\r\n if (typeof relation.title !== 'undefined') {\r\n const g = elem.append('g').attr('class', 'classLabel');\r\n const label = g\r\n .append('text')\r\n .attr('class', 'label')\r\n .attr('x', x)\r\n .attr('y', y)\r\n .attr('fill', 'red')\r\n .attr('text-anchor', 'middle')\r\n .text(relation.title);\r\n\r\n window.label = label;\r\n const bounds = label.node().getBBox();\r\n\r\n g.insert('rect', ':first-child')\r\n .attr('class', 'box')\r\n .attr('x', bounds.x - conf.padding / 2)\r\n .attr('y', bounds.y - conf.padding / 2)\r\n .attr('width', bounds.width + conf.padding)\r\n .attr('height', bounds.height + conf.padding);\r\n }\r\n\r\n log.info('Rendering relation ' + JSON.stringify(relation));\r\n if (typeof relation.relationTitle1 !== 'undefined' && relation.relationTitle1 !== 'none') {\r\n const g = elem.append('g').attr('class', 'cardinality');\r\n g.append('text')\r\n .attr('class', 'type1')\r\n .attr('x', p1_card_x)\r\n .attr('y', p1_card_y)\r\n .attr('fill', 'black')\r\n .attr('font-size', '6')\r\n .text(relation.relationTitle1);\r\n }\r\n if (typeof relation.relationTitle2 !== 'undefined' && relation.relationTitle2 !== 'none') {\r\n const g = elem.append('g').attr('class', 'cardinality');\r\n g.append('text')\r\n .attr('class', 'type2')\r\n .attr('x', p2_card_x)\r\n .attr('y', p2_card_y)\r\n .attr('fill', 'black')\r\n .attr('font-size', '6')\r\n .text(relation.relationTitle2);\r\n }\r\n\r\n edgeCount++;\r\n};\r\n\r\nexport const drawClass = function (elem, classDef, conf) {\r\n log.info('Rendering class ' + classDef);\r\n\r\n const id = classDef.id;\r\n const classInfo = {\r\n id: id,\r\n label: classDef.id,\r\n width: 0,\r\n height: 0,\r\n };\r\n\r\n // add class group\r\n const g = elem.append('g').attr('id', lookUpDomId(id)).attr('class', 'classGroup');\r\n\r\n // add title\r\n let title;\r\n if (classDef.link) {\r\n title = g\r\n .append('svg:a')\r\n .attr('xlink:href', classDef.link)\r\n .attr('target', classDef.linkTarget)\r\n .append('text')\r\n .attr('y', conf.textHeight + conf.padding)\r\n .attr('x', 0);\r\n } else {\r\n title = g\r\n .append('text')\r\n .attr('y', conf.textHeight + conf.padding)\r\n .attr('x', 0);\r\n }\r\n\r\n // add annotations\r\n let isFirst = true;\r\n classDef.annotations.forEach(function (member) {\r\n const titleText2 = title.append('tspan').text('«' + member + '»');\r\n if (!isFirst) titleText2.attr('dy', conf.textHeight);\r\n isFirst = false;\r\n });\r\n\r\n let classTitleString = classDef.id;\r\n\r\n if (classDef.type !== undefined && classDef.type !== '') {\r\n classTitleString += '<' + classDef.type + '>';\r\n }\r\n\r\n const classTitle = title.append('tspan').text(classTitleString).attr('class', 'title');\r\n\r\n // If class has annotations the title needs to have an offset of the text height\r\n if (!isFirst) classTitle.attr('dy', conf.textHeight);\r\n\r\n const titleHeight = title.node().getBBox().height;\r\n\r\n const membersLine = g\r\n .append('line') // text label for the x axis\r\n .attr('x1', 0)\r\n .attr('y1', conf.padding + titleHeight + conf.dividerMargin / 2)\r\n .attr('y2', conf.padding + titleHeight + conf.dividerMargin / 2);\r\n\r\n const members = g\r\n .append('text') // text label for the x axis\r\n .attr('x', conf.padding)\r\n .attr('y', titleHeight + conf.dividerMargin + conf.textHeight)\r\n .attr('fill', 'white')\r\n .attr('class', 'classText');\r\n\r\n isFirst = true;\r\n classDef.members.forEach(function (member) {\r\n addTspan(members, member, isFirst, conf);\r\n isFirst = false;\r\n });\r\n\r\n const membersBox = members.node().getBBox();\r\n\r\n const methodsLine = g\r\n .append('line') // text label for the x axis\r\n .attr('x1', 0)\r\n .attr('y1', conf.padding + titleHeight + conf.dividerMargin + membersBox.height)\r\n .attr('y2', conf.padding + titleHeight + conf.dividerMargin + membersBox.height);\r\n\r\n const methods = g\r\n .append('text') // text label for the x axis\r\n .attr('x', conf.padding)\r\n .attr('y', titleHeight + 2 * conf.dividerMargin + membersBox.height + conf.textHeight)\r\n .attr('fill', 'white')\r\n .attr('class', 'classText');\r\n\r\n isFirst = true;\r\n\r\n classDef.methods.forEach(function (method) {\r\n addTspan(methods, method, isFirst, conf);\r\n isFirst = false;\r\n });\r\n\r\n const classBox = g.node().getBBox();\r\n var cssClassStr = ' ';\r\n\r\n if (classDef.cssClasses.length > 0) {\r\n cssClassStr = cssClassStr + classDef.cssClasses.join(' ');\r\n }\r\n\r\n const rect = g\r\n .insert('rect', ':first-child')\r\n .attr('x', 0)\r\n .attr('y', 0)\r\n .attr('width', classBox.width + 2 * conf.padding)\r\n .attr('height', classBox.height + conf.padding + 0.5 * conf.dividerMargin)\r\n .attr('class', cssClassStr);\r\n\r\n const rectWidth = rect.node().getBBox().width;\r\n\r\n // Center title\r\n // We subtract the width of each text element from the class box width and divide it by 2\r\n title.node().childNodes.forEach(function (x) {\r\n x.setAttribute('x', (rectWidth - x.getBBox().width) / 2);\r\n });\r\n\r\n if (classDef.tooltip) {\r\n title.insert('title').text(classDef.tooltip);\r\n }\r\n\r\n membersLine.attr('x2', rectWidth);\r\n methodsLine.attr('x2', rectWidth);\r\n\r\n classInfo.width = rectWidth;\r\n classInfo.height = classBox.height + conf.padding + 0.5 * conf.dividerMargin;\r\n\r\n return classInfo;\r\n};\r\n\r\nexport const parseMember = function (text) {\r\n const fieldRegEx = /^(\\+|-|~|#)?(\\w+)(~\\w+~|\\[\\])?\\s+(\\w+) *(\\*|\\$)?$/;\r\n const methodRegEx = /^([+|\\-|~|#])?(\\w+) *\\( *(.*)\\) *(\\*|\\$)? *(\\w*[~|[\\]]*\\s*\\w*~?)$/;\r\n\r\n let fieldMatch = text.match(fieldRegEx);\r\n let methodMatch = text.match(methodRegEx);\r\n\r\n if (fieldMatch && !methodMatch) {\r\n return buildFieldDisplay(fieldMatch);\r\n } else if (methodMatch) {\r\n return buildMethodDisplay(methodMatch);\r\n } else {\r\n return buildLegacyDisplay(text);\r\n }\r\n};\r\n\r\nconst buildFieldDisplay = function (parsedText) {\r\n let cssStyle = '';\r\n let displayText = '';\r\n\r\n try {\r\n let visibility = parsedText[1] ? parsedText[1].trim() : '';\r\n let fieldType = parsedText[2] ? parsedText[2].trim() : '';\r\n let genericType = parsedText[3] ? parseGenericTypes(parsedText[3].trim()) : '';\r\n let fieldName = parsedText[4] ? parsedText[4].trim() : '';\r\n let classifier = parsedText[5] ? parsedText[5].trim() : '';\r\n\r\n displayText = visibility + fieldType + genericType + ' ' + fieldName;\r\n cssStyle = parseClassifier(classifier);\r\n } catch (err) {\r\n displayText = parsedText;\r\n }\r\n\r\n return {\r\n displayText: displayText,\r\n cssStyle: cssStyle,\r\n };\r\n};\r\n\r\nconst buildMethodDisplay = function (parsedText) {\r\n let cssStyle = '';\r\n let displayText = '';\r\n\r\n try {\r\n let visibility = parsedText[1] ? parsedText[1].trim() : '';\r\n let methodName = parsedText[2] ? parsedText[2].trim() : '';\r\n let parameters = parsedText[3] ? parseGenericTypes(parsedText[3].trim()) : '';\r\n let classifier = parsedText[4] ? parsedText[4].trim() : '';\r\n let returnType = parsedText[5] ? ' : ' + parseGenericTypes(parsedText[5]).trim() : '';\r\n\r\n displayText = visibility + methodName + '(' + parameters + ')' + returnType;\r\n cssStyle = parseClassifier(classifier);\r\n } catch (err) {\r\n displayText = parsedText;\r\n }\r\n\r\n return {\r\n displayText: displayText,\r\n cssStyle: cssStyle,\r\n };\r\n};\r\n\r\nconst buildLegacyDisplay = function (text) {\r\n // if for some reason we dont have any match, use old format to parse text\r\n let displayText = '';\r\n let cssStyle = '';\r\n let memberText = '';\r\n let returnType = '';\r\n let methodStart = text.indexOf('(');\r\n let methodEnd = text.indexOf(')');\r\n\r\n if (methodStart > 1 && methodEnd > methodStart && methodEnd <= text.length) {\r\n let visibility = '';\r\n let methodName = '';\r\n\r\n let firstChar = text.substring(0, 1);\r\n if (firstChar.match(/\\w/)) {\r\n methodName = text.substring(0, methodStart).trim();\r\n } else {\r\n if (firstChar.match(/\\+|-|~|#/)) {\r\n visibility = firstChar;\r\n }\r\n\r\n methodName = text.substring(1, methodStart).trim();\r\n }\r\n\r\n let parameters = text.substring(methodStart + 1, methodEnd);\r\n let classifier = text.substring(methodEnd + 1, 1);\r\n cssStyle = parseClassifier(classifier);\r\n\r\n displayText = visibility + methodName + '(' + parseGenericTypes(parameters.trim()) + ')';\r\n\r\n if (methodEnd < memberText.length) {\r\n returnType = text.substring(methodEnd + 2).trim();\r\n if (returnType !== '') {\r\n returnType = ' : ' + parseGenericTypes(returnType);\r\n }\r\n }\r\n } else {\r\n // finally - if all else fails, just send the text back as written (other than parsing for generic types)\r\n displayText = parseGenericTypes(text);\r\n }\r\n\r\n return {\r\n displayText: displayText,\r\n cssStyle: cssStyle,\r\n };\r\n};\r\n\r\nconst addTspan = function (textEl, txt, isFirst, conf) {\r\n let member = parseMember(txt);\r\n\r\n const tSpan = textEl.append('tspan').attr('x', conf.padding).text(member.displayText);\r\n\r\n if (member.cssStyle !== '') {\r\n tSpan.attr('style', member.cssStyle);\r\n }\r\n\r\n if (!isFirst) {\r\n tSpan.attr('dy', conf.textHeight);\r\n }\r\n};\r\n\r\nconst parseGenericTypes = function (text) {\r\n let cleanedText = text;\r\n\r\n if (text.indexOf('~') != -1) {\r\n cleanedText = cleanedText.replace('~', '<');\r\n cleanedText = cleanedText.replace('~', '>');\r\n\r\n return parseGenericTypes(cleanedText);\r\n } else {\r\n return cleanedText;\r\n }\r\n};\r\n\r\nconst parseClassifier = function (classifier) {\r\n switch (classifier) {\r\n case '*':\r\n return 'font-style:italic;';\r\n case '$':\r\n return 'text-decoration:underline;';\r\n default:\r\n return '';\r\n }\r\n};\r\n\r\nexport default {\r\n drawClass,\r\n drawEdge,\r\n parseMember,\r\n};\r\n","import DOMPurify from 'dompurify';\r\n\r\nexport const getRows = (s) => {\r\n if (!s) return 1;\r\n let str = breakToPlaceholder(s);\r\n str = str.replace(/\\\\n/g, '#br#');\r\n return str.split('#br#');\r\n};\r\n\r\nexport const removeScript = (txt) => {\r\n var rs = '';\r\n var idx = 0;\r\n\r\n while (idx >= 0) {\r\n idx = txt.indexOf('= 0) {\r\n rs += txt.substr(0, idx);\r\n txt = txt.substr(idx + 1);\r\n\r\n idx = txt.indexOf('');\r\n if (idx >= 0) {\r\n idx += 9;\r\n txt = txt.substr(idx);\r\n }\r\n } else {\r\n rs += txt;\r\n idx = -1;\r\n break;\r\n }\r\n }\r\n\r\n rs = rs.replace(/script>/gi, '#');\r\n rs = rs.replace(/script>/gi, '#');\r\n rs = rs.replace(/javascript:/gi, '#');\r\n rs = rs.replace(/onerror=/gi, 'onerror:');\r\n rs = rs.replace(/